131 lines
2.8 KiB
TypeScript
131 lines
2.8 KiB
TypeScript
// 通知模块 API 客户端(渠道/规则/日志/测试)。
|
||
// 接口规范:全部 POST;URL 不含参数;入参一律 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' },
|
||
];
|