Bläddra i källkod

新增员工第一次登陆修改密码 && 员工工号生成规则修改

wucl 2 år sedan
förälder
incheckning
391de57917

+ 2 - 2
biz-base/src/main/java/com/dayou/controller/UserController.java

@@ -68,7 +68,7 @@ public class UserController extends BaseController {
      * 基础用户新增
      */
     @PostMapping("")
-    public RestResponse<Boolean> save(@RequestBody UserVO user) {
+    public RestResponse<Boolean> save(@RequestBody @Valid UserVO user) {
         Boolean ret = userService.xSave(user);
         return RestResponse.data(ret);
     }
@@ -77,7 +77,7 @@ public class UserController extends BaseController {
      * 基础用户更新
      */
     @PutMapping("")
-    public RestResponse<Boolean> update(@RequestBody UserVO user) {
+    public RestResponse<Boolean> update(@RequestBody @Valid UserVO user) {
         Boolean ret = userService.xUpdate(user);
         return RestResponse.data(ret);
     }

+ 5 - 0
domain/src/main/java/com/dayou/dto/UserBaseDetailDTO.java

@@ -71,4 +71,9 @@ public class UserBaseDetailDTO {
      * 用户缓存信息
      */
     private LoginCacheUserBO loginCacheUserBO;
+
+    /**
+     * 密码状态
+     */
+    private Boolean passwordState;
 }

+ 8 - 0
domain/src/main/java/com/dayou/entity/User.java

@@ -148,6 +148,7 @@ public class User extends BaseEntity {
     @ImportCell
     @ExportCell(columnName = "入职日期")
     @TableField(fill = FieldFill.UPDATE)
+    @AbcValidate(required = true,message = "入职日期必填", fun = Check.NotNull)
     private LocalDate hireDate;
 
     /**
@@ -156,4 +157,11 @@ public class User extends BaseEntity {
     @ImportCell
     @ExportCell(columnName = "备注")
     private String remark;
+
+    /**
+     * 初始密码状态
+     */
+    @ImportCell
+    @ExportCell(columnName = "初始密码状态")
+    private Boolean passwordState;
 }

+ 1 - 1
readme.md

@@ -11,7 +11,7 @@ MBS(Main Business system) Web应用系统采用前后端分离开发模式
 
 > 系统登录
 
-1. 登录方式为员工工号与密码组合方式登录,员工工号在管理员创建员工时系统自动生成。生成规则为:**公司前缀(DY)+三位随机数+身份证号码后四位**
+1. 登录方式为员工工号与密码组合方式登录,员工工号在管理员创建员工时系统自动生成。生成规则为:**公司前缀+入职年份+身份证号码后三位**
 2. 所有员工初始化密码为:**12345678** 员工登录后需自己修改自定义密码,若员工密码忘记需向系统管理员申请初始化密码。
 3. 系统所有页面需在用户登录后访问,登录后令牌有效期为一小时,若用户一小时之内无任何页面操作。系统将会提示登录过期,跳转页面重新让用户登录。
 

+ 1 - 0
service/src/main/java/com/dayou/processor/AppBootProcessor.java

@@ -107,6 +107,7 @@ public class AppBootProcessor implements BeanPostProcessor, CommandLineRunner {
         user.setPassword(DigestUtils.getMD5String(ADMIN_PASSWORD));
         user.setUserType("正式员工");
         user.setSex(SexEnum.MAN.getSex());
+        user.setPasswordState(Boolean.FALSE);
         userService.saveOrUpdateById(user);
         //为超级管理员分配超级管理员岗位
         UserPost userPost = new UserPost();

+ 11 - 4
service/src/main/java/com/dayou/service/impl/UserServiceImpl.java

@@ -348,8 +348,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
 
     @Override
     public Boolean xSave(UserVO user) {
-        //生成员工工号,生成规则:公司前缀+三位随机数+身份证号码后四位
-        user.setStaffNo(STAFF_NO_PREFIX + RandomUtil.randomInt(100,1000) + user.getIdNo().substring(14,18));
+        //生成员工工号,生成规则:公司前缀+入职年份+身份证号码后三位
+        int year = user.getHireDate().getYear();
+        user.setStaffNo(STAFF_NO_PREFIX + year + user.getIdNo().substring(15,18));
         user.setPassword(DigestUtils.getMD5String(DEFAULT_PASSWORD));
         this.save(user);
         List<IdNameVO> userPosts = user.getUserPosts();
@@ -364,7 +365,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
 
     @Override
     public Boolean restPassword(Long id) {
-        return this.update(new LambdaUpdateWrapper<User>().set(User::getPassword,DigestUtils.getMD5String(DEFAULT_PASSWORD)).eq(BaseEntity::getId,id));
+        return this.update(new LambdaUpdateWrapper<User>()
+                .set(User::getPassword,DigestUtils.getMD5String(DEFAULT_PASSWORD))
+                .set(User::getPasswordState,Boolean.TRUE)
+                .eq(BaseEntity::getId,id));
     }
 
     @Override
@@ -378,7 +382,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             ErrorCode.throwBusinessException(ErrorCode.PASSWORD_ERROR);
         }
 
-        boolean update = this.update(new LambdaUpdateWrapper<User>().set(User::getPassword, passwordDTO.getCurrentPassword()).eq(BaseEntity::getId, user.getId()));
+        boolean update = this.update(new LambdaUpdateWrapper<User>()
+                .set(User::getPassword, passwordDTO.getCurrentPassword())
+                        .set(User::getPasswordState,Boolean.FALSE)
+                .eq(BaseEntity::getId, user.getId()));
         return update;
     }
 }

+ 1 - 0
sql/20221229.sql

@@ -0,0 +1 @@
+alter table user add column password_state bit(1) not null default 1 comment '初始密码状态';

+ 303 - 0
sql/init.sql

@@ -0,0 +1,303 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : localhost
+ Source Server Type    : MySQL
+ Source Server Version : 50717
+ Source Host           : localhost:3306
+ Source Schema         : item-management
+
+ Target Server Type    : MySQL
+ Target Server Version : 50717
+ File Encoding         : 65001
+
+ Date: 27/12/2022 10:14:58
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for department
+-- ----------------------------
+DROP TABLE IF EXISTS `department`;
+CREATE TABLE `department`  (
+  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `parent_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '父部门id',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门名称',
+  `leader_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '负责人id',
+  `phone` varchar(31) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系电话',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for dict_data
+-- ----------------------------
+DROP TABLE IF EXISTS `dict_data`;
+CREATE TABLE `dict_data`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+  `dict_type_id` bigint(20) NULL DEFAULT NULL COMMENT '字段类型id',
+  `dict_sort` int(4) NULL DEFAULT 0 COMMENT '字典排序',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典值',
+  `remark` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `enabled` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可用:1:是 0:否',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据' ROW_FORMAT = COMPACT;
+
+-- ----------------------------
+-- Table structure for dict_type
+-- ----------------------------
+DROP TABLE IF EXISTS `dict_type`;
+CREATE TABLE `dict_type`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典类型名称',
+  `dict_type` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典类型',
+  `code` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典编号',
+  `remark` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典描述',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk`(`code`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型' ROW_FORMAT = COMPACT;
+
+-- ----------------------------
+-- Table structure for global_config
+-- ----------------------------
+DROP TABLE IF EXISTS `global_config`;
+CREATE TABLE `global_config`  (
+  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `key` varchar(31) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '键',
+  `field` varchar(31) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '值',
+  `description` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk`(`key`, `field`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '全局配置' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for item
+-- ----------------------------
+DROP TABLE IF EXISTS `item`;
+CREATE TABLE `item`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `business_no` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '事业部流水号',
+  `oa_no` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '公司OA流水号',
+  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '项目名称',
+  `business_source` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '业务来源',
+  `client_unit` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '委托单位',
+  `client_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '委托人',
+  `mobile` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '联系方式',
+  `client_manager` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '客户经理',
+  `skiller` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '技术负责人',
+  `sign_date` date NULL DEFAULT NULL COMMENT '合同签订时间',
+  `payment_method` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '合同支付方式',
+  `amount` decimal(16, 0) NULL DEFAULT NULL COMMENT '合同金额',
+  `state` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '状态',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '项目信息表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for item_stage
+-- ----------------------------
+DROP TABLE IF EXISTS `item_stage`;
+CREATE TABLE `item_stage`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `item_id` bigint(20) NOT NULL COMMENT '项目id',
+  `header_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '阶段头id',
+  `footer_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '阶段尾id',
+  `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '阶段名称',
+  `target` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '阶段目标',
+  `start_date` datetime(0) NULL DEFAULT NULL COMMENT '开始时间',
+  `end_date` datetime(0) NULL DEFAULT NULL COMMENT '结束时间',
+  `dutyer_id` bigint(20) NULL DEFAULT NULL COMMENT '阶段负责人id(userid)',
+  `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '备注',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 73 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '项目阶段表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for item_user
+-- ----------------------------
+DROP TABLE IF EXISTS `item_user`;
+CREATE TABLE `item_user`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `item_id` bigint(20) NULL DEFAULT NULL COMMENT '项目id',
+  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '项目人员表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for item_user_log
+-- ----------------------------
+DROP TABLE IF EXISTS `item_user_log`;
+CREATE TABLE `item_user_log`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `item_id` bigint(20) NOT NULL COMMENT '项目id',
+  `user_id` bigint(20) NOT NULL COMMENT '用户id',
+  `log_date` date NOT NULL COMMENT '日志日期',
+  `task_situation` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '每日任务情况',
+  `esitmate_date` datetime(0) NULL DEFAULT NULL COMMENT '预计完成时间',
+  `actual_date` datetime(0) NULL DEFAULT NULL COMMENT '实际完成时间',
+  `summary` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '任务完成情况评价',
+  `reason` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '超时或省时原因',
+  `weight` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '任务权重',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '项目用户日志' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for post
+-- ----------------------------
+DROP TABLE IF EXISTS `post`;
+CREATE TABLE `post`  (
+  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `department_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '所属部门id',
+  `duty` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '岗位职责',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '岗位' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for post_privilege
+-- ----------------------------
+DROP TABLE IF EXISTS `post_privilege`;
+CREATE TABLE `post_privilege`  (
+  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `post_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '岗位id',
+  `permission_tree` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '权限树 json',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uk`(`post_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '岗位菜单权限' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for user
+-- ----------------------------
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user`  (
+  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `name` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
+  `id_no` varchar(31) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '身份证号',
+  `staff_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '员工工号(登录账号)',
+  `user_type` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户类型',
+  `mobile` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码',
+  `sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户性别 男/女',
+  `password` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
+  `salt` varchar(31) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '盐加密',
+  `birthday` date NULL DEFAULT NULL COMMENT '出生日期',
+  `nation` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '民族',
+  `politics` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '政治面貌',
+  `native_place` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '籍贯',
+  `home_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '家庭住址',
+  `resign_state` bit(1) NOT NULL DEFAULT b'0' COMMENT '在职状态',
+  `hire_date` date NULL DEFAULT NULL COMMENT '入职时间',
+  `resign_date` date NULL DEFAULT NULL COMMENT '离职时间',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否启用:1:启用 0:禁用',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `id_no`(`id_no`, `deleted`) USING BTREE,
+  INDEX `idx1`(`name`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '基础用户' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for user_post
+-- ----------------------------
+DROP TABLE IF EXISTS `user_post`;
+CREATE TABLE `user_post`  (
+  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `user_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '用户id',
+  `post_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '岗位id',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `idx1`(`user_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 62 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户岗位' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Table structure for menu
+-- ----------------------------
+DROP TABLE IF EXISTS `menu`;
+CREATE TABLE `menu`  (
+  `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `menu_no` varchar(127) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单编号',
+  `menu_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单code',
+  `name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称',
+  `parent_id` bigint(32) NULL DEFAULT NULL COMMENT '父级菜单id',
+  `order_num` int(4) NULL DEFAULT NULL COMMENT '显示顺序',
+  `menu_type` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单类型 菜单/按钮',
+  `enabled` bit(1) NOT NULL DEFAULT b'1' COMMENT '状态:1:正常 0:禁用',
+  `pc_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'pc端url',
+  `pc_icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'pc端图标',
+  `cached_views` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否缓存页面',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+  `created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
+  `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `id`(`id`) USING BTREE,
+  UNIQUE INDEX `menu_no`(`menu_no`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 39 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of menu
+-- ----------------------------
+INSERT INTO `menu` VALUES (1, '9aaadb20-0cbc-4de4-9068-9dc93606b6be', '_view_index', '首页', NULL, 1, '目录', b'1', '/index', 'muxg', b'0', b'0', '2022-11-29 16:34:48', '2022-11-29 16:38:00.000000');
+INSERT INTO `menu` VALUES (2, '61d0a6f2-9ca8-46e7-a406-6193bf47b71a', '_view_index_rate', '项目进度首页', 1, 1, '菜单', b'1', '/index/item/rate', 'v', b'0', b'0', '2022-11-29 16:37:22', '2022-11-29 16:37:22.000000');
+INSERT INTO `menu` VALUES (3, 'fa3e25ee-3b3a-4564-90b0-7dc2245c627d', '_view_index_logs', '项目日志首页', 1, 2, '菜单', b'1', '/index/item/log', 'muxb', b'0', b'0', '2022-11-29 16:38:32', '2022-11-29 16:38:32.000000');
+INSERT INTO `menu` VALUES (4, '795fd05f-6d62-44e0-9464-a2b10cf8a712', '_view_setting', '综合设置', NULL, 3, '目录', b'1', '/setting', 'muxf', b'0', b'0', '2022-12-02 14:46:00', '2022-12-05 10:16:56.000000');
+INSERT INTO `menu` VALUES (5, '2114b3d2-91d4-4c7e-9b04-344950bfbe17', '_views_set_menu', '菜单设置', 4, 2, '菜单', b'1', '/setting/menus', 'r', b'0', b'0', '2022-12-02 14:47:35', '2022-12-02 15:04:56.000000');
+INSERT INTO `menu` VALUES (6, 'bd020a95-d8de-4938-90a0-0d2efcf87cda', '_view_item', '项目管理', NULL, 2, '目录', b'1', '/item', 'r', b'0', b'0', '2022-12-05 09:49:39', '2022-12-05 10:16:57.000000');
+INSERT INTO `menu` VALUES (11, '38b36b01-54e9-4c36-9343-1902b8b5f4ae', '_view_department', '部门管理', 4, 0, '菜单', b'1', '/setting/department', 'n', b'0', b'0', '2022-12-05 12:54:42', '2022-12-05 13:01:07.000000');
+INSERT INTO `menu` VALUES (12, 'ebfaf59e-c07d-48ad-aed0-8f8b31ace36d', '_view_post', '岗位管理', 4, 1, '菜单', b'1', '/setting/post', 'gg', b'0', b'0', '2022-12-05 13:03:39', '2022-12-05 13:03:39.000000');
+INSERT INTO `menu` VALUES (13, '2cca60d2-19bd-4b99-be47-2277c0c8bebf', '_view_user', '员工管理', 4, -1, '菜单', b'1', '/setting/user', 'i', b'0', b'0', '2022-12-05 13:05:50', '2022-12-05 13:05:50.000000');
+INSERT INTO `menu` VALUES (14, 'c426bf47-cf16-406f-b922-280eeacef149', '_view_item_list', '项目列表', 6, 0, '菜单', b'1', '/item/list', 'a', b'0', b'0', '2022-12-05 13:07:22', '2022-12-05 13:07:22.000000');
+INSERT INTO `menu` VALUES (15, '0209fe37-1b2e-4062-bde7-cb89e6bca57d', '_view_item_plan', '项目排期', 6, 1, '菜单', b'1', '/item/plan', 'muxe', b'0', b'1', '2022-12-05 13:07:35', '2022-12-16 10:11:06.632230');
+INSERT INTO `menu` VALUES (16, '60fe7887-06f5-4439-9b5b-a72b292ccc7e', '_view_my_item', '我的项目', 6, 2, '菜单', b'1', '/item/list/me', 'aa', b'0', b'0', '2022-12-05 13:07:47', '2022-12-09 16:38:47.373260');
+INSERT INTO `menu` VALUES (17, '71e811f8-e90b-4d67-a4be-3776070cca4c', '_view_my_logs', '我的日志', 6, 3, '菜单', b'1', '/logs/me', 'oo', b'0', b'0', '2022-12-05 13:07:53', '2022-12-05 13:07:53.000000');
+INSERT INTO `menu` VALUES (18, '79eb0cb4-74a0-423b-aa56-a67e625cc0f9', '_view_department_add', '新增', 11, NULL, '按钮', b'1', '/setting/department/add', 'b', b'0', b'0', '2022-12-05 14:31:40', '2022-12-05 14:31:40.000000');
+INSERT INTO `menu` VALUES (19, '8eb3cb4d-1421-4e56-9473-8b291ad7b245', '_view_department_remove', '删除', 11, 2, '按钮', b'1', '/setting/department/delete', '', b'0', b'0', '2022-12-05 14:44:57', '2022-12-05 14:44:57.000000');
+INSERT INTO `menu` VALUES (20, '1f5e2ffd-9780-4a0d-ba2a-490185226743', '_view_department_edit', '编辑', 11, 3, '按钮', b'1', '/setting/department/edit', '', b'0', b'0', '2022-12-05 14:45:53', '2022-12-05 14:45:53.000000');
+INSERT INTO `menu` VALUES (21, '492a745a-3aa5-4a14-9a1a-18e27f36953e', '_views_set_post_edit', '编辑', 12, 1, '按钮', b'1', '/setting/post/edit', '', b'0', b'0', '2022-12-05 17:07:30', '2022-12-05 17:07:30.000000');
+INSERT INTO `menu` VALUES (22, 'b5d7dbcd-1099-49ca-a457-84af4ca1a97d', '_views_set_post_remove', '删除', 12, 2, '按钮', b'1', '/setting/post/remove', '', b'0', b'0', '2022-12-05 17:08:30', '2022-12-05 17:08:30.000000');
+INSERT INTO `menu` VALUES (23, '9d31b055-7d01-472e-a874-b7b3629dbbc0', '_views_set_post_auth', '权限', 12, 3, '按钮', b'1', '/setting/post/auth', '', b'0', b'0', '2022-12-05 17:09:13', '2022-12-05 17:09:13.000000');
+INSERT INTO `menu` VALUES (24, '65ecea82-bd1c-48a8-b7d9-054a0b541a3d', '_view_post_add', '新增', 12, 4, '按钮', b'1', '/setting/post/add', '', b'0', b'0', '2022-12-05 17:22:16', '2022-12-05 17:22:16.000000');
+INSERT INTO `menu` VALUES (25, 'da2d783e-8537-4a54-bf36-55402a87772d', '_views_user_detail', '详情', 13, 1, '按钮', b'1', '/setting/user/detail', '', b'0', b'0', '2022-12-06 10:57:01', '2022-12-06 10:57:01.000000');
+INSERT INTO `menu` VALUES (26, 'e16e8bdd-dde3-4750-9d50-e5db3eec7b40', '_views_user_remove', '删除', 13, 2, '按钮', b'1', '/setting/user/delete', '', b'0', b'0', '2022-12-06 10:58:00', '2022-12-06 10:58:00.000000');
+INSERT INTO `menu` VALUES (27, 'da9a698d-b83a-4ae4-95d2-a9e8559fa53f', '_views_user_add', '新增', 13, 3, '按钮', b'1', '/setting/user/add', '', b'0', b'0', '2022-12-06 12:40:42', '2022-12-06 12:40:42.000000');
+INSERT INTO `menu` VALUES (28, 'cbc84707-fa79-4ddd-986d-33afaa2e7877', '_views_item_plan', '排期', 14, 1, '按钮', b'1', '/item/plan', 'l', b'0', b'0', '2022-12-09 14:03:27', '2022-12-16 10:10:55.000041');
+INSERT INTO `menu` VALUES (29, 'cf5e7dce-ac0b-446d-bb1d-4b311713dd10', '_views_item_detail', '详情', 14, 2, '按钮', b'1', '/item/detail', 'j', b'0', b'0', '2022-12-09 14:04:11', '2022-12-09 14:04:11.000000');
+INSERT INTO `menu` VALUES (30, '1b4a78fe-7aa6-4f67-9646-1e3f1e6f414c', '_views_item_remove', '删除', 14, 3, '按钮', b'1', '/item/delete', 'q', b'0', b'0', '2022-12-09 14:04:26', '2022-12-09 14:04:26.000000');
+INSERT INTO `menu` VALUES (31, 'da799820-f4aa-4501-b9e2-c1257890cf44', '_views_item_add', '新增', 14, 4, '按钮', b'1', '/item/add', 'oo', b'0', b'0', '2022-12-09 14:10:23', '2022-12-09 14:10:23.000000');
+INSERT INTO `menu` VALUES (32, '8a2bae68-93fb-4d3e-bb4c-b3900288f6fb', '_view_item_log_write', '写日志', 16, 3, '按钮', b'1', '/item/me/write', 'aa', b'0', b'0', '2022-12-09 16:06:46', '2022-12-09 16:06:46.000000');
+INSERT INTO `menu` VALUES (33, 'f6f7e6ae-6343-4907-9057-2e1cf317b606', '_views_item_rate', '日志', 16, 1, '按钮', b'1', '/item/rate', 'muxb', b'0', b'0', '2022-12-09 16:12:40', '2022-12-16 10:19:45.690030');
+INSERT INTO `menu` VALUES (34, '318c14bc-e0d1-44b1-8df1-28e755e5c990', '_views_item_detail_readonly', '详情', 16, 2, '按钮', b'1', '/item/detail/readonly', 'l', b'0', b'0', '2022-12-09 16:12:52', '2022-12-09 16:12:52.000000');
+INSERT INTO `menu` VALUES (35, '76f6d8cb-051a-4bcb-b4c1-a771eefddf61', '_views_logs_entry', '日志总览', 6, 5, '菜单', b'1', '/item/log/entry', 'r', b'0', b'0', '2022-12-15 11:28:10', '2022-12-15 15:01:58.036119');
+INSERT INTO `menu` VALUES (36, 'b70fc63b-1505-4a3c-bb0a-35eeddff25e4', '_views_logs_collect', '查看', 35, 1, '按钮', b'1', '/item/log/collect', 'muxl', b'0', b'0', '2022-12-15 14:59:22', '2022-12-15 14:59:22.000000');
+INSERT INTO `menu` VALUES (37, 'bdc38765-925a-45c9-9ba1-78bd270e6d37', '_views_log_detail', '详情', 17, 1, '按钮', b'1', '/item/log/detail', 'muxc', b'0', b'0', '2022-12-15 16:03:03', '2022-12-15 16:03:03.000000');
+INSERT INTO `menu` VALUES (38, '5acd26f7-07a8-4028-8b49-2136b9a27bce', '_views_log_remove', '删除', 17, 2, '按钮', b'1', '/item/log/delete', 'cc', b'0', b'0', '2022-12-15 16:04:04', '2022-12-15 16:04:04.000000');
+
+SET FOREIGN_KEY_CHECKS = 1;