admin.xpcool.com/apps/web-tdesign/src/api/notice.ts

131 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 通知模块 API 客户端(渠道/规则/日志/测试)。
// 接口规范:全部 POSTURL 不含参数;入参一律 body。
import { requestClient } from '#/api/request';
// ---------- 渠道 ----------
export interface NoticeChannelItem {
id: number;
code: string;
name: string;
enabled: number;
config: string;
remark: string;
}
export function getNoticeChannelList() {
return requestClient.post<{ list: NoticeChannelItem[] }>(
'/api/service/admin/notice/channel/list',
);
}
export function saveNoticeChannel(data: {
code: string;
config?: string;
enabled?: number;
id?: number;
name: string;
remark?: string;
}) {
return requestClient.post<{ id: number }>(
'/api/service/admin/notice/channel/save',
data,
);
}
// ---------- 规则 ----------
export interface NoticeRuleItem {
id: number;
name: string;
eventType: string;
channelCodes: string[];
userIds: number[];
titleTemplate: string;
bodyTemplate: string;
enabled: number;
}
export function getNoticeRuleList(data: { eventType?: string }) {
return requestClient.post<{ list: NoticeRuleItem[] }>(
'/api/service/admin/notice/rule/list',
data,
);
}
export function saveNoticeRule(data: {
bodyTemplate?: string;
channelCodes: string[];
enabled?: number;
eventType: string;
id?: number;
name: string;
titleTemplate?: string;
userIds: number[];
}) {
return requestClient.post<{ id: number }>(
'/api/service/admin/notice/rule/save',
data,
);
}
export function deleteNoticeRule(data: { id: number }) {
return requestClient.post('/api/service/admin/notice/rule/delete', data);
}
// ---------- 日志 ----------
export interface NoticeLogItem {
id: number;
ruleId: number;
eventType: string;
channelCode: string;
userId: number;
target: string;
title: string;
body: string;
result: number;
error: string;
createdAt: string;
}
export interface NoticeLogListResp {
list: NoticeLogItem[];
total: number;
}
export function getNoticeLogList(data: {
channelCode?: string;
dateFrom?: string;
dateTo?: string;
eventType?: string;
page: number;
result?: number;
size: number;
}) {
return requestClient.post<NoticeLogListResp>(
'/api/service/admin/notice/log/list',
data,
);
}
// ---------- 测试 ----------
export function testNotice(data: {
body?: string;
channelCode?: string;
ruleId?: number;
target?: string;
title?: string;
userIds?: number[];
}) {
return requestClient.post<{ message: string; result: boolean }>(
'/api/service/admin/notice/test',
data,
);
}
// 事件类型选项
export const NOTICE_EVENT_OPTIONS = [
{ label: '任务完成', value: 'job_done' },
{ label: '任务失败', value: 'job_fail' },
{ label: '安全告警', value: 'security_alert' },
{ label: '招聘每日推送', value: 'recruit_daily' },
];