Compare commits
11 Commits
74003786a9
...
psap
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45a0ab1707 | ||
|
|
4dfea691d1 | ||
|
|
758fa02f7f | ||
|
|
4da891c883 | ||
|
|
5beae56881 | ||
|
|
cfe01734f0 | ||
|
|
88c92eebf2 | ||
|
|
6c8c17c4f4 | ||
|
|
3e345e9e11 | ||
|
|
a3950e5dc0 | ||
|
|
f57c528c82 |
@@ -11,7 +11,6 @@ LimitNPROC=65535
|
||||
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StartLimitIntervalSec=60
|
||||
StartLimitBurst=3
|
||||
ExecStart=/usr/local/omc/bin/restagent -c /usr/local/omc/etc/restconf.yaml
|
||||
RestartPreventExitStatus=SIGTERM SIGKILL
|
||||
|
||||
@@ -11,7 +11,6 @@ LimitNPROC=65535
|
||||
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StartLimitIntervalSec=60
|
||||
StartLimitBurst=3
|
||||
ExecStart=/usr/local/omc/bin/restagent -c /usr/local/omc/etc/restconf.yaml
|
||||
RestartPreventExitStatus=SIGTERM SIGKILL
|
||||
|
||||
@@ -33,7 +33,5 @@ CREATE TABLE `ne_info` (
|
||||
|
||||
-- 初始网元数据
|
||||
INSERT INTO `ne_info` VALUES (1, 'OMC', '001', '4400PSAPOMC001', 'PSAP门户管理中心', '172.16.5.100', 33030, 'PNF', '-', '-', '-', '-', '1,2', 0, '', '', 0, '', 0);
|
||||
INSERT INTO `ne_info` VALUES (2, 'MF', '001', '4400PSAPMF0001', 'PSAP紧急呼叫中心', '172.16.5.110', 33030, 'PNF', '-', '-', '-', '-', '3,4', 0, '', '', 0, '', 0);
|
||||
INSERT INTO `ne_info` VALUES (3, 'CBC', '001', '4400PSAPCBC001', 'PSAP小区广播中心', '172.16.5.120', 33030, 'PNF', '-', '-', '-', '-', '3,4', 0, '', '', 0, '', 0);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
@@ -27,9 +27,5 @@ CREATE TABLE `ne_license` (
|
||||
|
||||
-- 初始数据对应网元
|
||||
INSERT INTO `ne_license` VALUES (1, 'OMC', '001', '', '', '', '', '0', '', 'supervisor', (UNIX_TIMESTAMP(NOW(3)) * 1000), '', 0);
|
||||
INSERT INTO `ne_license` VALUES (2, 'CBC', '001', '', '', '', '', '0', '', 'supervisor', (UNIX_TIMESTAMP(NOW(3)) * 1000), '', 0);
|
||||
INSERT INTO `ne_license` VALUES (3, 'MF', '001', '', '', '', '', '0', '', 'supervisor', (UNIX_TIMESTAMP(NOW(3)) * 1000), '', 0);
|
||||
INSERT INTO `ne_license` VALUES (4, 'IMS', '001', '', '', '', '', '0', '', 'supervisor', (UNIX_TIMESTAMP(NOW(3)) * 1000), '', 0);
|
||||
INSERT INTO `ne_license` VALUES (5, 'SMSC', '001', '', '', '', '', '0', '', 'supervisor', (UNIX_TIMESTAMP(NOW(3)) * 1000), '', 0);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
@@ -31,7 +31,5 @@ CREATE TABLE `ne_version` (
|
||||
|
||||
-- 初始数据对应网元
|
||||
INSERT INTO `ne_version` VALUES (1, 'OMC', '001', '', '', '', '', '', '', '', '', '', '0', 'supervisor', 1713928436957, '', 0);
|
||||
INSERT INTO `ne_version` VALUES (2, 'CBC', '001', '', '', '', '', '', '', '', '', '', '0', 'supervisor', 1713928436957, '', 0);
|
||||
INSERT INTO `ne_version` VALUES (3, 'MF', '001', '', '', '', '', '', '', '', '', '', '0', 'supervisor', 1713928436957, '', 0);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
@@ -717,18 +717,19 @@ INSERT INTO `sys_dict_data` VALUES (2204, 2204, 'table.u_ims_user', 'IMS签约
|
||||
INSERT INTO `sys_dict_data` VALUES (20000, 20000, 'menu.psap.agent', '座席', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (20001, 20001, 'menu.psap.agent.callings', '并行话务', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (20002, 20002, 'menu.psap.agent.callback', '回拨管理', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (20003, 20003, 'callback.status.NEW', '新建', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20004, 20004, 'callback.status.IN_PROGRESS', '处理中', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20005, 20005, 'callback.status.NO_ANSWER_1', '未应答1', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20006, 20006, 'callback.status.NO_ANSWER_2', '未应答2', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20007, 20007, 'callback.status.TIMEOUT', '超时', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20008, 20008, 'callback.status.PENDING', '挂起', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20009, 20009, 'callback.status.CLOSED', '关闭', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20003, 20003, 'callback.status.NEW', '新建', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20004, 20004, 'callback.status.IN_PROGRESS', '处理中', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20005, 20005, 'callback.status.NO_ANSWER_1', '未应答1', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20006, 20006, 'callback.status.NO_ANSWER_2', '未应答2', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20007, 20007, 'callback.status.TIMEOUT', '超时', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20008, 20008, 'callback.status.PENDING', '挂起', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20009, 20009, 'callback.status.CLOSED', '关闭', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20010, 20010, 'job.export.cdr.mf', '定期导出MF话单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (20011, 20011, 'job.psap.ticket.monitor', '回拨工单监控', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (20012, 20012, 'menu.psap.cdr.mf', '紧急呼叫话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20013, 20013, 'menu.psap.cdr.crbt', '彩铃话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20014, 20014, 'menu.psap.cdr.mms', '彩信话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20015, 20015, 'menu.psap.cbc.cbe', '广播', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20012, 20012, 'menu.psap.cdr', '话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20013, 20013, 'menu.psap.cdr.mf', '紧急呼叫话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20014, 20014, 'menu.psap.cdr.crbt', '彩铃话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20015, 20015, 'menu.psap.cdr.mms', '彩信话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (20016, 20016, 'menu.psap.cbc.cbe', '广播', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -717,18 +717,19 @@ INSERT INTO `sys_dict_data` VALUES (4204, 4204, 'table.u_ims_user', 'IMS Subscri
|
||||
INSERT INTO `sys_dict_data` VALUES (25000, 25000, 'menu.psap.agent', 'Agent', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (25001, 25001, 'menu.psap.agent.callings', 'Calling Information', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (25002, 25002, 'menu.psap.agent.callback', 'CallBack Management', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (25003, 25003, 'callback.status.NEW', 'NEW', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25004, 25004, 'callback.status.IN_PROGRESS', 'IN_PROGRESS', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25005, 25005, 'callback.status.NO_ANSWER_1', 'NO_ANSWER_1', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25006, 25006, 'callback.status.NO_ANSWER_2', 'NO_ANSWER_2', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25007, 25007, 'callback.status.TIMEOUT', 'TIMEOUT', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25008, 25008, 'callback.status.PENDING', 'PENDING', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25009, 25009, 'callback.status.CLOSED', 'CLOSED', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25003, 25003, 'callback.status.NEW', 'NEW', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25004, 25004, 'callback.status.IN_PROGRESS', 'IN_PROGRESS', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25005, 25005, 'callback.status.NO_ANSWER_1', 'NO_ANSWER_1', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25006, 25006, 'callback.status.NO_ANSWER_2', 'NO_ANSWER_2', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25007, 25007, 'callback.status.TIMEOUT', 'TIMEOUT', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25008, 25008, 'callback.status.PENDING', 'PENDING', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25009, 25009, 'callback.status.CLOSED', 'CLOSED', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25010, 25010, 'job.export.cdr.mf', 'Regularly Export MF CDR', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (25011, 25011, 'job.psap.ticket.monitor', 'Callback Ticket Monitor', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
INSERT INTO `sys_dict_data` VALUES (25012, 25012, 'menu.psap.cdr.mf', 'PSAP CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25013, 25013, 'menu.psap.cdr.crbt', 'CRBT CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25014, 25014, 'menu.psap.cdr.mms', 'MMS CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25015, 25015, 'menu.psap.cbc.cbe', 'Broadcast', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25012, 25012, 'menu.psap.cdr', 'CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25013, 25013, 'menu.psap.cdr.mf', 'PSAP CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25014, 25014, 'menu.psap.cdr.crbt', 'CRBT CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25015, 25015, 'menu.psap.cdr.mms', 'MMS CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
INSERT INTO `sys_dict_data` VALUES (25016, 25016, 'menu.psap.cbc.cbe', 'Broadcast', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -188,7 +188,7 @@ INSERT INTO `sys_menu` VALUES (2135, 'menu.ne.neHost', 4, 15, 'neHost', 'ne/neHo
|
||||
INSERT INTO `sys_menu` VALUES (2136, 'menu.ne.neHostCommand', 4, 18, 'neHostCommand', 'ne/neHostCommand/index', '1', '0', 'M', '1', '0', 'ne:neHostCommand:list', 'icon-fuzhidaima', 'supervisor', 1708583596871, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2137, 'menu.ne.neInfo', 4, 10, 'neInfo', 'ne/neInfo/index', '1', '0', 'M', '1', '1', 'ne:neInfo:list', 'icon-fuzhidaima', 'supervisor', 1708583596871, '', 0, '');
|
||||
INSERT INTO `sys_menu` VALUES (2138, 'menu.dashboard.amfUE', 2141, 1, 'amfUE', 'dashboard/amfUE/index', '1', '0', 'M', '1', '1', 'dashboard:amfUE:index', 'icon-paixu', 'supervisor', 1705550000000, 'supervisor', 1711354049893, '');
|
||||
INSERT INTO `sys_menu` VALUES (2140, 'menu.psap.cdr', 0, 10, 'psapCDR', '', '1', '0', 'D', '1', '1', '', 'icon-tubiaoku', 'supervisor', 1711352709786, 'admin', 1744623120667, '');
|
||||
INSERT INTO `sys_menu` VALUES (2140, 'menu.monitor.cdr', 0, 10, 'cdr', '', '1', '0', 'D', '1', '1', '', 'icon-tubiaoku', 'supervisor', 1711352709786, 'admin', 1744623120667, '');
|
||||
INSERT INTO `sys_menu` VALUES (2141, 'menu.monitor.event', 2089, 20, 'event', '', '1', '0', 'D', '0', '1', '', 'icon-gengduo', 'supervisor', 1711352768797, 'supervisor', 1744622372405, '');
|
||||
INSERT INTO `sys_menu` VALUES (2142, 'menu.ne.neQuickSetup', 4, 40, 'neQuickSetup', 'ne/neQuickSetup/index', '1', '1', 'M', '0', '1', 'ne:neQuickSetup:list', 'icon-wofaqi', 'supervisor', 1708580000000, 'admin', 1744622558904, '');
|
||||
INSERT INTO `sys_menu` VALUES (2143, 'menu.ne.neLicense', 4, 20, 'neLicense', 'ne/neLicense/index', '1', '0', 'M', '1', '1', 'ne:neLicense:list', 'icon-fuzhidaima', 'supervisor', 1708580000000, 'admin', 1744622786798, '');
|
||||
|
||||
@@ -32,9 +32,5 @@ CREATE TABLE IF NOT EXISTS `ne_info` (
|
||||
|
||||
-- 初始网元数据
|
||||
INSERT IGNORE INTO `ne_info` VALUES (1, 'OMC', '001', '4400PSAPOMC001', 'PSAP门户管理中心', '172.16.5.100', 33030, 'PNF', '-', '-', '-', '-', '1,2', 0, '', '', 0, '', 0);
|
||||
INSERT IGNORE INTO `ne_info` VALUES (2, 'MF', '001', '4400PSAPMF0001', 'PSAP紧急呼叫中心', '172.16.5.110', 33030, 'PNF', '-', '-', '-', '-', '3,4', 0, '', '', 0, '', 0);
|
||||
INSERT IGNORE INTO `ne_info` VALUES (3, 'CBC', '001', '4400PSAPCBC001', 'PSAP小区广播中心', '172.16.5.120', 33030, 'PNF', '-', '-', '-', '-', '3,4', 0, '', '', 0, '', 0);
|
||||
INSERT IGNORE INTO `ne_info` VALUES (4, 'IMS', '001', '4400PSAPIMS001', 'PSAP彩铃中心', '172.16.5.130', 33030, 'PNF', '-', '-', '-', '-', '3,4', 0, '', '', 0, '', 0);
|
||||
INSERT IGNORE INTO `ne_info` VALUES (5, 'SMSC', '001', '4400PSAPSMSC01', 'PSAP彩信中心', '172.16.5.140', 33030, 'PNF', '-', '-', '-', '-', '3,4', 0, '', '', 0, '', 0);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
@@ -11,18 +11,19 @@ REPLACE INTO `sys_dict_data` VALUES (2014, 2014, 'menu.log.neFile', '网元日
|
||||
REPLACE INTO `sys_dict_data` VALUES (20000, 20000, 'menu.psap.agent', '座席', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (20001, 20001, 'menu.psap.agent.callings', '并行话务', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (20002, 20002, 'menu.psap.agent.callback', '回拨管理', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (20003, 20003, 'callback.status.NEW', '新建', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20004, 20004, 'callback.status.IN_PROGRESS', '处理中', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20005, 20005, 'callback.status.NO_ANSWER_1', '未应答1', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20006, 20006, 'callback.status.NO_ANSWER_2', '未应答2', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20007, 20007, 'callback.status.TIMEOUT', '超时', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20008, 20008, 'callback.status.PENDING', '挂起', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20009, 20009, 'callback.status.CLOSED', '关闭', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20003, 20003, 'callback.status.NEW', '新建', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20004, 20004, 'callback.status.IN_PROGRESS', '处理中', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20005, 20005, 'callback.status.NO_ANSWER_1', '未应答1', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20006, 20006, 'callback.status.NO_ANSWER_2', '未应答2', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20007, 20007, 'callback.status.TIMEOUT', '超时', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20008, 20008, 'callback.status.PENDING', '挂起', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20009, 20009, 'callback.status.CLOSED', '关闭', 'i18n_zh', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20010, 20010, 'job.export.cdr.mf', '定期导出MF话单', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (20011, 20011, 'job.psap.ticket.monitor', '回拨工单监控', 'i18n_zh', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (20012, 20012, 'menu.psap.cdr.mf', '紧急呼叫话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20013, 20013, 'menu.psap.cdr.crbt', '彩铃话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20014, 20014, 'menu.psap.cdr.mms', '彩信话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20015, 20015, 'menu.psap.cbc.cbe', '广播', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20012, 20012, 'menu.psap.cdr', '话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20013, 20013, 'menu.psap.cdr.mf', '紧急呼叫话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20014, 20014, 'menu.psap.cdr.crbt', '彩铃话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20015, 20015, 'menu.psap.cdr.mms', '彩信话单', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (20016, 20016, 'menu.psap.cbc.cbe', '广播', 'i18n_zh', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
@@ -11,18 +11,19 @@ REPLACE INTO `sys_dict_data` VALUES (4014, 4014, 'menu.log.neFile', 'NE Log File
|
||||
REPLACE INTO `sys_dict_data` VALUES (25000, 25000, 'menu.psap.agent', 'Agent', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (25001, 25001, 'menu.psap.agent.callings', 'Calling Information', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (25002, 25002, 'menu.psap.agent.callback', 'CallBack Management', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (25003, 25003, 'callback.status.NEW', 'NEW', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25004, 25004, 'callback.status.IN_PROGRESS', 'IN_PROGRESS', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25005, 25005, 'callback.status.NO_ANSWER_1', 'NO_ANSWER_1', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25006, 25006, 'callback.status.NO_ANSWER_2', 'NO_ANSWER_2', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25007, 25007, 'callback.status.TIMEOUT', 'TIMEOUT', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25008, 25008, 'callback.status.PENDING', 'PENDING', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25009, 25009, 'callback.status.CLOSED', 'CLOSED', 'callback_status', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25003, 25003, 'callback.status.NEW', 'NEW', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784015598, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25004, 25004, 'callback.status.IN_PROGRESS', 'IN_PROGRESS', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784045911, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25005, 25005, 'callback.status.NO_ANSWER_1', 'NO_ANSWER_1', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784070706, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25006, 25006, 'callback.status.NO_ANSWER_2', 'NO_ANSWER_2', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784078301, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25007, 25007, 'callback.status.TIMEOUT', 'TIMEOUT', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784100809, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25008, 25008, 'callback.status.PENDING', 'PENDING', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784115379, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25009, 25009, 'callback.status.CLOSED', 'CLOSED', 'i18n_en', NULL, NULL, '1', 'supervisor', 1749784127612, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25010, 25010, 'job.export.cdr.mf', 'Regularly Export MF CDR', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (25011, 25011, 'job.psap.ticket.monitor', 'Callback Ticket Monitor', 'i18n_en', '', '', '1', 'supervisor', 1721902269805, '', 0, '');
|
||||
REPLACE INTO `sys_dict_data` VALUES (25012, 25012, 'menu.psap.cdr.mf', 'PSAP CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25013, 25013, 'menu.psap.cdr.crbt', 'CRBT CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25014, 25014, 'menu.psap.cdr.mms', 'MMS CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25015, 25015, 'menu.psap.cbc.cbe', 'Broadcast', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25012, 25012, 'menu.psap.cdr', 'CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25013, 25013, 'menu.psap.cdr.mf', 'PSAP CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25014, 25014, 'menu.psap.cdr.crbt', 'CRBT CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25015, 25015, 'menu.psap.cdr.mms', 'MMS CDR', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
REPLACE INTO `sys_dict_data` VALUES (25016, 25016, 'menu.psap.cbc.cbe', 'Broadcast', 'i18n_en', NULL, NULL, '1', 'supervisor', NULL, '', 0, NULL);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
@@ -1,6 +1,11 @@
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
UPDATE `sys_menu` SET `visible` = '1', `status` = '1', `update_by` = 'supervisor', `update_time` = (UNIX_TIMESTAMP(NOW(3)) * 1000) WHERE `menu_id` = 2143;
|
||||
REPLACE INTO `sys_menu` VALUES (60, 'menu.tools', 0, 60, 'tool', '', '1', '1', 'D', '1', '1', '', 'icon-wenjian', 'supervisor', 1700000000000, 'supervisor', 1752564026249, 'menu.toolsRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (115, 'menu.security.onlineUser', 1, 2, 'online', 'monitor/online/index', '1', '1', 'M', '1', '1', 'monitor:online:list', 'icon-xiangmuchengyuan', 'supervisor', 1700000000000, 'supervisor', 1744626398804, 'menu.security.onlineUserRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (501, 'menu.log.login', 2089, 26, 'login', 'system/log/login/index', '1', '1', 'M', '1', '1', 'system:log:login:list', 'icon-fuzhidaima', 'supervisor', 1700000000000, 'supervisor', 1752477698857, 'menu.log.loginRemark');
|
||||
REPLACE INTO `sys_menu` VALUES (2133, 'menu.dashboard.imsCDR', 0, 4, 'mfCDR', 'dashboard/mfCDR/index', '1', '0', 'M', '0', '1', 'dashboard:cdr:index', 'icon-paixu', 'supervisor', 1705550000000, 'supervisor', 1744706214818, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2140, 'menu.monitor.cdr', 0, 10, 'cdr', '', '1', '0', 'D', '1', '1', '', 'icon-tubiaoku', 'supervisor', 1711352709786, 'admin', 1744623120667, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2143, 'menu.ne.neLicense', 4, 20, 'neLicense', 'ne/neLicense/index', '1', '0', 'M', '1', '1', 'ne:neLicense:list', 'icon-fuzhidaima', 'supervisor', 1708580000000, 'supervisor', (UNIX_TIMESTAMP(NOW(3)) * 1000), '');
|
||||
|
||||
REPLACE INTO `sys_menu` VALUES (20000, 'menu.psap.agent', 0, 5, 'psapAgent', '', '1', '0', 'D', '1', '1', 'mf#agentManage', 'icon-tubiaoku', 'supervisor', 1711352709786, 'admin', 1744623120667, '');
|
||||
REPLACE INTO `sys_menu` VALUES (20001, 'menu.psap.agent.callings', 20000, 1, 'callings', 'agentManage/callings/index', '1', '0', 'M', '1', '1', 'mf#agentManage:callings:index', 'icon-tubiaoku', 'supervisor', 1711352709786, 'supervisor', 1747795951448, '');
|
||||
@@ -11,16 +16,4 @@ REPLACE INTO `sys_menu` VALUES (20005, 'menu.psap.cdr.crbt', 20003, 5, 'imsCDR',
|
||||
REPLACE INTO `sys_menu` VALUES (20006, 'menu.psap.cdr.mms', 20003, 9, 'smscCDR', 'dashboard/smscCDR/index', '1', '0', 'M', '1', '1', 'smsc#dashboard:cdr:index', 'icon-tubiaoku', 'supervisor', 1711352709786, 'supervisor', 1747796007372, '');
|
||||
REPLACE INTO `sys_menu` VALUES (20007, 'menu.psap.cbc.cbe', 0, 6, 'cbe', 'cbc/cbe/index', '1', '0', 'M', '1', '1', 'cbc#dashboard:cdr:index', 'icon-tubiaoku', 'supervisor', 1711352709786, 'supervisor', 1747796007372, '');
|
||||
|
||||
UPDATE `sys_menu` SET `menu_name` = 'menu.dashboard.imsCDR', `parent_id` = 0, `menu_sort` = 4, `path` = 'mfCDR', `component` = 'dashboard/mfCDR/index', `is_frame` = '1', `is_cache` = '0', `menu_type` = 'M', `visible` = '0', `status` = '1', `perms` = 'dashboard:cdr:index', `icon` = 'icon-paixu', `create_by` = 'supervisor', `create_time` = 1705550000000, `update_by` = 'supervisor', `update_time` = 1744706214818, `remark` = '' WHERE `menu_id` = 2133;
|
||||
|
||||
UPDATE `sys_menu` SET `menu_name` = 'menu.psap.cdr', `parent_id` = 0, `menu_sort` = 10, `path` = 'psapCDR', `component` = '', `is_frame` = '1', `is_cache` = '0', `menu_type` = 'D', `visible` = '1', `status` = '1', `perms` = '', `icon` = 'icon-tubiaoku', `create_by` = 'supervisor', `create_time` = 1711352709786, `update_by` = 'admin', `update_time` = 1744623120667, `remark` = '' WHERE `menu_id` = 2140;
|
||||
|
||||
UPDATE `sys_menu` SET `menu_name` = 'menu.tools', `parent_id` = 0, `menu_sort` = 60, `path` = 'tool', `component` = '', `is_frame` = '1', `is_cache` = '1', `menu_type` = 'D', `visible` = '1', `status` = '1', `perms` = '', `icon` = 'icon-wenjian', `create_by` = 'supervisor', `create_time` = 1700000000000, `update_by` = 'supervisor', `update_time` = 1752564026249, `remark` = 'menu.toolsRemark' WHERE `menu_id` = 60;
|
||||
|
||||
UPDATE `sys_menu` SET `menu_name` = 'menu.log.login', `parent_id` = 2089, `menu_sort` = 26, `path` = 'login', `component` = 'system/log/login/index', `is_frame` = '1', `is_cache` = '1', `menu_type` = 'M', `visible` = '1', `status` = '1', `perms` = 'system:log:login:list', `icon` = 'icon-fuzhidaima', `create_by` = 'supervisor', `create_time` = 1700000000000, `update_by` = 'supervisor', `update_time` = 1752477698857, `remark` = 'menu.log.loginRemark' WHERE `menu_id` = 501;
|
||||
|
||||
UPDATE `sys_menu` SET `menu_name` = 'menu.psap.cdr', `parent_id` = 0, `menu_sort` = 10, `path` = 'psapCDR', `component` = '', `is_frame` = '1', `is_cache` = '0', `menu_type` = 'D', `visible` = '1', `status` = '1', `perms` = '', `icon` = 'icon-tubiaoku', `create_by` = 'supervisor', `create_time` = 1711352709786, `update_by` = 'admin', `update_time` = 1744623120667, `remark` = '' WHERE `menu_id` = 2140;
|
||||
|
||||
UPDATE `sys_menu` SET `menu_name` = 'menu.ne.neLicense', `parent_id` = 4, `menu_sort` = 20, `path` = 'neLicense', `component` = 'ne/neLicense/index', `is_frame` = '1', `is_cache` = '0', `menu_type` = 'M', `visible` = '1', `status` = '1', `perms` = 'ne:neLicense:list', `icon` = 'icon-fuzhidaima', `create_by` = 'supervisor', `create_time` = 1708580000000, `update_by` = 'supervisor', `update_time` = 1752631644719, `remark` = '' WHERE `menu_id` = 2143;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
@@ -79,151 +79,153 @@ func PostCDREventFrom(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
// MF网元类型特殊处理, 未接电话的回拨工单流转处理
|
||||
if neTypeLower == "mf" && cdrEvent.CDR["recordType"] == "MOC" && cdrEvent.CDR["agentName"] == "" {
|
||||
// 发送到MF网元
|
||||
// 构造网元MF的API地址
|
||||
url := fmt.Sprintf("http://%s:%d/api/rest/systemManagement/v1/elementType/%s/objectType/config/agents",
|
||||
neInfo.IP, neInfo.Port, strings.ToLower(neInfo.NeType))
|
||||
// 发送HTTP请求获取座席列表
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
log.Error("Failed to get MF agents", err)
|
||||
if err := handleMFMissedCallCDR(url, cdrEvent); err != nil {
|
||||
log.Error("Failed to handle MF missed call CDR", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 解析座席列表响应
|
||||
var agentResp struct {
|
||||
Code int `json:"code"`
|
||||
Data []ueCallBackTicket.AgentInfo `json:"data"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
if err := json.NewDecoder(resp.Body).Decode(&agentResp); err != nil {
|
||||
log.Error("Failed to decode MF agents response", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// 调用服务获取最新一个被分配工单的座席和下一个要分配的座席
|
||||
mfService := ueCallBackTicket.NewCallbackTicketService()
|
||||
lastAgentName, err := mfService.GetLastAssignedAgent()
|
||||
if err != nil {
|
||||
log.Error("Failed to get last assigned agent", err)
|
||||
// 可以继续执行,不返回错误
|
||||
}
|
||||
|
||||
// 选择下一个要分配的座席
|
||||
selectedAgent := mfService.SelectNextAgent(agentResp.Data, lastAgentName)
|
||||
|
||||
if selectedAgent != nil {
|
||||
// 创建回调工单
|
||||
var updatedAt *int64 = nil
|
||||
ticket := ueCallBackTicket.CallbackTicket{
|
||||
CallerNumber: cdrEvent.CDR["callerParty"].(string),
|
||||
CalleeNumber: cdrEvent.CDR["calledParty"].(string),
|
||||
Status: ueCallBackTicket.TicketStatusNew.Enum(),
|
||||
AgentName: selectedAgent.Name,
|
||||
AgentEmail: selectedAgent.Email,
|
||||
AgentMobile: selectedAgent.Mobile,
|
||||
Comment: "",
|
||||
RmUid: cdrEvent.RmUID,
|
||||
CreatedAt: time.Now().UnixMicro(),
|
||||
UpdatedAt: updatedAt,
|
||||
}
|
||||
if err := mfService.InsertCallbackTicket(&ticket); err != nil {
|
||||
log.Error("Failed to insert MF callback ticket", err)
|
||||
// services.ResponseInternalServerError500ProcessError(w, err)
|
||||
// return
|
||||
}
|
||||
// 新工单分配后发送邮件通知
|
||||
if selectedAgent.Email != "" {
|
||||
// 发送邮件通知
|
||||
emailConfig := config.GetSMTPConfig()
|
||||
if emailConfig != nil && emailConfig.Enabled {
|
||||
// 创建配置副本,避免修改全局配置
|
||||
emailCopy := *emailConfig // 浅拷贝结构体
|
||||
|
||||
// 合并配置中的To地址和当前工单的座席邮箱
|
||||
var recipients []string
|
||||
|
||||
// 添加配置中的原始收件人(如管理员、监控人员等)
|
||||
if len(emailConfig.To) > 0 {
|
||||
recipients = append(recipients, strings.Split(emailConfig.To, ",")...)
|
||||
}
|
||||
|
||||
// 添加当前工单的座席邮箱
|
||||
recipients = append(recipients, ticket.AgentEmail)
|
||||
|
||||
// 去重处理(避免重复邮箱)
|
||||
emailCopy.To = strings.Join(email.RemoveDuplicateEmails(recipients), ",")
|
||||
|
||||
// 设置邮件主题和内容
|
||||
emailCopy.Subject = "新工单分配通知"
|
||||
emailCopy.Body = fmt.Sprintf("您被分配了一个新的回拨工单(编号:%d, 主叫号码:%s), 请及时处理.",
|
||||
ticket.TicketId, ticket.CallerNumber)
|
||||
go email.SendEmailWithGomail(emailCopy) // 异步发送
|
||||
}
|
||||
}
|
||||
}
|
||||
log.Warn("No available agents found for callback ticket")
|
||||
}
|
||||
|
||||
// MF网元类型特殊处理, 处理座席回拨的工单流转
|
||||
if neTypeLower == "mf" && cdrEvent.CDR["recordType"] == "MTC" {
|
||||
// 获取座席号码(主叫)和被叫号码
|
||||
agentNumber, ok1 := cdrEvent.CDR["callerParty"].(string)
|
||||
callerNumber, ok2 := cdrEvent.CDR["calledParty"].(string)
|
||||
|
||||
if !ok1 || !ok2 {
|
||||
log.Error("Invalid CDR format: missing callerParty or calledParty")
|
||||
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("invalid CDR format"))
|
||||
return
|
||||
}
|
||||
|
||||
// 获取通话时长
|
||||
callDuration, ok := cdrEvent.CDR["callDuration"].(float64)
|
||||
if !ok {
|
||||
// 尝试其他可能的类型
|
||||
if durationInt, ok := cdrEvent.CDR["callDuration"].(int); ok {
|
||||
callDuration = float64(durationInt)
|
||||
} else {
|
||||
log.Error("Invalid CDR format: callDuration is not a number")
|
||||
services.ResponseInternalServerError500ProcessError(w, fmt.Errorf("invalid CDR format"))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 通过座席号码和主叫号码查找符合条件的工单
|
||||
mfService := ueCallBackTicket.NewCallbackTicketService()
|
||||
ticket, err := mfService.FindCallbackTicketByAgentAndCaller(agentNumber, callerNumber)
|
||||
if err != nil {
|
||||
log.Error("Failed to find callback ticket", err)
|
||||
if err := handleMFCDRCallBack(cdrEvent); err != nil {
|
||||
log.Error("Failed to handle MF CDR callback", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
if ticket == nil {
|
||||
// 没有找到对应的工单,可能是手动呼叫,不处理
|
||||
log.Warn(fmt.Sprintf("No callback ticket found for agent %s and caller %s", agentNumber, callerNumber))
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
return
|
||||
}
|
||||
|
||||
// 获取通话信息
|
||||
seizureTime, _ := cdrEvent.CDR["seizureTime"].(string)
|
||||
releaseTime, _ := cdrEvent.CDR["releaseTime"].(string)
|
||||
cause, _ := cdrEvent.CDR["cause"].(string)
|
||||
|
||||
// 处理回拨结果并更新工单
|
||||
if err := mfService.ProcessCallbackResult(ticket, callDuration, seizureTime, releaseTime, cause); err != nil {
|
||||
log.Error("Failed to process callback result", err)
|
||||
services.ResponseInternalServerError500ProcessError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Info(fmt.Sprintf("Successfully processed callback for ticket %d", ticket.TicketId))
|
||||
}
|
||||
|
||||
services.ResponseStatusOK204NoContent(w)
|
||||
}
|
||||
|
||||
// MF网元类型特殊处理, 未接电话的回拨工单流转处理
|
||||
func handleMFMissedCallCDR(url string, cdrEvent CDREvent) error {
|
||||
// 发送HTTP请求获取座席列表
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get MF agents: %w", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 解析座席列表响应
|
||||
var agentResp struct {
|
||||
Code int `json:"code"`
|
||||
Data []ueCallBackTicket.AgentInfo `json:"data"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
if err := json.NewDecoder(resp.Body).Decode(&agentResp); err != nil {
|
||||
return fmt.Errorf("failed to decode MF agent response: %w", err)
|
||||
}
|
||||
|
||||
// 调用服务获取最新一个被分配工单的座席和下一个要分配的座席
|
||||
mfService := ueCallBackTicket.NewCallbackTicketService()
|
||||
lastAgentName, err := mfService.GetLastAssignedAgent()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get last assigned agent: %w", err)
|
||||
}
|
||||
|
||||
// 选择下一个要分配的座席
|
||||
selectedAgent := mfService.SelectNextAgent(agentResp.Data, lastAgentName)
|
||||
|
||||
if selectedAgent != nil {
|
||||
// 创建回调工单
|
||||
var updatedAt *int64 = nil
|
||||
ticket := ueCallBackTicket.CallbackTicket{
|
||||
CallerNumber: cdrEvent.CDR["callerParty"].(string),
|
||||
CalleeNumber: cdrEvent.CDR["calledParty"].(string),
|
||||
Status: ueCallBackTicket.TicketStatusNew.Enum(),
|
||||
AgentName: selectedAgent.Name,
|
||||
AgentEmail: selectedAgent.Email,
|
||||
AgentMobile: selectedAgent.Mobile,
|
||||
Comment: "",
|
||||
RmUid: cdrEvent.RmUID,
|
||||
CreatedAt: time.Now().UnixMicro(),
|
||||
UpdatedAt: updatedAt,
|
||||
}
|
||||
if err := mfService.InsertCallbackTicket(&ticket); err != nil {
|
||||
return fmt.Errorf("failed to insert MF callback ticket: %w", err)
|
||||
}
|
||||
// 新工单分配后发送邮件通知
|
||||
if selectedAgent.Email != "" {
|
||||
// 发送邮件通知
|
||||
emailConfig := config.GetSMTPConfig()
|
||||
if emailConfig != nil && emailConfig.Enabled {
|
||||
// 创建配置副本,避免修改全局配置
|
||||
emailCopy := *emailConfig // 浅拷贝结构体
|
||||
|
||||
// 合并配置中的To地址和当前工单的座席邮箱
|
||||
var recipients []string
|
||||
|
||||
// 添加配置中的原始收件人(如管理员、监控人员等)
|
||||
if len(emailConfig.To) > 0 {
|
||||
recipients = append(recipients, strings.Split(emailConfig.To, ",")...)
|
||||
}
|
||||
|
||||
// 添加当前工单的座席邮箱
|
||||
recipients = append(recipients, ticket.AgentEmail)
|
||||
|
||||
// 去重处理(避免重复邮箱)
|
||||
emailCopy.To = strings.Join(email.RemoveDuplicateEmails(recipients), ",")
|
||||
|
||||
// 设置邮件主题和内容
|
||||
emailCopy.Subject = "新工单分配通知"
|
||||
emailCopy.Body = fmt.Sprintf("您被分配了一个新的回拨工单(编号:%d, 主叫号码:%s), 请及时处理.",
|
||||
ticket.TicketId, ticket.CallerNumber)
|
||||
go email.SendEmailWithGomail(emailCopy) // 异步发送
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
log.Warn("No available agents found for callback ticket")
|
||||
return nil
|
||||
}
|
||||
|
||||
func handleMFCDRCallBack(cdrEvent CDREvent) error {
|
||||
// 获取座席号码(主叫)和被叫号码
|
||||
agentNumber, ok1 := cdrEvent.CDR["callerParty"].(string)
|
||||
callerNumber, ok2 := cdrEvent.CDR["calledParty"].(string)
|
||||
|
||||
if !ok1 || !ok2 {
|
||||
return fmt.Errorf("invalid CDR format: missing callerParty or calledParty")
|
||||
}
|
||||
|
||||
// 获取通话时长
|
||||
callDuration, ok := cdrEvent.CDR["callDuration"].(float64)
|
||||
if !ok {
|
||||
// 尝试其他可能的类型
|
||||
if durationInt, ok := cdrEvent.CDR["callDuration"].(int); ok {
|
||||
callDuration = float64(durationInt)
|
||||
} else {
|
||||
return fmt.Errorf("invalid CDR format: callDuration is not a number")
|
||||
}
|
||||
}
|
||||
|
||||
// 通过座席号码和主叫号码查找符合条件的工单
|
||||
mfService := ueCallBackTicket.NewCallbackTicketService()
|
||||
ticket, err := mfService.FindCallbackTicketByAgentAndCaller(agentNumber, callerNumber)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to find callback ticket: %w", err)
|
||||
}
|
||||
|
||||
if ticket == nil {
|
||||
// 没有找到对应的工单,可能是手动呼叫,不处理
|
||||
return fmt.Errorf("no callback ticket found for agent %s and caller %s", agentNumber, callerNumber)
|
||||
}
|
||||
|
||||
// 获取通话信息
|
||||
seizureTime, _ := cdrEvent.CDR["seizureTime"].(string)
|
||||
releaseTime, _ := cdrEvent.CDR["releaseTime"].(string)
|
||||
cause, _ := cdrEvent.CDR["cause"].(string)
|
||||
|
||||
// 处理回拨结果并更新工单
|
||||
if err := mfService.ProcessCallbackResult(ticket, callDuration, seizureTime, releaseTime, cause); err != nil {
|
||||
return fmt.Errorf("failed to process callback result: %w", err)
|
||||
}
|
||||
|
||||
log.Info(fmt.Sprintf("Successfully processed callback for ticket %d", ticket.TicketId))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -200,12 +200,27 @@ func (s *CBMessageService) UpdateCBMessage(id int64, messageJson json.RawMessage
|
||||
}
|
||||
|
||||
now := time.Now().UnixMicro()
|
||||
if err := s.db.Table("cb_message").
|
||||
Where("id = ?", id).
|
||||
Updates(map[string]interface{}{
|
||||
"message_json": messageJson,
|
||||
"updated_at": now,
|
||||
}).Error; err != nil {
|
||||
err := s.db.Transaction(func(tx *gorm.DB) error {
|
||||
// 在事务中更新
|
||||
if err := tx.Table("cb_message").
|
||||
Where("id = ?", id).
|
||||
Updates(map[string]any{
|
||||
"message_json": messageJson,
|
||||
"updated_at": now,
|
||||
}).Error; err != nil {
|
||||
return fmt.Errorf("failed to update CBC message: %w", err)
|
||||
}
|
||||
|
||||
// 在事务中查询更新后的记录
|
||||
if err := tx.Table("cb_message").
|
||||
Where("id = ?", id).
|
||||
First(&msg).Error; err != nil {
|
||||
return fmt.Errorf("failed to fetch updated CBC message: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to update CB message: %w", err)
|
||||
}
|
||||
|
||||
@@ -488,7 +503,7 @@ func (s *CBMessageService) sendUpdateRequest(msg CBMessage) error {
|
||||
return err
|
||||
}
|
||||
|
||||
return client.PutMessage(msg.MessageJson)
|
||||
return client.PostMessage(msg.MessageJson)
|
||||
}
|
||||
|
||||
// 重构后的停用请求
|
||||
|
||||
2
makefile
2
makefile
@@ -3,7 +3,7 @@
|
||||
ProjectL = omc
|
||||
ProjectU = OMC
|
||||
PROJECT = $(ProjectL)
|
||||
VERSION = 1.2507.1
|
||||
VERSION = 1.2508.1
|
||||
RelDate = `date +%Y%m%d`
|
||||
Release = $(RelDate)
|
||||
RelVer = $(VERSION)-$(RelDate)
|
||||
|
||||
@@ -6,7 +6,6 @@ HOST="127.0.0.1"
|
||||
PORT="33066"
|
||||
DBNAME="psap_db"
|
||||
UpgradeSQLDir=/usr/local/omc/etc/db/upgrade
|
||||
Upgvue3SQLDir=/usr/local/omc/etc/db/upgvue3
|
||||
InstallSQLDir=/usr/local/omc/etc/db/install
|
||||
|
||||
drop_db_sql="drop database IF EXISTS ${DBNAME}"
|
||||
@@ -24,17 +23,6 @@ case "$1" in
|
||||
done
|
||||
;;
|
||||
|
||||
upgvue3)
|
||||
echo "Upgrade to vue3 database ${DBNAME}"
|
||||
for SQL in ${Upgvue3SQLDir}/*.sql; do
|
||||
echo -n "Execute SQL script: ${SQL} ..."
|
||||
mysql -u${USER} -p${PASSWORD} -P ${PORT} -h ${HOST} --protocol tcp -D ${DBNAME} < ${SQL};
|
||||
if [ $? = 0 ]; then
|
||||
echo "done"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
|
||||
install)
|
||||
echo "Drop database ${DBNAME} ...!!!"
|
||||
mysql -u${USER} -p${PASSWORD} -P $PORT -h ${HOST} --protocol tcp -e "${drop_db_sql}"
|
||||
@@ -52,7 +40,7 @@ case "$1" in
|
||||
*)
|
||||
while true
|
||||
do
|
||||
read -r -p "Do you upgrade or upgrade from layui to vue3 or fresh install database ${DBNAME}? [Upgrade/upgVue3/Install/Quit] " input
|
||||
read -r -p "Do you upgrade or fresh install database ${DBNAME}? [Upgrade/Install/Quit] " input
|
||||
|
||||
case $input in
|
||||
[uU][pP][gG][rR][aA][dD][eE]|[uU])
|
||||
@@ -70,21 +58,6 @@ case "$1" in
|
||||
break
|
||||
;;
|
||||
|
||||
[uU][pP][gG][vV][uU][eE][3]|[vV]])
|
||||
echo "Skip to drop database ${DBNAME}"
|
||||
echo "Upgrade to vue3 database ${DBNAME}"
|
||||
|
||||
for SQL in ${Upgvue3SQLDir}/*.sql; do
|
||||
echo -n "Execute SQL script: ${SQL} ..."
|
||||
mysql -u${USER} -p${PASSWORD} -P ${PORT} -h ${HOST} --protocol tcp -D ${DBNAME} < ${SQL};
|
||||
if [ $? = 0 ]; then
|
||||
echo "done"
|
||||
fi
|
||||
done
|
||||
|
||||
break
|
||||
;;
|
||||
|
||||
[iI][nN][sS][tT][aA][lL][lL]|[iI])
|
||||
echo "Drop database ${DBNAME} ...!!!"
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ case "${M_ARG}" in
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
upgrade | upgvue3)
|
||||
upgrade)
|
||||
${OMCBinDir}/importdb.sh ${M_ARG}
|
||||
;;
|
||||
skip)
|
||||
|
||||
2
mkpkg.sh
2
mkpkg.sh
@@ -2,7 +2,7 @@
|
||||
|
||||
ProcList="restagent sshsvc"
|
||||
ProjectL=omc
|
||||
VERSION=1.2507.1
|
||||
VERSION=1.2508.1
|
||||
RelDate=`date +%Y%m%d`
|
||||
Release=${RelDate}
|
||||
RelVer=${VERSION}-${RelDate}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Makefile for rest agent project
|
||||
|
||||
PROJECT = OMC
|
||||
VERSION = 1.2507.1
|
||||
VERSION = 1.2508.1
|
||||
PLATFORM = amd64
|
||||
ARMPLATFORM = aarch64
|
||||
BUILDDIR = ../../build
|
||||
|
||||
@@ -145,8 +145,17 @@ func (r CDREventMF) ExportXlsx(rows []model.CDREventMF, fileName, language strin
|
||||
}
|
||||
// MSD-最小数据集
|
||||
msd := ""
|
||||
if v, ok := cdrJSON["msd"]; ok && v != nil {
|
||||
msd = v.(string)
|
||||
if v, ok := cdrJSON["msdData"]; ok && v != nil && v != "" {
|
||||
switch vv := v.(type) {
|
||||
case string:
|
||||
msd = vv
|
||||
case json.RawMessage:
|
||||
msd = string(vv)
|
||||
case map[string]interface{}:
|
||||
// 如果是对象,序列化为json
|
||||
b, _ := json.Marshal(vv)
|
||||
msd = string(b)
|
||||
}
|
||||
}
|
||||
dataCells = append(dataCells, map[string]any{
|
||||
"A" + idx: row.ID,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Makefile for OMC-OMC-crontask project
|
||||
|
||||
PROJECT = OMC
|
||||
VERSION = 1.2507.1
|
||||
VERSION = 1.2508.1
|
||||
LIBDIR = be.ems/lib
|
||||
BINNAME = sshsvc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user