diff --git a/README.md b/README.md index daded48..83d23cb 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,47 @@ # yzexam -在线考试系统 \ No newline at end of file +在线考试系统 + +## 功能特性 + +- 用户登录/注销 +- 微信扫码登录 +- 考试管理 +- 题库管理 +- 成绩统计 + +## 微信扫码登录配置 + +系统已集成微信扫码登录功能,用户可以通过微信扫描二维码的方式登录系统。 + +### 配置步骤 + +1. 在微信公众平台申请服务号并获取AppID和AppSecret +2. 在`exam-online-api/ruoyi-admin/src/main/resources/application.yml`中配置微信参数: + +```yaml +wechat: + # 微信公众号AppId + app-id: your_wechat_appid + # 微信公众号AppSecret + app-secret: your_wechat_app_secret + # 授权回调地址 + redirect-uri: http://your-domain.com/examapi/wechat/callback +``` + +3. 执行数据库脚本`doc/微信登录字段添加.sql`更新数据库表结构 + +### 使用说明 + +1. 访问系统登录页面 +2. 点击"微信扫码登录"按钮 +3. 使用微信扫描生成的二维码 +4. 在微信中确认登录 +5. 系统将自动跳转到主页 + +## 技术栈 + +- 后端:Spring Boot + MyBatis + Spring Security +- 前端:Vue.js + Element UI +- 数据库:MySQL +- 微信集成:Weixin Java SDK \ No newline at end of file diff --git a/doc/4.数据表预置数据.sql b/doc/4.数据表预置数据.sql index 50fab9e..8317ad2 100644 --- a/doc/4.数据表预置数据.sql +++ b/doc/4.数据表预置数据.sql @@ -1,303 +1,303 @@ --- ԤݿԶѡе +-- 预置数据可以多次选中导入 -- ---------------------------- --- ʼ-ű +-- 初始化-部门表数据 -- ---------------------------- -insert into sys_dept(dept_id,parent_id,ancestors,dept_code,dept_name,order_num,leader,phone,email,status,del_flag,create_by,create_time) values (100,0,'0','5301001','õλ',0,'','13512345678','','0','0','admin',sysdate); +insert into sys_dept(dept_id,parent_id,ancestors,dept_code,dept_name,order_num,leader,phone,email,status,del_flag,create_by,create_time) values (100,0,'0','5301001','测试用单位',0,'','13512345678','','0','0','admin',sysdate); -- ---------------------------- --- ʼ-ûϢ +-- 初始化-用户信息表数据 -- ---------------------------- insert into SYS_USER (user_id, user_code, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) -values (2, '40288b0186e867550186e867559d0000', 100, 'user1', 'ûһ', null, null, '13654128596', null, null, '$2a$10$aqSRTGVSqrZFwp.s5JXic.5JtZDYFq.19hriwW7seEdPGo6SJu3.W', '0', '0', '127.0.0.1', to_date('16-03-2023 11:16:56', 'dd-mm-yyyy hh24:mi:ss'), 'admin', to_date('16-03-2023 11:11:57', 'dd-mm-yyyy hh24:mi:ss'), null, to_date('16-03-2023 11:16:42', 'dd-mm-yyyy hh24:mi:ss'), null); +values (2, '40288b0186e867550186e867559d0000', 100, 'user1', '用户一', null, null, '13654128596', null, null, '$2a$10$aqSRTGVSqrZFwp.s5JXic.5JtZDYFq.19hriwW7seEdPGo6SJu3.W', '0', '0', '127.0.0.1', to_date('16-03-2023 11:16:56', 'dd-mm-yyyy hh24:mi:ss'), 'admin', to_date('16-03-2023 11:11:57', 'dd-mm-yyyy hh24:mi:ss'), null, to_date('16-03-2023 11:16:42', 'dd-mm-yyyy hh24:mi:ss'), null); insert into SYS_USER (user_id, user_code, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) -values (3, '40288b0186e867550186e86911cc0001', 100, 'user2', 'û', null, null, '13698568741', null, null, '$2a$10$Sh3WZ3ozH8Q88oG7mla.jerm3f3rCaq0QzD1KEPXXFrzcay0Hgz.S', '0', '0', null, null, 'admin', to_date('16-03-2023 11:13:51', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (3, '40288b0186e867550186e86911cc0001', 100, 'user2', '用户二', null, null, '13698568741', null, null, '$2a$10$Sh3WZ3ozH8Q88oG7mla.jerm3f3rCaq0QzD1KEPXXFrzcay0Hgz.S', '0', '0', null, null, 'admin', to_date('16-03-2023 11:13:51', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_USER (user_id, user_code, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) -values (1, 'F6FFFC4E3A50062DE0534479C80A75C1', 100, 'admin', 'ϵͳԱ', '00', 'abc@qq.com', '13512345678', '0', null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', to_date('16-03-2023 11:19:58', 'dd-mm-yyyy hh24:mi:ss'), 'admin', null, null, to_date('16-03-2023 11:19:44', 'dd-mm-yyyy hh24:mi:ss'), null); +values (1, 'F6FFFC4E3A50062DE0534479C80A75C1', 100, 'admin', '系统管理员', '00', 'abc@qq.com', '13512345678', '0', null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', to_date('16-03-2023 11:19:58', 'dd-mm-yyyy hh24:mi:ss'), 'admin', null, null, to_date('16-03-2023 11:19:44', 'dd-mm-yyyy hh24:mi:ss'), null); --- ʼ-λϢ +-- 初始化-岗位信息表数据 -- ---------------------------- -insert into sys_post (post_id,post_code,post_name,post_sort,status,del_flag,create_by,create_time) values(1, 'ceo', '³', 1, '0', '0','admin', sysdate); +insert into sys_post (post_id,post_code,post_name,post_sort,status,del_flag,create_by,create_time) values(1, 'ceo', '董事长', 1, '0', '0','admin', sysdate); -- ---------------------------- --- ʼ-ɫϢ +-- 初始化-角色信息表数据 -- ---------------------------- insert into SYS_ROLE (role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, update_by, update_time, remark) -values (2, 'ѧԱ', 'student', 2, null, 1, 1, '0', '0', 'admin', to_date('16-03-2023 11:01:28', 'dd-mm-yyyy hh24:mi:ss'), 'admin', to_date('16-03-2023 11:16:25', 'dd-mm-yyyy hh24:mi:ss'), null); +values (2, '学员', 'student', 2, null, 1, 1, '0', '0', 'admin', to_date('16-03-2023 11:01:28', 'dd-mm-yyyy hh24:mi:ss'), 'admin', to_date('16-03-2023 11:16:25', 'dd-mm-yyyy hh24:mi:ss'), null); insert into SYS_ROLE (role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, update_by, update_time, remark) -values (1, 'Ա', 'admin', 1, '1', 1, 1, '0', '0', 'admin', to_date('16-03-2023 10:31:19', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1, '超级管理员', 'admin', 1, '1', 1, 1, '0', '0', 'admin', to_date('16-03-2023 10:31:19', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); commit; -- ---------------------------- --- ʼ-˵Ϣ +-- 初始化-菜单信息表数据 -- ---------------------------- insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1, 'ϵͳ', 0, 1, 'system', null, 1, 0, 'M', '0', '0', '0', null, 'system', 'admin', null, null, null, 'ϵͳĿ¼'); +values (1, '系统管理', 0, 1, 'system', null, 1, 0, 'M', '0', '0', '0', null, 'system', 'admin', null, null, null, '系统管理目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (2, 'ϵͳ', 0, 3, 'monitor', null, 1, 0, 'M', '0', '0', '0', null, 'monitor', 'admin', null, null, null, 'ϵͳĿ¼'); +values (2, '系统监控', 0, 3, 'monitor', null, 1, 0, 'M', '0', '0', '0', null, 'monitor', 'admin', null, null, null, '系统监控目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (3, 'ϵͳ', 0, 4, 'tool', null, 1, 0, 'M', '0', '0', '0', null, 'tool', 'admin', null, null, null, 'ϵͳĿ¼'); +values (3, '系统工具', 0, 4, 'tool', null, 1, 0, 'M', '0', '0', '0', null, 'tool', 'admin', null, null, null, '系统工具目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (8, 'Ϲ', 0, 8, 'fms', null, 1, 0, 'M', '0', '0', '0', null, 'files', 'admin', null, null, null, 'ļĿ¼'); +values (8, '资料管理', 0, 8, 'fms', null, 1, 0, 'M', '0', '0', '0', null, 'files', 'admin', null, null, null, '文件管理目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (9, '', 0, 9, 'questions', null, 1, 0, 'M', '0', '0', '0', null, 'questions', 'admin', null, null, null, 'Ŀ¼'); +values (9, '试题管理', 0, 9, 'questions', null, 1, 0, 'M', '0', '0', '0', null, 'questions', 'admin', null, null, null, '试题管理目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (10, 'Թ', 0, 10, 'exammanager', null, 1, 0, 'M', '0', '0', '0', null, 'exammanager', 'admin', null, null, null, 'ԹĿ¼'); +values (10, '考试管理', 0, 10, 'exammanager', null, 1, 0, 'M', '0', '0', '0', null, 'exammanager', 'admin', null, null, null, '考试管理目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (11, '߿', 0, 11, 'onlineexam', null, 1, 0, 'M', '0', '0', '0', null, 'onlineexam', 'admin', null, null, null, '߿Ŀ¼'); +values (11, '在线考试', 0, 11, 'onlineexam', null, 1, 0, 'M', '0', '0', '0', null, 'onlineexam', 'admin', null, null, null, '在线考试目录'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (100, 'û', 1, 1, 'user', 'system/user/index', 1, 0, 'C', '0', '0', '0', 'system:user:list', 'user', 'admin', null, null, null, 'û˵'); +values (100, '用户管理', 1, 1, 'user', 'system/user/index', 1, 0, 'C', '0', '0', '0', 'system:user:list', 'user', 'admin', null, null, null, '用户管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (101, 'ɫ', 1, 2, 'role', 'system/role/index', 1, 0, 'C', '0', '0', '0', 'system:role:list', 'peoples', 'admin', null, null, null, 'ɫ˵'); +values (101, '角色管理', 1, 2, 'role', 'system/role/index', 1, 0, 'C', '0', '0', '0', 'system:role:list', 'peoples', 'admin', null, null, null, '角色管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (102, '˵', 1, 3, 'menu', 'system/menu/index', 1, 0, 'C', '0', '0', '0', 'system:menu:list', 'tree-table', 'admin', null, null, null, '˵˵'); +values (102, '菜单管理', 1, 3, 'menu', 'system/menu/index', 1, 0, 'C', '0', '0', '0', 'system:menu:list', 'tree-table', 'admin', null, null, null, '菜单管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (103, 'Ź', 1, 4, 'dept', 'system/dept/index', 1, 0, 'C', '0', '0', '0', 'system:dept:list', 'tree', 'admin', null, null, null, 'Ź˵'); +values (103, '部门管理', 1, 4, 'dept', 'system/dept/index', 1, 0, 'C', '0', '0', '0', 'system:dept:list', 'tree', 'admin', null, null, null, '部门管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (104, 'λ', 1, 5, 'post', 'system/post/index', 1, 0, 'C', '0', '0', '0', 'system:post:list', 'post', 'admin', null, null, null, 'λ˵'); +values (104, '岗位管理', 1, 5, 'post', 'system/post/index', 1, 0, 'C', '0', '0', '0', 'system:post:list', 'post', 'admin', null, null, null, '岗位管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (105, 'ֵ', 1, 6, 'dict', 'system/dict/index', 1, 0, 'C', '0', '0', '0', 'system:dict:list', 'dict', 'admin', null, null, null, 'ֵ˵'); +values (105, '字典管理', 1, 6, 'dict', 'system/dict/index', 1, 0, 'C', '0', '0', '0', 'system:dict:list', 'dict', 'admin', null, null, null, '字典管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (106, '', 1, 7, 'config', 'system/config/index', 1, 0, 'C', '0', '0', '0', 'system:config:list', 'edit', 'admin', null, null, null, 'ò˵'); +values (106, '参数设置', 1, 7, 'config', 'system/config/index', 1, 0, 'C', '0', '0', '0', 'system:config:list', 'edit', 'admin', null, null, null, '参数设置菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (107, '֪ͨ', 1, 8, 'notice', 'system/notice/index', 1, 0, 'C', '0', '0', '0', 'system:notice:list', 'message', 'admin', null, null, null, '֪ͨ˵'); +values (107, '通知公告', 1, 8, 'notice', 'system/notice/index', 1, 0, 'C', '0', '0', '0', 'system:notice:list', 'message', 'admin', null, null, null, '通知公告菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (108, '־', 1, 9, 'log', null, 1, 0, 'M', '0', '0', '0', null, 'log', 'admin', null, null, null, '־˵'); +values (108, '日志管理', 1, 9, 'log', null, 1, 0, 'M', '0', '0', '0', null, 'log', 'admin', null, null, null, '日志管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (109, 'û', 2, 1, 'online', 'monitor/online/index', 1, 0, 'C', '0', '0', '0', 'monitor:online:list', 'online', 'admin', null, null, null, 'û˵'); +values (109, '在线用户', 2, 1, 'online', 'monitor/online/index', 1, 0, 'C', '0', '0', '0', 'monitor:online:list', 'online', 'admin', null, null, null, '在线用户菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (110, 'ʱ', 2, 2, 'job', 'monitor/job/index', 1, 0, 'C', '0', '0', '0', 'monitor:job:list', 'job', 'admin', null, null, null, 'ʱ˵'); +values (110, '定时任务', 2, 2, 'job', 'monitor/job/index', 1, 0, 'C', '0', '0', '0', 'monitor:job:list', 'job', 'admin', null, null, null, '定时任务菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (111, 'ݼ', 2, 3, 'druid', 'monitor/druid/index', 1, 0, 'C', '0', '0', '0', 'monitor:druid:list', 'druid', 'admin', null, null, null, 'ݼز˵'); +values (111, '数据监控', 2, 3, 'druid', 'monitor/druid/index', 1, 0, 'C', '0', '0', '0', 'monitor:druid:list', 'druid', 'admin', null, null, null, '数据监控菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (112, '', 2, 4, 'server', 'monitor/server/index', 1, 0, 'C', '0', '0', '0', 'monitor:server:list', 'server', 'admin', null, null, null, 'ز˵'); +values (112, '服务监控', 2, 4, 'server', 'monitor/server/index', 1, 0, 'C', '0', '0', '0', 'monitor:server:list', 'server', 'admin', null, null, null, '服务监控菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (113, '', 2, 5, 'cache', 'monitor/cache/index', 1, 0, 'C', '0', '0', '0', 'monitor:cache:list', 'redis', 'admin', null, null, null, 'ز˵'); +values (113, '缓存监控', 2, 5, 'cache', 'monitor/cache/index', 1, 0, 'C', '0', '0', '0', 'monitor:cache:list', 'redis', 'admin', null, null, null, '缓存监控菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (114, '', 3, 1, 'build', 'tool/build/index', 1, 0, 'C', '0', '0', '0', 'tool:build:list', 'build', 'admin', null, null, null, '˵'); +values (114, '表单构建', 3, 1, 'build', 'tool/build/index', 1, 0, 'C', '0', '0', '0', 'tool:build:list', 'build', 'admin', null, null, null, '表单构建菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (115, '', 3, 2, 'gen', 'tool/gen/index', 1, 0, 'C', '0', '0', '0', 'tool:gen:list', 'code', 'admin', null, null, null, 'ɲ˵'); +values (115, '代码生成', 3, 2, 'gen', 'tool/gen/index', 1, 0, 'C', '0', '0', '0', 'tool:gen:list', 'code', 'admin', null, null, null, '代码生成菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (116, 'ϵͳӿ', 3, 3, 'swagger', 'tool/swagger/index', 1, 0, 'C', '0', '0', '0', 'tool:swagger:list', 'swagger', 'admin', null, null, null, 'ϵͳӿڲ˵'); +values (116, '系统接口', 3, 3, 'swagger', 'tool/swagger/index', 1, 0, 'C', '0', '0', '0', 'tool:swagger:list', 'swagger', 'admin', null, null, null, '系统接口菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (121, 'Ա', 1, 11, 'group', 'system/group/index', 1, 0, 'C', '0', '0', null, 'system:group:list', 'group', 'admin', to_date('28-01-2023 19:40:40', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'Ա˵'); +values (121, '人员分组', 1, 11, 'group', 'system/group/index', 1, 0, 'C', '0', '0', null, 'system:group:list', 'group', 'admin', to_date('28-01-2023 19:40:40', 'dd-mm-yyyy hh24:mi:ss'), null, null, '人员分组菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (220, '־', 108, 1, 'operlog', 'monitor/operlog/index', 1, 0, 'C', '0', '0', '0', 'monitor:operlog:list', 'form', 'admin', null, null, null, '־˵'); +values (220, '操作日志', 108, 1, 'operlog', 'monitor/operlog/index', 1, 0, 'C', '0', '0', '0', 'monitor:operlog:list', 'form', 'admin', null, null, null, '操作日志菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (230, '¼־', 108, 2, 'logininfor', 'monitor/logininfor/index', 1, 0, 'C', '0', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', null, null, null, '¼־˵'); +values (230, '登录日志', 108, 2, 'logininfor', 'monitor/logininfor/index', 1, 0, 'C', '0', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', null, null, null, '登录日志菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (300, 'ͼƬ', 8, 1, 'photo', 'fms/photo/index', 1, 0, 'C', '0', '0', null, 'fms:photo:list', 'photo', 'admin', to_date('14-12-2021 15:24:20', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'ͼƬ˵'); +values (300, '图片管理', 8, 1, 'photo', 'fms/photo/index', 1, 0, 'C', '0', '0', null, 'fms:photo:list', 'photo', 'admin', to_date('14-12-2021 15:24:20', 'dd-mm-yyyy hh24:mi:ss'), null, null, '图片管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (305, 'ļ', 8, 1, 'files', 'fms/files/index', 1, 0, 'C', '0', '0', null, 'fms:files:list', 'film', 'admin', to_date('17-12-2021 23:15:50', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'ļ˵'); +values (305, '文件管理', 8, 1, 'files', 'fms/files/index', 1, 0, 'C', '0', '0', null, 'fms:files:list', 'film', 'admin', to_date('17-12-2021 23:15:50', 'dd-mm-yyyy hh24:mi:ss'), null, null, '文件管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (320, '', 9, 1, 'examtype', 'questions/examtype/index', 1, 0, 'C', '0', '0', null, 'questions:examtype:list', 'examtype', 'admin', to_date('14-12-2022 14:28:22', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'Է˵'); +values (320, '题库分类', 9, 1, 'examtype', 'questions/examtype/index', 1, 0, 'C', '0', '0', null, 'questions:examtype:list', 'examtype', 'admin', to_date('14-12-2022 14:28:22', 'dd-mm-yyyy hh24:mi:ss'), null, null, '考试分类菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (325, '', 9, 2, 'questionsbank', 'questions/questionsbank/index', 1, 0, 'C', '0', '0', null, 'questions:questionsbank:list', 'questionsbank', 'admin', to_date('19-12-2022 14:10:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, '˵'); +values (325, '题库设置', 9, 2, 'questionsbank', 'questions/questionsbank/index', 1, 0, 'C', '0', '0', null, 'questions:questionsbank:list', 'questionsbank', 'admin', to_date('19-12-2022 14:10:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, '题库管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (330, 'Ŀ', 9, 5, 'examquestions', 'questions/examquestions/index', 1, 0, 'C', '0', '0', null, 'questions:examquestions:list', 'examquestions', 'admin', to_date('27-12-2022 20:08:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'Ŀ˵'); +values (330, '考试题目管理', 9, 5, 'examquestions', 'questions/examquestions/index', 1, 0, 'C', '0', '0', null, 'questions:examquestions:list', 'examquestions', 'admin', to_date('27-12-2022 20:08:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, '考试题目管理菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (350, '', 10, 1, 'examtask', 'exam/examtask/index', 1, 0, 'C', '0', '0', null, 'exam:examtask:list', 'examtask', 'admin', to_date('06-01-2023 13:53:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'Բ˵'); +values (350, '创建考试', 10, 1, 'examtask', 'exam/examtask/index', 1, 0, 'C', '0', '0', null, 'exam:examtask:list', 'examtask', 'admin', to_date('06-01-2023 13:53:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, '创建考试菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (360, 'ʼ', 11, 1, 'examstart', 'onlineexam/examstart/index', 1, 0, 'C', '0', '0', null, 'onlineexam:data:list', 'examstart', 'admin', to_date('06-01-2023 13:53:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, 'ʼԲ˵'); +values (360, '开始考试', 11, 1, 'examstart', 'onlineexam/examstart/index', 1, 0, 'C', '0', '0', null, 'onlineexam:data:list', 'examstart', 'admin', to_date('06-01-2023 13:53:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, '开始考试菜单'); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1001, 'ûѯ', 100, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:query', '#', 'admin', null, null, null, null); +values (1001, '用户查询', 100, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1002, 'û', 100, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:add', '#', 'admin', null, null, null, null); +values (1002, '用户新增', 100, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1003, 'û޸', 100, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:edit', '#', 'admin', null, null, null, null); +values (1003, '用户修改', 100, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1004, 'ûɾ', 100, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:remove', '#', 'admin', null, null, null, null); +values (1004, '用户删除', 100, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1005, 'û', 100, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:export', '#', 'admin', null, null, null, null); +values (1005, '用户导出', 100, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1006, 'û', 100, 6, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:import', '#', 'admin', null, null, null, null); +values (1006, '用户导入', 100, 6, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:import', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1007, '', 100, 7, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:resetPwd', '#', 'admin', null, null, null, null); +values (1007, '重置密码', 100, 7, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:resetPwd', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1008, 'ɫѯ', 101, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:query', '#', 'admin', null, null, null, null); +values (1008, '角色查询', 101, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1009, 'ɫ', 101, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:add', '#', 'admin', null, null, null, null); +values (1009, '角色新增', 101, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1010, 'ɫ޸', 101, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:edit', '#', 'admin', null, null, null, null); +values (1010, '角色修改', 101, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1011, 'ɫɾ', 101, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:remove', '#', 'admin', null, null, null, null); +values (1011, '角色删除', 101, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1012, 'ɫ', 101, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:export', '#', 'admin', null, null, null, null); +values (1012, '角色导出', 101, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:role:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1013, '˵ѯ', 102, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:query', '#', 'admin', null, null, null, null); +values (1013, '菜单查询', 102, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1014, '˵', 102, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:add', '#', 'admin', null, null, null, null); +values (1014, '菜单新增', 102, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1015, '˵޸', 102, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:edit', '#', 'admin', null, null, null, null); +values (1015, '菜单修改', 102, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1016, '˵ɾ', 102, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:remove', '#', 'admin', null, null, null, null); +values (1016, '菜单删除', 102, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:menu:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1017, 'Ųѯ', 103, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:query', '#', 'admin', null, null, null, null); +values (1017, '部门查询', 103, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1018, '', 103, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:add', '#', 'admin', null, null, null, null); +values (1018, '部门新增', 103, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1019, '޸', 103, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:edit', '#', 'admin', null, null, null, null); +values (1019, '部门修改', 103, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1020, 'ɾ', 103, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:remove', '#', 'admin', null, null, null, null); +values (1020, '部门删除', 103, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1021, 'λѯ', 104, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:query', '#', 'admin', null, null, null, null); +values (1021, '岗位查询', 104, 1, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1022, 'λ', 104, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:add', '#', 'admin', null, null, null, null); +values (1022, '岗位新增', 104, 2, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1023, 'λ޸', 104, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:edit', '#', 'admin', null, null, null, null); +values (1023, '岗位修改', 104, 3, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1024, 'λɾ', 104, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:remove', '#', 'admin', null, null, null, null); +values (1024, '岗位删除', 104, 4, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1025, 'λ', 104, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:export', '#', 'admin', null, null, null, null); +values (1025, '岗位导出', 104, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:post:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1026, 'ֵѯ', 105, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:query', '#', 'admin', null, null, null, null); +values (1026, '字典查询', 105, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1027, 'ֵ', 105, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:add', '#', 'admin', null, null, null, null); +values (1027, '字典新增', 105, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1028, 'ֵ޸', 105, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:edit', '#', 'admin', null, null, null, null); +values (1028, '字典修改', 105, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1029, 'ֵɾ', 105, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:remove', '#', 'admin', null, null, null, null); +values (1029, '字典删除', 105, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1030, 'ֵ䵼', 105, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:export', '#', 'admin', null, null, null, null); +values (1030, '字典导出', 105, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'system:dict:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1031, 'ѯ', 106, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:query', '#', 'admin', null, null, null, null); +values (1031, '参数查询', 106, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1032, '', 106, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:add', '#', 'admin', null, null, null, null); +values (1032, '参数新增', 106, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1033, '޸', 106, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:edit', '#', 'admin', null, null, null, null); +values (1033, '参数修改', 106, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1034, 'ɾ', 106, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:remove', '#', 'admin', null, null, null, null); +values (1034, '参数删除', 106, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1035, '', 106, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:export', '#', 'admin', null, null, null, null); +values (1035, '参数导出', 106, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'system:config:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1036, 'ѯ', 107, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:query', '#', 'admin', null, null, null, null); +values (1036, '公告查询', 107, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1037, '', 107, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:add', '#', 'admin', null, null, null, null); +values (1037, '公告新增', 107, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1038, '޸', 107, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:edit', '#', 'admin', null, null, null, null); +values (1038, '公告修改', 107, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1039, 'ɾ', 107, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:remove', '#', 'admin', null, null, null, null); +values (1039, '公告删除', 107, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'system:notice:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1040, 'ѯ', 220, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:operlog:query', '#', 'admin', null, null, null, null); +values (1040, '操作查询', 220, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:operlog:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1041, 'ɾ', 220, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:operlog:remove', '#', 'admin', null, null, null, null); +values (1041, '操作删除', 220, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:operlog:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1042, '־', 220, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:operlog:export', '#', 'admin', null, null, null, null); +values (1042, '日志导出', 220, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:operlog:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1043, '¼ѯ', 230, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:logininfor:query', '#', 'admin', null, null, null, null); +values (1043, '登录查询', 230, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:logininfor:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1044, '¼ɾ', 230, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:logininfor:remove', '#', 'admin', null, null, null, null); +values (1044, '登录删除', 230, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:logininfor:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1045, '־', 230, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:logininfor:export', '#', 'admin', null, null, null, null); +values (1045, '日志导出', 230, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:logininfor:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1046, '߲ѯ', 109, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:online:query', '#', 'admin', null, null, null, null); +values (1046, '在线查询', 109, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:online:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1047, 'ǿ', 109, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:online:batchLogout', '#', 'admin', null, null, null, null); +values (1047, '批量强退', 109, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:online:batchLogout', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1048, 'ǿ', 109, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:online:forceLogout', '#', 'admin', null, null, null, null); +values (1048, '单条强退', 109, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:online:forceLogout', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1049, 'ѯ', 110, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:query', '#', 'admin', null, null, null, null); +values (1049, '任务查询', 110, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1050, '', 110, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:add', '#', 'admin', null, null, null, null); +values (1050, '任务新增', 110, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:add', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1051, '޸', 110, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:edit', '#', 'admin', null, null, null, null); +values (1051, '任务修改', 110, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1052, 'ɾ', 110, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:remove', '#', 'admin', null, null, null, null); +values (1052, '任务删除', 110, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1053, '״̬޸', 110, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:changeStatus', '#', 'admin', null, null, null, null); +values (1053, '状态修改', 110, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:changeStatus', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1054, '񵼳', 110, 7, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:export', '#', 'admin', null, null, null, null); +values (1054, '任务导出', 110, 7, '#', null, 1, 0, 'F', '0', '0', '0', 'monitor:job:export', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1055, 'ɲѯ', 115, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:query', '#', 'admin', null, null, null, null); +values (1055, '生成查询', 115, 1, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:query', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1056, '޸', 115, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:edit', '#', 'admin', null, null, null, null); +values (1056, '生成修改', 115, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:edit', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1057, 'ɾ', 115, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:remove', '#', 'admin', null, null, null, null); +values (1057, '生成删除', 115, 3, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:remove', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1058, '', 115, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:import', '#', 'admin', null, null, null, null); +values (1058, '导入代码', 115, 2, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:import', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1059, 'Ԥ', 115, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:preview', '#', 'admin', null, null, null, null); +values (1059, '预览代码', 115, 4, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:preview', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1060, 'ɴ', 115, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:code', '#', 'admin', null, null, null, null); +values (1060, '生成代码', 115, 5, '#', null, 1, 0, 'F', '0', '0', '0', 'tool:gen:code', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1061, 'ŵ', 103, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:wechatin', '#', 'admin', null, null, null, null); +values (1061, '部门导入', 103, 5, null, null, 1, 0, 'F', '0', '0', '0', 'system:dept:wechatin', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1062, 'û', 100, 7, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:wechatin', '#', 'admin', null, null, null, null); +values (1062, '用户导入', 100, 7, null, null, 1, 0, 'F', '0', '0', '0', 'system:user:wechatin', '#', 'admin', null, null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1080, 'Աѯ', 121, 1, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:query', '#', 'admin', to_date('28-01-2023 20:02:09', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1080, '人员分组查询', 121, 1, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:query', '#', 'admin', to_date('28-01-2023 20:02:09', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1081, 'Ա', 121, 2, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:add', '#', 'admin', to_date('28-01-2023 20:02:09', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1081, '人员分组新增', 121, 2, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:add', '#', 'admin', to_date('28-01-2023 20:02:09', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1082, 'Ա޸', 121, 3, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:edit', '#', 'admin', to_date('28-01-2023 20:02:09', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1082, '人员分组修改', 121, 3, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:edit', '#', 'admin', to_date('28-01-2023 20:02:09', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1083, 'Աɾ', 121, 4, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:remove', '#', 'admin', to_date('28-01-2023 20:02:10', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1083, '人员分组删除', 121, 4, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:remove', '#', 'admin', to_date('28-01-2023 20:02:10', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1084, 'Ա鵼', 121, 5, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:export', '#', 'admin', to_date('28-01-2023 20:02:10', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1084, '人员分组导出', 121, 5, '#', null, 1, 0, 'F', '0', '0', null, 'system:group:export', '#', 'admin', to_date('28-01-2023 20:02:10', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1390, 'ͼƬѯ', 300, 1, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:query', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1390, '图片管理查询', 300, 1, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:query', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1391, 'ͼƬ', 300, 2, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:add', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1391, '图片管理新增', 300, 2, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:add', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1392, 'ͼƬ޸', 300, 3, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:edit', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1392, '图片管理修改', 300, 3, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:edit', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1393, 'ͼƬɾ', 300, 4, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:remove', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1393, '图片管理删除', 300, 4, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:remove', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1394, 'ͼƬ', 300, 5, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:export', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1394, '图片管理下载', 300, 5, '#', null, 1, 0, 'F', '0', '0', null, 'fms:photo:export', '#', 'admin', to_date('14-12-2021 15:28:21', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1420, 'ļѯ', 305, 1, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:query', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1420, '文件管理查询', 305, 1, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:query', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1421, 'ļ', 305, 2, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:add', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1421, '文件管理新增', 305, 2, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:add', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1422, 'ļ޸', 305, 3, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:edit', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1422, '文件管理修改', 305, 3, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:edit', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1423, 'ļɾ', 305, 4, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:remove', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1423, '文件管理删除', 305, 4, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:remove', '#', 'admin', to_date('17-12-2021 23:18:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1424, 'ļ', 305, 5, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:export', '#', 'admin', to_date('17-12-2021 23:18:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1424, '文件管理下载', 305, 5, '#', null, 1, 0, 'F', '0', '0', null, 'fms:files:export', '#', 'admin', to_date('17-12-2021 23:18:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1501, 'Էѯ', 320, 1, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:query', '#', 'admin', to_date('14-12-2022 14:32:15', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1501, '考试分类查询', 320, 1, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:query', '#', 'admin', to_date('14-12-2022 14:32:15', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1502, 'Է', 320, 2, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:add', '#', 'admin', to_date('14-12-2022 14:32:15', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1502, '考试分类新增', 320, 2, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:add', '#', 'admin', to_date('14-12-2022 14:32:15', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1503, 'Է޸', 320, 3, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:edit', '#', 'admin', to_date('14-12-2022 14:32:15', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1503, '考试分类修改', 320, 3, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:edit', '#', 'admin', to_date('14-12-2022 14:32:15', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1504, 'Էɾ', 320, 4, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:remove', '#', 'admin', to_date('14-12-2022 14:32:16', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1504, '考试分类删除', 320, 4, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:remove', '#', 'admin', to_date('14-12-2022 14:32:16', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1505, 'Էർ', 320, 5, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:export', '#', 'admin', to_date('14-12-2022 14:32:16', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1505, '考试分类导出', 320, 5, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examtype:export', '#', 'admin', to_date('14-12-2022 14:32:16', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1525, 'ѯ', 325, 1, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:query', '#', 'admin', to_date('19-12-2022 14:10:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1525, '题库管理查询', 325, 1, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:query', '#', 'admin', to_date('19-12-2022 14:10:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1526, '', 325, 2, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:add', '#', 'admin', to_date('19-12-2022 14:10:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1526, '题库管理新增', 325, 2, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:add', '#', 'admin', to_date('19-12-2022 14:10:57', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1527, '޸', 325, 3, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:edit', '#', 'admin', to_date('19-12-2022 14:10:58', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1527, '题库管理修改', 325, 3, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:edit', '#', 'admin', to_date('19-12-2022 14:10:58', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1528, 'ɾ', 325, 4, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:remove', '#', 'admin', to_date('19-12-2022 14:10:58', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1528, '题库管理删除', 325, 4, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:remove', '#', 'admin', to_date('19-12-2022 14:10:58', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1529, '', 325, 5, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:export', '#', 'admin', to_date('19-12-2022 14:10:58', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1529, '题库管理导出', 325, 5, '#', null, 1, 0, 'F', '0', '0', null, 'questions:questionsbank:export', '#', 'admin', to_date('19-12-2022 14:10:58', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1541, 'Ŀѯ', 330, 1, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:query', '#', 'admin', to_date('27-12-2022 20:10:55', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1541, '考试题目查询', 330, 1, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:query', '#', 'admin', to_date('27-12-2022 20:10:55', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1542, 'Ŀ', 330, 2, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:add', '#', 'admin', to_date('27-12-2022 20:10:55', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1542, '考试题目新增', 330, 2, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:add', '#', 'admin', to_date('27-12-2022 20:10:55', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1543, 'Ŀ޸', 330, 3, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:edit', '#', 'admin', to_date('27-12-2022 20:10:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1543, '考试题目修改', 330, 3, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:edit', '#', 'admin', to_date('27-12-2022 20:10:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1544, 'Ŀɾ', 330, 4, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:remove', '#', 'admin', to_date('27-12-2022 20:10:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1544, '考试题目删除', 330, 4, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:remove', '#', 'admin', to_date('27-12-2022 20:10:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1545, 'Ŀ', 330, 5, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:export', '#', 'admin', to_date('27-12-2022 20:10:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1545, '考试题目导出', 330, 5, '#', null, 1, 0, 'F', '0', '0', null, 'questions:examquestions:export', '#', 'admin', to_date('27-12-2022 20:10:56', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1601, 'Բѯ', 350, 1, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:query', '#', 'admin', to_date('06-01-2023 13:56:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1601, '创建考试查询', 350, 1, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:query', '#', 'admin', to_date('06-01-2023 13:56:00', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1602, '', 350, 2, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:add', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1602, '创建考试新增', 350, 2, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:add', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1603, '޸', 350, 3, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:edit', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1603, '创建考试修改', 350, 3, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:edit', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1604, 'ɾ', 350, 4, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:remove', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1604, '创建考试删除', 350, 4, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:remove', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); insert into SYS_MENU (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, del_flag, perms, icon, create_by, create_time, update_by, update_time, remark) -values (1605, 'Ե', 350, 5, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:export', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); +values (1605, '创建考试导出', 350, 5, '#', null, 1, 0, 'F', '0', '0', null, 'exam:examtask:export', '#', 'admin', to_date('06-01-2023 13:56:01', 'dd-mm-yyyy hh24:mi:ss'), null, null, null); commit; -- ---------------------------- --- ʼ-ûͽɫ +-- 初始化-用户和角色关联表数据 -- ---------------------------- insert into SYS_USER_ROLE (user_id, role_id) values (1, 1); @@ -307,7 +307,7 @@ insert into SYS_USER_ROLE (user_id, role_id) values (3, 2); -- ---------------------------- --- ʼ-ɫͲ˵ +-- 初始化-角色和菜单关联表数据 -- ---------------------------- insert into sys_role_menu values ('2', '1'); insert into sys_role_menu values ('2', '2'); @@ -395,76 +395,76 @@ insert into sys_role_menu values ('2', '1059'); insert into sys_role_menu values ('2', '1060'); -- ---------------------------- --- ʼ-ɫͲŹ +-- 初始化-角色和部门关联表数据 -- ---------------------------- insert into sys_role_dept values ('2', '100'); insert into sys_role_dept values ('2', '101'); insert into sys_role_dept values ('2', '105'); -- ---------------------------- --- ʼ-ûλ +-- 初始化-用户与岗位关联表数据 -- ---------------------------- insert into sys_user_post values ('1', '1'); insert into sys_user_post values ('2', '2'); -- ---------------------------- --- ʼ-ֵͱ +-- 初始化-字典类型表 -- ---------------------------- -insert into sys_dict_type values(1, 'ûԱ', 'sys_user_sex', '0', 'admin', sysdate, '', null, 'ûԱб'); -insert into sys_dict_type values(2, '˵״̬', 'sys_show_hide', '0', 'admin', sysdate, '', null, '˵״̬б'); -insert into sys_dict_type values(3, 'ϵͳ', 'sys_normal_disable', '0', 'admin', sysdate, '', null, 'ϵͳб'); -insert into sys_dict_type values(4, '״̬', 'sys_job_status', '0', 'admin', sysdate, '', null, '״̬б'); -insert into sys_dict_type values(5, '', 'sys_job_group', '0', 'admin', sysdate, '', null, 'б'); -insert into sys_dict_type values(6, 'ϵͳǷ', 'sys_yes_no', '0', 'admin', sysdate, '', null, 'ϵͳǷб'); -insert into sys_dict_type values(7, '֪ͨ', 'sys_notice_type', '0', 'admin', sysdate, '', null, '֪ͨб'); -insert into sys_dict_type values(8, '֪ͨ״̬', 'sys_notice_status', '0', 'admin', sysdate, '', null, '֪ͨ״̬б'); -insert into sys_dict_type values(9, '', 'sys_oper_type', '0', 'admin', sysdate, '', null, 'б'); -insert into sys_dict_type values(10, 'ϵͳ״̬', 'sys_common_status', '0', 'admin', sysdate, '', null, '¼״̬б'); +insert into sys_dict_type values(1, '用户性别', 'sys_user_sex', '0', 'admin', sysdate, '', null, '用户性别列表'); +insert into sys_dict_type values(2, '菜单状态', 'sys_show_hide', '0', 'admin', sysdate, '', null, '菜单状态列表'); +insert into sys_dict_type values(3, '系统开关', 'sys_normal_disable', '0', 'admin', sysdate, '', null, '系统开关列表'); +insert into sys_dict_type values(4, '任务状态', 'sys_job_status', '0', 'admin', sysdate, '', null, '任务状态列表'); +insert into sys_dict_type values(5, '任务分组', 'sys_job_group', '0', 'admin', sysdate, '', null, '任务分组列表'); +insert into sys_dict_type values(6, '系统是否', 'sys_yes_no', '0', 'admin', sysdate, '', null, '系统是否列表'); +insert into sys_dict_type values(7, '通知类型', 'sys_notice_type', '0', 'admin', sysdate, '', null, '通知类型列表'); +insert into sys_dict_type values(8, '通知状态', 'sys_notice_status', '0', 'admin', sysdate, '', null, '通知状态列表'); +insert into sys_dict_type values(9, '操作类型', 'sys_oper_type', '0', 'admin', sysdate, '', null, '操作类型列表'); +insert into sys_dict_type values(10, '系统状态', 'sys_common_status', '0', 'admin', sysdate, '', null, '登录状态列表'); -- ---------------------------- --- ʼ-ֵݱ +-- 初始化-字典数据表 -- ---------------------------- -insert into sys_dict_data values(1, 1, '', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', sysdate, '', null, 'Ա'); -insert into sys_dict_data values(2, 2, 'Ů', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', sysdate, '', null, 'ԱŮ'); -insert into sys_dict_data values(3, 3, 'δ֪', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', sysdate, '', null, 'Աδ֪'); -insert into sys_dict_data values(4, 1, 'ʾ', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, 'ʾ˵'); -insert into sys_dict_data values(5, 2, '', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ز˵'); -insert into sys_dict_data values(6, 1, '', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '״̬'); -insert into sys_dict_data values(7, 2, 'ͣ', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ͣ״̬'); -insert into sys_dict_data values(8, 1, '', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '״̬'); -insert into sys_dict_data values(9, 2, 'ͣ', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ͣ״̬'); -insert into sys_dict_data values(10, 1, 'Ĭ', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', sysdate, '', null, 'ĬϷ'); -insert into sys_dict_data values(11, 2, 'ϵͳ', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', sysdate, '', null, 'ϵͳ'); -insert into sys_dict_data values(12, 1, '', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, 'ϵͳĬ'); -insert into sys_dict_data values(13, 2, '', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ϵͳĬϷ'); -insert into sys_dict_data values(14, 1, '֪ͨ', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', sysdate, '', null, '֪ͨ'); -insert into sys_dict_data values(15, 2, '', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', sysdate, '', null, ''); -insert into sys_dict_data values(16, 1, '', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '״̬'); -insert into sys_dict_data values(17, 2, 'ر', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ر״̬'); -insert into sys_dict_data values(18, 1, '', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', sysdate, '', null, ''); -insert into sys_dict_data values(19, 2, '޸', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', sysdate, '', null, '޸IJ'); -insert into sys_dict_data values(20, 3, 'ɾ', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ɾ'); -insert into sys_dict_data values(21, 4, 'Ȩ', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', sysdate, '', null, 'Ȩ'); -insert into sys_dict_data values(22, 5, '', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate, '', null, ''); -insert into sys_dict_data values(23, 6, '', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate, '', null, ''); -insert into sys_dict_data values(24, 7, 'ǿ', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ǿ˲'); -insert into sys_dict_data values(25, 8, 'ɴ', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate, '', null, 'ɲ'); -insert into sys_dict_data values(26, 9, '', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ղ'); -insert into sys_dict_data values(27, 1, 'ɹ', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', sysdate, '', null, '״̬'); -insert into sys_dict_data values(28, 2, 'ʧ', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', sysdate, '', null, 'ͣ״̬'); +insert into sys_dict_data values(1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', sysdate, '', null, '性别男'); +insert into sys_dict_data values(2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', sysdate, '', null, '性别女'); +insert into sys_dict_data values(3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', sysdate, '', null, '性别未知'); +insert into sys_dict_data values(4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '显示菜单'); +insert into sys_dict_data values(5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '隐藏菜单'); +insert into sys_dict_data values(6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '正常状态'); +insert into sys_dict_data values(7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '停用状态'); +insert into sys_dict_data values(8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '正常状态'); +insert into sys_dict_data values(9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '停用状态'); +insert into sys_dict_data values(10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', sysdate, '', null, '默认分组'); +insert into sys_dict_data values(11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', sysdate, '', null, '系统分组'); +insert into sys_dict_data values(12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '系统默认是'); +insert into sys_dict_data values(13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '系统默认否'); +insert into sys_dict_data values(14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', sysdate, '', null, '通知'); +insert into sys_dict_data values(15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', sysdate, '', null, '公告'); +insert into sys_dict_data values(16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', sysdate, '', null, '正常状态'); +insert into sys_dict_data values(17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '关闭状态'); +insert into sys_dict_data values(18, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', sysdate, '', null, '新增操作'); +insert into sys_dict_data values(19, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', sysdate, '', null, '修改操作'); +insert into sys_dict_data values(20, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '删除操作'); +insert into sys_dict_data values(21, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', sysdate, '', null, '授权操作'); +insert into sys_dict_data values(22, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate, '', null, '导出操作'); +insert into sys_dict_data values(23, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate, '', null, '导入操作'); +insert into sys_dict_data values(24, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '强退操作'); +insert into sys_dict_data values(25, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate, '', null, '生成操作'); +insert into sys_dict_data values(26, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '清空操作'); +insert into sys_dict_data values(27, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', sysdate, '', null, '正常状态'); +insert into sys_dict_data values(28, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', sysdate, '', null, '停用状态'); -- ---------------------------- --- ʼ-ñ +-- 初始化-参数配置表 -- ---------------------------- -insert into sys_config values(1, 'ҳ-ĬƤʽ', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', sysdate, '', null, 'ɫ skin-blueɫ skin-greenɫ skin-purpleɫ skin-redɫ skin-yellow' ); -insert into sys_config values(2, 'û-˺ųʼ', 'sys.user.initPassword', '123456', 'Y', 'admin', sysdate, '', null, 'ʼ 123456' ); -insert into sys_config values(3, 'ҳ-', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', sysdate, '', null, 'ɫtheme-darkdzɫtheme-light' ); -insert into sys_config values(4, '˺-֤뿪', 'sys.account.captchaOnOff', 'true', 'Y', 'admin', sysdate, '', null, 'Ƿ¼֤빦ܣtruefalseرգ'); +insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', sysdate, '', null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' ); +insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', sysdate, '', null, '初始化密码 123456' ); +insert into sys_config values(3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', sysdate, '', null, '深色主题theme-dark,浅色主题theme-light' ); +insert into sys_config values(4, '账号自助-验证码开关', 'sys.account.captchaOnOff', 'true', 'Y', 'admin', sysdate, '', null, '是否开启登录验证码功能(true开启,false关闭)'); -- ---------------------------- --- ʼ-Ϣ +-- 初始化-公告信息表数据 -- ---------------------------- -insert into sys_notice values('1', 'ܰѣ2018-07-01 °汾', '2', '°汾', '0', 'admin', sysdate, '', null, 'Ա'); -insert into sys_notice values('2', 'ά֪ͨ2018-07-01 ϵͳ賿ά', '1', 'ά', '0', 'admin', sysdate, '', null, 'Ա'); +insert into sys_notice values('1', '温馨提醒:2018-07-01 新版本发布啦', '2', '新版本内容', '0', 'admin', sysdate, '', null, '管理员'); +insert into sys_notice values('2', '维护通知:2018-07-01 系统凌晨维护', '1', '维护内容', '0', 'admin', sysdate, '', null, '管理员'); commit; diff --git a/doc/微信登录功能测试指南.md b/doc/微信登录功能测试指南.md new file mode 100644 index 0000000..1037ae6 --- /dev/null +++ b/doc/微信登录功能测试指南.md @@ -0,0 +1,75 @@ +# 微信扫码登录功能测试指南 + +## 1. 功能概述 +本系统已集成微信扫码登录功能,用户可以通过微信扫描二维码的方式登录系统,无需输入用户名和密码。 + +## 2. 配置要求 +在测试前,请确保已完成以下配置: + +1. 在`application.yml`中配置了正确的微信公众号信息: + ```yaml + wechat: + app-id: your_wechat_appid + app-secret: your_wechat_app_secret + redirect-uri: http://your-domain.com/examapi/wechat/callback + ``` + +2. 数据库已执行了微信登录字段添加脚本: + - `/doc/微信登录字段添加.sql` + +## 3. 功能测试步骤 + +### 3.1 前端功能测试 +1. 访问系统登录页面 +2. 点击"微信扫码登录"按钮 +3. 观察是否能正常生成二维码 +4. 使用微信扫描二维码 +5. 在微信中确认登录 +6. 观察前端是否能正确跳转到系统主页 + +### 3.2 后端接口测试 +可以通过Postman等工具测试以下接口: + +1. 生成二维码接口: + - URL: `GET /examapi/wechat/qrcode` + - 预期结果:返回二维码信息和登录ID + +2. 检查登录状态接口: + - URL: `GET /examapi/wechat/status?loginId={loginId}` + - 预期结果:返回当前登录状态 + +3. 微信登录接口: + - URL: `POST /examapi/wechat/login?loginId={loginId}` + - 预期结果:登录成功并返回token + +### 3.3 数据库验证 +1. 检查`sys_user`表是否添加了微信相关字段 +2. 检查`wechat_login_status`表是否能正常记录登录状态 +3. 验证用户绑定微信后,`sys_user`表中的微信字段是否正确更新 + +## 4. 常见问题及解决方案 + +### 4.1 二维码无法生成 +- 检查微信配置是否正确 +- 检查网络连接是否正常 +- 查看后端日志是否有错误信息 + +### 4.2 扫码后无法登录 +- 检查微信回调接口是否正常 +- 检查用户是否已正确绑定微信 +- 查看数据库记录是否正常更新 + +### 4.3 登录成功但无法跳转 +- 检查token是否正确返回 +- 检查前端路由配置是否正确 + +## 5. 注意事项 +1. 微信扫码登录功能需要在微信公众号平台配置正确的授权回调域名 +2. 测试时建议使用真实的微信客户端扫描二维码 +3. 二维码有有效期限制,默认为10分钟 +4. 同一个二维码只能使用一次 + +## 6. 安全建议 +1. 建议在生产环境中使用HTTPS协议 +2. 微信AppSecret应妥善保管,不要暴露在前端代码中 +3. 建议定期清理过期的登录状态记录 \ No newline at end of file diff --git a/doc/微信登录字段添加.sql b/doc/微信登录字段添加.sql new file mode 100644 index 0000000..3aba11d --- /dev/null +++ b/doc/微信登录字段添加.sql @@ -0,0 +1,27 @@ +-- 为用户表添加微信登录相关字段 +ALTER TABLE sys_user ADD COLUMN wechat_openid VARCHAR(100) NULL COMMENT '微信openid'; +ALTER TABLE sys_user ADD COLUMN wechat_unionid VARCHAR(100) NULL COMMENT '微信unionid'; +ALTER TABLE sys_user ADD COLUMN wechat_nickname VARCHAR(100) NULL COMMENT '微信昵称'; +ALTER TABLE sys_user ADD COLUMN wechat_avatar VARCHAR(300) NULL COMMENT '微信头像'; +ALTER TABLE sys_user ADD COLUMN bind_wechat CHAR(1) DEFAULT '0' NULL COMMENT '是否绑定微信(0-未绑定 1-已绑定)'; + +-- 为微信相关字段添加索引 +ALTER TABLE sys_user ADD INDEX idx_wechat_openid (wechat_openid); +ALTER TABLE sys_user ADD INDEX idx_wechat_unionid (wechat_unionid); + +-- 创建微信登录状态表,用于扫码登录状态管理 +CREATE TABLE wechat_login_status ( + id VARCHAR(64) NOT NULL COMMENT '登录状态ID', + qr_code_url VARCHAR(500) NULL COMMENT '二维码URL', + status CHAR(1) DEFAULT '0' NOT NULL COMMENT '登录状态(0-待扫码 1-已扫码 2-已确认 3-已过期)', + user_id INT NULL COMMENT '用户ID', + openid VARCHAR(100) NULL COMMENT '微信openid', + expire_time DATETIME NOT NULL COMMENT '过期时间', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', + update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信登录状态表'; + +-- 为微信登录状态表添加索引 +ALTER TABLE wechat_login_status ADD INDEX idx_openid (openid); +ALTER TABLE wechat_login_status ADD INDEX idx_expire_time (expire_time); \ No newline at end of file diff --git a/exam-online-api/hig-application/pom.xml b/exam-online-api/hig-application/pom.xml index 4e77134..304c777 100644 --- a/exam-online-api/hig-application/pom.xml +++ b/exam-online-api/hig-application/pom.xml @@ -61,6 +61,11 @@ gson ${gson.version} + + cn.hutool + hutool-all + 5.8.25 + com.github.ulisesbocchio jasypt-spring-boot-starter diff --git a/exam-online-api/hig-application/src/main/java/com/hig/exam/controller/ExamTaskManagerController.java b/exam-online-api/hig-application/src/main/java/com/hig/exam/controller/ExamTaskManagerController.java index fdbaa06..2789fd1 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/exam/controller/ExamTaskManagerController.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/exam/controller/ExamTaskManagerController.java @@ -45,7 +45,7 @@ import com.ruoyi.common.core.page.TableDataInfo; @RequestMapping("/exam/examtask") public class ExamTaskManagerController extends BaseController { - @Value("${cms.exam.photo-path}") + @Value("${cms.exam.photo-path:/photo/exam}") private String photopath; @Autowired diff --git a/exam-online-api/hig-application/src/main/java/com/hig/exam/domain/ExamTaskManager.java b/exam-online-api/hig-application/src/main/java/com/hig/exam/domain/ExamTaskManager.java index aca7351..4749a89 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/exam/domain/ExamTaskManager.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/exam/domain/ExamTaskManager.java @@ -49,6 +49,27 @@ public class ExamTaskManager extends BaseEntity @Excel(name = "考试题库文字") private String examBankText; + @Excel(name = "考试类型1 固定时间考试 2固定时间段考试") + private Integer examType; + + public Integer getExamType() { + return examType; + } + + public void setExamType(Integer examType) { + this.examType = examType; + } + + public Integer getExamTimes() { + return examTimes; + } + + public void setExamTimes(Integer examTimes) { + this.examTimes = examTimes; + } + + @Excel(name = "考试次数") + private Integer examTimes; /** 图片链接 */ @Excel(name = "图片链接") diff --git a/exam-online-api/hig-application/src/main/java/com/hig/exam/mapper/ExamTaskManagerMapper.java b/exam-online-api/hig-application/src/main/java/com/hig/exam/mapper/ExamTaskManagerMapper.java index a69a4a7..476fbaf 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/exam/mapper/ExamTaskManagerMapper.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/exam/mapper/ExamTaskManagerMapper.java @@ -2,6 +2,7 @@ package com.hig.exam.mapper; import java.util.List; import com.hig.exam.domain.ExamTaskManager; +import org.apache.ibatis.annotations.Param; /** * 创建考试Mapper接口 @@ -59,4 +60,10 @@ public interface ExamTaskManagerMapper * @return 结果 */ public int deleteExamTaskManagerByIds(String[] examCodes); + + public List selectCurrentExam(@Param("userCode") String userCode); + + public List countExamScore(@Param("examCodeList") List examCodeList); + + public List groupExamTypeCount(@Param("examCodeList") List examCodeList); } diff --git a/exam-online-api/hig-application/src/main/java/com/hig/exam/service/IExamTaskManagerService.java b/exam-online-api/hig-application/src/main/java/com/hig/exam/service/IExamTaskManagerService.java index 99210ef..bda4e0f 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/exam/service/IExamTaskManagerService.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/exam/service/IExamTaskManagerService.java @@ -2,6 +2,7 @@ package com.hig.exam.service; import java.util.List; import com.hig.exam.domain.ExamTaskManager; +import com.hig.onlineexam.domain.dto.ExamTitleData; /** * 创建考试Service接口 @@ -58,4 +59,11 @@ public interface IExamTaskManagerService * @return 结果 */ public int deleteExamTaskManagerById(String examCode); + + /** + * 获取当前用户可以参加的考试 + * @param userCode + * @return + */ + public List selectCurrentExam(String userCode); } diff --git a/exam-online-api/hig-application/src/main/java/com/hig/exam/service/impl/ExamTaskManagerServiceImpl.java b/exam-online-api/hig-application/src/main/java/com/hig/exam/service/impl/ExamTaskManagerServiceImpl.java index 6f137b2..4421563 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/exam/service/impl/ExamTaskManagerServiceImpl.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/exam/service/impl/ExamTaskManagerServiceImpl.java @@ -1,6 +1,14 @@ package com.hig.exam.service.impl; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.bean.BeanUtil; +import com.hig.onlineexam.domain.dto.ExamTitleData; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -111,4 +119,66 @@ public class ExamTaskManagerServiceImpl implements IExamTaskManagerService { return examTaskManagerMapper.deleteExamTaskManagerById(examCode); } + + /** + * 获取当前用户可以参加的考试 + * @param userCode + * @return + */ + @Override + public List selectCurrentExam(String userCode) { + //先根据当前时间和startDate和endDate过滤一下 + List list=examTaskManagerMapper.selectCurrentExam(userCode); + List retList=new ArrayList<>(); + List examCodeList=new ArrayList<>(); + for(ExamTaskManager examTaskManager:list){ + if(examTaskManager.getExamType()==1){ + if(!checkCanRun(examTaskManager)){ + continue; + } + }else{ + + } + ExamTitleData ed=new ExamTitleData(); + examCodeList.add(examTaskManager.getExamCode()); + // 使用 Hutool 的 BeanUtil.copyProperties 方法复制属性 + BeanUtil.copyProperties(examTaskManager, ed); + retList.add(ed); + } + List listScore=examTaskManagerMapper.countExamScore(examCodeList); + List listTypeCount=examTaskManagerMapper.groupExamTypeCount(examCodeList); + for(ExamTitleData item :retList){ + List tmp= listScore.stream().filter(d->d.getExamCode().equals(item.getExamCode())).collect(Collectors.toList()); + if(tmp.size()>0){ + item.setQuestionsScore(tmp.get(0).getExamType()); + } + tmp=listTypeCount.stream().filter(d->d.getExamCode().equals(item.getExamCode()) && d.getExamId()==1).collect(Collectors.toList()); + if(tmp.size()>0){ + item.setJudgeNumber(tmp.get(0).getExamType()); + } + tmp=listTypeCount.stream().filter(d->d.getExamCode().equals(item.getExamCode()) && d.getExamId()==2).collect(Collectors.toList()); + if(tmp.size()>0){ + item.setRadioNumber(tmp.get(0).getExamType()); + } + tmp=listTypeCount.stream().filter(d->d.getExamCode().equals(item.getExamCode()) && d.getExamId()==3).collect(Collectors.toList()); + if(tmp.size()>0){ + item.setChoiceNumber(tmp.get(0).getExamType()); + } + } + return retList; + } + + private boolean checkCanRun(ExamTaskManager examTaskManager) { + //开始时间+考试时长 小于当前时间表示考试已发结束,大于表示还可能继续考试 + DateTime dtStart=new DateTime( examTaskManager.getStartTime()); + String sp=examTaskManager.getExamDuration(); + String[] timeParts = sp.split(":"); + int hours = Integer.parseInt(timeParts[0]); + int minutes = Integer.parseInt(timeParts[1]); + // 计算结束时间 + DateTime endDateTime = dtStart.offset(DateField.HOUR_OF_DAY, hours) + .offset(DateField.MINUTE, minutes); + return endDateTime.isAfter(DateUtils.getNowDate()); + + } } diff --git a/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/controller/ExamTitleController.java b/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/controller/ExamTitleController.java index 41ef49e..c50f310 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/controller/ExamTitleController.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/controller/ExamTitleController.java @@ -2,6 +2,10 @@ package com.hig.onlineexam.controller; import java.util.List; +import com.hig.exam.domain.ExamTaskManager; +import com.hig.exam.service.IExamTaskManagerService; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -15,14 +19,21 @@ import com.ruoyi.common.core.domain.AjaxResult; @RestController @RequestMapping("/onlineexam/examtitle") public class ExamTitleController { - + @Autowired IExamTitleDataService examTitleDataService; - @GetMapping(value = "/{userCode}") - public AjaxResult selectCurrentExam(@PathVariable("userCode") String userCode) + @Autowired + IExamTaskManagerService examTaskManagerService; + + @GetMapping(value = "/selectCurrentExam") + public AjaxResult selectCurrentExam() { - ExamTitleData examTitleData = examTitleDataService.selectCurrentExam(userCode); - return AjaxResult.success(examTitleData); + + LoginUser user=SecurityUtils.getLoginUser(); + List list= examTaskManagerService.selectCurrentExam(user.getUser().getUserCode()); + //ExamTitleData examTitleData = examTitleDataService.selectCurrentExam(user.getUser().getUserCode()); + //return AjaxResult.success(examTitleData); + return AjaxResult.success(list); } } diff --git a/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/ExamTaskAnswer.java b/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/ExamTaskAnswer.java index c12be33..fd306f6 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/ExamTaskAnswer.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/ExamTaskAnswer.java @@ -27,6 +27,17 @@ public class ExamTaskAnswer extends BaseEntity @Excel(name = "题目代码") private String questionsCode; + + private String examTimes; + + public String getExamTimes() { + return examTimes; + } + + public void setExamTimes(String examTimes) { + this.examTimes = examTimes; + } + /** 题号 */ @Excel(name = "题号") private Long questionsNumber; diff --git a/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/dto/ExamTitleData.java b/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/dto/ExamTitleData.java index d28f1bc..b1ba268 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/dto/ExamTitleData.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/onlineexam/domain/dto/ExamTitleData.java @@ -16,6 +16,8 @@ public class ExamTitleData { /** 考试名称 */ private String examName; + private Integer examType; + private Integer examTimes; /** 考试说明 */ private String examDescribe; diff --git a/exam-online-api/hig-application/src/main/java/com/hig/questions/controller/ExamQuestionsBankController.java b/exam-online-api/hig-application/src/main/java/com/hig/questions/controller/ExamQuestionsBankController.java index fced37a..7c96d3d 100644 --- a/exam-online-api/hig-application/src/main/java/com/hig/questions/controller/ExamQuestionsBankController.java +++ b/exam-online-api/hig-application/src/main/java/com/hig/questions/controller/ExamQuestionsBankController.java @@ -46,7 +46,7 @@ public class ExamQuestionsBankController extends BaseController { private static final Logger log = LoggerFactory.getLogger(ExamQuestionsBankController.class); - @Value("${cms.exam.photo-path}") + @Value("${cms.exam.photo-path:/photo/exam}") private String photopath; @Autowired diff --git a/exam-online-api/hig-application/src/main/resources/mapper/exam/ExamTaskManagerMapper.xml b/exam-online-api/hig-application/src/main/resources/mapper/exam/ExamTaskManagerMapper.xml index f591a01..b99dcf7 100644 --- a/exam-online-api/hig-application/src/main/resources/mapper/exam/ExamTaskManagerMapper.xml +++ b/exam-online-api/hig-application/src/main/resources/mapper/exam/ExamTaskManagerMapper.xml @@ -12,6 +12,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -24,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select exam_id, exam_code, exam_name, exam_describe, build_type, force_done, exam_bank, exam_bank_text, picture_url, start_time, end_time, exam_duration, status, create_by, create_dept, create_time from exam_task_manager + select exam_id, exam_code, exam_name,exam_type,exam_times, exam_describe, build_type, force_done, exam_bank, exam_bank_text, picture_url, start_time, end_time, exam_duration, status, create_by, create_dept, create_time from exam_task_manager + + where status=0 + AND exam_code in(select exam_code from exam_task_person where user_code=#{userCode}) + and start_time <=now() and end_time > now() + + + + + \ No newline at end of file diff --git a/exam-online-api/hig-application/src/main/resources/mapper/onlineexam/ExamTaskAnswerMapper.xml b/exam-online-api/hig-application/src/main/resources/mapper/onlineexam/ExamTaskAnswerMapper.xml index f795993..620c548 100644 --- a/exam-online-api/hig-application/src/main/resources/mapper/onlineexam/ExamTaskAnswerMapper.xml +++ b/exam-online-api/hig-application/src/main/resources/mapper/onlineexam/ExamTaskAnswerMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -16,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select exam_code, user_code, questions_code, questions_number, questions_type, questions_answer, is_mark, is_current from exam_task_answer + select exam_code, user_code,exam_times, questions_code, questions_number, questions_type, questions_answer, is_mark, is_current from exam_task_answer + + + + update sys_user + + wechat_openid = #{wechatOpenid}, + wechat_unionid = #{wechatUnionid}, + wechat_nickname = #{wechatNickname}, + wechat_avatar = #{wechatAvatar}, + bind_wechat = #{bindWechat}, + update_time = now() + + where user_id = #{userId} + + + + + and qr_code_url = #{qrCodeUrl} + and status = #{status} + and user_id = #{userId} + and openid = #{openid} + and expire_time = #{expireTime} + + + + + + + + + insert into wechat_login_status + + id, + qr_code_url, + status, + user_id, + openid, + expire_time, + create_time, + update_time, + + + #{id}, + #{qrCodeUrl}, + #{status}, + #{userId}, + #{openid}, + #{expireTime}, + #{createTime}, + #{updateTime}, + + + + + update wechat_login_status + + qr_code_url = #{qrCodeUrl}, + status = #{status}, + user_id = #{userId}, + openid = #{openid}, + expire_time = #{expireTime}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from wechat_login_status where id = #{id} + + + + delete from wechat_login_status where id in + + #{id} + + + + + delete from wechat_login_status where expire_time < now() + + + \ No newline at end of file diff --git a/exam_online_ui/package.json b/exam_online_ui/package.json index 884a4ce..60bf6fb 100644 --- a/exam_online_ui/package.json +++ b/exam_online_ui/package.json @@ -40,6 +40,7 @@ "axios": "^1.7.9", "clipboard": "^2.0.11", "core-js": "^3.39.0", + "dayjs": "^1.11.13", "echarts": "4.9.0", "element-ui": "^2.15.13", "file-saver": "^2.0.5", @@ -70,7 +71,6 @@ "babel-eslint": "^10.1.0", "chalk": "^4.1.2", "connect": "^3.7.0", - "vue-ueditor-wrap": "^2.5.6", "eslint": "^7.32.0", "eslint-plugin-vue": "^7.20.0", "lint-staged": "^10.5.4", @@ -79,7 +79,8 @@ "sass-loader": "^10.5.2", "script-ext-html-webpack-plugin": "^2.1.5", "svg-sprite-loader": "^5.2.1", - "vue-template-compiler": "^2.7.16" + "vue-template-compiler": "^2.7.16", + "vue-ueditor-wrap": "^2.5.6" }, "engines": { "node": ">=14.0.0", @@ -89,5 +90,8 @@ "browserslist": [ "> 1%", "last 2 versions" - ] + ], + "resolutions": { + "@achrinza/node-ipc": "^10.1.11" + } } diff --git a/exam_online_ui/src/api/onlineexam/examtitle.js b/exam_online_ui/src/api/onlineexam/examtitle.js index 1780b8a..a16e156 100644 --- a/exam_online_ui/src/api/onlineexam/examtitle.js +++ b/exam_online_ui/src/api/onlineexam/examtitle.js @@ -1,9 +1,9 @@ import request from '@/utils/request' // 取得考试的标题信息 -export function getTitle(userCode) { +export function getTitle() { return request({ - url: '/onlineexam/examtitle/' + userCode, + url: '/onlineexam/examtitle/selectCurrentExam', method: 'get' }) } diff --git a/exam_online_ui/src/api/wechat.js b/exam_online_ui/src/api/wechat.js new file mode 100644 index 0000000..d6c3cd0 --- /dev/null +++ b/exam_online_ui/src/api/wechat.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +// 生成微信登录二维码 +export function generateWechatQrCode() { + return request({ + url: '/wechat/qrcode', + method: 'get' + }) +} + +// 检查微信登录状态 +export function checkWechatLoginStatus(loginId) { + return request({ + url: '/wechat/status', + method: 'get', + params: { loginId } + }) +} + +// 微信登录 +export function wechatLogin(loginId) { + return request({ + url: '/wechat/login', + method: 'post', + params: { loginId } + }) +} \ No newline at end of file diff --git a/exam_online_ui/src/main.js b/exam_online_ui/src/main.js index 8a2c1e4..04f3a6d 100644 --- a/exam_online_ui/src/main.js +++ b/exam_online_ui/src/main.js @@ -33,6 +33,7 @@ import VueMeta from 'vue-meta' // 大文件上传 import uploader from 'vue-simple-uploader' +import dayjs from 'dayjs' // 全局方法挂载 Vue.prototype.getDicts = getDicts Vue.prototype.getConfigKey = getConfigKey @@ -43,6 +44,7 @@ Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree +Vue.prototype.$dt=dayjs Vue.prototype.msgSuccess = function (msg) { this.$message({ showClose: true, message: msg, type: "success" }); diff --git a/exam_online_ui/src/views/exam/examtask/contentEdit.vue b/exam_online_ui/src/views/exam/examtask/contentEdit.vue index 87fcecf..9f7f12b 100644 --- a/exam_online_ui/src/views/exam/examtask/contentEdit.vue +++ b/exam_online_ui/src/views/exam/examtask/contentEdit.vue @@ -1,22 +1,11 @@ @@ -149,14 +126,14 @@ import { dateToString, dateTextToDateString, dateRemoveSeconds, dateTextToDateti export default { components: { examSelect, - CropperImage - }, - data () { + CropperImage + }, + data() { return { choiceVisible: true, // 状态字典 statusOptions: [], - ui_style : null, + ui_style: null, hosturl: '', // 表单参数 form: {}, @@ -179,17 +156,18 @@ export default { ] }, buildTypeOptions: [ - {dictValue: 1, dictLabel: "人工组卷"}, - {dictValue: 2, dictLabel: "随机抽题"}, - {dictValue: 3, dictLabel: "考时随机组卷"} + { dictValue: 1, dictLabel: "人工组卷" }, + { dictValue: 2, dictLabel: "随机抽题" }, + { dictValue: 3, dictLabel: "考时随机组卷" } ], choiceList: null, forceDoneOptions: [ - {dictValue: 0, dictLabel: "强制抽卷"}, - {dictValue: 1, dictLabel: "不强制"} + { dictValue: 0, dictLabel: "强制抽卷" }, + { dictValue: 1, dictLabel: "不强制" } ], imageUrl: null, startDate: null, + endDate:null, url: '', upLoadData: { guidCode: '' @@ -199,68 +177,88 @@ export default { isUpdate: false } }, - created () { + watch: { + // 监听开始时间和结束时间的变化 + startDate(newVal, oldVal) { + if (this.form.examType == 2 && this.endDate) { + this.validateTimeRange(); + } + }, + endDate(newVal, oldVal) { + if (this.form.examType == 2 && this.startDate) { + this.validateTimeRange(); + } + }, + 'form.examType'(newVal, oldVal) { + if (newVal == 2 && this.startDate && this.endDate) { + this.validateTimeRange(); + } + } + }, + created() { const s_width = document.body.clientWidth if (s_width < 1000) { - this.ui_style = 'margin-left: 2%; margin-right: 2%;' + this.ui_style = 'margin-left: 2%; margin-right: 2%;' } else if (s_width >= 1000 && s_width < 1366) { - this.ui_style = 'margin-left: 8%; margin-right: 8%;' + this.ui_style = 'margin-left: 8%; margin-right: 8%;' } else if (s_width >= 1366 && s_width < 1566) { - this.ui_style = 'margin-left: 12%; margin-right: 12%;' + this.ui_style = 'margin-left: 12%; margin-right: 12%;' } else if (s_width >= 1566 && s_width < 1766) { - this.ui_style = 'margin-left: 18%; margin-right: 18%;' + this.ui_style = 'margin-left: 18%; margin-right: 18%;' } else { - this.ui_style = 'margin-left: 24%; margin-right: 24%;' + this.ui_style = 'margin-left: 24%; margin-right: 24%;' } this.hosturl = baseApiUrl this.getDicts("sys_normal_disable").then(response => { this.statusOptions = response.data; - }); + }); }, methods: { - init_data (contentdata, choicelist) { + init_data(contentdata, choicelist) { this.isUpdate = false - if (contentdata.examCode !== undefined && contentdata.examCode !== null ) { - this.form = contentdata + if (contentdata.examCode !== undefined && contentdata.examCode !== null) { + contentdata.examType=contentdata.examType||1; + contentdata.examTimes=contentdata.examTimes||1; + this.form = contentdata if (this.form.pictureUrl !== undefined && this.form.pictureUrl !== null) { - this.imageUrl = this.hosturl + this.form.pictureUrl + this.imageUrl = this.hosturl + this.form.pictureUrl } } if (choicelist !== undefined && choicelist !== null) { this.choiceList = choicelist - } + } }, - update_data (row) { + update_data(row) { this.isUpdate = true row.forceDone = Number(row.forceDone) row.buildType = Number(row.buildType) - + this.form = row if (this.form.pictureUrl !== undefined && this.form.pictureUrl !== null) { - this.imageUrl = this.hosturl + this.form.pictureUrl + this.imageUrl = this.hosturl + this.form.pictureUrl } this.startDate = row.startTime listQuestionsbankBycode(row.examBank).then(response => { this.choiceList = response.data }); }, - doChoice () { + doChoice() { this.choiceVisible = false this.$store.commit("SET_SHOWTITLE", false) this.$nextTick(() => { - this.$refs.selectRef.init_data(this.choiceList) + this.$refs.selectRef.init_data(this.choiceList) }) }, - selectDoneHandle (saveList) { + selectDoneHandle(saveList) { this.$store.commit("SET_SHOWTITLE", true) this.choiceList = saveList this.choiceVisible = true - + let nametext = '' let codetext = '' if (this.choiceList !== null && this.choiceList.length > 0) { - for (let i = 0; i < this.choiceList.length; i ++) { + for (let i = 0; i < this.choiceList.length; i++) { if (i < this.choiceList.length - 1) { nametext += this.choiceList[i].bankName + ',' codetext += this.choiceList[i].bankCode + ',' @@ -273,7 +271,7 @@ export default { this.form.examBankText = nametext this.form.examBank = codetext }, - onTimeChange () { + onTimeChange() { if (this.startDate === undefined || this.startDate === null) { this.form.examDuration = undefined this.$message.error('请先输入考试开始时间') @@ -281,15 +279,20 @@ export default { } this.set_time() }, - set_time () { + set_time() { let timeitem = this.form.examDuration.split(":") const addhour = Number(timeitem[0]) * 60 * 60 * 1000 const addminute = Number(timeitem[1]) * 60 * 1000 const datestr = dateRemoveSeconds(new Date(this.startDate)) this.form.startTime = Number(new Date(datestr).getTime()) - this.form.endTime = this.form.startTime + addhour + addminute + if(this.form.examType==1){ + this.form.endTime = this.form.startTime + addhour + addminute + }else{ + const dateEnd=dateRemoveSeconds(new Date(this.endDate)) + this.form.endTime = Number(new Date(dateEnd).getTime()) + } }, - getData () { + getData() { if (this.onCheck()) { const saveData = { choiceList: this.choiceList, @@ -300,29 +303,36 @@ export default { return null } }, - saveData () { + saveData() { if (this.onCheck()) { - this.set_time () + // 在设置时间之前再次验证时间范围 + if (this.form.examType == 2) { + if (!this.validateTimeRange()) { + return false; + } + } + + this.set_time() updateExamtask(this.form).then(response => { this.msgSuccess("修改成功"); return true - }); + }); } else { return false } }, - onClose () { + onClose() { this.$emit('refreshContent') - }, - onSaveOrBack () { + }, + onSaveOrBack() { if (this.saveData()) { this.$emit('refreshContent') } - }, - onSave () { + }, + onSave() { this.saveData() }, - onCheck () { + onCheck() { if (this.form.examName === undefined || this.form.examName === null) { this.$message.error('需要输入考试名称') return false @@ -341,36 +351,65 @@ export default { if (this.form.pictureUrl === undefined || this.form.pictureUrl === null) { this.$message.error('需要先加入标题图片') return false - } + } if (this.startDate === undefined || this.startDate === null) { this.$message.error('需要输入考试开始时间') return false } + // 添加时间验证:开始时间不能晚于结束时间,结束时间不能早于开始时间 + if (this.form.examType == 2) { + if (this.endDate === undefined || this.endDate === null) { + this.$message.error('需要输入考试结束时间') + return false + } + + const startDateTime = new Date(this.startDate).getTime(); + const endDateTime = new Date(this.endDate).getTime(); + + if (startDateTime >= endDateTime) { + this.$message.error('开始时间不能晚于或等于结束时间') + return false + } + } + if (this.form.examDuration === undefined || this.form.examDuration === null) { this.$message.error('需要输入考试时长') return false } - + if (this.form.startTime === undefined || this.form.startTime === null) { this.set_time() } return true }, - beforeAvatarUpload (file) { + beforeAvatarUpload(file) { this.cropperModel = true this.cropperName = name this.$nextTick(() => { this.$refs.child.selectImg(this.form.examCode, file) - }) + }) }, // 图片上传成功后 - handleUploadSuccess (data) { - this.imageUrl = this.hosturl + data.photoUrl + handleUploadSuccess(data) { + this.imageUrl = this.hosturl + data.photoUrl this.form.pictureUrl = data.photoUrl this.cropperModel = false + }, + // 验证时间范围 + validateTimeRange() { + if (this.startDate && this.endDate) { + const startDateTime = new Date(this.startDate).getTime(); + const endDateTime = new Date(this.endDate).getTime(); + + if (startDateTime >= endDateTime) { + this.$message.error('开始时间不能晚于或等于结束时间'); + return false; + } + } + return true; } } }; @@ -378,18 +417,18 @@ export default { - - diff --git a/exam_online_ui/src/views/login.vue b/exam_online_ui/src/views/login.vue index 7191512..7da749f 100644 --- a/exam_online_ui/src/views/login.vue +++ b/exam_online_ui/src/views/login.vue @@ -45,16 +45,43 @@ 登 录 中... + + + 微信扫码登录 + + + + + +
+ 微信二维码 +
二维码加载中...
+

请使用微信扫描二维码登录

+
+ + 取 消 + +
@@ -245,15 +258,15 @@ export default { padding: 8px 0px 12px 0px; width: 100%; color: #d1d5da; - font-size: 5rem; + font-size: 5rem; line-height: 26rem; - font-weight:bold; + font-weight: bold; text-align: center; height: 100%; } .content_col { - width: 100%; + width: 100%; } .title_panel { @@ -279,13 +292,12 @@ export default { -webkit-box-orient: vertical; padding-left: 0.8rem; width: 100% - } .title-name { - font-size: 1.8rem; + font-size: 1.8rem; line-height: 6rem; - font-weight:bold; + font-weight: bold; color: #1890ff; } @@ -295,8 +307,8 @@ export default { .title-describe { display: flex; - justify-content: space-between; - padding-top: 1rem; + justify-content: space-between; + padding-top: 1rem; } .create-time { @@ -308,16 +320,16 @@ export default { .date-panel { display: flex; - justify-content: space-between; - padding-top: 1rem; - margin: 0.6rem 0.8rem 0 0.8rem; + justify-content: space-between; + padding-top: 1rem; + margin: 0.6rem 0.8rem 0 0.8rem; } .score-panel { display: flex; - justify-content: space-between; - padding-top: 1rem; - margin: 1rem 0.8rem 0 0.8rem; + justify-content: space-between; + padding-top: 1rem; + margin: 1rem 0.8rem 0 0.8rem; } @@ -327,8 +339,8 @@ export default { } .readme-title { - font-size: 1.1rem; - font-weight:bold; + font-size: 1.1rem; + font-weight: bold; color: #1890ff; } @@ -345,7 +357,7 @@ export default { .readme-text { color: #8c939d; -} +} .button-area { width: 100%; @@ -357,7 +369,7 @@ export default { } .tips-text { - font-size: 15px; + font-size: 15px; margin-right: 0.5rem; color: #303133; } diff --git a/exam_online_ui/src/views/onlineexam/examstart/startAnswer.vue b/exam_online_ui/src/views/onlineexam/examstart/startAnswer.vue index 9596ce9..0627d0d 100644 --- a/exam_online_ui/src/views/onlineexam/examstart/startAnswer.vue +++ b/exam_online_ui/src/views/onlineexam/examstart/startAnswer.vue @@ -361,6 +361,7 @@ export default { const saveQuestion = { examCode: questionData.examCode, + examTimes:this.examData.examTimes, userCode: this.$store.state.user.userCode, questionsCode: questionData.questionsCode, questionsNumber: questionData.questionsNumber,