feat: 新增第三方登录认证和管理
This commit is contained in:
@@ -15,14 +15,6 @@ CREATE TABLE "mml_command" (
|
|||||||
PRIMARY KEY ("id")
|
PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Indexes structure for table mml_command
|
|
||||||
-- ----------------------------
|
|
||||||
CREATE INDEX "id"
|
|
||||||
ON "mml_command" (
|
|
||||||
"id" ASC
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of mml_command
|
-- Records of mml_command
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
|||||||
@@ -1,21 +1,25 @@
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for cbc_message
|
-- Table structure for cbc_message
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for cbc_message
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `cbc_message`;
|
DROP TABLE IF EXISTS `cbc_message`;
|
||||||
CREATE TABLE `cbc_message` (
|
CREATE TABLE "cbc_message" (
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
"id" integer NOT NULL,
|
||||||
`ne_type` TEXT,
|
"ne_type" text(32),
|
||||||
`ne_id` TEXT,
|
"ne_id" text(32),
|
||||||
`message_json` TEXT,
|
"message_json" text(10240),
|
||||||
`status` TEXT DEFAULT 'INACTIVE' CHECK(`status` IN ('ACTIVE', 'INACTIVE')),
|
"status" text(32),
|
||||||
`detail` TEXT,
|
"detail" text(255),
|
||||||
`created_at` INTEGER,
|
"created_at" integer,
|
||||||
`updated_at` INTEGER
|
"updated_at" integer,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Create indexes
|
-- ----------------------------
|
||||||
CREATE INDEX `idx_id` ON `cbc_message`(`id`);
|
-- Indexes structure for table cbc_message
|
||||||
CREATE INDEX `idx_ne_time` ON `cbc_message`(`ne_type`, `ne_id`, `created_at`);
|
-- ----------------------------
|
||||||
|
CREATE INDEX "idx_cbcm_ne_time"
|
||||||
|
ON "cbc_message" (
|
||||||
|
"ne_type" ASC,
|
||||||
|
"ne_id" ASC,
|
||||||
|
"created_at" ASC
|
||||||
|
);
|
||||||
|
|||||||
@@ -192,4 +192,8 @@ INSERT INTO "sys_dict_data" VALUES (166, 'cdr_sip_code_cause', 'dictData.cdr_sip
|
|||||||
INSERT INTO "sys_dict_data" VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_data" VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_data" VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_data" VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_data" VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO "sys_dict_data" VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (170, 'sys_user_type', 'dictData.sys_user_type.system', 'System', 1, '', 'default', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO "sys_dict_data" VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ INSERT INTO "sys_dict_type" VALUES (5, 'dictType.sys_job_group', 'sys_job_group'
|
|||||||
INSERT INTO "sys_dict_type" VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
INSERT INTO "sys_dict_type" VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
||||||
INSERT INTO "sys_dict_type" VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
INSERT INTO "sys_dict_type" VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
||||||
INSERT INTO "sys_dict_type" VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
INSERT INTO "sys_dict_type" VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
||||||
|
INSERT INTO "sys_dict_type" VALUES (11, 'dictType.sys_user_type', 'sys_user_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO "sys_dict_type" VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
INSERT INTO "sys_dict_type" VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
||||||
INSERT INTO "sys_dict_type" VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
INSERT INTO "sys_dict_type" VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
||||||
INSERT INTO "sys_dict_type" VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
INSERT INTO "sys_dict_type" VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
||||||
|
|||||||
@@ -933,22 +933,30 @@ INSERT INTO "sys_i18n" VALUES (757, 'dictData.trace_interfaces.5', 'N5', 'N5');
|
|||||||
INSERT INTO "sys_i18n" VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
INSERT INTO "sys_i18n" VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
||||||
INSERT INTO "sys_i18n" VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
INSERT INTO "sys_i18n" VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
||||||
INSERT INTO "sys_i18n" VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
INSERT INTO "sys_i18n" VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (761, "dictType.sys_user_type", "用户类型", "User Type");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (762, "dictData.sys_user_type.system", "系统", "System");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (763, "dictData.sys_user_type.ldap", "LDAP", "LDAP");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (764, "dictData.sys_user_type.smtp", "SMTP", "SMTP");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", "OAuth2");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (766, "user.export.userType", "用户类型", "User Type");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source");
|
||||||
|
INSERT INTO "sys_i18n" VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source");
|
||||||
|
|
||||||
INSERT INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
INSERT INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
INSERT INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
INSERT INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
INSERT INTO `sys_i18n` VALUES (2002, 'menu.psap.agent.callback', '回拨管理', 'Callback Management');
|
INSERT INTO "sys_i18n" VALUES (2002, 'menu.psap.agent.callback', '回拨管理', 'Callback Management');
|
||||||
INSERT INTO `sys_i18n` VALUES (2003, 'callback.status.NEW', '新建', 'New');
|
INSERT INTO "sys_i18n" VALUES (2003, 'callback.status.NEW', '新建', 'New');
|
||||||
INSERT INTO `sys_i18n` VALUES (2004, 'callback.status.IN_PROGRESS', '处理中', 'In Progress');
|
INSERT INTO "sys_i18n" VALUES (2004, 'callback.status.IN_PROGRESS', '处理中', 'In Progress');
|
||||||
INSERT INTO `sys_i18n` VALUES (2005, 'callback.status.NO_ANSWER_1', '未应答1', 'No Answer 1');
|
INSERT INTO "sys_i18n" VALUES (2005, 'callback.status.NO_ANSWER_1', '未应答1', 'No Answer 1');
|
||||||
INSERT INTO `sys_i18n` VALUES (2006, 'callback.status.NO_ANSWER_2', '未应答2', 'No Answer 2');
|
INSERT INTO "sys_i18n" VALUES (2006, 'callback.status.NO_ANSWER_2', '未应答2', 'No Answer 2');
|
||||||
INSERT INTO `sys_i18n` VALUES (2007, 'callback.status.TIMEOUT', '超时', 'Timeout');
|
INSERT INTO "sys_i18n" VALUES (2007, 'callback.status.TIMEOUT', '超时', 'Timeout');
|
||||||
INSERT INTO `sys_i18n` VALUES (2008, 'callback.status.PENDING', '挂起', 'Pending');
|
INSERT INTO "sys_i18n" VALUES (2008, 'callback.status.PENDING', '挂起', 'Pending');
|
||||||
INSERT INTO `sys_i18n` VALUES (2009, 'callback.status.CLOSED', '关闭', 'Closed');
|
INSERT INTO "sys_i18n" VALUES (2009, 'callback.status.CLOSED', '关闭', 'Closed');
|
||||||
INSERT INTO `sys_i18n` VALUES (2010, 'job.export.cdr.mf', '定期导出MF话单', 'Periodic Export of MF Call Records');
|
INSERT INTO "sys_i18n" VALUES (2010, 'job.export.cdr.mf', '定期导出MF话单', 'Periodic Export of MF Call Records');
|
||||||
INSERT INTO `sys_i18n` VALUES (2011, 'job.psap.ticket.monitor', '回拨工单监控', 'Callback Ticket Monitoring');
|
INSERT INTO "sys_i18n" VALUES (2011, 'job.psap.ticket.monitor', '回拨工单监控', 'Callback Ticket Monitoring');
|
||||||
INSERT INTO `sys_i18n` VALUES (2012, 'menu.omc.cdr', '话单', 'Call Records');
|
INSERT INTO "sys_i18n" VALUES (2012, 'menu.omc.cdr', '话单', 'Call Records');
|
||||||
INSERT INTO `sys_i18n` VALUES (2013, 'menu.omc.cdr.mf', '紧急呼叫话单', 'Emergency Call Records');
|
INSERT INTO "sys_i18n" VALUES (2013, 'menu.omc.cdr.mf', '紧急呼叫话单', 'Emergency Call Records');
|
||||||
INSERT INTO `sys_i18n` VALUES (2014, 'menu.omc.cdr.crbt', '彩铃话单', 'Color Ring Back Tone Records');
|
INSERT INTO "sys_i18n" VALUES (2014, 'menu.omc.cdr.crbt', '彩铃话单', 'Color Ring Back Tone Records');
|
||||||
INSERT INTO `sys_i18n` VALUES (2015, 'menu.omc.cdr.mms', '彩信话单', 'Multimedia Message Service Records');
|
INSERT INTO "sys_i18n" VALUES (2015, 'menu.omc.cdr.mms', '彩信话单', 'Multimedia Message Service Records');
|
||||||
INSERT INTO `sys_i18n` VALUES (2016, 'menu.ue.cbc.cbe', '预警广播', 'Early Warning Broadcast');
|
INSERT INTO "sys_i18n" VALUES (2016, 'menu.ue.cbc.cbe', '预警广播', 'Early Warning Broadcast');
|
||||||
INSERT INTO `sys_i18n` VALUES (2017, 'log.operate.title.cbcMessage', '预警广播', 'Early Warning Broadcast');
|
INSERT INTO "sys_i18n" VALUES (2017, 'log.operate.title.cbcMessage', '预警广播', 'Early Warning Broadcast');
|
||||||
|
|||||||
33
build/database/lite/install/sys_login_source.sql
Normal file
33
build/database/lite/install/sys_login_source.sql
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_login_source
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "sys_login_source";
|
||||||
|
CREATE TABLE "sys_login_source" (
|
||||||
|
"id" integer NOT NULL,
|
||||||
|
"uid" text(32),
|
||||||
|
"type" text(32),
|
||||||
|
"name" text(64),
|
||||||
|
"icon" text(255),
|
||||||
|
"active_flag" text(1),
|
||||||
|
"sync_flag" text(1),
|
||||||
|
"config" text,
|
||||||
|
"create_by" text(64),
|
||||||
|
"create_time" integer,
|
||||||
|
"update_by" text(64),
|
||||||
|
"update_time" integer,
|
||||||
|
"remark" text(500),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table sys_login_source
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE INDEX "idx_ls_type_name"
|
||||||
|
ON "sys_login_source" (
|
||||||
|
"type" ASC,
|
||||||
|
"name" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_login_source
|
||||||
|
-- ----------------------------
|
||||||
@@ -47,6 +47,7 @@ INSERT INTO "sys_menu" VALUES (105, 'menu.security.post', 2113, 6, 'post', 'syst
|
|||||||
INSERT INTO "sys_menu" VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictTypeRemark');
|
INSERT INTO "sys_menu" VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictTypeRemark');
|
||||||
INSERT INTO "sys_menu" VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictDataRemark');
|
INSERT INTO "sys_menu" VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictDataRemark');
|
||||||
INSERT INTO "sys_menu" VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.paramSetRemark');
|
INSERT INTO "sys_menu" VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.paramSetRemark');
|
||||||
|
INSERT INTO "sys_menu" VALUES (109, 'menu.system.loginSource', 2113, 12, 'login-source', 'system/login-source/index', '1', '1', 'M', '1', '1', 'system:loginSource:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO "sys_menu" VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemLogRemark');
|
INSERT INTO "sys_menu" VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemLogRemark');
|
||||||
INSERT INTO "sys_menu" VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemInfoRemark');
|
INSERT INTO "sys_menu" VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemInfoRemark');
|
||||||
INSERT INTO "sys_menu" VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
INSERT INTO "sys_menu" VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
||||||
@@ -109,6 +110,10 @@ INSERT INTO "sys_menu" VALUES (1053, 'menu.common.edit', 116, 3, '#', '', '1', '
|
|||||||
INSERT INTO "sys_menu" VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
INSERT INTO "sys_menu" VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
INSERT INTO "sys_menu" VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
INSERT INTO "sys_menu" VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
INSERT INTO "sys_menu" VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
INSERT INTO "sys_menu" VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
|
INSERT INTO "sys_menu" VALUES (1057, 'menu.common.query', 109, 1, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO "sys_menu" VALUES (1058, 'menu.common.add', 109, 2, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO "sys_menu" VALUES (1059, 'menu.common.edit', 109, 3, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO "sys_menu" VALUES (1060, 'menu.common.delete', 109, 4, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO "sys_menu" VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
INSERT INTO "sys_menu" VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
INSERT INTO "sys_menu" VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
INSERT INTO "sys_menu" VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
INSERT INTO "sys_menu" VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
INSERT INTO "sys_menu" VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
DROP TABLE IF EXISTS "sys_role_menu";
|
DROP TABLE IF EXISTS "sys_role_menu";
|
||||||
CREATE TABLE "sys_role_menu" (
|
CREATE TABLE "sys_role_menu" (
|
||||||
"role_id" integer(20) NOT NULL,
|
"role_id" integer NOT NULL,
|
||||||
"menu_id" integer(20) NOT NULL,
|
"menu_id" integer NOT NULL,
|
||||||
PRIMARY KEY ("role_id", "menu_id")
|
PRIMARY KEY ("role_id", "menu_id")
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -27,6 +27,7 @@ INSERT INTO "sys_role_menu" VALUES (2, 103);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (2, 104);
|
INSERT INTO "sys_role_menu" VALUES (2, 104);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 105);
|
INSERT INTO "sys_role_menu" VALUES (2, 105);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 108);
|
INSERT INTO "sys_role_menu" VALUES (2, 108);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (2, 109);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 111);
|
INSERT INTO "sys_role_menu" VALUES (2, 111);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 112);
|
INSERT INTO "sys_role_menu" VALUES (2, 112);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 115);
|
INSERT INTO "sys_role_menu" VALUES (2, 115);
|
||||||
@@ -63,10 +64,8 @@ INSERT INTO "sys_role_menu" VALUES (2, 1030);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (2, 1032);
|
INSERT INTO "sys_role_menu" VALUES (2, 1032);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1034);
|
INSERT INTO "sys_role_menu" VALUES (2, 1034);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1039);
|
INSERT INTO "sys_role_menu" VALUES (2, 1039);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1040);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1041);
|
INSERT INTO "sys_role_menu" VALUES (2, 1041);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1042);
|
INSERT INTO "sys_role_menu" VALUES (2, 1042);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1043);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1044);
|
INSERT INTO "sys_role_menu" VALUES (2, 1044);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1045);
|
INSERT INTO "sys_role_menu" VALUES (2, 1045);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1048);
|
INSERT INTO "sys_role_menu" VALUES (2, 1048);
|
||||||
@@ -78,6 +77,10 @@ INSERT INTO "sys_role_menu" VALUES (2, 1053);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (2, 1054);
|
INSERT INTO "sys_role_menu" VALUES (2, 1054);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1055);
|
INSERT INTO "sys_role_menu" VALUES (2, 1055);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 1056);
|
INSERT INTO "sys_role_menu" VALUES (2, 1056);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (2, 1057);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (2, 1058);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (2, 1059);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (2, 1060);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 2000);
|
INSERT INTO "sys_role_menu" VALUES (2, 2000);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 2001);
|
INSERT INTO "sys_role_menu" VALUES (2, 2001);
|
||||||
INSERT INTO "sys_role_menu" VALUES (2, 2002);
|
INSERT INTO "sys_role_menu" VALUES (2, 2002);
|
||||||
@@ -168,7 +171,6 @@ INSERT INTO "sys_role_menu" VALUES (3, 65);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (3, 66);
|
INSERT INTO "sys_role_menu" VALUES (3, 66);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 108);
|
INSERT INTO "sys_role_menu" VALUES (3, 108);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 112);
|
INSERT INTO "sys_role_menu" VALUES (3, 112);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 115);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 500);
|
INSERT INTO "sys_role_menu" VALUES (3, 500);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 501);
|
INSERT INTO "sys_role_menu" VALUES (3, 501);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 1030);
|
INSERT INTO "sys_role_menu" VALUES (3, 1030);
|
||||||
@@ -176,7 +178,6 @@ INSERT INTO "sys_role_menu" VALUES (3, 1032);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (3, 1034);
|
INSERT INTO "sys_role_menu" VALUES (3, 1034);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 1039);
|
INSERT INTO "sys_role_menu" VALUES (3, 1039);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 1042);
|
INSERT INTO "sys_role_menu" VALUES (3, 1042);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 1048);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2000);
|
INSERT INTO "sys_role_menu" VALUES (3, 2000);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2001);
|
INSERT INTO "sys_role_menu" VALUES (3, 2001);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2002);
|
INSERT INTO "sys_role_menu" VALUES (3, 2002);
|
||||||
@@ -189,6 +190,7 @@ INSERT INTO "sys_role_menu" VALUES (3, 2009);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (3, 2010);
|
INSERT INTO "sys_role_menu" VALUES (3, 2010);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2011);
|
INSERT INTO "sys_role_menu" VALUES (3, 2011);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2083);
|
INSERT INTO "sys_role_menu" VALUES (3, 2083);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (3, 2084);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2086);
|
INSERT INTO "sys_role_menu" VALUES (3, 2086);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2087);
|
INSERT INTO "sys_role_menu" VALUES (3, 2087);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2088);
|
INSERT INTO "sys_role_menu" VALUES (3, 2088);
|
||||||
@@ -200,10 +202,12 @@ INSERT INTO "sys_role_menu" VALUES (3, 2097);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (3, 2107);
|
INSERT INTO "sys_role_menu" VALUES (3, 2107);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2108);
|
INSERT INTO "sys_role_menu" VALUES (3, 2108);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2109);
|
INSERT INTO "sys_role_menu" VALUES (3, 2109);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2113);
|
INSERT INTO "sys_role_menu" VALUES (3, 2112);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2114);
|
INSERT INTO "sys_role_menu" VALUES (3, 2114);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2115);
|
INSERT INTO "sys_role_menu" VALUES (3, 2115);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2116);
|
INSERT INTO "sys_role_menu" VALUES (3, 2116);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (3, 2118);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (3, 2122);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2123);
|
INSERT INTO "sys_role_menu" VALUES (3, 2123);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2126);
|
INSERT INTO "sys_role_menu" VALUES (3, 2126);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2128);
|
INSERT INTO "sys_role_menu" VALUES (3, 2128);
|
||||||
@@ -224,11 +228,10 @@ INSERT INTO "sys_role_menu" VALUES (3, 2149);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (3, 2151);
|
INSERT INTO "sys_role_menu" VALUES (3, 2151);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2152);
|
INSERT INTO "sys_role_menu" VALUES (3, 2152);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2153);
|
INSERT INTO "sys_role_menu" VALUES (3, 2153);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2154);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2155);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2156);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2157);
|
INSERT INTO "sys_role_menu" VALUES (3, 2157);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2158);
|
INSERT INTO "sys_role_menu" VALUES (3, 2158);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (3, 2162);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (3, 2163);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2165);
|
INSERT INTO "sys_role_menu" VALUES (3, 2165);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2166);
|
INSERT INTO "sys_role_menu" VALUES (3, 2166);
|
||||||
INSERT INTO "sys_role_menu" VALUES (3, 2167);
|
INSERT INTO "sys_role_menu" VALUES (3, 2167);
|
||||||
@@ -238,9 +241,6 @@ INSERT INTO "sys_role_menu" VALUES (3, 20000);
|
|||||||
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 1);
|
INSERT INTO "sys_role_menu" VALUES (4, 1);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 4);
|
INSERT INTO "sys_role_menu" VALUES (4, 4);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 60);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 65);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 66);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 112);
|
INSERT INTO "sys_role_menu" VALUES (4, 112);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 115);
|
INSERT INTO "sys_role_menu" VALUES (4, 115);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 500);
|
INSERT INTO "sys_role_menu" VALUES (4, 500);
|
||||||
@@ -250,17 +250,18 @@ INSERT INTO "sys_role_menu" VALUES (4, 1041);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (4, 1042);
|
INSERT INTO "sys_role_menu" VALUES (4, 1042);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 1044);
|
INSERT INTO "sys_role_menu" VALUES (4, 1044);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 1048);
|
INSERT INTO "sys_role_menu" VALUES (4, 1048);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2083);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2086);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2087);
|
INSERT INTO "sys_role_menu" VALUES (4, 2087);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2088);
|
INSERT INTO "sys_role_menu" VALUES (4, 2088);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2089);
|
INSERT INTO "sys_role_menu" VALUES (4, 2089);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (4, 2091);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2092);
|
INSERT INTO "sys_role_menu" VALUES (4, 2092);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2094);
|
INSERT INTO "sys_role_menu" VALUES (4, 2094);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2097);
|
INSERT INTO "sys_role_menu" VALUES (4, 2097);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (4, 2112);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2113);
|
INSERT INTO "sys_role_menu" VALUES (4, 2113);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2114);
|
INSERT INTO "sys_role_menu" VALUES (4, 2115);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2116);
|
INSERT INTO "sys_role_menu" VALUES (4, 2116);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (4, 2123);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2126);
|
INSERT INTO "sys_role_menu" VALUES (4, 2126);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2128);
|
INSERT INTO "sys_role_menu" VALUES (4, 2128);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2129);
|
INSERT INTO "sys_role_menu" VALUES (4, 2129);
|
||||||
@@ -274,11 +275,7 @@ INSERT INTO "sys_role_menu" VALUES (4, 2141);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (4, 2147);
|
INSERT INTO "sys_role_menu" VALUES (4, 2147);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2148);
|
INSERT INTO "sys_role_menu" VALUES (4, 2148);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2149);
|
INSERT INTO "sys_role_menu" VALUES (4, 2149);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2151);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2152);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2153);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2157);
|
INSERT INTO "sys_role_menu" VALUES (4, 2157);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2163);
|
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2165);
|
INSERT INTO "sys_role_menu" VALUES (4, 2165);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2166);
|
INSERT INTO "sys_role_menu" VALUES (4, 2166);
|
||||||
INSERT INTO "sys_role_menu" VALUES (4, 2167);
|
INSERT INTO "sys_role_menu" VALUES (4, 2167);
|
||||||
@@ -290,6 +287,13 @@ INSERT INTO "sys_role_menu" VALUES (5, 4);
|
|||||||
INSERT INTO "sys_role_menu" VALUES (5, 112);
|
INSERT INTO "sys_role_menu" VALUES (5, 112);
|
||||||
INSERT INTO "sys_role_menu" VALUES (5, 2087);
|
INSERT INTO "sys_role_menu" VALUES (5, 2087);
|
||||||
INSERT INTO "sys_role_menu" VALUES (5, 2115);
|
INSERT INTO "sys_role_menu" VALUES (5, 2115);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2126);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2128);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2130);
|
||||||
INSERT INTO "sys_role_menu" VALUES (5, 2131);
|
INSERT INTO "sys_role_menu" VALUES (5, 2131);
|
||||||
INSERT INTO "sys_role_menu" VALUES (5, 2132);
|
INSERT INTO "sys_role_menu" VALUES (5, 2132);
|
||||||
INSERT INTO "sys_role_menu" VALUES (5, 2165);
|
INSERT INTO "sys_role_menu" VALUES (5, 2165);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2166);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2167);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2168);
|
||||||
|
INSERT INTO "sys_role_menu" VALUES (5, 2169);
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ CREATE TABLE "sys_user" (
|
|||||||
"sex" text(1),
|
"sex" text(1),
|
||||||
"avatar" text(255),
|
"avatar" text(255),
|
||||||
"password" text(128),
|
"password" text(128),
|
||||||
|
"user_type" text(20),
|
||||||
|
"user_source" text(32),
|
||||||
"status_flag" text(1),
|
"status_flag" text(1),
|
||||||
"del_flag" text(1),
|
"del_flag" text(1),
|
||||||
"password_update_time" integer,
|
"password_update_time" integer,
|
||||||
@@ -29,7 +31,7 @@ CREATE TABLE "sys_user" (
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of sys_user
|
-- Records of sys_user
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
INSERT INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT INTO `sys_user` VALUES (2, 100, 'admin', 'admin', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT INTO `sys_user` VALUES (2, 100, 'admin', 'admin', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT INTO `sys_user` VALUES (3, 100, 'manager', 'manager', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT INTO `sys_user` VALUES (3, 100, 'manager', 'manager', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
|
|||||||
@@ -1,17 +1,24 @@
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for cbc_message
|
-- Table structure for cbc_message
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
CREATE TABLE IF NOT EXISTS `cbc_message` (
|
CREATE TABLE IF NOT EXISTS "cbc_message" (
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
"id" integer NOT NULL,
|
||||||
`ne_type` TEXT,
|
"ne_type" text(32),
|
||||||
`ne_id` TEXT,
|
"ne_id" text(32),
|
||||||
`message_json` TEXT,
|
"message_json" text(10240),
|
||||||
`status` TEXT DEFAULT 'INACTIVE' CHECK(`status` IN ('ACTIVE', 'INACTIVE')),
|
"status" text(32),
|
||||||
`detail` TEXT,
|
"detail" text(255),
|
||||||
`created_at` INTEGER,
|
"created_at" integer,
|
||||||
`updated_at` INTEGER
|
"updated_at" integer,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Create indexes
|
-- ----------------------------
|
||||||
CREATE INDEX IF NOT EXISTS `idx_id` ON `cbc_message`(`id`);
|
-- Indexes structure for table cbc_message
|
||||||
CREATE INDEX IF NOT EXISTS `idx_ne_time` ON `cbc_message`(`ne_type`, `ne_id`, `created_at`);
|
-- ----------------------------
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_cbcm_ne_time"
|
||||||
|
ON "cbc_message" (
|
||||||
|
"ne_type" ASC,
|
||||||
|
"ne_id" ASC,
|
||||||
|
"created_at" ASC
|
||||||
|
);
|
||||||
|
|||||||
@@ -191,4 +191,8 @@ REPLACE INTO "sys_dict_data" VALUES (166, 'cdr_sip_code_cause', 'dictData.cdr_si
|
|||||||
REPLACE INTO "sys_dict_data" VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_data" VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO "sys_dict_data" VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_data" VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO "sys_dict_data" VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO "sys_dict_data" VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (170, 'sys_user_type', 'dictData.sys_user_type.system', 'System', 1, '', 'default', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_data" VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
|
|||||||
54
build/database/lite/upgrade/upg_sys_dict_type.sql
Normal file
54
build/database/lite/upgrade/upg_sys_dict_type.sql
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dict_type
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS "sys_dict_type" (
|
||||||
|
"dict_id" integer NOT NULL,
|
||||||
|
"dict_name" text(64) NOT NULL,
|
||||||
|
"dict_type" text(64) NOT NULL,
|
||||||
|
"status_flag" text(1),
|
||||||
|
"del_flag" text(1),
|
||||||
|
"create_by" text(64),
|
||||||
|
"create_time" integer(20),
|
||||||
|
"update_by" text(64),
|
||||||
|
"update_time" integer(20),
|
||||||
|
"remark" text(500),
|
||||||
|
PRIMARY KEY ("dict_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dict_type
|
||||||
|
-- ----------------------------
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (1, 'dictType.sys_user_sex', 'sys_user_sex', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_user_sex_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (2, 'dictType.sys_show_hide', 'sys_show_hide', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_show_hide_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (3, 'dictType.sys_normal_disable', 'sys_normal_disable', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_normal_disable_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (4, 'dictType.sys_job_status', 'sys_job_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_job_status_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (5, 'dictType.sys_job_group', 'sys_job_group', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_job_group_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (11, 'dictType.sys_user_type', 'sys_user_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (53, 'dictType.sys_role_datascope', 'sys_role_datascope', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_role_datascope_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (54, 'dictType.active_alarm_type', 'active_alarm_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.active_alarm_type_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (55, 'dictType.active_clear_type', 'active_clear_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.active_clear_type_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (56, 'dictType.active_ack_state', 'active_ack_state', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.active_ack_state_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (57, 'dictType.active_alarm_severity', 'active_alarm_severity', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.active_alarm_severity_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (58, 'dictType.index_status', 'index_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.index_status_remark');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (59, 'dictType.cdr_sip_code', 'cdr_sip_code', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (60, 'dictType.cdr_call_type', 'cdr_call_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (61, 'dictType.ue_auth_code', 'ue_auth_code', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (62, 'dictType.ue_event_type', 'ue_event_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (63, 'dictType.ue_event_cm_state', 'ue_event_cm_state', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (64, 'dictType.ne_host_type', 'ne_host_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (65, 'dictType.ne_host_groupId', 'ne_host_groupId', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (66, 'dictType.ne_host_authMode', 'ne_host_authMode', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (67, 'dictType.ne_host_cmd_groupId', 'ne_host_cmd_groupId', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (68, 'dictType.ne_info_status', 'ne_info_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (69, 'dictType.ne_license_status', 'ne_license_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (70, 'dictType.cdr_cause_code', 'cdr_cause_code', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (71, 'dictType.trace_msg_type', 'trace_msg_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (72, 'dictType.trace_msg_direct', 'trace_msg_direct', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (73, 'dictType.trace_interfaces', 'trace_interfaces', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO "sys_dict_type" VALUES (74, 'dictType.cdr_sip_code_cause', 'cdr_sip_code_cause', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
@@ -932,22 +932,30 @@ REPLACE INTO "sys_i18n" VALUES (757, 'dictData.trace_interfaces.5', 'N5', 'N5');
|
|||||||
REPLACE INTO "sys_i18n" VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
REPLACE INTO "sys_i18n" VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
||||||
REPLACE INTO "sys_i18n" VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
REPLACE INTO "sys_i18n" VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
||||||
REPLACE INTO "sys_i18n" VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
REPLACE INTO "sys_i18n" VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (761, "dictType.sys_user_type", "用户类型", "User Type");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (762, "dictData.sys_user_type.system", "系统", "System");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (763, "dictData.sys_user_type.ldap", "LDAP", "LDAP");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (764, "dictData.sys_user_type.smtp", "SMTP", "SMTP");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", "OAuth2");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (766, "user.export.userType", "用户类型", "User Type");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source");
|
||||||
|
REPLACE INTO "sys_i18n" VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source");
|
||||||
|
|
||||||
REPLACE INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
REPLACE INTO "sys_i18n" VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
REPLACE INTO "sys_i18n" VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2002, 'menu.psap.agent.callback', '回拨管理', 'Callback Management');
|
REPLACE INTO "sys_i18n" VALUES (2002, 'menu.psap.agent.callback', '回拨管理', 'Callback Management');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2003, 'callback.status.NEW', '新建', 'New');
|
REPLACE INTO "sys_i18n" VALUES (2003, 'callback.status.NEW', '新建', 'New');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2004, 'callback.status.IN_PROGRESS', '处理中', 'In Progress');
|
REPLACE INTO "sys_i18n" VALUES (2004, 'callback.status.IN_PROGRESS', '处理中', 'In Progress');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2005, 'callback.status.NO_ANSWER_1', '未应答1', 'No Answer 1');
|
REPLACE INTO "sys_i18n" VALUES (2005, 'callback.status.NO_ANSWER_1', '未应答1', 'No Answer 1');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2006, 'callback.status.NO_ANSWER_2', '未应答2', 'No Answer 2');
|
REPLACE INTO "sys_i18n" VALUES (2006, 'callback.status.NO_ANSWER_2', '未应答2', 'No Answer 2');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2007, 'callback.status.TIMEOUT', '超时', 'Timeout');
|
REPLACE INTO "sys_i18n" VALUES (2007, 'callback.status.TIMEOUT', '超时', 'Timeout');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2008, 'callback.status.PENDING', '挂起', 'Pending');
|
REPLACE INTO "sys_i18n" VALUES (2008, 'callback.status.PENDING', '挂起', 'Pending');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2009, 'callback.status.CLOSED', '关闭', 'Closed');
|
REPLACE INTO "sys_i18n" VALUES (2009, 'callback.status.CLOSED', '关闭', 'Closed');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2010, 'job.export.cdr.mf', '定期导出MF话单', 'Periodic Export of MF Call Records');
|
REPLACE INTO "sys_i18n" VALUES (2010, 'job.export.cdr.mf', '定期导出MF话单', 'Periodic Export of MF Call Records');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2011, 'job.psap.ticket.monitor', '回拨工单监控', 'Callback Ticket Monitoring');
|
REPLACE INTO "sys_i18n" VALUES (2011, 'job.psap.ticket.monitor', '回拨工单监控', 'Callback Ticket Monitoring');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2012, 'menu.omc.cdr', '话单', 'Call Records');
|
REPLACE INTO "sys_i18n" VALUES (2012, 'menu.omc.cdr', '话单', 'Call Records');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2013, 'menu.omc.cdr.mf', '紧急呼叫话单', 'Emergency Call Records');
|
REPLACE INTO "sys_i18n" VALUES (2013, 'menu.omc.cdr.mf', '紧急呼叫话单', 'Emergency Call Records');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2014, 'menu.omc.cdr.crbt', '彩铃话单', 'Color Ring Back Tone Records');
|
REPLACE INTO "sys_i18n" VALUES (2014, 'menu.omc.cdr.crbt', '彩铃话单', 'Color Ring Back Tone Records');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2015, 'menu.omc.cdr.mms', '彩信话单', 'Multimedia Message Service Records');
|
REPLACE INTO "sys_i18n" VALUES (2015, 'menu.omc.cdr.mms', '彩信话单', 'Multimedia Message Service Records');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2016, 'menu.ue.cbc.cbe', '预警广播', 'Early Warning Broadcast');
|
REPLACE INTO "sys_i18n" VALUES (2016, 'menu.ue.cbc.cbe', '预警广播', 'Early Warning Broadcast');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2017, 'log.operate.title.cbcMessage', '预警广播', 'Early Warning Broadcast');
|
REPLACE INTO "sys_i18n" VALUES (2017, 'log.operate.title.cbcMessage', '预警广播', 'Early Warning Broadcast');
|
||||||
|
|||||||
32
build/database/lite/upgrade/upg_sys_login_source.sql
Normal file
32
build/database/lite/upgrade/upg_sys_login_source.sql
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_login_source
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS "sys_login_source" (
|
||||||
|
"id" integer NOT NULL,
|
||||||
|
"uid" text(32),
|
||||||
|
"type" text(32),
|
||||||
|
"name" text(64),
|
||||||
|
"icon" text(255),
|
||||||
|
"active_flag" text(1),
|
||||||
|
"sync_flag" text(1),
|
||||||
|
"config" text,
|
||||||
|
"create_by" text(64),
|
||||||
|
"create_time" integer,
|
||||||
|
"update_by" text(64),
|
||||||
|
"update_time" integer,
|
||||||
|
"remark" text(500),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table sys_login_source
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_ls_type_name"
|
||||||
|
ON "sys_login_source" (
|
||||||
|
"type" ASC,
|
||||||
|
"name" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_login_source
|
||||||
|
-- ----------------------------
|
||||||
@@ -46,6 +46,7 @@ REPLACE INTO "sys_menu" VALUES (105, 'menu.security.post', 2113, 6, 'post', 'sys
|
|||||||
REPLACE INTO "sys_menu" VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictTypeRemark');
|
REPLACE INTO "sys_menu" VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictTypeRemark');
|
||||||
REPLACE INTO "sys_menu" VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictDataRemark');
|
REPLACE INTO "sys_menu" VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.dictDataRemark');
|
||||||
REPLACE INTO "sys_menu" VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.paramSetRemark');
|
REPLACE INTO "sys_menu" VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.paramSetRemark');
|
||||||
|
REPLACE INTO "sys_menu" VALUES (109, 'menu.system.loginSource', 2113, 12, 'login-source', 'system/login-source/index', '1', '1', 'M', '1', '1', 'system:loginSource:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemLogRemark');
|
REPLACE INTO "sys_menu" VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemLogRemark');
|
||||||
REPLACE INTO "sys_menu" VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemInfoRemark');
|
REPLACE INTO "sys_menu" VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.systemInfoRemark');
|
||||||
REPLACE INTO "sys_menu" VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
REPLACE INTO "sys_menu" VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588, 'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
||||||
@@ -108,6 +109,10 @@ REPLACE INTO "sys_menu" VALUES (1053, 'menu.common.edit', 116, 3, '#', '', '1',
|
|||||||
REPLACE INTO "sys_menu" VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
REPLACE INTO "sys_menu" VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
REPLACE INTO "sys_menu" VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
REPLACE INTO "sys_menu" VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
|
REPLACE INTO "sys_menu" VALUES (1057, 'menu.common.query', 109, 1, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO "sys_menu" VALUES (1058, 'menu.common.add', 109, 2, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO "sys_menu" VALUES (1059, 'menu.common.edit', 109, 3, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO "sys_menu" VALUES (1060, 'menu.common.delete', 109, 4, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
REPLACE INTO "sys_menu" VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
REPLACE INTO "sys_menu" VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
REPLACE INTO "sys_menu" VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
REPLACE INTO "sys_menu" VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||||
|
|||||||
@@ -2,11 +2,12 @@
|
|||||||
-- Table structure for sys_role_menu
|
-- Table structure for sys_role_menu
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
CREATE TABLE IF NOT EXISTS "sys_role_menu" (
|
CREATE TABLE IF NOT EXISTS "sys_role_menu" (
|
||||||
"role_id" integer(20) NOT NULL,
|
"role_id" integer NOT NULL,
|
||||||
"menu_id" integer(20) NOT NULL,
|
"menu_id" integer NOT NULL,
|
||||||
PRIMARY KEY ("role_id", "menu_id")
|
PRIMARY KEY ("role_id", "menu_id")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DELETE FROM "sys_role_menu" WHERE "role_id" IN (2,3,4,5);
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of sys_role_menu
|
-- Records of sys_role_menu
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
@@ -26,6 +27,7 @@ REPLACE INTO "sys_role_menu" VALUES (2, 103);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (2, 104);
|
REPLACE INTO "sys_role_menu" VALUES (2, 104);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 105);
|
REPLACE INTO "sys_role_menu" VALUES (2, 105);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 108);
|
REPLACE INTO "sys_role_menu" VALUES (2, 108);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (2, 109);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 111);
|
REPLACE INTO "sys_role_menu" VALUES (2, 111);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 112);
|
REPLACE INTO "sys_role_menu" VALUES (2, 112);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 115);
|
REPLACE INTO "sys_role_menu" VALUES (2, 115);
|
||||||
@@ -62,10 +64,8 @@ REPLACE INTO "sys_role_menu" VALUES (2, 1030);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1032);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1032);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1034);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1034);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1039);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1039);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1040);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1041);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1041);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1042);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1042);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1043);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1044);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1044);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1045);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1045);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1048);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1048);
|
||||||
@@ -77,6 +77,10 @@ REPLACE INTO "sys_role_menu" VALUES (2, 1053);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1054);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1054);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1055);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1055);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 1056);
|
REPLACE INTO "sys_role_menu" VALUES (2, 1056);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (2, 1057);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (2, 1058);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (2, 1059);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (2, 1060);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 2000);
|
REPLACE INTO "sys_role_menu" VALUES (2, 2000);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 2001);
|
REPLACE INTO "sys_role_menu" VALUES (2, 2001);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (2, 2002);
|
REPLACE INTO "sys_role_menu" VALUES (2, 2002);
|
||||||
@@ -167,7 +171,6 @@ REPLACE INTO "sys_role_menu" VALUES (3, 65);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (3, 66);
|
REPLACE INTO "sys_role_menu" VALUES (3, 66);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 108);
|
REPLACE INTO "sys_role_menu" VALUES (3, 108);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 112);
|
REPLACE INTO "sys_role_menu" VALUES (3, 112);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 115);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 500);
|
REPLACE INTO "sys_role_menu" VALUES (3, 500);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 501);
|
REPLACE INTO "sys_role_menu" VALUES (3, 501);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 1030);
|
REPLACE INTO "sys_role_menu" VALUES (3, 1030);
|
||||||
@@ -175,7 +178,6 @@ REPLACE INTO "sys_role_menu" VALUES (3, 1032);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (3, 1034);
|
REPLACE INTO "sys_role_menu" VALUES (3, 1034);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 1039);
|
REPLACE INTO "sys_role_menu" VALUES (3, 1039);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 1042);
|
REPLACE INTO "sys_role_menu" VALUES (3, 1042);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 1048);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2000);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2000);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2001);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2001);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2002);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2002);
|
||||||
@@ -188,6 +190,7 @@ REPLACE INTO "sys_role_menu" VALUES (3, 2009);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2010);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2010);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2011);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2011);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2083);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2083);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (3, 2084);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2086);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2086);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2087);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2087);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2088);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2088);
|
||||||
@@ -199,10 +202,12 @@ REPLACE INTO "sys_role_menu" VALUES (3, 2097);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2107);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2107);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2108);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2108);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2109);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2109);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2113);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2112);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2114);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2114);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2115);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2115);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2116);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2116);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (3, 2118);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (3, 2122);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2123);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2123);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2126);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2126);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2128);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2128);
|
||||||
@@ -223,11 +228,10 @@ REPLACE INTO "sys_role_menu" VALUES (3, 2149);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2151);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2151);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2152);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2152);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2153);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2153);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2154);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2155);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2156);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2157);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2157);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2158);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2158);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (3, 2162);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (3, 2163);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2165);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2165);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2166);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2166);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (3, 2167);
|
REPLACE INTO "sys_role_menu" VALUES (3, 2167);
|
||||||
@@ -237,9 +241,6 @@ REPLACE INTO "sys_role_menu" VALUES (3, 20000);
|
|||||||
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 1);
|
REPLACE INTO "sys_role_menu" VALUES (4, 1);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 4);
|
REPLACE INTO "sys_role_menu" VALUES (4, 4);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 60);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 65);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 66);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 112);
|
REPLACE INTO "sys_role_menu" VALUES (4, 112);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 115);
|
REPLACE INTO "sys_role_menu" VALUES (4, 115);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 500);
|
REPLACE INTO "sys_role_menu" VALUES (4, 500);
|
||||||
@@ -249,17 +250,18 @@ REPLACE INTO "sys_role_menu" VALUES (4, 1041);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (4, 1042);
|
REPLACE INTO "sys_role_menu" VALUES (4, 1042);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 1044);
|
REPLACE INTO "sys_role_menu" VALUES (4, 1044);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 1048);
|
REPLACE INTO "sys_role_menu" VALUES (4, 1048);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2083);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2086);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2087);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2087);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2088);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2088);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2089);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2089);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (4, 2091);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2092);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2092);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2094);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2094);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2097);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2097);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (4, 2112);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2113);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2113);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2114);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2115);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2116);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2116);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (4, 2123);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2126);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2126);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2128);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2128);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2129);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2129);
|
||||||
@@ -273,11 +275,7 @@ REPLACE INTO "sys_role_menu" VALUES (4, 2141);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2147);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2147);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2148);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2148);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2149);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2149);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2151);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2152);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2153);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2157);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2157);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2163);
|
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2165);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2165);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2166);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2166);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (4, 2167);
|
REPLACE INTO "sys_role_menu" VALUES (4, 2167);
|
||||||
@@ -289,6 +287,13 @@ REPLACE INTO "sys_role_menu" VALUES (5, 4);
|
|||||||
REPLACE INTO "sys_role_menu" VALUES (5, 112);
|
REPLACE INTO "sys_role_menu" VALUES (5, 112);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (5, 2087);
|
REPLACE INTO "sys_role_menu" VALUES (5, 2087);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (5, 2115);
|
REPLACE INTO "sys_role_menu" VALUES (5, 2115);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2126);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2128);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2130);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (5, 2131);
|
REPLACE INTO "sys_role_menu" VALUES (5, 2131);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (5, 2132);
|
REPLACE INTO "sys_role_menu" VALUES (5, 2132);
|
||||||
REPLACE INTO "sys_role_menu" VALUES (5, 2165);
|
REPLACE INTO "sys_role_menu" VALUES (5, 2165);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2166);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2167);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2168);
|
||||||
|
REPLACE INTO "sys_role_menu" VALUES (5, 2169);
|
||||||
|
|||||||
46
build/database/lite/upgrade/upg_sys_user.sql
Normal file
46
build/database/lite/upgrade/upg_sys_user.sql
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_user
|
||||||
|
-- ----------------------------
|
||||||
|
ALTER TABLE "sys_user" RENAME TO "sys_user_old";
|
||||||
|
CREATE TABLE "sys_user" (
|
||||||
|
"user_id" integer NOT NULL,
|
||||||
|
"dept_id" integer,
|
||||||
|
"user_name" text(36) NOT NULL,
|
||||||
|
"nick_name" text(36) NOT NULL,
|
||||||
|
"email" text(64),
|
||||||
|
"phone" text(32),
|
||||||
|
"sex" text(1),
|
||||||
|
"avatar" text(255),
|
||||||
|
"password" text(128),
|
||||||
|
"user_type" text(20),
|
||||||
|
"user_source" text(32),
|
||||||
|
"status_flag" text(1),
|
||||||
|
"del_flag" text(1),
|
||||||
|
"password_update_time" integer,
|
||||||
|
"login_count" integer,
|
||||||
|
"login_ip" text(128),
|
||||||
|
"login_time" integer,
|
||||||
|
"create_by" text(64),
|
||||||
|
"create_time" integer,
|
||||||
|
"update_by" text(64),
|
||||||
|
"update_time" integer,
|
||||||
|
"remark" text(200),
|
||||||
|
PRIMARY KEY ("user_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_user
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO "sys_user" (
|
||||||
|
"user_id", "dept_id", "user_name", "nick_name", "email", "phone", "sex", "avatar", "password", "status_flag", "del_flag", "password_update_time", "login_count", "login_ip", "login_time", "create_by", "create_time", "update_by", "update_time", "remark")
|
||||||
|
SELECT
|
||||||
|
"user_id", "dept_id", "user_name", "nick_name", "email", "phone", "sex", "avatar", "password", "status_flag", "del_flag", "password_update_time", "login_count", "login_ip", "login_time", "create_by", "create_time", "update_by", "update_time", "remark"
|
||||||
|
FROM "sys_user_old";
|
||||||
|
|
||||||
|
-- UPDATE "user_type", "user_source"
|
||||||
|
UPDATE sys_user SET
|
||||||
|
user_type = COALESCE((SELECT user_type FROM sys_user_old WHERE sys_user_old.user_id = sys_user.user_id), 'Sytem'),
|
||||||
|
user_source = COALESCE((SELECT user_source FROM sys_user_old WHERE sys_user_old.user_id = sys_user.user_id), '#')
|
||||||
|
WHERE EXISTS (SELECT 1 FROM sys_user_old WHERE sys_user_old.user_id = sys_user.user_id);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS "sys_user_old";
|
||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
Navicat Premium Data Transfer
|
|
||||||
|
|
||||||
Source Server : local_mariadb
|
|
||||||
Source Server Type : MariaDB
|
|
||||||
Source Server Version : 100338 (10.3.38-MariaDB)
|
|
||||||
Source Host : localhost:33066
|
|
||||||
Source Schema : omc_db
|
|
||||||
|
|
||||||
Target Server Type : MariaDB
|
|
||||||
Target Server Version : 100338 (10.3.38-MariaDB)
|
|
||||||
File Encoding : 65001
|
|
||||||
|
|
||||||
Date: 14/05/2024 11:55:53
|
|
||||||
*/
|
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for mml_command
|
-- Table structure for mml_command
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
@@ -31,9 +12,8 @@ CREATE TABLE `mml_command` (
|
|||||||
`mml_display` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`mml_display` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
||||||
`param_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
`param_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||||
`status` enum('Active','Inactive') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Active' COMMENT '激活: Active 未激活: Inactive',
|
`status` enum('Active','Inactive') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Active' COMMENT '激活: Active 未激活: Inactive',
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
INDEX `id`(`id`) USING BTREE
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 1626 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of mml_command
|
-- Records of mml_command
|
||||||
@@ -71,5 +51,3 @@ INSERT INTO `mml_command` VALUES (1622, 'OMC', 'logManagement', 'Log Management'
|
|||||||
INSERT INTO `mml_command` VALUES (1623, 'OMC', 'logManagement', 'Log Management', 'lst', 'eventlog', 'List NE Event Log', '[{\"alias\":\"ne_type\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"NE type\",\"filter\":\"\",\"loc\":\"true\",\"name\":\"netype\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"ne_id\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"NE ID\",\"filter\":\"\",\"loc\":\"true\",\"name\":\"neid\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"log_time\\u003e\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Log time(\\u003e=)\",\"filter\":\"\",\"name\":\"starttime\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"log_time\\u003c\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Log time(\\u003c=)\",\"filter\":\"\",\"name\":\"endtime\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active');
|
INSERT INTO `mml_command` VALUES (1623, 'OMC', 'logManagement', 'Log Management', 'lst', 'eventlog', 'List NE Event Log', '[{\"alias\":\"ne_type\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"NE type\",\"filter\":\"\",\"loc\":\"true\",\"name\":\"netype\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"ne_id\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"NE ID\",\"filter\":\"\",\"loc\":\"true\",\"name\":\"neid\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"log_time\\u003e\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Log time(\\u003e=)\",\"filter\":\"\",\"name\":\"starttime\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"log_time\\u003c\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Log time(\\u003c=)\",\"filter\":\"\",\"name\":\"endtime\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active');
|
||||||
INSERT INTO `mml_command` VALUES (1624, 'OMC', 'mmlManagement', 'MML Management', 'lst', 'mmlcmd', 'List MML Command', '[{\"alias\":\"ne_type\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Category\",\"filter\":\"\",\"name\":\"category\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"operation\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Operation\",\"filter\":\"\",\"name\":\"operation\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"object\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Object\",\"filter\":\"\",\"name\":\"object\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active');
|
INSERT INTO `mml_command` VALUES (1624, 'OMC', 'mmlManagement', 'MML Management', 'lst', 'mmlcmd', 'List MML Command', '[{\"alias\":\"ne_type\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Category\",\"filter\":\"\",\"name\":\"category\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"operation\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Operation\",\"filter\":\"\",\"name\":\"operation\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"object\",\"apostr\":\"true\",\"comment\":\"\",\"display\":\"Object\",\"filter\":\"\",\"name\":\"object\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active');
|
||||||
INSERT INTO `mml_command` VALUES (1625, 'OMC', 'systemManagement', 'System Management', 'dsp', 'sysinfo', 'Display NE System Information', '[{\"alias\":\"neType\",\"apostr\":\"false\",\"comment\":\"\",\"display\":\"NE type\",\"filter\":\"\",\"name\":\"netype\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"neId\",\"comment\":\"\",\"display\":\"NE ID\",\"filter\":\"\",\"name\":\"neid\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active');
|
INSERT INTO `mml_command` VALUES (1625, 'OMC', 'systemManagement', 'System Management', 'dsp', 'sysinfo', 'Display NE System Information', '[{\"alias\":\"neType\",\"apostr\":\"false\",\"comment\":\"\",\"display\":\"NE type\",\"filter\":\"\",\"name\":\"netype\",\"optional\":\"true\",\"type\":\"string\"},{\"alias\":\"neId\",\"comment\":\"\",\"display\":\"NE ID\",\"filter\":\"\",\"name\":\"neid\",\"optional\":\"true\",\"type\":\"string\"}]', 'Active');
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
||||||
|
|||||||
@@ -1,38 +1,16 @@
|
|||||||
/*
|
|
||||||
Navicat Premium Data Transfer
|
|
||||||
|
|
||||||
Source Server : root@192.168.2.242
|
|
||||||
Source Server Type : MariaDB
|
|
||||||
Source Server Version : 100622 (10.6.22-MariaDB-0ubuntu0.22.04.1)
|
|
||||||
Source Host : 192.168.2.242:33066
|
|
||||||
Source Schema : omc_db
|
|
||||||
|
|
||||||
Target Server Type : MariaDB
|
|
||||||
Target Server Version : 100622 (10.6.22-MariaDB-0ubuntu0.22.04.1)
|
|
||||||
File Encoding : 65001
|
|
||||||
|
|
||||||
Date: 01/08/2025 10:07:00
|
|
||||||
*/
|
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for cbc_message
|
-- Table structure for cbc_message
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
DROP TABLE IF EXISTS `cbc_message`;
|
DROP TABLE IF EXISTS `cbc_message`;
|
||||||
CREATE TABLE `cbc_message` (
|
CREATE TABLE `cbc_message` (
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||||
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`message_json` varchar(10240) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`message_json` varchar(10240) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`status` enum('ACTIVE','INACTIVE') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'INACTIVE',
|
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'INACTIVE' COMMENT 'ACTIVE/INACTIVE',
|
||||||
`detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`created_at` bigint(20) NULL DEFAULT NULL,
|
`created_at` bigint DEFAULT NULL,
|
||||||
`updated_at` bigint(20) NULL DEFAULT NULL,
|
`updated_at` bigint DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
INDEX `id`(`id`) USING BTREE,
|
KEY `idx_cbcm_ne_time` (`ne_type`,`ne_id`,`created_at`) USING BTREE
|
||||||
INDEX `idx_ne_time`(`ne_type`, `ne_id`, `created_at`) USING BTREE
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='CDR事件_MF';
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 64 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'CDR事件_MF' ROW_FORMAT = Dynamic;
|
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
||||||
|
|||||||
@@ -195,6 +195,10 @@ INSERT INTO `sys_dict_data` VALUES (166, 'cdr_sip_code_cause', 'dictData.cdr_sip
|
|||||||
INSERT INTO `sys_dict_data` VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_data` VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_data` VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_data` VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_data` VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
INSERT INTO `sys_dict_data` VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (170, 'sys_user_type', 'dictData.sys_user_type.system', 'System', 1, '', 'default', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
INSERT INTO `sys_dict_data` VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ INSERT INTO `sys_dict_type` VALUES (5, 'dictType.sys_job_group', 'sys_job_group'
|
|||||||
INSERT INTO `sys_dict_type` VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
INSERT INTO `sys_dict_type` VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
||||||
INSERT INTO `sys_dict_type` VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
INSERT INTO `sys_dict_type` VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
||||||
INSERT INTO `sys_dict_type` VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
INSERT INTO `sys_dict_type` VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (11, 'dictType.sys_user_type', 'sys_user_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
INSERT INTO `sys_dict_type` VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
INSERT INTO `sys_dict_type` VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
||||||
INSERT INTO `sys_dict_type` VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
INSERT INTO `sys_dict_type` VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
||||||
INSERT INTO `sys_dict_type` VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
INSERT INTO `sys_dict_type` VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
||||||
|
|||||||
@@ -775,6 +775,14 @@ INSERT INTO `sys_i18n` VALUES (757, 'dictData.trace_interfaces.5', 'N5', 'N5');
|
|||||||
INSERT INTO `sys_i18n` VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
INSERT INTO `sys_i18n` VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
||||||
INSERT INTO `sys_i18n` VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
INSERT INTO `sys_i18n` VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
||||||
INSERT INTO `sys_i18n` VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
INSERT INTO `sys_i18n` VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (761, "dictType.sys_user_type", "用户类型", "User Type");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (762, "dictData.sys_user_type.system", "系统", "System");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (763, "dictData.sys_user_type.ldap", "LDAP", "LDAP");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (764, "dictData.sys_user_type.smtp", "SMTP", "SMTP");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", "OAuth2");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (766, "user.export.userType", "用户类型", "User Type");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source");
|
||||||
|
INSERT INTO `sys_i18n` VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source");
|
||||||
|
|
||||||
INSERT INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
INSERT INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
INSERT INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
INSERT INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
|
|||||||
24
build/database/std/install/sys_login_source.sql
Normal file
24
build/database/std/install/sys_login_source.sql
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
--
|
||||||
|
-- Table structure for table `sys_login_source`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `sys_login_source`;
|
||||||
|
CREATE TABLE `sys_login_source` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||||
|
`uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UID 16位长度字符串',
|
||||||
|
`type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '认证类型 LDAP SMTP OAuth2',
|
||||||
|
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '认证名称',
|
||||||
|
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '图标',
|
||||||
|
`active_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '激活标记(0未激活 1激活)',
|
||||||
|
`sync_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '同步标记(0未同步 1同步)',
|
||||||
|
`config` text COLLATE utf8mb4_general_ci COMMENT '认证配置',
|
||||||
|
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
|
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` bigint NULL DEFAULT 0 COMMENT '更新时间',
|
||||||
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
KEY `idx_ls_type_name` (`type`,`name`) USING BTREE COMMENT '认证类型_认证名称'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='系统_认证源表';
|
||||||
|
|
||||||
|
-- Dump completed on 2025-08-05 16:20:56
|
||||||
@@ -50,6 +50,7 @@ INSERT INTO `sys_menu` VALUES (105, 'menu.security.post', 2113, 6, 'post', 'syst
|
|||||||
INSERT INTO `sys_menu` VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictTypeRemark');
|
INSERT INTO `sys_menu` VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictTypeRemark');
|
||||||
INSERT INTO `sys_menu` VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictDataRemark');
|
INSERT INTO `sys_menu` VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictDataRemark');
|
||||||
INSERT INTO `sys_menu` VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.paramSetRemark');
|
INSERT INTO `sys_menu` VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.paramSetRemark');
|
||||||
|
INSERT INTO `sys_menu` VALUES (109, 'menu.system.loginSource', 2113, 12, 'login-source', 'system/login-source/index', '1', '1', 'M', '1', '1', 'system:loginSource:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO `sys_menu` VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemLogRemark');
|
INSERT INTO `sys_menu` VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemLogRemark');
|
||||||
INSERT INTO `sys_menu` VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemInfoRemark');
|
INSERT INTO `sys_menu` VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemInfoRemark');
|
||||||
INSERT INTO `sys_menu` VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
INSERT INTO `sys_menu` VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
||||||
@@ -112,6 +113,10 @@ INSERT INTO `sys_menu` VALUES (1053, 'menu.common.edit', 116, 3, '#', '', '1', '
|
|||||||
INSERT INTO `sys_menu` VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
INSERT INTO `sys_menu` VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO `sys_menu` VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
INSERT INTO `sys_menu` VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO `sys_menu` VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
INSERT INTO `sys_menu` VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO `sys_menu` VALUES (1057, 'menu.common.query', 109, 1, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO `sys_menu` VALUES (1058, 'menu.common.add', 109, 2, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO `sys_menu` VALUES (1059, 'menu.common.edit', 109, 3, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
INSERT INTO `sys_menu` VALUES (1060, 'menu.common.delete', 109, 4, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
INSERT INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
INSERT INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
INSERT INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
INSERT INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for sys_role_menu
|
-- Table structure for sys_role_menu
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
@@ -14,9 +11,6 @@ CREATE TABLE `sys_role_menu` (
|
|||||||
--
|
--
|
||||||
-- Dumping data for table `sys_role_menu`
|
-- Dumping data for table `sys_role_menu`
|
||||||
--
|
--
|
||||||
|
|
||||||
LOCK TABLES `sys_role_menu` WRITE;
|
|
||||||
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 4);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 4);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 5);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 5);
|
||||||
@@ -33,6 +27,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 103);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 104);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 104);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 105);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 105);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 108);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 108);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 109);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 111);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 111);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 115);
|
||||||
@@ -69,10 +64,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1030);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1032);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1032);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1034);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1034);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1039);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1039);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1040);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1041);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1041);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1042);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1042);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1043);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1044);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1044);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1045);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1045);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1048);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1048);
|
||||||
@@ -84,6 +77,10 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1053);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1054);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1054);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1055);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1055);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1056);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1056);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1057);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1058);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1059);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1060);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2000);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2000);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2001);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2001);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2002);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2002);
|
||||||
@@ -91,8 +88,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2003);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2004);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2004);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2005);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2005);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2007);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2007);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2009);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2008);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2008);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2009);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2010);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2010);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2011);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2011);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2083);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2083);
|
||||||
@@ -174,7 +171,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 65);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 66);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 66);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 108);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 108);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 115);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 500);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 500);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 501);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 501);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1030);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1030);
|
||||||
@@ -182,7 +178,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1032);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1034);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1034);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1039);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1039);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1042);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1042);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1048);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2000);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2000);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2001);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2001);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2002);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2002);
|
||||||
@@ -195,6 +190,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2009);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2010);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2010);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2011);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2011);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2083);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2083);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2084);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2086);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2086);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2088);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2088);
|
||||||
@@ -206,10 +202,12 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2097);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2107);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2107);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2108);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2108);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2109);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2109);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2113);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2114);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2114);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2115);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2116);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2116);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2118);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2122);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2123);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2123);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2126);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2126);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2128);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2128);
|
||||||
@@ -230,11 +228,10 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2149);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2151);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2151);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2154);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2155);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2156);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2158);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2158);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2162);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2163);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2165);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2165);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2166);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2166);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2167);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2167);
|
||||||
@@ -244,9 +241,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 20000);
|
|||||||
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 4);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 4);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 60);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 65);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 66);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 115);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500);
|
||||||
@@ -256,17 +250,18 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1041);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1042);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1042);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1044);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1044);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1048);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1048);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2083);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2086);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2087);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2087);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2088);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2088);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2089);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2089);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2091);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2092);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2092);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2094);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2094);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2097);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2097);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2113);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2113);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2114);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2115);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2116);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2116);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2123);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2126);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2126);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2128);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2128);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2129);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2129);
|
||||||
@@ -280,11 +275,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2141);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2147);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2147);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2151);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2152);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2153);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2157);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2157);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2163);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2166);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2166);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2167);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2167);
|
||||||
@@ -296,10 +287,15 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (5, 4);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2087);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2087);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2115);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2126);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2128);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2130);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2131);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2131);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2166);
|
||||||
UNLOCK TABLES;
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2167);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2168);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2169);
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
-- MariaDB dump 10.19 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64)
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `sys_user`
|
-- Table structure for table `sys_user`
|
||||||
--
|
--
|
||||||
@@ -14,6 +13,8 @@ CREATE TABLE `sys_user` (
|
|||||||
`sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '用户性别(0未选择 1男 2女)',
|
`sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '用户性别(0未选择 1男 2女)',
|
||||||
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像地址',
|
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像地址',
|
||||||
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码',
|
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码',
|
||||||
|
`user_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'System' COMMENT '用户类型(System系统用户)',
|
||||||
|
`user_source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '#' COMMENT '用户来源UID(#系统)',
|
||||||
`status_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '账号状态(0停用 1正常)',
|
`status_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '账号状态(0停用 1正常)',
|
||||||
`del_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标记(0存在 1删除)',
|
`del_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标记(0存在 1删除)',
|
||||||
`password_update_time` bigint NULL DEFAULT 0 COMMENT '密码更新时间',
|
`password_update_time` bigint NULL DEFAULT 0 COMMENT '密码更新时间',
|
||||||
@@ -30,15 +31,10 @@ CREATE TABLE `sys_user` (
|
|||||||
|
|
||||||
--
|
--
|
||||||
-- Dumping data for table `sys_user`
|
-- Dumping data for table `sys_user`
|
||||||
--
|
--
|
||||||
|
INSERT INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
LOCK TABLES `sys_user` WRITE;
|
INSERT INTO `sys_user` VALUES (2, 100, 'admin', 'admin', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
/*!40000 ALTER TABLE `sys_user` DISABLE KEYS */;
|
INSERT INTO `sys_user` VALUES (3, 100, 'manager', 'manager', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT INTO `sys_user` VALUES (2, 100, 'admin', 'admin', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
|
||||||
INSERT INTO `sys_user` VALUES (3, 100, 'manager', 'manager', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
|
||||||
INSERT INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
|
||||||
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -1,37 +1,15 @@
|
|||||||
/*
|
|
||||||
Navicat Premium Data Transfer
|
|
||||||
|
|
||||||
Source Server : root@192.168.2.242
|
|
||||||
Source Server Type : MariaDB
|
|
||||||
Source Server Version : 100622 (10.6.22-MariaDB-0ubuntu0.22.04.1)
|
|
||||||
Source Host : 192.168.2.242:33066
|
|
||||||
Source Schema : omc_db
|
|
||||||
|
|
||||||
Target Server Type : MariaDB
|
|
||||||
Target Server Version : 100622 (10.6.22-MariaDB-0ubuntu0.22.04.1)
|
|
||||||
File Encoding : 65001
|
|
||||||
|
|
||||||
Date: 01/08/2025 10:07:00
|
|
||||||
*/
|
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for cbc_message
|
-- Table structure for cbc_message
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
CREATE TABLE IF NOT EXISTS `cbc_message` (
|
CREATE TABLE IF NOT EXISTS `cbc_message` (
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||||
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`ne_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`message_json` varchar(10240) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`message_json` varchar(10240) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`status` enum('ACTIVE','INACTIVE') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'INACTIVE',
|
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'INACTIVE' COMMENT 'ACTIVE/INACTIVE',
|
||||||
`detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
`detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||||
`created_at` bigint(20) NULL DEFAULT NULL,
|
`created_at` bigint DEFAULT NULL,
|
||||||
`updated_at` bigint(20) NULL DEFAULT NULL,
|
`updated_at` bigint DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
INDEX `id`(`id`) USING BTREE,
|
KEY `idx_cbcm_ne_time` (`ne_type`,`ne_id`,`created_at`) USING BTREE
|
||||||
INDEX `idx_ne_time`(`ne_type`, `ne_id`, `created_at`) USING BTREE
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='CDR事件_MF';
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 64 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'CDR事件_MF' ROW_FORMAT = Dynamic;
|
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
||||||
|
|||||||
@@ -199,6 +199,10 @@ REPLACE INTO `sys_dict_data` VALUES (166, 'cdr_sip_code_cause', 'dictData.cdr_si
|
|||||||
REPLACE INTO `sys_dict_data` VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_data` VALUES (167, 'cdr_sip_code_cause', 'dictData.cdr_sip_code_cause.606', '606', 22, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_data` VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_data` VALUES (168, 'trace_interfaces', 'dictData.trace_interfaces.14', 'N14', 14, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_data` VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
REPLACE INTO `sys_dict_data` VALUES (169, 'trace_interfaces', 'dictData.trace_interfaces.5', 'N5', 5, '', '', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (170, 'sys_user_type', 'dictData.sys_user_type.system', 'System', 1, '', 'default', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (171, 'sys_user_type', 'dictData.sys_user_type.ldap', 'LDAP', 2, '', 'lime', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (172, 'sys_user_type', 'dictData.sys_user_type.smtp', 'SMTP', 3, '', 'magenta', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
REPLACE INTO `sys_dict_data` VALUES (173, 'sys_user_type', 'dictData.sys_user_type.oauth2', 'OAuth2', 4, '', 'gold', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ REPLACE INTO `sys_dict_type` VALUES (5, 'dictType.sys_job_group', 'sys_job_group
|
|||||||
REPLACE INTO `sys_dict_type` VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
REPLACE INTO `sys_dict_type` VALUES (6, 'dictType.sys_yes_no', 'sys_yes_no', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_yes_no_remark');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
REPLACE INTO `sys_dict_type` VALUES (9, 'dictType.sys_oper_type', 'sys_oper_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_oper_type_remark');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
REPLACE INTO `sys_dict_type` VALUES (10, 'dictType.sys_common_status', 'sys_common_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.sys_common_status_remark');
|
||||||
|
REPLACE INTO `sys_dict_type` VALUES (11, 'dictType.sys_user_type', 'sys_user_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, '');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
REPLACE INTO `sys_dict_type` VALUES (50, 'dictType.trace_type', 'trace_type', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.trace_type_remark');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
REPLACE INTO `sys_dict_type` VALUES (51, 'dictType.alarm_status', 'alarm_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.alarm_status_remark');
|
||||||
REPLACE INTO `sys_dict_type` VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
REPLACE INTO `sys_dict_type` VALUES (52, 'dictType.ne_version_status', 'ne_version_status', '1', '0', 'system', 1699348237468, 'system', 1699348237468, 'dictType.ne_version_status_remark');
|
||||||
|
|||||||
@@ -772,6 +772,14 @@ REPLACE INTO `sys_i18n` VALUES (757, 'dictData.trace_interfaces.5', 'N5', 'N5');
|
|||||||
REPLACE INTO `sys_i18n` VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
REPLACE INTO `sys_i18n` VALUES (758, "alarm.export.alarmCode", "告警编码", "Alarm Code");
|
||||||
REPLACE INTO `sys_i18n` VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
REPLACE INTO `sys_i18n` VALUES (759, "config.sys.user.fristPasswdChangeRemark", "关闭改为false 开启改为true, 建议同时设置密码有效期", "Off to false On to true, it is recommended to set the password expiration date at the same time.");
|
||||||
REPLACE INTO `sys_i18n` VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
REPLACE INTO `sys_i18n` VALUES (760, "menu.perf.kpiIMSOverview", "语音数据概览", "Voice Data Overview");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (761, "dictType.sys_user_type", "用户类型", "User Type");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (762, "dictData.sys_user_type.system", "系统", "System");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (763, "dictData.sys_user_type.ldap", "LDAP", "LDAP");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (764, "dictData.sys_user_type.smtp", "SMTP", "SMTP");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (765, "dictData.sys_user_type.oauth2", "OAuth2", "OAuth2");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (766, "user.export.userType", "用户类型", "User Type");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (767, "menu.system.loginSource", "第三方登录认证", "Third Party Login Source");
|
||||||
|
REPLACE INTO `sys_i18n` VALUES (768, "log.operate.title.sysLoginSource", "认证源", "Login Source");
|
||||||
|
|
||||||
REPLACE INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
REPLACE INTO `sys_i18n` VALUES (2000, 'menu.psap.agent', '座席', 'Agent');
|
||||||
REPLACE INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
REPLACE INTO `sys_i18n` VALUES (2001, 'menu.psap.agent.callings', '并行话务', 'Calling Information');
|
||||||
|
|||||||
23
build/database/std/upgrade/upg_sys_login_source.sql
Normal file
23
build/database/std/upgrade/upg_sys_login_source.sql
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
--
|
||||||
|
-- Table structure for table `sys_login_source`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `sys_login_source` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||||
|
`uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT 'UID 16位长度字符串',
|
||||||
|
`type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '认证类型 LDAP SMTP OAuth2',
|
||||||
|
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '认证名称',
|
||||||
|
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '图标',
|
||||||
|
`active_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '激活标记(0未激活 1激活)',
|
||||||
|
`sync_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '同步标记(0未同步 1同步)',
|
||||||
|
`config` text COLLATE utf8mb4_general_ci COMMENT '认证配置',
|
||||||
|
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` bigint NULL DEFAULT 0 COMMENT '创建时间',
|
||||||
|
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` bigint NULL DEFAULT 0 COMMENT '更新时间',
|
||||||
|
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
KEY `idx_ls_type_name` (`type`,`name`) USING BTREE COMMENT '认证类型_认证名称'
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='系统_认证源表';
|
||||||
|
|
||||||
|
-- Dump completed on 2025-08-05 16:20:56
|
||||||
@@ -72,6 +72,7 @@ REPLACE INTO `sys_menu` VALUES (105, 'menu.security.post', 2113, 6, 'post', 'sys
|
|||||||
REPLACE INTO `sys_menu` VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictTypeRemark');
|
REPLACE INTO `sys_menu` VALUES (106, 'menu.system.dictType', 1, 30, 'dict', 'system/dict/index', '1', '1', 'M', '1', '1', 'system:dict:list', 'icon-tubiaoku', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictTypeRemark');
|
||||||
REPLACE INTO `sys_menu` VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictDataRemark');
|
REPLACE INTO `sys_menu` VALUES (107, 'menu.system.dictData', 1, 31, 'dict/inline/data/:dictId', 'system/dict/data', '1', '1', 'M', '0', '1', 'system:dict:data', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.dictDataRemark');
|
||||||
REPLACE INTO `sys_menu` VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.paramSetRemark');
|
REPLACE INTO `sys_menu` VALUES (108, 'menu.system.paramSet', 1, 59, 'config', 'system/config/index', '1', '1', 'M', '1', '1', 'system:config:list', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.paramSetRemark');
|
||||||
|
REPLACE INTO `sys_menu` VALUES (109, 'menu.system.loginSource', 2113, 12, 'login-source', 'system/login-source/index', '1', '1', 'M', '1', '1', 'system:loginSource:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemLogRemark');
|
REPLACE INTO `sys_menu` VALUES (111, 'menu.system.systemLog', 1, 11, 'log', '', '1', '1', 'D', '0', '0', '', '#', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemLogRemark');
|
||||||
REPLACE INTO `sys_menu` VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemInfoRemark');
|
REPLACE INTO `sys_menu` VALUES (112, 'menu.system.systemInfo', 1, 5, 'system-info', 'monitor/system/info', '1', '1', 'M', '1', '1', 'monitor:system:info', 'icon-fuzhidaima', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.systemInfoRemark');
|
||||||
REPLACE INTO `sys_menu` VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
REPLACE INTO `sys_menu` VALUES (113, 'menu.system.cacheInfo', 1, 8, 'cache-info', 'monitor/cache/info', '1', '1', 'M', '1', '1', 'monitor:cache:info', 'icon-gongnengjieshao', '0', 'system', 1728641403588,'system', 1728641403588, 'menu.system.cacheInfoRemark');
|
||||||
@@ -134,6 +135,10 @@ REPLACE INTO `sys_menu` VALUES (1053, 'menu.common.edit', 116, 3, '#', '', '1',
|
|||||||
REPLACE INTO `sys_menu` VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
REPLACE INTO `sys_menu` VALUES (1054, 'menu.common.delete', 116, 4, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
REPLACE INTO `sys_menu` VALUES (1055, 'menu.common.edit', 116, 5, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:changeStatus', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
REPLACE INTO `sys_menu` VALUES (1056, 'menu.common.export', 116, 6, '#', '', '1', '1', 'B', '1', '1', 'monitor:job:export', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO `sys_menu` VALUES (1057, 'menu.common.query', 109, 1, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:query', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO `sys_menu` VALUES (1058, 'menu.common.add', 109, 2, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:add', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO `sys_menu` VALUES (1059, 'menu.common.edit', 109, 3, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:edit', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
REPLACE INTO `sys_menu` VALUES (1060, 'menu.common.delete', 109, 4, '#', '', '1', '1', 'B', '1', '1', 'system:loginSource:remove', '#', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
REPLACE INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
REPLACE INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
REPLACE INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
REPLACE INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for sys_role_menu
|
-- Table structure for sys_role_menu
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
@@ -10,12 +7,10 @@ CREATE TABLE IF NOT EXISTS `sys_role_menu` (
|
|||||||
PRIMARY KEY (`role_id`, `menu_id`) USING BTREE
|
PRIMARY KEY (`role_id`, `menu_id`) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统_角色和菜单关联表' ROW_FORMAT = Dynamic;
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统_角色和菜单关联表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
DELETE FROM `sys_role_menu` WHERE `role_id` IN (2,3,4,5);
|
||||||
--
|
--
|
||||||
-- Dumping data for table `sys_role_menu`
|
-- Dumping data for table `sys_role_menu`
|
||||||
--
|
--
|
||||||
|
|
||||||
LOCK TABLES `sys_role_menu` WRITE;
|
|
||||||
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 4);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 4);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 5);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 5);
|
||||||
@@ -32,6 +27,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 103);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 104);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 104);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 105);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 105);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 108);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 108);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 109);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 111);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 111);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 115);
|
||||||
@@ -68,10 +64,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1030);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1032);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1032);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1034);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1034);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1039);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1039);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1040);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1041);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1041);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1042);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1042);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1043);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1044);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1044);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1045);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1045);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1048);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1048);
|
||||||
@@ -83,6 +77,10 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1053);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1054);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1054);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1055);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1055);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1056);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1056);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1057);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1058);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1059);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 1060);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2000);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2000);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2001);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2001);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2002);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2002);
|
||||||
@@ -90,8 +88,8 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2003);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2004);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2004);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2005);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2005);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2007);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2007);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2009);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2008);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2008);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2009);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2010);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2010);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2011);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2011);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2083);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (2, 2083);
|
||||||
@@ -173,7 +171,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 65);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 66);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 66);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 108);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 108);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 115);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 500);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 500);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 501);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 501);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1030);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1030);
|
||||||
@@ -181,7 +178,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1032);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1034);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1034);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1039);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1039);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1042);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1042);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 1048);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2000);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2000);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2001);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2001);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2002);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2002);
|
||||||
@@ -194,6 +190,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2009);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2010);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2010);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2011);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2011);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2083);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2083);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2084);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2086);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2086);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2087);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2088);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2088);
|
||||||
@@ -205,10 +202,12 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2097);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2107);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2107);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2108);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2108);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2109);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2109);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2113);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2114);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2114);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2115);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2116);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2116);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2118);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2122);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2123);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2123);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2126);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2126);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2128);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2128);
|
||||||
@@ -229,11 +228,10 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2149);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2151);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2151);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2152);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2153);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2154);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2155);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2156);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2157);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2158);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2158);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2162);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2163);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2165);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2165);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2166);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2166);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2167);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (3, 2167);
|
||||||
@@ -243,9 +241,6 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (3, 20000);
|
|||||||
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 4);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 4);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 60);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 65);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 66);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 115);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 500);
|
||||||
@@ -255,17 +250,18 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1041);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1042);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1042);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1044);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1044);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1048);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 1048);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2083);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2086);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2087);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2087);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2088);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2088);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2089);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2089);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2091);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2092);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2092);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2094);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2094);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2097);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2097);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2113);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2113);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2114);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2115);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2116);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2116);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2123);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2126);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2126);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2128);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2128);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2129);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2129);
|
||||||
@@ -279,11 +275,7 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2141);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2147);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2147);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2148);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2149);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2151);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2152);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2153);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2157);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2157);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2163);
|
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2165);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2166);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2166);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2167);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (4, 2167);
|
||||||
@@ -295,10 +287,15 @@ INSERT IGNORE INTO `sys_role_menu` VALUES (5, 4);
|
|||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 112);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2087);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2087);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2115);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2115);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2126);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2128);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2130);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2131);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2131);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2132);
|
||||||
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165);
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2165);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2166);
|
||||||
UNLOCK TABLES;
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2167);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2168);
|
||||||
|
INSERT IGNORE INTO `sys_role_menu` VALUES (5, 2169);
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
--
|
--
|
||||||
-- Table structure for table `sys_user`
|
-- Table structure for table `sys_user`
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `sys_user` (
|
CREATE TABLE IF NOT EXISTS `sys_user` (
|
||||||
`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||||||
`dept_id` bigint NULL DEFAULT 0 COMMENT '部门ID',
|
`dept_id` bigint NULL DEFAULT 0 COMMENT '部门ID',
|
||||||
@@ -11,6 +12,8 @@ CREATE TABLE IF NOT EXISTS `sys_user` (
|
|||||||
`sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '用户性别(0未选择 1男 2女)',
|
`sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '用户性别(0未选择 1男 2女)',
|
||||||
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像地址',
|
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像地址',
|
||||||
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码',
|
`password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码',
|
||||||
|
`user_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'System' COMMENT '用户类型(System系统用户)',
|
||||||
|
`user_source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '#' COMMENT '用户来源UID (系统#)',
|
||||||
`status_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '账号状态(0停用 1正常)',
|
`status_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '账号状态(0停用 1正常)',
|
||||||
`del_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标记(0存在 1删除)',
|
`del_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标记(0存在 1删除)',
|
||||||
`password_update_time` bigint NULL DEFAULT 0 COMMENT '密码更新时间',
|
`password_update_time` bigint NULL DEFAULT 0 COMMENT '密码更新时间',
|
||||||
@@ -28,10 +31,6 @@ CREATE TABLE IF NOT EXISTS `sys_user` (
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- COLUMN for sys_user
|
-- COLUMN for sys_user
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
ALTER TABLE `sys_user` DROP COLUMN `user_type`;
|
|
||||||
ALTER TABLE `sys_user` DROP COLUMN `phonenumber`;
|
|
||||||
ALTER TABLE `sys_user` DROP COLUMN `status`;
|
|
||||||
ALTER TABLE `sys_user` DROP COLUMN `login_date`;
|
|
||||||
ALTER TABLE `sys_user` MODIFY COLUMN `user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户账号' AFTER `dept_id`;
|
ALTER TABLE `sys_user` MODIFY COLUMN `user_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户账号' AFTER `dept_id`;
|
||||||
ALTER TABLE `sys_user` MODIFY COLUMN `nick_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称' AFTER `user_name`;
|
ALTER TABLE `sys_user` MODIFY COLUMN `nick_name` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称' AFTER `user_name`;
|
||||||
ALTER TABLE `sys_user` ADD COLUMN `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '手机号码' AFTER `email`;
|
ALTER TABLE `sys_user` ADD COLUMN `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '手机号码' AFTER `email`;
|
||||||
@@ -45,15 +44,18 @@ ALTER TABLE `sys_user` ADD COLUMN `login_time` bigint(20) NULL DEFAULT 0 COMMENT
|
|||||||
ALTER TABLE `sys_user` MODIFY COLUMN `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者' AFTER `login_time`;
|
ALTER TABLE `sys_user` MODIFY COLUMN `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者' AFTER `login_time`;
|
||||||
ALTER TABLE `sys_user` MODIFY COLUMN `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者' AFTER `create_time`;
|
ALTER TABLE `sys_user` MODIFY COLUMN `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者' AFTER `create_time`;
|
||||||
ALTER TABLE `sys_user` MODIFY COLUMN `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `update_time`;
|
ALTER TABLE `sys_user` MODIFY COLUMN `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `update_time`;
|
||||||
|
ALTER TABLE `sys_user` ADD COLUMN `user_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'System' COMMENT '用户类型(System系统用户)' AFTER `password`;
|
||||||
|
ALTER TABLE `sys_user` ADD COLUMN `user_source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '#' COMMENT '用户来源UID (系统#)' AFTER `user_type`;
|
||||||
ALTER TABLE `sys_user` COMMENT = '系统_用户信息表';
|
ALTER TABLE `sys_user` COMMENT = '系统_用户信息表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Data for sys_user
|
-- Data for sys_user
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
INSERT IGNORE INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT IGNORE INTO `sys_user` VALUES (1, 100, 'supervisor', 'supervisor', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT IGNORE INTO `sys_user` VALUES (2, 100, 'admin', 'admin', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT IGNORE INTO `sys_user` VALUES (2, 100, 'admin', 'admin', '', '', '0', '', '$2a$10$QgIcp6yuOEGrEU0TNU12K.uQRLbcufesEU7hiRYlRSSdUO7OAkoTq', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT IGNORE INTO `sys_user` VALUES (3, 100, 'manager', 'manager', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT IGNORE INTO `sys_user` VALUES (3, 100, 'manager', 'manager', '', '', '0', '', '$2a$10$RND3fUw9Ai.WcggYSI57tu.u3OIlktdPxFzlWkmiHC1paV038t0I2', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
INSERT IGNORE INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
INSERT IGNORE INTO `sys_user` VALUES (4, 100, 'monitor', 'monitor', '', '', '0', '', '$2a$10$t3zpKQ0olECotFyI1yO43.tCoS0EXoSRBDcqwl09xvrsmn14qFHHy', 'System', '#', '1', '0', 0, 0, '127.0.0.1', 0, 'system', 0, '', 0, '');
|
||||||
UPDATE `sys_user` SET `status_flag` = '1' WHERE `user_id` in (1,2,3,4);
|
UPDATE `sys_user` SET `status_flag` = '1', `user_type` = 'System', `user_source` = '#' WHERE `user_id` in (1,2,3,4);
|
||||||
|
|
||||||
|
|
||||||
-- Dump completed on 2025-02-14 15:26:56
|
-- Dump completed on 2025-02-14 15:26:56
|
||||||
|
|||||||
@@ -23,38 +23,84 @@ func Setup(router *gin.Engine) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// 账号身份操作
|
// 账号身份操作
|
||||||
|
account := controller.NewAccount
|
||||||
|
accountGroup := router.Group("/auth")
|
||||||
{
|
{
|
||||||
router.POST("/auth/login",
|
accountGroup.POST("/login",
|
||||||
middleware.RateLimit(middleware.LimitOption{
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
Time: 180,
|
Time: 180,
|
||||||
Count: 15,
|
Count: 15,
|
||||||
Type: middleware.LIMIT_IP,
|
Type: middleware.LIMIT_IP,
|
||||||
}),
|
}),
|
||||||
controller.NewAccount.Login,
|
account.Login,
|
||||||
)
|
)
|
||||||
router.POST("/auth/logout",
|
accountGroup.POST("/logout",
|
||||||
middleware.RateLimit(middleware.LimitOption{
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
Time: 120,
|
Time: 120,
|
||||||
Count: 15,
|
Count: 15,
|
||||||
Type: middleware.LIMIT_IP,
|
Type: middleware.LIMIT_IP,
|
||||||
}),
|
}),
|
||||||
controller.NewAccount.Logout,
|
account.Logout,
|
||||||
)
|
)
|
||||||
router.POST("/auth/refresh-token",
|
accountGroup.POST("/refresh-token",
|
||||||
middleware.RateLimit(middleware.LimitOption{
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
Time: 60,
|
Time: 60,
|
||||||
Count: 5,
|
Count: 5,
|
||||||
Type: middleware.LIMIT_IP,
|
Type: middleware.LIMIT_IP,
|
||||||
}),
|
}),
|
||||||
controller.NewAccount.RefreshToken,
|
account.RefreshToken,
|
||||||
)
|
)
|
||||||
router.GET("/me",
|
router.GET("/me",
|
||||||
middleware.AuthorizeUser(nil),
|
middleware.AuthorizeUser(nil),
|
||||||
controller.NewAccount.Me,
|
account.Me,
|
||||||
)
|
)
|
||||||
router.GET("/router",
|
router.GET("/router",
|
||||||
middleware.AuthorizeUser(nil),
|
middleware.AuthorizeUser(nil),
|
||||||
controller.NewAccount.Router,
|
account.Router,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录认证源
|
||||||
|
{
|
||||||
|
accountGroup.GET("/login/source",
|
||||||
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
|
Time: 300,
|
||||||
|
Count: 60,
|
||||||
|
Type: middleware.LIMIT_IP,
|
||||||
|
}),
|
||||||
|
account.LoginSource,
|
||||||
|
)
|
||||||
|
accountGroup.POST("/login/ldap",
|
||||||
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
|
Time: 180,
|
||||||
|
Count: 15,
|
||||||
|
Type: middleware.LIMIT_IP,
|
||||||
|
}),
|
||||||
|
account.LDAP,
|
||||||
|
)
|
||||||
|
accountGroup.POST("/login/smtp",
|
||||||
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
|
Time: 180,
|
||||||
|
Count: 15,
|
||||||
|
Type: middleware.LIMIT_IP,
|
||||||
|
}),
|
||||||
|
account.SMTP,
|
||||||
|
)
|
||||||
|
accountGroup.GET("/login/oauth2/authorize",
|
||||||
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
|
Time: 180,
|
||||||
|
Count: 15,
|
||||||
|
Type: middleware.LIMIT_IP,
|
||||||
|
}),
|
||||||
|
account.OAuth2CodeURL,
|
||||||
|
)
|
||||||
|
accountGroup.POST("/login/oauth2/token",
|
||||||
|
middleware.RateLimit(middleware.LimitOption{
|
||||||
|
Time: 180,
|
||||||
|
Count: 15,
|
||||||
|
Type: middleware.LIMIT_IP,
|
||||||
|
}),
|
||||||
|
account.OAuth2Token,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,16 +4,13 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"be.ems/src/framework/config"
|
|
||||||
"be.ems/src/framework/constants"
|
"be.ems/src/framework/constants"
|
||||||
"be.ems/src/framework/i18n"
|
"be.ems/src/framework/i18n"
|
||||||
"be.ems/src/framework/reqctx"
|
"be.ems/src/framework/reqctx"
|
||||||
"be.ems/src/framework/resp"
|
"be.ems/src/framework/resp"
|
||||||
"be.ems/src/framework/token"
|
"be.ems/src/framework/token"
|
||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
"be.ems/src/modules/auth/model"
|
|
||||||
"be.ems/src/modules/auth/service"
|
"be.ems/src/modules/auth/service"
|
||||||
systemModelVO "be.ems/src/modules/system/model/vo"
|
|
||||||
systemService "be.ems/src/modules/system/service"
|
systemService "be.ems/src/modules/system/service"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -33,95 +30,6 @@ type AccountController struct {
|
|||||||
sysLogLoginService *systemService.SysLogLogin // 系统登录访问
|
sysLogLoginService *systemService.SysLogLogin // 系统登录访问
|
||||||
}
|
}
|
||||||
|
|
||||||
// Login 系统登录
|
|
||||||
//
|
|
||||||
// POST /auth/login
|
|
||||||
//
|
|
||||||
// @Tags common/authorization
|
|
||||||
// @Accept json
|
|
||||||
// @Produce json
|
|
||||||
// @Param data body object true "Request Param"
|
|
||||||
// @Success 200 {object} object "Response Results"
|
|
||||||
// @Summary System Login
|
|
||||||
// @Description System Login
|
|
||||||
// @Router /auth/login [post]
|
|
||||||
func (s AccountController) Login(c *gin.Context) {
|
|
||||||
language := reqctx.AcceptLanguage(c)
|
|
||||||
var body model.LoginBody
|
|
||||||
if err := c.ShouldBindJSON(&body); err != nil {
|
|
||||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
|
||||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前请求信息
|
|
||||||
ipaddr, location := reqctx.IPAddrLocation(c)
|
|
||||||
os, browser := reqctx.UaOsBrowser(c)
|
|
||||||
|
|
||||||
// 校验验证码 根据错误信息,创建系统访问记录
|
|
||||||
if err := s.accountService.ValidateCaptcha(body.Code, body.UUID); err != nil {
|
|
||||||
msg := fmt.Sprintf("%s code %s", err.Error(), body.Code)
|
|
||||||
s.sysLogLoginService.Insert(
|
|
||||||
body.Username, constants.STATUS_NO, msg,
|
|
||||||
[4]string{ipaddr, location, os, browser},
|
|
||||||
)
|
|
||||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 登录用户信息
|
|
||||||
info, err := s.accountService.ByUsername(body.Username, body.Password)
|
|
||||||
if err != nil {
|
|
||||||
s.sysLogLoginService.Insert(
|
|
||||||
body.Username, constants.STATUS_NO, err.Error(),
|
|
||||||
[4]string{ipaddr, location, os, browser},
|
|
||||||
)
|
|
||||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
data := map[string]any{}
|
|
||||||
|
|
||||||
if !config.IsSystemUser(info.UserId) {
|
|
||||||
// 强制改密码
|
|
||||||
forcePasswdChange, err := s.accountService.PasswordCountOrExpireTime(info.User.LoginCount, info.User.PasswordUpdateTime)
|
|
||||||
if err != nil {
|
|
||||||
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if forcePasswdChange {
|
|
||||||
data["forcePasswdChange"] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deviceFingerprint := reqctx.DeviceFingerprint(c, info.UserId)
|
|
||||||
|
|
||||||
// 生成访问令牌
|
|
||||||
accessToken, expiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "access")
|
|
||||||
if accessToken == "" || expiresIn == 0 {
|
|
||||||
c.JSON(200, resp.ErrMsg("token generation failed"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 生成刷新令牌
|
|
||||||
refreshToken, refreshExpiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "refresh")
|
|
||||||
|
|
||||||
// 记录令牌,创建系统访问记录
|
|
||||||
token.UserInfoCreate(&info, deviceFingerprint, [4]string{ipaddr, location, os, browser})
|
|
||||||
s.accountService.UpdateLoginDateAndIP(info)
|
|
||||||
s.sysLogLoginService.Insert(
|
|
||||||
body.Username, constants.STATUS_YES, "app.common.loginSuccess",
|
|
||||||
[4]string{ipaddr, location, os, browser},
|
|
||||||
)
|
|
||||||
|
|
||||||
data["tokenType"] = constants.HEADER_PREFIX
|
|
||||||
data["accessToken"] = accessToken
|
|
||||||
data["expiresIn"] = expiresIn
|
|
||||||
data["refreshToken"] = refreshToken
|
|
||||||
data["refreshExpiresIn"] = refreshExpiresIn
|
|
||||||
data["userId"] = info.UserId
|
|
||||||
c.JSON(200, resp.OkData(data))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Logout 系统登出
|
// Logout 系统登出
|
||||||
//
|
//
|
||||||
// POST /auth/logout
|
// POST /auth/logout
|
||||||
@@ -222,82 +130,10 @@ func (s AccountController) RefreshToken(c *gin.Context) {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Me 登录用户信息
|
// LoginSource 登录认证源
|
||||||
//
|
//
|
||||||
// GET /me
|
// GET /auth/login/source
|
||||||
//
|
func (s AccountController) LoginSource(c *gin.Context) {
|
||||||
// @Tags common/authorization
|
data := s.accountService.LoginSource()
|
||||||
// @Accept json
|
|
||||||
// @Produce json
|
|
||||||
// @Success 200 {object} object "Response Results"
|
|
||||||
// @Security TokenAuth
|
|
||||||
// @Summary Login User Information
|
|
||||||
// @Description Login User Information
|
|
||||||
// @Router /me [get]
|
|
||||||
func (s AccountController) Me(c *gin.Context) {
|
|
||||||
language := reqctx.AcceptLanguage(c)
|
|
||||||
info, err := reqctx.LoginUser(c)
|
|
||||||
if err != nil {
|
|
||||||
c.JSON(401, resp.CodeMsg(resp.CODE_AUTH_INVALID, err.Error()))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 角色权限集合,系统管理员拥有所有权限
|
|
||||||
isSystemUser := config.IsSystemUser(info.UserId)
|
|
||||||
roles, perms := s.accountService.RoleAndMenuPerms(info.UserId, isSystemUser)
|
|
||||||
|
|
||||||
info.User.NickName = i18n.TKey(language, info.User.NickName)
|
|
||||||
info.User.Remark = i18n.TKey(language, info.User.Remark)
|
|
||||||
info.User.Dept.DeptName = i18n.TKey(language, info.User.Dept.DeptName)
|
|
||||||
for ri := range info.User.Roles {
|
|
||||||
info.User.Roles[ri].RoleName = i18n.TKey(language, info.User.Roles[ri].RoleName)
|
|
||||||
}
|
|
||||||
|
|
||||||
data := map[string]any{
|
|
||||||
"user": info.User,
|
|
||||||
"roles": roles,
|
|
||||||
"permissions": perms,
|
|
||||||
}
|
|
||||||
if !isSystemUser {
|
|
||||||
// 强制改密码
|
|
||||||
forcePasswdChange, _ := s.accountService.PasswordCountOrExpireTime(info.User.LoginCount, info.User.PasswordUpdateTime)
|
|
||||||
if forcePasswdChange {
|
|
||||||
data["forcePasswdChange"] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
c.JSON(200, resp.OkData(data))
|
c.JSON(200, resp.OkData(data))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Router 登录用户路由信息
|
|
||||||
//
|
|
||||||
// GET /router
|
|
||||||
//
|
|
||||||
// @Tags common/authorization
|
|
||||||
// @Accept json
|
|
||||||
// @Produce json
|
|
||||||
// @Success 200 {object} object "Response Results"
|
|
||||||
// @Security TokenAuth
|
|
||||||
// @Summary Login User Routing Information
|
|
||||||
// @Description Login User Routing Information
|
|
||||||
// @Router /router [get]
|
|
||||||
func (s AccountController) Router(c *gin.Context) {
|
|
||||||
loginUserId := reqctx.LoginUserToUserID(c)
|
|
||||||
|
|
||||||
// 前端路由,系统管理员拥有所有
|
|
||||||
isSystemUser := config.IsSystemUser(loginUserId)
|
|
||||||
buildMenus := s.accountService.RouteMenus(loginUserId, isSystemUser)
|
|
||||||
// 闭包函数处理多语言
|
|
||||||
language := reqctx.AcceptLanguage(c)
|
|
||||||
var converI18n func(language string, arr *[]systemModelVO.Router)
|
|
||||||
converI18n = func(language string, arr *[]systemModelVO.Router) {
|
|
||||||
for i := range *arr {
|
|
||||||
(*arr)[i].Meta.Title = i18n.TKey(language, (*arr)[i].Meta.Title)
|
|
||||||
if len((*arr)[i].Children) > 0 {
|
|
||||||
converI18n(language, &(*arr)[i].Children)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
converI18n(language, &buildMenus)
|
|
||||||
|
|
||||||
c.JSON(200, resp.OkData(buildMenus))
|
|
||||||
}
|
|
||||||
|
|||||||
93
src/modules/auth/controller/account_info.go
Normal file
93
src/modules/auth/controller/account_info.go
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"be.ems/src/framework/config"
|
||||||
|
"be.ems/src/framework/i18n"
|
||||||
|
"be.ems/src/framework/reqctx"
|
||||||
|
"be.ems/src/framework/resp"
|
||||||
|
systemModelVO "be.ems/src/modules/system/model/vo"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Me 登录用户信息
|
||||||
|
//
|
||||||
|
// GET /me
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Security TokenAuth
|
||||||
|
// @Summary Login User Information
|
||||||
|
// @Description Login User Information
|
||||||
|
// @Router /me [get]
|
||||||
|
func (s AccountController) Me(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
info, err := reqctx.LoginUser(c)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(401, resp.CodeMsg(resp.CODE_AUTH_INVALID, err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 角色权限集合,系统管理员拥有所有权限
|
||||||
|
isSystemUser := config.IsSystemUser(info.UserId)
|
||||||
|
roles, perms := s.accountService.RoleAndMenuPerms(info.UserId, isSystemUser)
|
||||||
|
|
||||||
|
info.User.NickName = i18n.TKey(language, info.User.NickName)
|
||||||
|
info.User.Remark = i18n.TKey(language, info.User.Remark)
|
||||||
|
if info.User.Dept != nil {
|
||||||
|
info.User.Dept.DeptName = i18n.TKey(language, info.User.Dept.DeptName)
|
||||||
|
}
|
||||||
|
for ri := range info.User.Roles {
|
||||||
|
info.User.Roles[ri].RoleName = i18n.TKey(language, info.User.Roles[ri].RoleName)
|
||||||
|
}
|
||||||
|
|
||||||
|
data := map[string]any{
|
||||||
|
"user": info.User,
|
||||||
|
"roles": roles,
|
||||||
|
"permissions": perms,
|
||||||
|
}
|
||||||
|
if !isSystemUser {
|
||||||
|
// 强制改密码
|
||||||
|
forcePasswdChange, _ := s.accountService.PasswordCountOrExpireTime(info.User.LoginCount, info.User.PasswordUpdateTime)
|
||||||
|
if forcePasswdChange {
|
||||||
|
data["forcePasswdChange"] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Router 登录用户路由信息
|
||||||
|
//
|
||||||
|
// GET /router
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Security TokenAuth
|
||||||
|
// @Summary Login User Routing Information
|
||||||
|
// @Description Login User Routing Information
|
||||||
|
// @Router /router [get]
|
||||||
|
func (s AccountController) Router(c *gin.Context) {
|
||||||
|
loginUserId := reqctx.LoginUserToUserID(c)
|
||||||
|
|
||||||
|
// 前端路由,系统管理员拥有所有
|
||||||
|
isSystemUser := config.IsSystemUser(loginUserId)
|
||||||
|
buildMenus := s.accountService.RouteMenus(loginUserId, isSystemUser)
|
||||||
|
// 闭包函数处理多语言
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var converI18n func(language string, arr *[]systemModelVO.Router)
|
||||||
|
converI18n = func(language string, arr *[]systemModelVO.Router) {
|
||||||
|
for i := range *arr {
|
||||||
|
(*arr)[i].Meta.Title = i18n.TKey(language, (*arr)[i].Meta.Title)
|
||||||
|
if len((*arr)[i].Children) > 0 {
|
||||||
|
converI18n(language, &(*arr)[i].Children)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
converI18n(language, &buildMenus)
|
||||||
|
|
||||||
|
c.JSON(200, resp.OkData(buildMenus))
|
||||||
|
}
|
||||||
80
src/modules/auth/controller/account_ldap.go
Normal file
80
src/modules/auth/controller/account_ldap.go
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/i18n"
|
||||||
|
"be.ems/src/framework/reqctx"
|
||||||
|
"be.ems/src/framework/resp"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// LDAP LDAP认证登录
|
||||||
|
//
|
||||||
|
// POST /auth/ldap
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body object true "Request Param"
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Summary System Login
|
||||||
|
// @Description System Login
|
||||||
|
// @Router /auth/ldap [post]
|
||||||
|
func (s AccountController) LDAP(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var body model.LoginSourceBody
|
||||||
|
if err := c.ShouldBindJSON(&body); err != nil {
|
||||||
|
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||||
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前请求信息
|
||||||
|
ipaddr, location := reqctx.IPAddrLocation(c)
|
||||||
|
os, browser := reqctx.UaOsBrowser(c)
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info, err := s.accountService.ByLDAP(body)
|
||||||
|
if err != nil {
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_NO, err.Error(),
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := map[string]any{}
|
||||||
|
|
||||||
|
deviceFingerprint := reqctx.DeviceFingerprint(c, info.UserId)
|
||||||
|
|
||||||
|
// 生成访问令牌
|
||||||
|
accessToken, expiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "access")
|
||||||
|
if accessToken == "" || expiresIn == 0 {
|
||||||
|
c.JSON(200, resp.ErrMsg("token generation failed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 生成刷新令牌
|
||||||
|
refreshToken, refreshExpiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "refresh")
|
||||||
|
|
||||||
|
// 记录令牌,创建系统访问记录
|
||||||
|
token.UserInfoCreate(&info, deviceFingerprint, [4]string{ipaddr, location, os, browser})
|
||||||
|
s.accountService.UpdateLoginDateAndIP(info)
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_YES, "app.common.loginSuccess",
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
|
||||||
|
data["tokenType"] = constants.HEADER_PREFIX
|
||||||
|
data["accessToken"] = accessToken
|
||||||
|
data["expiresIn"] = expiresIn
|
||||||
|
data["refreshToken"] = refreshToken
|
||||||
|
data["refreshExpiresIn"] = refreshExpiresIn
|
||||||
|
data["userId"] = info.UserId
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
107
src/modules/auth/controller/account_oauth2.go
Normal file
107
src/modules/auth/controller/account_oauth2.go
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/i18n"
|
||||||
|
"be.ems/src/framework/reqctx"
|
||||||
|
"be.ems/src/framework/resp"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// OAuth2CodeURL OAuth2认证跳转登录URL
|
||||||
|
//
|
||||||
|
// GET /auth/login/oauth2/authorize
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body object true "Request Param"
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Summary System Login
|
||||||
|
// @Description System Login
|
||||||
|
// @Router /auth/login/oauth2/authorize [get]
|
||||||
|
func (s AccountController) OAuth2CodeURL(c *gin.Context) {
|
||||||
|
state := c.Query("state")
|
||||||
|
if state == "" {
|
||||||
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: state is empty"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
redirectURL, err := s.accountService.ByOAuth2CodeURL(state)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.Redirect(302, redirectURL)
|
||||||
|
}
|
||||||
|
|
||||||
|
// OAuth2 OAuth2认证登录
|
||||||
|
//
|
||||||
|
// POST /auth/login/oauth2/token
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body object true "Request Param"
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Summary System Login
|
||||||
|
// @Description System Login
|
||||||
|
// @Router /auth/login/oauth2/token [post]
|
||||||
|
func (s AccountController) OAuth2Token(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var body model.LoginSourceOauth2Body
|
||||||
|
if err := c.ShouldBindJSON(&body); err != nil {
|
||||||
|
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||||
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前请求信息
|
||||||
|
ipaddr, location := reqctx.IPAddrLocation(c)
|
||||||
|
os, browser := reqctx.UaOsBrowser(c)
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info, err := s.accountService.ByOAuth2(body)
|
||||||
|
if err != nil {
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.State, constants.STATUS_NO, err.Error(),
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := map[string]any{}
|
||||||
|
|
||||||
|
deviceFingerprint := reqctx.DeviceFingerprint(c, info.UserId)
|
||||||
|
|
||||||
|
// 生成访问令牌
|
||||||
|
accessToken, expiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "access")
|
||||||
|
if accessToken == "" || expiresIn == 0 {
|
||||||
|
c.JSON(200, resp.ErrMsg("token generation failed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 生成刷新令牌
|
||||||
|
refreshToken, refreshExpiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "refresh")
|
||||||
|
|
||||||
|
// 记录令牌,创建系统访问记录
|
||||||
|
token.UserInfoCreate(&info, deviceFingerprint, [4]string{ipaddr, location, os, browser})
|
||||||
|
s.accountService.UpdateLoginDateAndIP(info)
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.State, constants.STATUS_YES, "app.common.loginSuccess",
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
|
||||||
|
data["tokenType"] = constants.HEADER_PREFIX
|
||||||
|
data["accessToken"] = accessToken
|
||||||
|
data["expiresIn"] = expiresIn
|
||||||
|
data["refreshToken"] = refreshToken
|
||||||
|
data["refreshExpiresIn"] = refreshExpiresIn
|
||||||
|
data["userId"] = info.UserId
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
80
src/modules/auth/controller/account_smtp.go
Normal file
80
src/modules/auth/controller/account_smtp.go
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/i18n"
|
||||||
|
"be.ems/src/framework/reqctx"
|
||||||
|
"be.ems/src/framework/resp"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SMTP SMTP认证登录
|
||||||
|
//
|
||||||
|
// POST /auth/smtp
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body object true "Request Param"
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Summary System Login
|
||||||
|
// @Description System Login
|
||||||
|
// @Router /auth/smtp [post]
|
||||||
|
func (s AccountController) SMTP(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var body model.LoginSourceBody
|
||||||
|
if err := c.ShouldBindJSON(&body); err != nil {
|
||||||
|
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||||
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前请求信息
|
||||||
|
ipaddr, location := reqctx.IPAddrLocation(c)
|
||||||
|
os, browser := reqctx.UaOsBrowser(c)
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info, err := s.accountService.BySMTP(body)
|
||||||
|
if err != nil {
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_NO, err.Error(),
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := map[string]any{}
|
||||||
|
|
||||||
|
deviceFingerprint := reqctx.DeviceFingerprint(c, info.UserId)
|
||||||
|
|
||||||
|
// 生成访问令牌
|
||||||
|
accessToken, expiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "access")
|
||||||
|
if accessToken == "" || expiresIn == 0 {
|
||||||
|
c.JSON(200, resp.ErrMsg("token generation failed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 生成刷新令牌
|
||||||
|
refreshToken, refreshExpiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "refresh")
|
||||||
|
|
||||||
|
// 记录令牌,创建系统访问记录
|
||||||
|
token.UserInfoCreate(&info, deviceFingerprint, [4]string{ipaddr, location, os, browser})
|
||||||
|
s.accountService.UpdateLoginDateAndIP(info)
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_YES, "app.common.loginSuccess",
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
|
||||||
|
data["tokenType"] = constants.HEADER_PREFIX
|
||||||
|
data["accessToken"] = accessToken
|
||||||
|
data["expiresIn"] = expiresIn
|
||||||
|
data["refreshToken"] = refreshToken
|
||||||
|
data["refreshExpiresIn"] = refreshExpiresIn
|
||||||
|
data["userId"] = info.UserId
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
104
src/modules/auth/controller/account_system.go
Normal file
104
src/modules/auth/controller/account_system.go
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"be.ems/src/framework/config"
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/i18n"
|
||||||
|
"be.ems/src/framework/reqctx"
|
||||||
|
"be.ems/src/framework/resp"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Login 系统登录
|
||||||
|
//
|
||||||
|
// POST /auth/login
|
||||||
|
//
|
||||||
|
// @Tags common/authorization
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body object true "Request Param"
|
||||||
|
// @Success 200 {object} object "Response Results"
|
||||||
|
// @Summary System Login
|
||||||
|
// @Description System Login
|
||||||
|
// @Router /auth/login [post]
|
||||||
|
func (s AccountController) Login(c *gin.Context) {
|
||||||
|
language := reqctx.AcceptLanguage(c)
|
||||||
|
var body model.LoginBody
|
||||||
|
if err := c.ShouldBindJSON(&body); err != nil {
|
||||||
|
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||||
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前请求信息
|
||||||
|
ipaddr, location := reqctx.IPAddrLocation(c)
|
||||||
|
os, browser := reqctx.UaOsBrowser(c)
|
||||||
|
|
||||||
|
// 校验验证码 根据错误信息,创建系统访问记录
|
||||||
|
if err := s.accountService.ValidateCaptcha(body.Code, body.UUID); err != nil {
|
||||||
|
msg := fmt.Sprintf("%s code %s", err.Error(), body.Code)
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_NO, msg,
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info, err := s.accountService.ByUsername(body.Username, body.Password)
|
||||||
|
if err != nil {
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_NO, err.Error(),
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := map[string]any{}
|
||||||
|
|
||||||
|
if !config.IsSystemUser(info.UserId) {
|
||||||
|
// 强制改密码
|
||||||
|
forcePasswdChange, err := s.accountService.PasswordCountOrExpireTime(info.User.LoginCount, info.User.PasswordUpdateTime)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(i18n.TKey(language, err.Error())))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if forcePasswdChange {
|
||||||
|
data["forcePasswdChange"] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deviceFingerprint := reqctx.DeviceFingerprint(c, info.UserId)
|
||||||
|
|
||||||
|
// 生成访问令牌
|
||||||
|
accessToken, expiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "access")
|
||||||
|
if accessToken == "" || expiresIn == 0 {
|
||||||
|
c.JSON(200, resp.ErrMsg("token generation failed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 生成刷新令牌
|
||||||
|
refreshToken, refreshExpiresIn := token.UserTokenCreate(info.UserId, deviceFingerprint, "refresh")
|
||||||
|
|
||||||
|
// 记录令牌,创建系统访问记录
|
||||||
|
token.UserInfoCreate(&info, deviceFingerprint, [4]string{ipaddr, location, os, browser})
|
||||||
|
s.accountService.UpdateLoginDateAndIP(info)
|
||||||
|
s.sysLogLoginService.Insert(
|
||||||
|
body.Username, constants.STATUS_YES, "app.common.loginSuccess",
|
||||||
|
[4]string{ipaddr, location, os, browser},
|
||||||
|
)
|
||||||
|
|
||||||
|
data["tokenType"] = constants.HEADER_PREFIX
|
||||||
|
data["accessToken"] = accessToken
|
||||||
|
data["expiresIn"] = expiresIn
|
||||||
|
data["refreshToken"] = refreshToken
|
||||||
|
data["refreshExpiresIn"] = refreshExpiresIn
|
||||||
|
data["userId"] = info.UserId
|
||||||
|
c.JSON(200, resp.OkData(data))
|
||||||
|
}
|
||||||
@@ -2,15 +2,8 @@ package model
|
|||||||
|
|
||||||
// LoginBody 用户登录对象
|
// LoginBody 用户登录对象
|
||||||
type LoginBody struct {
|
type LoginBody struct {
|
||||||
// Username 用户名
|
Username string `json:"username" binding:"required"` // Username 用户名
|
||||||
Username string `json:"username" binding:"required"`
|
Password string `json:"password" binding:"required"` // Password 用户密码
|
||||||
|
Code string `json:"code"` // Code 验证码
|
||||||
// Password 用户密码
|
UUID string `json:"uuid"` // UUID 验证码唯一标识
|
||||||
Password string `json:"password" binding:"required"`
|
|
||||||
|
|
||||||
// Code 验证码
|
|
||||||
Code string `json:"code"`
|
|
||||||
|
|
||||||
// UUID 验证码唯一标识
|
|
||||||
UUID string `json:"uuid"`
|
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/modules/auth/model/login_source_vo.go
Normal file
22
src/modules/auth/model/login_source_vo.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
// LoginSourceVo 认证源登录对象
|
||||||
|
type LoginSourceVo struct {
|
||||||
|
UID string `json:"uid"` // UID 认证源UID
|
||||||
|
Name string `json:"name"` // Name 认证源名称
|
||||||
|
Type string `json:"type"` // Type 认证源类型
|
||||||
|
Icon string `json:"icon"` // Icon 认证源图标
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoginSourceBody 认证源用户登录对象
|
||||||
|
type LoginSourceBody struct {
|
||||||
|
Username string `json:"username" binding:"required"` // Username 用户名
|
||||||
|
Password string `json:"password" binding:"required"` // Password 用户密码
|
||||||
|
UID string `json:"uid" binding:"required"` // UID 认证源唯一标识
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoginSourceOauth2Body 认证源OAuth2用户登录对象
|
||||||
|
type LoginSourceOauth2Body struct {
|
||||||
|
Code string `json:"code" binding:"required"` // Code 授权码
|
||||||
|
State string `json:"state" binding:"required"` // State 状态-认证源唯一标识
|
||||||
|
}
|
||||||
@@ -2,21 +2,10 @@ package model
|
|||||||
|
|
||||||
// RegisterBody 用户注册对象
|
// RegisterBody 用户注册对象
|
||||||
type RegisterBody struct {
|
type RegisterBody struct {
|
||||||
// Username 用户名
|
Username string `json:"username" binding:"required"` // Username 用户名
|
||||||
Username string `json:"username" binding:"required"`
|
Password string `json:"password" binding:"required"` // Password 用户密码
|
||||||
|
ConfirmPassword string `json:"confirmPassword" binding:"required"` // ConfirmPassword 用户确认密码
|
||||||
// Password 用户密码
|
Code string `json:"code"` // Code 验证码
|
||||||
Password string `json:"password" binding:"required"`
|
UUID string `json:"uuid"` // UUID 验证码唯一标识
|
||||||
|
UserType string `json:"userType"` // UserType 标记用户类型
|
||||||
// ConfirmPassword 用户确认密码
|
|
||||||
ConfirmPassword string `json:"confirmPassword" binding:"required"`
|
|
||||||
|
|
||||||
// Code 验证码
|
|
||||||
Code string `json:"code"`
|
|
||||||
|
|
||||||
// UUID 验证码唯一标识
|
|
||||||
UUID string `json:"uuid"`
|
|
||||||
|
|
||||||
// UserType 标记用户类型
|
|
||||||
UserType string `json:"userType"`
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,102 +2,32 @@ package service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
|
||||||
|
|
||||||
"be.ems/src/framework/config"
|
"be.ems/src/framework/config"
|
||||||
"be.ems/src/framework/constants"
|
"be.ems/src/framework/constants"
|
||||||
"be.ems/src/framework/database/redis"
|
|
||||||
"be.ems/src/framework/token"
|
"be.ems/src/framework/token"
|
||||||
"be.ems/src/framework/utils/crypto"
|
|
||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
systemModelVO "be.ems/src/modules/system/model/vo"
|
"be.ems/src/modules/auth/model"
|
||||||
|
systemModel "be.ems/src/modules/system/model"
|
||||||
systemService "be.ems/src/modules/system/service"
|
systemService "be.ems/src/modules/system/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 实例化服务层 Account 结构体
|
// 实例化服务层 Account 结构体
|
||||||
var NewAccount = &Account{
|
var NewAccount = &Account{
|
||||||
sysUserService: systemService.NewSysUser,
|
sysUserService: systemService.NewSysUser,
|
||||||
sysConfigService: systemService.NewSysConfig,
|
sysConfigService: systemService.NewSysConfig,
|
||||||
sysRoleService: systemService.NewSysRole,
|
sysRoleService: systemService.NewSysRole,
|
||||||
sysMenuService: systemService.NewSysMenu,
|
sysMenuService: systemService.NewSysMenu,
|
||||||
|
sysLogSourceService: systemService.NewSysLoginSource,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 账号身份操作服务 服务层处理
|
// 账号身份操作服务 服务层处理
|
||||||
type Account struct {
|
type Account struct {
|
||||||
sysUserService *systemService.SysUser // 用户信息服务
|
sysUserService *systemService.SysUser // 用户信息服务
|
||||||
sysConfigService *systemService.SysConfig // 参数配置服务
|
sysConfigService *systemService.SysConfig // 参数配置服务
|
||||||
sysRoleService *systemService.SysRole // 角色服务
|
sysRoleService *systemService.SysRole // 角色服务
|
||||||
sysMenuService *systemService.SysMenu // 菜单服务
|
sysMenuService *systemService.SysMenu // 菜单服务
|
||||||
}
|
sysLogSourceService *systemService.SysLoginSource // 认证源
|
||||||
|
|
||||||
// ValidateCaptcha 校验验证码
|
|
||||||
func (s *Account) ValidateCaptcha(code, uuid string) error {
|
|
||||||
// 验证码检查,从数据库配置获取验证码开关 true开启,false关闭
|
|
||||||
captchaEnabledStr := s.sysConfigService.FindValueByKey("sys.account.captchaEnabled")
|
|
||||||
if !parse.Boolean(captchaEnabledStr) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if code == "" || uuid == "" {
|
|
||||||
// 验证码信息错误
|
|
||||||
return fmt.Errorf("captcha.err")
|
|
||||||
}
|
|
||||||
verifyKey := constants.CACHE_CAPTCHA_CODE + ":" + uuid
|
|
||||||
captcha, _ := redis.Get("", verifyKey)
|
|
||||||
if captcha == "" {
|
|
||||||
// 验证码已失效
|
|
||||||
return fmt.Errorf("captcha.errValid")
|
|
||||||
}
|
|
||||||
_ = redis.Del("", verifyKey)
|
|
||||||
if captcha != code {
|
|
||||||
// 验证码错误
|
|
||||||
return fmt.Errorf("captcha.err")
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ByUsername 登录创建用户信息
|
|
||||||
func (s Account) ByUsername(username, password string) (token.UserInfo, error) {
|
|
||||||
info := token.UserInfo{}
|
|
||||||
|
|
||||||
// 检查密码重试次数
|
|
||||||
retryKey, retryCount, lockTime, err := s.passwordRetryCount(username)
|
|
||||||
if err != nil {
|
|
||||||
return info, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询用户登录账号
|
|
||||||
sysUser := s.sysUserService.FindByUserName(username)
|
|
||||||
if sysUser.UserName != username {
|
|
||||||
return info, fmt.Errorf("login.errNameOrPasswd")
|
|
||||||
}
|
|
||||||
if sysUser.DelFlag == constants.STATUS_YES {
|
|
||||||
return info, fmt.Errorf("login.errDelFlag")
|
|
||||||
}
|
|
||||||
if sysUser.StatusFlag == constants.STATUS_NO {
|
|
||||||
return info, fmt.Errorf("login.errStatus")
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检验用户密码
|
|
||||||
compareBool := crypto.BcryptCompare(password, sysUser.Password)
|
|
||||||
if compareBool {
|
|
||||||
s.CleanLoginRecordCache(sysUser.UserName) // 清除错误记录次数
|
|
||||||
} else {
|
|
||||||
_ = redis.Set("", retryKey, retryCount+1, lockTime)
|
|
||||||
return info, fmt.Errorf("login.errNameOrPasswd")
|
|
||||||
}
|
|
||||||
|
|
||||||
// 登录用户信息
|
|
||||||
info.UserId = sysUser.UserId
|
|
||||||
info.DeptId = sysUser.DeptId
|
|
||||||
info.User = sysUser
|
|
||||||
// 用户权限组标识
|
|
||||||
if config.IsSystemUser(sysUser.UserId) {
|
|
||||||
info.Permissions = []string{constants.SYS_PERMISSION_SYSTEM}
|
|
||||||
} else {
|
|
||||||
perms := s.sysMenuService.FindPermsByUserId(sysUser.UserId)
|
|
||||||
info.Permissions = parse.RemoveDuplicates(perms)
|
|
||||||
}
|
|
||||||
return info, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ByUserId 用户ID刷新令牌创建用户信息
|
// ByUserId 用户ID刷新令牌创建用户信息
|
||||||
@@ -140,86 +70,43 @@ func (s Account) UpdateLoginDateAndIP(info token.UserInfo) bool {
|
|||||||
return s.sysUserService.Update(user) > 0
|
return s.sysUserService.Update(user) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// CleanLoginRecordCache 清除错误记录次数
|
// LoginSource 登录认证源
|
||||||
func (s Account) CleanLoginRecordCache(userName string) bool {
|
func (s Account) LoginSource() []model.LoginSourceVo {
|
||||||
cacheKey := fmt.Sprintf("%s:%s", constants.CACHE_PWD_ERR_COUNT, userName)
|
rows := s.sysLogSourceService.FindByActive("")
|
||||||
hasKey, err := redis.Has("", cacheKey)
|
data := make([]model.LoginSourceVo, 0)
|
||||||
if hasKey > 0 && err == nil {
|
for _, v := range rows {
|
||||||
return redis.Del("", cacheKey) == nil
|
data = append(data, model.LoginSourceVo{
|
||||||
|
UID: v.UID,
|
||||||
|
Name: v.Name,
|
||||||
|
Type: v.Type,
|
||||||
|
Icon: v.Icon,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return false
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
// passwordRetryCount 密码重试次数
|
// initLoginSourceUser 初始化登录源用户
|
||||||
func (s Account) passwordRetryCount(userName string) (string, int64, time.Duration, error) {
|
func (s *Account) initLoginSourceUser(uid, sType, username, password string) systemModel.SysUser {
|
||||||
// 从数据库配置获取登录次数和错误锁定时间
|
sysUser := systemModel.SysUser{
|
||||||
maxRetryCountStr := s.sysConfigService.FindValueByKey("sys.user.maxRetryCount")
|
UserName: username,
|
||||||
lockTimeStr := s.sysConfigService.FindValueByKey("sys.user.lockTime")
|
NickName: username, // 昵称使用名称账号
|
||||||
// 验证登录次数和错误锁定时间
|
Password: password, // 原始密码
|
||||||
maxRetryCount := parse.Number(maxRetryCountStr)
|
UserType: sType,
|
||||||
lockTime := parse.Number(lockTimeStr)
|
UserSource: uid,
|
||||||
|
Sex: "0", // 性别未选择
|
||||||
|
StatusFlag: constants.STATUS_YES, // 账号状态激活
|
||||||
|
DeptId: 101, // 归属部门为根节点
|
||||||
|
CreateBy: sType, // 创建来源
|
||||||
|
}
|
||||||
|
|
||||||
// 验证缓存记录次数
|
// 新增用户的角色管理
|
||||||
retryKey := fmt.Sprintf("%s:%s", constants.CACHE_PWD_ERR_COUNT, userName)
|
sysUser.RoleIds = []int64{5}
|
||||||
retryCount, err := redis.Get("", retryKey)
|
// 新增用户的岗位管理
|
||||||
if retryCount == "" || err != nil {
|
sysUser.PostIds = []int64{}
|
||||||
retryCount = "0"
|
|
||||||
|
insertId := s.sysUserService.Insert(sysUser)
|
||||||
|
if insertId > 0 {
|
||||||
|
sysUser.UserId = insertId
|
||||||
}
|
}
|
||||||
// 是否超过错误值
|
return s.sysUserService.FindByUserName(username, sType, uid)
|
||||||
retryCountInt64 := parse.Number(retryCount)
|
|
||||||
if retryCountInt64 >= int64(maxRetryCount) {
|
|
||||||
// msg := fmt.Sprintf("密码输入错误 %d 次,帐户锁定 %d 分钟", maxRetryCount, lockTime)
|
|
||||||
msg := fmt.Errorf("login.errRetryPasswd") // 密码输入错误多次,帐户已被锁定
|
|
||||||
return retryKey, retryCountInt64, time.Duration(lockTime) * time.Minute, fmt.Errorf("%s", msg)
|
|
||||||
}
|
|
||||||
return retryKey, retryCountInt64, time.Duration(lockTime) * time.Minute, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// PasswordCountOrExpireTime 首次登录或密码过期时间
|
|
||||||
func (s Account) PasswordCountOrExpireTime(loginCount, passwordUpdateTime int64) (bool, error) {
|
|
||||||
forcePasswdChange := false
|
|
||||||
// 从数据库配置获取-首次登录密码修改
|
|
||||||
fristPasswdChangeStr := s.sysConfigService.FindValueByKey("sys.user.fristPasswdChange")
|
|
||||||
if parse.Boolean(fristPasswdChangeStr) {
|
|
||||||
forcePasswdChange = loginCount < 1 || passwordUpdateTime == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// 非首次登录,判断密码是否过期
|
|
||||||
if !forcePasswdChange {
|
|
||||||
alert, err := s.sysUserService.ValidatePasswordExpireTime(passwordUpdateTime)
|
|
||||||
if err != nil {
|
|
||||||
return alert, err
|
|
||||||
}
|
|
||||||
forcePasswdChange = alert
|
|
||||||
}
|
|
||||||
return forcePasswdChange, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// RoleAndMenuPerms 角色和菜单数据权限
|
|
||||||
func (s Account) RoleAndMenuPerms(userId int64, isSystemUser bool) ([]string, []string) {
|
|
||||||
if isSystemUser {
|
|
||||||
return []string{constants.SYS_ROLE_SYSTEM_KEY}, []string{constants.SYS_PERMISSION_SYSTEM}
|
|
||||||
}
|
|
||||||
// 角色key
|
|
||||||
var roleGroup []string
|
|
||||||
roles := s.sysRoleService.FindByUserId(userId)
|
|
||||||
for _, role := range roles {
|
|
||||||
roleGroup = append(roleGroup, role.RoleKey)
|
|
||||||
}
|
|
||||||
// 菜单权限key
|
|
||||||
perms := s.sysMenuService.FindPermsByUserId(userId)
|
|
||||||
return parse.RemoveDuplicates(roleGroup), parse.RemoveDuplicates(perms)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RouteMenus 前端路由所需要的菜单
|
|
||||||
func (s Account) RouteMenus(userId int64, isSystemUser bool) []systemModelVO.Router {
|
|
||||||
var buildMenus []systemModelVO.Router
|
|
||||||
if isSystemUser {
|
|
||||||
menus := s.sysMenuService.BuildTreeMenusByUserId(0)
|
|
||||||
buildMenus = s.sysMenuService.BuildRouteMenus(menus, "")
|
|
||||||
} else {
|
|
||||||
menus := s.sysMenuService.BuildTreeMenusByUserId(userId)
|
|
||||||
buildMenus = s.sysMenuService.BuildRouteMenus(menus, "")
|
|
||||||
}
|
|
||||||
return buildMenus
|
|
||||||
}
|
}
|
||||||
|
|||||||
36
src/modules/auth/service/account_info.go
Normal file
36
src/modules/auth/service/account_info.go
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/utils/parse"
|
||||||
|
systemModelVO "be.ems/src/modules/system/model/vo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RoleAndMenuPerms 角色和菜单数据权限
|
||||||
|
func (s Account) RoleAndMenuPerms(userId int64, isSystemUser bool) ([]string, []string) {
|
||||||
|
if isSystemUser {
|
||||||
|
return []string{constants.SYS_ROLE_SYSTEM_KEY}, []string{constants.SYS_PERMISSION_SYSTEM}
|
||||||
|
}
|
||||||
|
// 角色key
|
||||||
|
var roleGroup []string
|
||||||
|
roles := s.sysRoleService.FindByUserId(userId)
|
||||||
|
for _, role := range roles {
|
||||||
|
roleGroup = append(roleGroup, role.RoleKey)
|
||||||
|
}
|
||||||
|
// 菜单权限key
|
||||||
|
perms := s.sysMenuService.FindPermsByUserId(userId)
|
||||||
|
return parse.RemoveDuplicates(roleGroup), parse.RemoveDuplicates(perms)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RouteMenus 前端路由所需要的菜单
|
||||||
|
func (s Account) RouteMenus(userId int64, isSystemUser bool) []systemModelVO.Router {
|
||||||
|
var buildMenus []systemModelVO.Router
|
||||||
|
if isSystemUser {
|
||||||
|
menus := s.sysMenuService.BuildTreeMenusByUserId(0)
|
||||||
|
buildMenus = s.sysMenuService.BuildRouteMenus(menus, "")
|
||||||
|
} else {
|
||||||
|
menus := s.sysMenuService.BuildTreeMenusByUserId(userId)
|
||||||
|
buildMenus = s.sysMenuService.BuildRouteMenus(menus, "")
|
||||||
|
}
|
||||||
|
return buildMenus
|
||||||
|
}
|
||||||
108
src/modules/auth/service/account_ldap.go
Normal file
108
src/modules/auth/service/account_ldap.go
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/go-ldap/ldap/v3"
|
||||||
|
|
||||||
|
"be.ems/src/framework/config"
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/framework/utils/parse"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
systemModelVo "be.ems/src/modules/system/model/vo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ByLDAP 登录创建用户信息
|
||||||
|
func (s *Account) ByLDAP(body model.LoginSourceBody) (token.UserInfo, error) {
|
||||||
|
info := token.UserInfo{}
|
||||||
|
rows := s.sysLogSourceService.FindByActive(body.UID)
|
||||||
|
if len(rows) != 1 {
|
||||||
|
return info, fmt.Errorf("ldap auth source not exist")
|
||||||
|
}
|
||||||
|
item := rows[0]
|
||||||
|
if item.Config == "" {
|
||||||
|
return info, fmt.Errorf("ldap auth source config is empty")
|
||||||
|
}
|
||||||
|
var source systemModelVo.SysLoginSourceLDAP
|
||||||
|
if err := json.Unmarshal([]byte(item.Config), &source); err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验LDAP用户
|
||||||
|
err := ldapAuth(source, body.Username, body.Password)
|
||||||
|
if err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户登录账号
|
||||||
|
sysUser := s.sysUserService.FindByUserName(body.Username, item.Type, item.UID)
|
||||||
|
if sysUser.UserId == 0 || sysUser.UserName == "" {
|
||||||
|
sysUser = s.initLoginSourceUser(item.UID, item.Type, body.Username, body.Password)
|
||||||
|
}
|
||||||
|
if sysUser.UserId == 0 || sysUser.UserName != body.Username {
|
||||||
|
return info, fmt.Errorf("login.errNameOrPasswd")
|
||||||
|
}
|
||||||
|
if sysUser.DelFlag == constants.STATUS_YES {
|
||||||
|
return info, fmt.Errorf("login.errDelFlag")
|
||||||
|
}
|
||||||
|
if sysUser.StatusFlag == constants.STATUS_NO {
|
||||||
|
return info, fmt.Errorf("login.errStatus")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info.UserId = sysUser.UserId
|
||||||
|
info.DeptId = sysUser.DeptId
|
||||||
|
info.User = sysUser
|
||||||
|
// 用户权限组标识
|
||||||
|
if config.IsSystemUser(sysUser.UserId) {
|
||||||
|
info.Permissions = []string{constants.SYS_PERMISSION_SYSTEM}
|
||||||
|
} else {
|
||||||
|
perms := s.sysMenuService.FindPermsByUserId(sysUser.UserId)
|
||||||
|
info.Permissions = parse.RemoveDuplicates(perms)
|
||||||
|
}
|
||||||
|
return info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ldapAuth 校验LDAP用户
|
||||||
|
func ldapAuth(source systemModelVo.SysLoginSourceLDAP, username, password string) error {
|
||||||
|
// 连接LDAP
|
||||||
|
l, err := ldap.DialURL(source.URL)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer l.Close()
|
||||||
|
|
||||||
|
// 绑定DN校验
|
||||||
|
if source.BindDN != "" && source.BindPassword != "" {
|
||||||
|
if err := l.Bind(source.BindDN, source.BindPassword); err != nil {
|
||||||
|
return fmt.Errorf("ldap user bind %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 搜索用户
|
||||||
|
searchRequest := ldap.NewSearchRequest(
|
||||||
|
source.BaseDN,
|
||||||
|
ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
|
||||||
|
fmt.Sprintf(source.UserFilter, ldap.EscapeFilter(username)),
|
||||||
|
[]string{"dn", "uid"},
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
sr, err := l.Search(searchRequest)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("ldap user search %s", err)
|
||||||
|
}
|
||||||
|
// for _, entry := range sr.Entries {
|
||||||
|
// fmt.Printf("%s ==== %v\n", entry.DN, entry.GetAttributeValue("uid"))
|
||||||
|
// }
|
||||||
|
if len(sr.Entries) != 1 {
|
||||||
|
return fmt.Errorf("ldap user does not exist or too many entries returned")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验密码
|
||||||
|
if err = l.Bind(sr.Entries[0].DN, password); err != nil {
|
||||||
|
return fmt.Errorf("ldap user bind %s", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
168
src/modules/auth/service/account_oauth2.go
Normal file
168
src/modules/auth/service/account_oauth2.go
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/oauth2"
|
||||||
|
|
||||||
|
"be.ems/src/framework/config"
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/framework/utils/parse"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
systemModelVo "be.ems/src/modules/system/model/vo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ByOAuth2CodeURL 获取OAuth2登录URL
|
||||||
|
func (s *Account) ByOAuth2CodeURL(state string) (string, error) {
|
||||||
|
rows := s.sysLogSourceService.FindByActive(state)
|
||||||
|
if len(rows) != 1 {
|
||||||
|
return "", fmt.Errorf("oauth2 auth source not exist")
|
||||||
|
}
|
||||||
|
item := rows[0]
|
||||||
|
if item.Config == "" {
|
||||||
|
return "", fmt.Errorf("oauth2 auth source config is empty")
|
||||||
|
}
|
||||||
|
var source systemModelVo.SysLoginSourceOAuth2
|
||||||
|
json.Unmarshal([]byte(item.Config), &source)
|
||||||
|
|
||||||
|
conf := oauth2.Config{
|
||||||
|
ClientID: source.ClientID,
|
||||||
|
ClientSecret: source.ClientSecret,
|
||||||
|
RedirectURL: source.RedirectURL,
|
||||||
|
Scopes: source.Scopes,
|
||||||
|
Endpoint: oauth2.Endpoint{
|
||||||
|
AuthURL: source.AuthURL,
|
||||||
|
TokenURL: source.TokenURL,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return conf.AuthCodeURL(state, oauth2.AccessTypeOffline), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ByOAuth2 登录创建用户信息
|
||||||
|
func (s *Account) ByOAuth2(body model.LoginSourceOauth2Body) (token.UserInfo, error) {
|
||||||
|
info := token.UserInfo{}
|
||||||
|
rows := s.sysLogSourceService.FindByActive(body.State)
|
||||||
|
if len(rows) != 1 {
|
||||||
|
return info, fmt.Errorf("oauth2 auth source not exist")
|
||||||
|
}
|
||||||
|
item := rows[0]
|
||||||
|
if item.Config == "" {
|
||||||
|
return info, fmt.Errorf("oauth2 auth source config is empty")
|
||||||
|
}
|
||||||
|
var source systemModelVo.SysLoginSourceOAuth2
|
||||||
|
if err := json.Unmarshal([]byte(item.Config), &source); err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验OAuth2用户
|
||||||
|
account, err := oauth2Auth(source, body.Code)
|
||||||
|
if err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户登录账号
|
||||||
|
sysUser := s.sysUserService.FindByUserName(account, item.Type, item.UID)
|
||||||
|
if sysUser.UserId == 0 || sysUser.UserName == "" {
|
||||||
|
sysUser = s.initLoginSourceUser(item.UID, item.Type, account, account)
|
||||||
|
}
|
||||||
|
if sysUser.UserId == 0 || sysUser.UserName != account {
|
||||||
|
return info, fmt.Errorf("login.errNameOrPasswd")
|
||||||
|
}
|
||||||
|
if sysUser.DelFlag == constants.STATUS_YES {
|
||||||
|
return info, fmt.Errorf("login.errDelFlag")
|
||||||
|
}
|
||||||
|
if sysUser.StatusFlag == constants.STATUS_NO {
|
||||||
|
return info, fmt.Errorf("login.errStatus")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info.UserId = sysUser.UserId
|
||||||
|
info.DeptId = sysUser.DeptId
|
||||||
|
info.User = sysUser
|
||||||
|
// 用户权限组标识
|
||||||
|
if config.IsSystemUser(sysUser.UserId) {
|
||||||
|
info.Permissions = []string{constants.SYS_PERMISSION_SYSTEM}
|
||||||
|
} else {
|
||||||
|
perms := s.sysMenuService.FindPermsByUserId(sysUser.UserId)
|
||||||
|
info.Permissions = parse.RemoveDuplicates(perms)
|
||||||
|
}
|
||||||
|
return info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// oauth2Auth 校验OAuth2用户
|
||||||
|
func oauth2Auth(source systemModelVo.SysLoginSourceOAuth2, code string) (string, error) {
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
conf := oauth2.Config{
|
||||||
|
ClientID: source.ClientID,
|
||||||
|
ClientSecret: source.ClientSecret,
|
||||||
|
RedirectURL: source.RedirectURL,
|
||||||
|
Scopes: source.Scopes,
|
||||||
|
Endpoint: oauth2.Endpoint{
|
||||||
|
AuthURL: source.AuthURL,
|
||||||
|
TokenURL: source.TokenURL,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
token, err := conf.Exchange(ctx, code)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
// 使用token创建HTTP客户端 请求用户信息
|
||||||
|
resp, err := conf.Client(ctx, token).Get(source.UserURL)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
// 解析用户信息
|
||||||
|
var userInfo map[string]any
|
||||||
|
if err := json.NewDecoder(resp.Body).Decode(&userInfo); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取嵌套数据
|
||||||
|
value, found := getValueByPath(userInfo, source.AccountField)
|
||||||
|
if !found {
|
||||||
|
return "", fmt.Errorf("oauth2 auth source account field not exist")
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%v", value), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// getValueByPath 从嵌套的 map[string]any 获取嵌套键对应的值
|
||||||
|
func getValueByPath(data map[string]any, path string) (any, bool) {
|
||||||
|
keys := strings.Split(path, ".") // 按照 "." 拆分路径
|
||||||
|
return getValue(data, keys)
|
||||||
|
}
|
||||||
|
|
||||||
|
// getValue 是递归查找嵌套 map 的函数
|
||||||
|
func getValue(data map[string]any, keys []string) (any, bool) {
|
||||||
|
if len(keys) == 0 {
|
||||||
|
return data, false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前键
|
||||||
|
key := keys[0]
|
||||||
|
|
||||||
|
// 获取当前键的值
|
||||||
|
val, ok := data[key]
|
||||||
|
if !ok {
|
||||||
|
return nil, false // 找不到键,返回 false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果还有嵌套键,继续查找
|
||||||
|
if len(keys) > 1 {
|
||||||
|
// 递归查找嵌套 map
|
||||||
|
if reflect.TypeOf(val).Kind() == reflect.Map {
|
||||||
|
// 将 `any` 转换为 `map[string]any` 类型
|
||||||
|
if nestedMap, ok := val.(map[string]any); ok {
|
||||||
|
return getValue(nestedMap, keys[1:])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return val, true
|
||||||
|
}
|
||||||
88
src/modules/auth/service/account_smtp.go
Normal file
88
src/modules/auth/service/account_smtp.go
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"crypto/tls"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/wneessen/go-mail"
|
||||||
|
|
||||||
|
"be.ems/src/framework/config"
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/framework/utils/parse"
|
||||||
|
"be.ems/src/modules/auth/model"
|
||||||
|
systemModelVo "be.ems/src/modules/system/model/vo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BySMTP 登录创建用户信息
|
||||||
|
func (s *Account) BySMTP(body model.LoginSourceBody) (token.UserInfo, error) {
|
||||||
|
info := token.UserInfo{}
|
||||||
|
rows := s.sysLogSourceService.FindByActive(body.UID)
|
||||||
|
if len(rows) != 1 {
|
||||||
|
return info, fmt.Errorf("smtp auth source not exist")
|
||||||
|
}
|
||||||
|
item := rows[0]
|
||||||
|
if item.Config == "" {
|
||||||
|
return info, fmt.Errorf("smtp auth source config is empty")
|
||||||
|
}
|
||||||
|
var source systemModelVo.SysLoginSourceSMTP
|
||||||
|
if err := json.Unmarshal([]byte(item.Config), &source); err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验SMTP用户
|
||||||
|
err := smtpAuth(source, body.Username, body.Password)
|
||||||
|
if err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户登录账号
|
||||||
|
sysUser := s.sysUserService.FindByUserName(body.Username, item.Type, item.UID)
|
||||||
|
if sysUser.UserId == 0 || sysUser.UserName == "" {
|
||||||
|
sysUser = s.initLoginSourceUser(item.UID, item.Type, body.Username, body.Password)
|
||||||
|
}
|
||||||
|
if sysUser.UserId == 0 || sysUser.UserName != body.Username {
|
||||||
|
return info, fmt.Errorf("login.errNameOrPasswd")
|
||||||
|
}
|
||||||
|
if sysUser.DelFlag == constants.STATUS_YES {
|
||||||
|
return info, fmt.Errorf("login.errDelFlag")
|
||||||
|
}
|
||||||
|
if sysUser.StatusFlag == constants.STATUS_NO {
|
||||||
|
return info, fmt.Errorf("login.errStatus")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info.UserId = sysUser.UserId
|
||||||
|
info.DeptId = sysUser.DeptId
|
||||||
|
info.User = sysUser
|
||||||
|
// 用户权限组标识
|
||||||
|
if config.IsSystemUser(sysUser.UserId) {
|
||||||
|
info.Permissions = []string{constants.SYS_PERMISSION_SYSTEM}
|
||||||
|
} else {
|
||||||
|
perms := s.sysMenuService.FindPermsByUserId(sysUser.UserId)
|
||||||
|
info.Permissions = parse.RemoveDuplicates(perms)
|
||||||
|
}
|
||||||
|
return info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// smtpAuth 校验SMTP用户
|
||||||
|
func smtpAuth(source systemModelVo.SysLoginSourceSMTP, username, password string) error {
|
||||||
|
client, err := mail.NewClient(source.Host,
|
||||||
|
mail.WithSMTPAuth(mail.SMTPAuthAutoDiscover),
|
||||||
|
mail.WithUsername(username),
|
||||||
|
mail.WithPort(source.Port),
|
||||||
|
mail.WithPassword(password),
|
||||||
|
mail.WithTLSConfig(&tls.Config{InsecureSkipVerify: true}),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to create mail client %s", err)
|
||||||
|
}
|
||||||
|
// 连接到邮件SMTP服务器
|
||||||
|
if err = client.DialWithContext(context.Background()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer client.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
138
src/modules/auth/service/account_sysstem.go
Normal file
138
src/modules/auth/service/account_sysstem.go
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"be.ems/src/framework/config"
|
||||||
|
"be.ems/src/framework/constants"
|
||||||
|
"be.ems/src/framework/database/redis"
|
||||||
|
"be.ems/src/framework/token"
|
||||||
|
"be.ems/src/framework/utils/crypto"
|
||||||
|
"be.ems/src/framework/utils/parse"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ValidateCaptcha 校验验证码
|
||||||
|
func (s Account) ValidateCaptcha(code, uuid string) error {
|
||||||
|
// 验证码检查,从数据库配置获取验证码开关 true开启,false关闭
|
||||||
|
captchaEnabledStr := s.sysConfigService.FindValueByKey("sys.account.captchaEnabled")
|
||||||
|
if !parse.Boolean(captchaEnabledStr) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if code == "" || uuid == "" {
|
||||||
|
// 验证码信息错误
|
||||||
|
return fmt.Errorf("captcha.err")
|
||||||
|
}
|
||||||
|
verifyKey := constants.CACHE_CAPTCHA_CODE + ":" + uuid
|
||||||
|
captcha, _ := redis.Get("", verifyKey)
|
||||||
|
if captcha == "" {
|
||||||
|
// 验证码已失效
|
||||||
|
return fmt.Errorf("captcha.errValid")
|
||||||
|
}
|
||||||
|
_ = redis.Del("", verifyKey)
|
||||||
|
if captcha != code {
|
||||||
|
// 验证码错误
|
||||||
|
return fmt.Errorf("captcha.err")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ByUsername 登录创建用户信息
|
||||||
|
func (s Account) ByUsername(username, password string) (token.UserInfo, error) {
|
||||||
|
info := token.UserInfo{}
|
||||||
|
|
||||||
|
// 检查密码重试次数
|
||||||
|
retryKey, retryCount, lockTime, err := s.passwordRetryCount(username)
|
||||||
|
if err != nil {
|
||||||
|
return info, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询用户登录账号
|
||||||
|
sysUser := s.sysUserService.FindByUserName(username, "System", "#")
|
||||||
|
if sysUser.UserName != username {
|
||||||
|
return info, fmt.Errorf("login.errNameOrPasswd")
|
||||||
|
}
|
||||||
|
if sysUser.DelFlag == constants.STATUS_YES {
|
||||||
|
return info, fmt.Errorf("login.errDelFlag")
|
||||||
|
}
|
||||||
|
if sysUser.StatusFlag == constants.STATUS_NO {
|
||||||
|
return info, fmt.Errorf("login.errStatus")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检验用户密码
|
||||||
|
compareBool := crypto.BcryptCompare(password, sysUser.Password)
|
||||||
|
if compareBool {
|
||||||
|
s.CleanLoginRecordCache(sysUser.UserName) // 清除错误记录次数
|
||||||
|
} else {
|
||||||
|
_ = redis.Set("", retryKey, retryCount+1, lockTime)
|
||||||
|
return info, fmt.Errorf("login.errNameOrPasswd")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录用户信息
|
||||||
|
info.UserId = sysUser.UserId
|
||||||
|
info.DeptId = sysUser.DeptId
|
||||||
|
info.User = sysUser
|
||||||
|
// 用户权限组标识
|
||||||
|
if config.IsSystemUser(sysUser.UserId) {
|
||||||
|
info.Permissions = []string{constants.SYS_PERMISSION_SYSTEM}
|
||||||
|
} else {
|
||||||
|
perms := s.sysMenuService.FindPermsByUserId(sysUser.UserId)
|
||||||
|
info.Permissions = parse.RemoveDuplicates(perms)
|
||||||
|
}
|
||||||
|
return info, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CleanLoginRecordCache 清除错误记录次数
|
||||||
|
func (s Account) CleanLoginRecordCache(userName string) bool {
|
||||||
|
cacheKey := fmt.Sprintf("%s:%s", constants.CACHE_PWD_ERR_COUNT, userName)
|
||||||
|
hasKey, err := redis.Has("", cacheKey)
|
||||||
|
if hasKey > 0 && err == nil {
|
||||||
|
return redis.Del("", cacheKey) == nil
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// passwordRetryCount 密码重试次数
|
||||||
|
func (s Account) passwordRetryCount(userName string) (string, int64, time.Duration, error) {
|
||||||
|
// 从数据库配置获取登录次数和错误锁定时间
|
||||||
|
maxRetryCountStr := s.sysConfigService.FindValueByKey("sys.user.maxRetryCount")
|
||||||
|
lockTimeStr := s.sysConfigService.FindValueByKey("sys.user.lockTime")
|
||||||
|
// 验证登录次数和错误锁定时间
|
||||||
|
maxRetryCount := parse.Number(maxRetryCountStr)
|
||||||
|
lockTime := parse.Number(lockTimeStr)
|
||||||
|
|
||||||
|
// 验证缓存记录次数
|
||||||
|
retryKey := fmt.Sprintf("%s:%s", constants.CACHE_PWD_ERR_COUNT, userName)
|
||||||
|
retryCount, err := redis.Get("", retryKey)
|
||||||
|
if retryCount == "" || err != nil {
|
||||||
|
retryCount = "0"
|
||||||
|
}
|
||||||
|
// 是否超过错误值
|
||||||
|
retryCountInt64 := parse.Number(retryCount)
|
||||||
|
if retryCountInt64 >= int64(maxRetryCount) {
|
||||||
|
// msg := fmt.Sprintf("密码输入错误 %d 次,帐户锁定 %d 分钟", maxRetryCount, lockTime)
|
||||||
|
msg := fmt.Errorf("login.errRetryPasswd") // 密码输入错误多次,帐户已被锁定
|
||||||
|
return retryKey, retryCountInt64, time.Duration(lockTime) * time.Minute, fmt.Errorf("%s", msg)
|
||||||
|
}
|
||||||
|
return retryKey, retryCountInt64, time.Duration(lockTime) * time.Minute, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PasswordCountOrExpireTime 首次登录或密码过期时间
|
||||||
|
func (s Account) PasswordCountOrExpireTime(loginCount, passwordUpdateTime int64) (bool, error) {
|
||||||
|
forcePasswdChange := false
|
||||||
|
// 从数据库配置获取-首次登录密码修改
|
||||||
|
fristPasswdChangeStr := s.sysConfigService.FindValueByKey("sys.user.fristPasswdChange")
|
||||||
|
if parse.Boolean(fristPasswdChangeStr) {
|
||||||
|
forcePasswdChange = loginCount < 1 || passwordUpdateTime == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// 非首次登录,判断密码是否过期
|
||||||
|
if !forcePasswdChange {
|
||||||
|
alert, err := s.sysUserService.ValidatePasswordExpireTime(passwordUpdateTime)
|
||||||
|
if err != nil {
|
||||||
|
return alert, err
|
||||||
|
}
|
||||||
|
forcePasswdChange = alert
|
||||||
|
}
|
||||||
|
return forcePasswdChange, nil
|
||||||
|
}
|
||||||
@@ -61,12 +61,14 @@ func (s Register) ByUserName(username, password string) (int64, error) {
|
|||||||
|
|
||||||
sysUser := systemModel.SysUser{
|
sysUser := systemModel.SysUser{
|
||||||
UserName: username,
|
UserName: username,
|
||||||
NickName: username, // 昵称使用名称账号
|
NickName: username, // 昵称使用名称账号
|
||||||
Password: password, // 原始密码
|
Password: password, // 原始密码
|
||||||
|
UserType: "System",
|
||||||
|
UserSource: "#",
|
||||||
Sex: "0", // 性别未选择
|
Sex: "0", // 性别未选择
|
||||||
StatusFlag: constants.STATUS_YES, // 账号状态激活
|
StatusFlag: constants.STATUS_YES, // 账号状态激活
|
||||||
DeptId: 100, // 归属部门为根节点
|
DeptId: 101, // 归属部门为根节点
|
||||||
CreateBy: "register", // 创建来源
|
CreateBy: "System", // 创建来源
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增用户的角色管理
|
// 新增用户的角色管理
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
@@ -10,54 +10,54 @@ import (
|
|||||||
"be.ems/src/framework/reqctx"
|
"be.ems/src/framework/reqctx"
|
||||||
"be.ems/src/framework/resp"
|
"be.ems/src/framework/resp"
|
||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
"be.ems/src/modules/oauth2/model"
|
"be.ems/src/modules/system/model"
|
||||||
"be.ems/src/modules/oauth2/service"
|
"be.ems/src/modules/system/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewOauth2Client 实例化控制层
|
// NewLoginSource 实例化控制层
|
||||||
var NewOauth2Client = &Oauth2ClientController{
|
var NewSysLoginSource = &SysLoginSourceController{
|
||||||
oauth2ClientService: service.NewOauth2ClientService,
|
sysLoginSourceService: service.NewSysLoginSource,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Oauth2ClientController 客户端授权管理 控制层处理
|
// SysLoginSourceController 认证源管理 控制层处理
|
||||||
//
|
//
|
||||||
// PATH /oauth2/client
|
// PATH /sys/login-source
|
||||||
type Oauth2ClientController struct {
|
type SysLoginSourceController struct {
|
||||||
oauth2ClientService *service.Oauth2ClientService // 用户授权第三方应用信息服务
|
sysLoginSourceService *service.SysLoginSource // 认证源信息服务
|
||||||
}
|
}
|
||||||
|
|
||||||
// List 列表
|
// List 列表
|
||||||
//
|
//
|
||||||
// GET /list
|
// GET /list
|
||||||
func (s Oauth2ClientController) List(c *gin.Context) {
|
func (s SysLoginSourceController) List(c *gin.Context) {
|
||||||
query := reqctx.QueryMap(c)
|
query := reqctx.QueryMap(c)
|
||||||
rows, total := s.oauth2ClientService.FindByPage(query)
|
rows, total := s.sysLoginSourceService.FindByPage(query)
|
||||||
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
|
c.JSON(200, resp.OkData(map[string]any{"rows": rows, "total": total}))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Info 信息
|
// Info 信息
|
||||||
//
|
//
|
||||||
// GET /:clientId
|
// GET /:id
|
||||||
func (s Oauth2ClientController) Info(c *gin.Context) {
|
func (s SysLoginSourceController) Info(c *gin.Context) {
|
||||||
clientId := c.Param("clientId")
|
id := c.Param("id")
|
||||||
if clientId == "" {
|
if id == "" {
|
||||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: clientId is empty"))
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: id is empty"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
info := s.oauth2ClientService.FindByClientId(clientId)
|
info := s.sysLoginSourceService.FindById(parse.Number(id))
|
||||||
if info.ClientId == clientId {
|
if info.Id == parse.Number(id) {
|
||||||
c.JSON(200, resp.OkData(info))
|
c.JSON(200, resp.OkData(info))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(200, resp.ErrMsg("clientId does not exist"))
|
c.JSON(200, resp.ErrMsg("id does not exist"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add 新增
|
// Add 新增
|
||||||
//
|
//
|
||||||
// POST /
|
// POST /
|
||||||
func (s Oauth2ClientController) Add(c *gin.Context) {
|
func (s SysLoginSourceController) Add(c *gin.Context) {
|
||||||
var body model.Oauth2Client
|
var body model.SysLoginSource
|
||||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||||
@@ -67,23 +67,19 @@ func (s Oauth2ClientController) Add(c *gin.Context) {
|
|||||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: id not is empty"))
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: id not is empty"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if len(body.Config) < 7 || !json.Valid([]byte(body.Config)) {
|
||||||
// 本地IP地址不支持
|
c.JSON(200, resp.ErrMsg("config json format error"))
|
||||||
localHosts := []string{"127.0.0.1", "localhost", "::ffff:", "::1"}
|
|
||||||
localHost := false
|
|
||||||
for _, host := range localHosts {
|
|
||||||
if strings.Contains(body.IPWhite, host) {
|
|
||||||
localHost = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if localHost {
|
|
||||||
c.JSON(200, resp.ErrMsg("no support local host"))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
configStr, err := s.sysLoginSourceService.CheckConfigJSON(body.Type, body.Config)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
body.Config = configStr
|
||||||
|
|
||||||
body.CreateBy = reqctx.LoginUserToUserName(c)
|
body.CreateBy = reqctx.LoginUserToUserName(c)
|
||||||
insertId := s.oauth2ClientService.Insert(body)
|
insertId := s.sysLoginSourceService.Insert(body)
|
||||||
if insertId > 0 {
|
if insertId > 0 {
|
||||||
c.JSON(200, resp.OkData(insertId))
|
c.JSON(200, resp.OkData(insertId))
|
||||||
return
|
return
|
||||||
@@ -94,8 +90,8 @@ func (s Oauth2ClientController) Add(c *gin.Context) {
|
|||||||
// Edit 更新
|
// Edit 更新
|
||||||
//
|
//
|
||||||
// PUT /
|
// PUT /
|
||||||
func (s Oauth2ClientController) Edit(c *gin.Context) {
|
func (s SysLoginSourceController) Edit(c *gin.Context) {
|
||||||
var body model.Oauth2Client
|
var body model.SysLoginSource
|
||||||
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
if err := c.ShouldBindBodyWithJSON(&body); err != nil {
|
||||||
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
errMsgs := fmt.Sprintf("bind err: %s", resp.FormatBindError(err))
|
||||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_PARSER, errMsgs))
|
||||||
@@ -105,33 +101,32 @@ func (s Oauth2ClientController) Edit(c *gin.Context) {
|
|||||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: id is empty"))
|
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: id is empty"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if len(body.Config) < 7 || !json.Valid([]byte(body.Config)) {
|
||||||
// 本地IP地址不支持
|
c.JSON(200, resp.ErrMsg("config json format error"))
|
||||||
localHosts := []string{"127.0.0.1", "localhost", "::ffff:", "::1"}
|
|
||||||
localHost := false
|
|
||||||
for _, host := range localHosts {
|
|
||||||
if strings.Contains(body.IPWhite, host) {
|
|
||||||
localHost = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if localHost {
|
|
||||||
c.JSON(200, resp.ErrMsg("no support local host"))
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
configStr, err := s.sysLoginSourceService.CheckConfigJSON(body.Type, body.Config)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
body.Config = configStr
|
||||||
|
|
||||||
// 查询信息
|
// 查询信息
|
||||||
info := s.oauth2ClientService.FindById(body.Id)
|
info := s.sysLoginSourceService.FindById(body.Id)
|
||||||
if info.ClientId == "" || info.Id != body.Id {
|
if info.Id != body.Id {
|
||||||
c.JSON(200, resp.ErrMsg("modification failed, data not exist"))
|
c.JSON(200, resp.ErrMsg("modification failed, data not exist"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
info.Title = body.Title
|
info.Type = body.Type
|
||||||
info.IPWhite = body.IPWhite
|
info.Name = body.Name
|
||||||
|
info.Icon = body.Icon
|
||||||
|
info.Config = body.Config
|
||||||
|
info.ActiveFlag = body.ActiveFlag
|
||||||
info.Remark = body.Remark
|
info.Remark = body.Remark
|
||||||
info.UpdateBy = reqctx.LoginUserToUserName(c)
|
info.UpdateBy = reqctx.LoginUserToUserName(c)
|
||||||
rowsAffected := s.oauth2ClientService.Update(info)
|
rowsAffected := s.sysLoginSourceService.Update(info)
|
||||||
if rowsAffected > 0 {
|
if rowsAffected > 0 {
|
||||||
c.JSON(200, resp.Ok(nil))
|
c.JSON(200, resp.Ok(nil))
|
||||||
return
|
return
|
||||||
@@ -142,7 +137,7 @@ func (s Oauth2ClientController) Edit(c *gin.Context) {
|
|||||||
// Remove 删除
|
// Remove 删除
|
||||||
//
|
//
|
||||||
// DELETE /:id
|
// DELETE /:id
|
||||||
func (s Oauth2ClientController) Remove(c *gin.Context) {
|
func (s SysLoginSourceController) Remove(c *gin.Context) {
|
||||||
language := reqctx.AcceptLanguage(c)
|
language := reqctx.AcceptLanguage(c)
|
||||||
id := c.Param("id")
|
id := c.Param("id")
|
||||||
if id == "" {
|
if id == "" {
|
||||||
@@ -158,7 +153,7 @@ func (s Oauth2ClientController) Remove(c *gin.Context) {
|
|||||||
ids = append(ids, parse.Number(v))
|
ids = append(ids, parse.Number(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
rows, err := s.oauth2ClientService.DeleteByIds(ids)
|
rows, err := s.sysLoginSourceService.DeleteByIds(ids)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
@@ -550,15 +550,19 @@ func (s *SysUserController) Export(c *gin.Context) {
|
|||||||
"C1": i18n.TKey(language, "user.export.nick"),
|
"C1": i18n.TKey(language, "user.export.nick"),
|
||||||
"D1": i18n.TKey(language, "user.export.role"),
|
"D1": i18n.TKey(language, "user.export.role"),
|
||||||
"E1": i18n.TKey(language, "user.export.deptName"),
|
"E1": i18n.TKey(language, "user.export.deptName"),
|
||||||
"F1": i18n.TKey(language, "user.export.loginIP"),
|
"F1": i18n.TKey(language, "user.export.userType"),
|
||||||
"G1": i18n.TKey(language, "user.export.loginDate"),
|
"G1": i18n.TKey(language, "user.export.loginIP"),
|
||||||
"H1": i18n.TKey(language, "user.export.status"),
|
"H1": i18n.TKey(language, "user.export.loginDate"),
|
||||||
|
"I1": i18n.TKey(language, "user.export.status"),
|
||||||
// "F1": i18n.TKey(language, "user.export.sex"),
|
// "F1": i18n.TKey(language, "user.export.sex"),
|
||||||
// "E1": i18n.TKey(language, "user.export.phone"),
|
// "E1": i18n.TKey(language, "user.export.phone"),
|
||||||
// "D1": i18n.TKey(language, "user.export.email"),
|
// "D1": i18n.TKey(language, "user.export.email"),
|
||||||
// "I1": i18n.TKey(language, "user.export.deptID"),
|
// "I1": i18n.TKey(language, "user.export.deptID"),
|
||||||
// "K1": i18n.TKey(language, "user.export.deptLeader"),
|
// "K1": i18n.TKey(language, "user.export.deptLeader"),
|
||||||
}
|
}
|
||||||
|
// 读取用户性别字典数据
|
||||||
|
dictSysUserType := service.NewSysDictType.FindDataByType("sys_user_type")
|
||||||
|
|
||||||
// 读取用户性别字典数据
|
// 读取用户性别字典数据
|
||||||
// dictSysUserSex := s.sysDictDataService.SelectDictDataByType("sys_user_sex")
|
// dictSysUserSex := s.sysDictDataService.SelectDictDataByType("sys_user_sex")
|
||||||
// 从第二行开始的数据
|
// 从第二行开始的数据
|
||||||
@@ -573,6 +577,14 @@ func (s *SysUserController) Export(c *gin.Context) {
|
|||||||
// break
|
// break
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
// 用户类型
|
||||||
|
userType := row.UserType
|
||||||
|
for _, v := range dictSysUserType {
|
||||||
|
if row.UserType == v.DataValue && row.UserSource != "#" {
|
||||||
|
userType = i18n.TKey(language, v.DataLabel) + " " + row.UserSource
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
// 帐号状态
|
// 帐号状态
|
||||||
statusValue := i18n.TKey(language, "dictData.disable")
|
statusValue := i18n.TKey(language, "dictData.disable")
|
||||||
if row.StatusFlag == "1" {
|
if row.StatusFlag == "1" {
|
||||||
@@ -581,7 +593,11 @@ func (s *SysUserController) Export(c *gin.Context) {
|
|||||||
// 用户角色, 默认导出首个
|
// 用户角色, 默认导出首个
|
||||||
userRole := ""
|
userRole := ""
|
||||||
if len(row.Roles) > 0 {
|
if len(row.Roles) > 0 {
|
||||||
userRole = i18n.TKey(language, row.Roles[0].RoleName)
|
arr := make([]string, 0)
|
||||||
|
for _, v := range row.Roles {
|
||||||
|
arr = append(arr, i18n.TKey(language, v.RoleName))
|
||||||
|
}
|
||||||
|
userRole = strings.Join(arr, ",")
|
||||||
}
|
}
|
||||||
dataCells = append(dataCells, map[string]any{
|
dataCells = append(dataCells, map[string]any{
|
||||||
"A" + idx: row.UserId,
|
"A" + idx: row.UserId,
|
||||||
@@ -589,9 +605,10 @@ func (s *SysUserController) Export(c *gin.Context) {
|
|||||||
"C" + idx: row.NickName,
|
"C" + idx: row.NickName,
|
||||||
"D" + idx: userRole,
|
"D" + idx: userRole,
|
||||||
"E" + idx: row.Dept.DeptName,
|
"E" + idx: row.Dept.DeptName,
|
||||||
"F" + idx: row.LoginIp,
|
"F" + idx: userType,
|
||||||
"G" + idx: date.ParseDateToStr(row.LoginTime, date.YYYY_MM_DDTHH_MM_SSZ),
|
"G" + idx: row.LoginIp,
|
||||||
"H" + idx: statusValue,
|
"H" + idx: date.ParseDateToStr(row.LoginTime, date.YYYY_MM_DDTHH_MM_SSZ),
|
||||||
|
"I" + idx: statusValue,
|
||||||
// "E" + idx: row.PhoneNumber,
|
// "E" + idx: row.PhoneNumber,
|
||||||
// "F" + idx: sysUserSex,
|
// "F" + idx: sysUserSex,
|
||||||
// "D" + idx: row.Email,
|
// "D" + idx: row.Email,
|
||||||
@@ -725,7 +742,7 @@ func (s *SysUserController) Import(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验证是否存在这个用户
|
// 验证是否存在这个用户
|
||||||
newSysUser := s.sysUserService.FindByUserName(row["B"])
|
newSysUser := s.sysUserService.FindByUserName(row["B"], "System", "#")
|
||||||
newSysUser.Password = initPassword
|
newSysUser.Password = initPassword
|
||||||
newSysUser.UserName = row["B"]
|
newSysUser.UserName = row["B"]
|
||||||
newSysUser.NickName = row["C"]
|
newSysUser.NickName = row["C"]
|
||||||
|
|||||||
22
src/modules/system/model/sys_login_source.go
Normal file
22
src/modules/system/model/sys_login_source.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
// SysLoginSource 系统第三方认证源 sys_login_source
|
||||||
|
type SysLoginSource struct {
|
||||||
|
Id int64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"` // ID
|
||||||
|
UID string `gorm:"column:uid" json:"uid"` // UID 16位长度字符串
|
||||||
|
Type string `gorm:"column:type" json:"type" binding:"required,oneof=LDAP SMTP OAuth2"` // 认证类型 LDAP SMTP OAuth2
|
||||||
|
Name string `gorm:"column:name" json:"name" binding:"required"` // 认证名称
|
||||||
|
Icon string `gorm:"column:icon" json:"icon"` // 图标
|
||||||
|
ActiveFlag string `gorm:"column:active_flag" json:"activeFlag"` // 激活标记(0未激活 1激活)
|
||||||
|
SyncFlag string `gorm:"column:sync_flag" json:"syncFlag"` // 同步标记(0未同步 1同步)
|
||||||
|
Config string `gorm:"column:config" json:"config" binding:"required"` // 配置JSON字符串
|
||||||
|
CreateBy string `gorm:"column:create_by" json:"createBy"` // 创建者
|
||||||
|
CreateTime int64 `gorm:"column:create_time" json:"createTime"` // 创建时间
|
||||||
|
UpdateBy string `gorm:"column:update_by" json:"updateBy"` // 更新者
|
||||||
|
UpdateTime int64 `gorm:"column:update_time" json:"updateTime"` // 更新时间
|
||||||
|
Remark string `gorm:"column:remark" json:"remark"` // 备注
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*SysLoginSource) TableName() string {
|
||||||
|
return "sys_login_source"
|
||||||
|
}
|
||||||
@@ -11,6 +11,8 @@ type SysUser struct {
|
|||||||
Sex string `json:"sex" gorm:"column:sex"` // 用户性别(0未选择 1男 2女)
|
Sex string `json:"sex" gorm:"column:sex"` // 用户性别(0未选择 1男 2女)
|
||||||
Avatar string `json:"avatar" gorm:"column:avatar"` // 头像地址
|
Avatar string `json:"avatar" gorm:"column:avatar"` // 头像地址
|
||||||
Password string `json:"-" gorm:"column:password"` // 密码
|
Password string `json:"-" gorm:"column:password"` // 密码
|
||||||
|
UserType string `json:"userType" gorm:"column:user_type"` // 用户类型(System系统用户)
|
||||||
|
UserSource string `json:"userSource" gorm:"column:user_source"` // 用户来源UID (系统#))
|
||||||
StatusFlag string `json:"statusFlag" gorm:"column:status_flag"` // 账号状态(0停用 1正常)
|
StatusFlag string `json:"statusFlag" gorm:"column:status_flag"` // 账号状态(0停用 1正常)
|
||||||
DelFlag string `json:"-" gorm:"column:del_flag"` // 删除标记(0存在 1删除)
|
DelFlag string `json:"-" gorm:"column:del_flag"` // 删除标记(0存在 1删除)
|
||||||
PasswordUpdateTime int64 `json:"passwordUpdateTime" gorm:"column:password_update_time"` // 密码更新时间
|
PasswordUpdateTime int64 `json:"passwordUpdateTime" gorm:"column:password_update_time"` // 密码更新时间
|
||||||
|
|||||||
28
src/modules/system/model/vo/login_source.go
Normal file
28
src/modules/system/model/vo/login_source.go
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package vo
|
||||||
|
|
||||||
|
// SysLoginSourceLDAP LDAP认证源
|
||||||
|
type SysLoginSourceLDAP struct {
|
||||||
|
URL string `json:"url"` // LDAP 服务器(ldap://192.168.9.58:11389)
|
||||||
|
BaseDN string `json:"baseDN"` // base DN(dc=example,dc=org)
|
||||||
|
UserFilter string `json:"userFilter"` // 用户过滤规则((&(objectClass=organizationalPerson)(uid=%s)))
|
||||||
|
BindDN string `json:"bindDN"` // 绑定 DN(cn=admin,dc=example,dc=org)
|
||||||
|
BindPassword string `json:"bindPassword"` // 绑定密码(adminpassword)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysLoginSourceSMTP SMTP认证源
|
||||||
|
type SysLoginSourceSMTP struct {
|
||||||
|
Host string `json:"host"` // SMTP 服务器(smtp.gmail.com)
|
||||||
|
Port int `json:"port"` // SMTP 端口(587)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysLoginSourceOAuth2 OAuth2认证源
|
||||||
|
type SysLoginSourceOAuth2 struct {
|
||||||
|
ClientID string `json:"clientID"` // 客户端ID
|
||||||
|
ClientSecret string `json:"clientSecret"` // 客户端密钥
|
||||||
|
AuthURL string `json:"authURL"` // 认证URL
|
||||||
|
TokenURL string `json:"tokenURL"` // 令牌URL
|
||||||
|
Scopes []string `json:"scopes"` // 授权范围
|
||||||
|
RedirectURL string `json:"redirectURL"` // 重定向URL
|
||||||
|
UserURL string `json:"userURL"` // 用户信息URL
|
||||||
|
AccountField string `json:"accountField"` // 账号字段从用户信息中获取
|
||||||
|
}
|
||||||
150
src/modules/system/repository/sys_login_source.go
Normal file
150
src/modules/system/repository/sys_login_source.go
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
package repository
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"be.ems/src/framework/database/db"
|
||||||
|
"be.ems/src/framework/logger"
|
||||||
|
"be.ems/src/modules/system/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewSysLoginSource 实例化数据层
|
||||||
|
var NewSysLoginSource = &SysLoginSource{}
|
||||||
|
|
||||||
|
// SysLoginSource 认证源数据层处理
|
||||||
|
type SysLoginSource struct{}
|
||||||
|
|
||||||
|
// SelectByPage 分页查询集合
|
||||||
|
func (r SysLoginSource) SelectByPage(query map[string]string) ([]model.SysLoginSource, int64) {
|
||||||
|
tx := db.DB("").Model(&model.SysLoginSource{})
|
||||||
|
// 查询条件拼接
|
||||||
|
if v, ok := query["name"]; ok && v != "" {
|
||||||
|
tx = tx.Where("name like ?", v+"%")
|
||||||
|
}
|
||||||
|
if v, ok := query["type"]; ok && v != "" {
|
||||||
|
tx = tx.Where("type = ?", v)
|
||||||
|
}
|
||||||
|
if v, ok := query["beginTime"]; ok && v != "" {
|
||||||
|
if len(v) == 10 {
|
||||||
|
v = fmt.Sprintf("%s000", v)
|
||||||
|
}
|
||||||
|
tx = tx.Where("create_time >= ?", v)
|
||||||
|
}
|
||||||
|
if v, ok := query["endTime"]; ok && v != "" {
|
||||||
|
if len(v) == 10 {
|
||||||
|
v = fmt.Sprintf("%s999", v)
|
||||||
|
}
|
||||||
|
tx = tx.Where("create_time <= ?", v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询结果
|
||||||
|
var total int64 = 0
|
||||||
|
rows := []model.SysLoginSource{}
|
||||||
|
|
||||||
|
// 查询数量为0直接返回
|
||||||
|
if err := tx.Count(&total).Error; err != nil || total <= 0 {
|
||||||
|
return rows, total
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询数据分页
|
||||||
|
pageNum, pageSize := db.PageNumSize(query["pageNum"], query["pageSize"])
|
||||||
|
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
|
||||||
|
err := tx.Find(&rows).Error
|
||||||
|
if err != nil {
|
||||||
|
return rows, total
|
||||||
|
}
|
||||||
|
return rows, total
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select 查询集合
|
||||||
|
func (r SysLoginSource) Select(param model.SysLoginSource) []model.SysLoginSource {
|
||||||
|
tx := db.DB("").Model(&model.SysLoginSource{})
|
||||||
|
// 查询条件拼接
|
||||||
|
if param.UID != "" {
|
||||||
|
tx = tx.Where("uid = ?", param.UID)
|
||||||
|
}
|
||||||
|
if param.Type != "" {
|
||||||
|
tx = tx.Where("type = ?", param.Type)
|
||||||
|
}
|
||||||
|
if param.Name != "" {
|
||||||
|
tx = tx.Where("name = ?", param.Name)
|
||||||
|
}
|
||||||
|
if param.ActiveFlag != "" {
|
||||||
|
tx = tx.Where("active_flag = ?", param.ActiveFlag)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询数据
|
||||||
|
rows := []model.SysLoginSource{}
|
||||||
|
if err := tx.Find(&rows).Error; err != nil {
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
// SelectByIds 通过ID查询信息
|
||||||
|
func (r SysLoginSource) SelectByIds(ids []int64) []model.SysLoginSource {
|
||||||
|
rows := []model.SysLoginSource{}
|
||||||
|
if len(ids) <= 0 {
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
tx := db.DB("").Model(&model.SysLoginSource{})
|
||||||
|
// 构建查询条件
|
||||||
|
tx = tx.Where("id in ?", ids)
|
||||||
|
// 查询数据
|
||||||
|
if err := tx.Find(&rows).Error; err != nil {
|
||||||
|
logger.Errorf("query find err => %v", err.Error())
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
return rows
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert 新增信息 返回新增数据ID
|
||||||
|
func (r SysLoginSource) Insert(param model.SysLoginSource) int64 {
|
||||||
|
if param.CreateBy != "" {
|
||||||
|
ms := time.Now().UnixMilli()
|
||||||
|
param.UpdateBy = param.CreateBy
|
||||||
|
param.UpdateTime = ms
|
||||||
|
param.CreateTime = ms
|
||||||
|
}
|
||||||
|
// 执行插入
|
||||||
|
if err := db.DB("").Create(¶m).Error; err != nil {
|
||||||
|
logger.Errorf("insert err => %v", err.Error())
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return param.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update 修改信息 返回受影响行数
|
||||||
|
func (r SysLoginSource) Update(param model.SysLoginSource) int64 {
|
||||||
|
if param.Id <= 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if param.UpdateBy != "" {
|
||||||
|
param.UpdateTime = time.Now().UnixMilli()
|
||||||
|
}
|
||||||
|
tx := db.DB("").Model(&model.SysLoginSource{})
|
||||||
|
// 构建查询条件
|
||||||
|
tx = tx.Where("id = ?", param.Id)
|
||||||
|
tx = tx.Omit("id", "create_by", "create_time")
|
||||||
|
// 执行更新
|
||||||
|
if err := tx.Updates(param).Error; err != nil {
|
||||||
|
logger.Errorf("update err => %v", err.Error())
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return tx.RowsAffected
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByIds 批量删除信息 返回受影响行数
|
||||||
|
func (r SysLoginSource) DeleteByIds(ids []int64) int64 {
|
||||||
|
if len(ids) <= 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
tx := db.DB("").Where("id in ?", ids)
|
||||||
|
// 执行删除
|
||||||
|
if err := tx.Delete(&model.SysLoginSource{}).Error; err != nil {
|
||||||
|
logger.Errorf("delete err => %v", err.Error())
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return tx.RowsAffected
|
||||||
|
}
|
||||||
@@ -83,14 +83,15 @@ func (r SysMenu) Insert(sysMenu model.SysMenu) int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 根据菜单类型重置参数
|
// 根据菜单类型重置参数
|
||||||
if sysMenu.MenuType == constants.MENU_TYPE_BUTTON {
|
switch sysMenu.MenuType {
|
||||||
|
case constants.MENU_TYPE_BUTTON:
|
||||||
sysMenu.Component = ""
|
sysMenu.Component = ""
|
||||||
sysMenu.FrameFlag = "1"
|
sysMenu.FrameFlag = "1"
|
||||||
sysMenu.CacheFlag = "1"
|
sysMenu.CacheFlag = "1"
|
||||||
sysMenu.VisibleFlag = "1"
|
sysMenu.VisibleFlag = "1"
|
||||||
sysMenu.MenuPath = ""
|
sysMenu.MenuPath = ""
|
||||||
sysMenu.Icon = "#"
|
sysMenu.Icon = "#"
|
||||||
} else if sysMenu.MenuType == constants.MENU_TYPE_DIR {
|
case constants.MENU_TYPE_DIR:
|
||||||
sysMenu.Component = ""
|
sysMenu.Component = ""
|
||||||
sysMenu.FrameFlag = "1"
|
sysMenu.FrameFlag = "1"
|
||||||
sysMenu.CacheFlag = "1"
|
sysMenu.CacheFlag = "1"
|
||||||
@@ -118,14 +119,15 @@ func (r SysMenu) Update(sysMenu model.SysMenu) int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 根据菜单类型重置参数
|
// 根据菜单类型重置参数
|
||||||
if sysMenu.MenuType == constants.MENU_TYPE_BUTTON {
|
switch sysMenu.MenuType {
|
||||||
|
case constants.MENU_TYPE_BUTTON:
|
||||||
sysMenu.Component = ""
|
sysMenu.Component = ""
|
||||||
sysMenu.FrameFlag = "1"
|
sysMenu.FrameFlag = "1"
|
||||||
sysMenu.CacheFlag = "1"
|
sysMenu.CacheFlag = "1"
|
||||||
sysMenu.VisibleFlag = "1"
|
sysMenu.VisibleFlag = "1"
|
||||||
sysMenu.MenuPath = ""
|
sysMenu.MenuPath = ""
|
||||||
sysMenu.Icon = "#"
|
sysMenu.Icon = "#"
|
||||||
} else if sysMenu.MenuType == constants.MENU_TYPE_DIR {
|
case constants.MENU_TYPE_DIR:
|
||||||
sysMenu.Component = ""
|
sysMenu.Component = ""
|
||||||
sysMenu.FrameFlag = "1"
|
sysMenu.FrameFlag = "1"
|
||||||
sysMenu.CacheFlag = "1"
|
sysMenu.CacheFlag = "1"
|
||||||
|
|||||||
@@ -31,6 +31,12 @@ func (r SysUser) SelectByPage(query map[string]string, dataScopeSQL string) ([]m
|
|||||||
if v, ok := query["phone"]; ok && v != "" {
|
if v, ok := query["phone"]; ok && v != "" {
|
||||||
tx = tx.Where("phone like ?", fmt.Sprintf("%s%%", v))
|
tx = tx.Where("phone like ?", fmt.Sprintf("%s%%", v))
|
||||||
}
|
}
|
||||||
|
if v, ok := query["userType"]; ok && v != "" {
|
||||||
|
tx = tx.Where("user_type = ?", v)
|
||||||
|
}
|
||||||
|
if v, ok := query["userSource"]; ok && v != "" {
|
||||||
|
tx = tx.Where("user_source = ?", v)
|
||||||
|
}
|
||||||
if v, ok := query["statusFlag"]; ok && v != "" {
|
if v, ok := query["statusFlag"]; ok && v != "" {
|
||||||
tx = tx.Where("status_flag = ?", v)
|
tx = tx.Where("status_flag = ?", v)
|
||||||
}
|
}
|
||||||
@@ -198,6 +204,12 @@ func (r SysUser) CheckUnique(sysUser model.SysUser) int64 {
|
|||||||
if sysUser.Email != "" {
|
if sysUser.Email != "" {
|
||||||
tx = tx.Where("email = ?", sysUser.Email)
|
tx = tx.Where("email = ?", sysUser.Email)
|
||||||
}
|
}
|
||||||
|
if sysUser.UserType != "" {
|
||||||
|
tx = tx.Where("user_type = ?", sysUser.UserType)
|
||||||
|
}
|
||||||
|
if sysUser.UserSource != "" {
|
||||||
|
tx = tx.Where("user_source = ?", sysUser.UserSource)
|
||||||
|
}
|
||||||
|
|
||||||
// 查询数据
|
// 查询数据
|
||||||
var id int64 = 0
|
var id int64 = 0
|
||||||
@@ -209,14 +221,20 @@ func (r SysUser) CheckUnique(sysUser model.SysUser) int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SelectByUserName 通过登录账号查询信息
|
// SelectByUserName 通过登录账号查询信息
|
||||||
func (r SysUser) SelectByUserName(userName string) model.SysUser {
|
func (r SysUser) SelectByUserName(userName, userType, userSource string) model.SysUser {
|
||||||
item := model.SysUser{}
|
item := model.SysUser{}
|
||||||
if userName == "" {
|
if userName == "" {
|
||||||
return item
|
return item
|
||||||
}
|
}
|
||||||
|
if userType == "" {
|
||||||
|
userType = "System"
|
||||||
|
}
|
||||||
|
if userSource == "" {
|
||||||
|
userSource = "#"
|
||||||
|
}
|
||||||
tx := db.DB("").Model(&model.SysUser{})
|
tx := db.DB("").Model(&model.SysUser{})
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
tx = tx.Where("user_name = ? and del_flag = '0'", userName)
|
tx = tx.Where("user_name = ? and user_type = ? and user_source = ? and del_flag = '0'", userName, userType, userSource)
|
||||||
// 查询数据
|
// 查询数据
|
||||||
if err := tx.Limit(1).Find(&item).Error; err != nil {
|
if err := tx.Limit(1).Find(&item).Error; err != nil {
|
||||||
logger.Errorf("query find err => %v", err.Error())
|
logger.Errorf("query find err => %v", err.Error())
|
||||||
|
|||||||
95
src/modules/system/service/sys_login_source.go
Normal file
95
src/modules/system/service/sys_login_source.go
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"be.ems/src/framework/utils/generate"
|
||||||
|
"be.ems/src/modules/system/model"
|
||||||
|
"be.ems/src/modules/system/model/vo"
|
||||||
|
"be.ems/src/modules/system/repository"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewSysLoginSource 实例化服务层
|
||||||
|
var NewSysLoginSource = &SysLoginSource{
|
||||||
|
sysLoginSourceRepository: repository.NewSysLoginSource,
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysLoginSource 认证源 服务层处理
|
||||||
|
type SysLoginSource struct {
|
||||||
|
sysLoginSourceRepository *repository.SysLoginSource // 认证源表
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindByPage 分页查询
|
||||||
|
func (s SysLoginSource) FindByPage(query map[string]string) ([]model.SysLoginSource, int64) {
|
||||||
|
return s.sysLoginSourceRepository.SelectByPage(query)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindById 查询ID
|
||||||
|
func (s SysLoginSource) FindById(id int64) model.SysLoginSource {
|
||||||
|
rows := s.sysLoginSourceRepository.SelectByIds([]int64{id})
|
||||||
|
if len(rows) > 0 {
|
||||||
|
return rows[0]
|
||||||
|
}
|
||||||
|
return model.SysLoginSource{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert 新增
|
||||||
|
func (s SysLoginSource) Insert(param model.SysLoginSource) int64 {
|
||||||
|
param.UID = generate.Code(8)
|
||||||
|
return s.sysLoginSourceRepository.Insert(param)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update 更新
|
||||||
|
func (s SysLoginSource) Update(param model.SysLoginSource) int64 {
|
||||||
|
return s.sysLoginSourceRepository.Update(param)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteByIds 批量删除
|
||||||
|
func (s SysLoginSource) DeleteByIds(ids []int64) (int64, error) {
|
||||||
|
// 检查是否存在
|
||||||
|
arr := s.sysLoginSourceRepository.SelectByIds(ids)
|
||||||
|
if len(arr) <= 0 {
|
||||||
|
// return 0, fmt.Errorf("没有权限访问认证源数据!")
|
||||||
|
return 0, fmt.Errorf("no permission to access authentication source data")
|
||||||
|
}
|
||||||
|
if len(arr) == len(ids) {
|
||||||
|
return s.sysLoginSourceRepository.DeleteByIds(ids), nil
|
||||||
|
}
|
||||||
|
// return 0, fmt.Errorf("删除认证源信息失败!")
|
||||||
|
return 0, fmt.Errorf("failed to delete authentication source information")
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindByActive 查询激活
|
||||||
|
func (s SysLoginSource) FindByActive(uid string) []model.SysLoginSource {
|
||||||
|
param := model.SysLoginSource{
|
||||||
|
ActiveFlag: "1",
|
||||||
|
}
|
||||||
|
if uid != "" {
|
||||||
|
param.UID = uid
|
||||||
|
}
|
||||||
|
return s.sysLoginSourceRepository.Select(param)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckConfigJSON 检查配置JSON
|
||||||
|
func (s SysLoginSource) CheckConfigJSON(sType, sConfig string) (string, error) {
|
||||||
|
var source any
|
||||||
|
switch sType {
|
||||||
|
case "LDAP":
|
||||||
|
source = new(vo.SysLoginSourceLDAP)
|
||||||
|
case "SMTP":
|
||||||
|
source = new(vo.SysLoginSourceSMTP)
|
||||||
|
case "OAuth2":
|
||||||
|
source = new(vo.SysLoginSourceOAuth2)
|
||||||
|
default:
|
||||||
|
return "", fmt.Errorf("unsupported login source type: %s", sType)
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal([]byte(sConfig), &source); err != nil {
|
||||||
|
return "", fmt.Errorf("config json format error for %s type: %s", sType, err.Error())
|
||||||
|
}
|
||||||
|
configByte, err := json.Marshal(source)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("config json format error")
|
||||||
|
}
|
||||||
|
return string(configByte), nil
|
||||||
|
}
|
||||||
@@ -189,7 +189,9 @@ func (s SysUser) DeleteByIds(userIds []int64) (int64, error) {
|
|||||||
// CheckUniqueByUserName 检查用户名称是否唯一
|
// CheckUniqueByUserName 检查用户名称是否唯一
|
||||||
func (s SysUser) CheckUniqueByUserName(userName string, userId int64) bool {
|
func (s SysUser) CheckUniqueByUserName(userName string, userId int64) bool {
|
||||||
uniqueId := s.sysUserRepository.CheckUnique(model.SysUser{
|
uniqueId := s.sysUserRepository.CheckUnique(model.SysUser{
|
||||||
UserName: userName,
|
UserName: userName,
|
||||||
|
UserType: "System",
|
||||||
|
UserSource: "#",
|
||||||
})
|
})
|
||||||
if uniqueId == userId {
|
if uniqueId == userId {
|
||||||
return true
|
return true
|
||||||
@@ -200,7 +202,9 @@ func (s SysUser) CheckUniqueByUserName(userName string, userId int64) bool {
|
|||||||
// CheckUniqueByPhone 检查手机号码是否唯一
|
// CheckUniqueByPhone 检查手机号码是否唯一
|
||||||
func (s SysUser) CheckUniqueByPhone(phone string, userId int64) bool {
|
func (s SysUser) CheckUniqueByPhone(phone string, userId int64) bool {
|
||||||
uniqueId := s.sysUserRepository.CheckUnique(model.SysUser{
|
uniqueId := s.sysUserRepository.CheckUnique(model.SysUser{
|
||||||
Phone: phone,
|
Phone: phone,
|
||||||
|
UserType: "System",
|
||||||
|
UserSource: "#",
|
||||||
})
|
})
|
||||||
if uniqueId == userId {
|
if uniqueId == userId {
|
||||||
return true
|
return true
|
||||||
@@ -211,7 +215,9 @@ func (s SysUser) CheckUniqueByPhone(phone string, userId int64) bool {
|
|||||||
// CheckUniqueByEmail 检查Email是否唯一
|
// CheckUniqueByEmail 检查Email是否唯一
|
||||||
func (s SysUser) CheckUniqueByEmail(email string, userId int64) bool {
|
func (s SysUser) CheckUniqueByEmail(email string, userId int64) bool {
|
||||||
uniqueId := s.sysUserRepository.CheckUnique(model.SysUser{
|
uniqueId := s.sysUserRepository.CheckUnique(model.SysUser{
|
||||||
Email: email,
|
Email: email,
|
||||||
|
UserType: "System",
|
||||||
|
UserSource: "#",
|
||||||
})
|
})
|
||||||
if uniqueId == userId {
|
if uniqueId == userId {
|
||||||
return true
|
return true
|
||||||
@@ -220,8 +226,10 @@ func (s SysUser) CheckUniqueByEmail(email string, userId int64) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FindByUserName 通过用户名查询用户信息
|
// FindByUserName 通过用户名查询用户信息
|
||||||
func (s SysUser) FindByUserName(userName string) model.SysUser {
|
// userType 系统sys
|
||||||
userinfo := s.sysUserRepository.SelectByUserName(userName)
|
// userSource 系统#
|
||||||
|
func (s SysUser) FindByUserName(userName, userType, userSource string) model.SysUser {
|
||||||
|
userinfo := s.sysUserRepository.SelectByUserName(userName, userType, userSource)
|
||||||
if userinfo.UserName != userName {
|
if userinfo.UserName != userName {
|
||||||
return userinfo
|
return userinfo
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -429,6 +429,35 @@ func Setup(router *gin.Engine) {
|
|||||||
controller.NewSysUser.Import,
|
controller.NewSysUser.Import,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 第三方认证-配置认证源
|
||||||
|
sysLoginSource := controller.NewSysLoginSource
|
||||||
|
sysLoginSourceGroup := router.Group("/system/login-source")
|
||||||
|
{
|
||||||
|
sysLoginSourceGroup.GET("/list",
|
||||||
|
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"system:loginSource:list"}}),
|
||||||
|
sysLoginSource.List,
|
||||||
|
)
|
||||||
|
sysLoginSourceGroup.GET("/:id",
|
||||||
|
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"system:loginSource:query"}}),
|
||||||
|
sysLoginSource.Info,
|
||||||
|
)
|
||||||
|
sysLoginSourceGroup.POST("",
|
||||||
|
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"system:loginSource:add"}}),
|
||||||
|
middleware.OperateLog(middleware.OptionNew("log.operate.title.sysLoginSource", middleware.BUSINESS_TYPE_INSERT)),
|
||||||
|
sysLoginSource.Add,
|
||||||
|
)
|
||||||
|
sysLoginSourceGroup.PUT("",
|
||||||
|
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"system:loginSource:edit"}}),
|
||||||
|
middleware.OperateLog(middleware.OptionNew("log.operate.title.sysLoginSource", middleware.BUSINESS_TYPE_UPDATE)),
|
||||||
|
sysLoginSource.Edit,
|
||||||
|
)
|
||||||
|
sysLoginSourceGroup.DELETE("/:id",
|
||||||
|
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"system:loginSource:remove"}}),
|
||||||
|
middleware.OperateLog(middleware.OptionNew("log.operate.title.sysLoginSource", middleware.BUSINESS_TYPE_DELETE)),
|
||||||
|
sysLoginSource.Remove,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitLoad 初始参数
|
// InitLoad 初始参数
|
||||||
|
|||||||
Reference in New Issue
Block a user