Browse Source

1、增加角色权限菜单相关模块
2、增加薪酬报告发送任务

rayson 5 months ago
parent
commit
ad57914bb4
43 changed files with 560 additions and 123 deletions
  1. 3 0
      citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/mail/MailSendServiceImpl.java
  2. 13 0
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/CommonConstants.java
  3. 2 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  4. 34 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeDataScopeEnum.java
  5. 3 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeDefaultRoleEnum.java
  6. 25 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeMenuTypeEnum.java
  7. 3 2
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleCodeEnum.java
  8. 21 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleTypeEnum.java
  9. 11 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/sync/SyncController.java
  10. 12 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/task/TaskController.java
  11. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobSaveReqVO.java
  12. 26 14
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/permission/AppMdePermissionController.java
  13. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/permission/AppMdeRoleController.java
  14. 3 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/permission/MdePermissionAssignRoleDataScopeReqVO.java
  15. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/permission/MdePermissionAssignUserRoleReqVO.java
  16. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/permission/MdePermissionInfoRespVO.java
  17. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/role/MdeRoleRespVO.java
  18. 2 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/AuthConvert.java
  19. 0 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/appointment/NewAppointmentsDO.java
  20. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java
  21. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeMenuDO.java
  22. 12 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeRoleDO.java
  23. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseUserBindMapper.java
  24. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/permission/MdeRoleMapper.java
  25. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  26. 0 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/apply/EnterpriseUserApplyServiceImpl.java
  27. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  28. 22 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  29. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/invite/EnterpriseInviteRecordServiceImpl.java
  30. 6 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeMenuServiceImpl.java
  31. 13 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java
  32. 27 16
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java
  33. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleService.java
  34. 9 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleServiceImpl.java
  35. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoServiceImpl.java
  36. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserServiceImpl.java
  37. 69 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/SalaryReportEmailSendTask.java
  38. 110 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/SyncEnterpriseUserRoleTask.java
  39. 47 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/entity/TaskSalaryReportDO.java
  40. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/entity/TaskSalaryReportMapper.java
  41. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MessageUtils.java
  42. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  43. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

+ 3 - 0
citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/mail/MailSendServiceImpl.java

@@ -22,6 +22,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -72,6 +73,8 @@ public class MailSendServiceImpl implements MailSendService {
                 String fileName = StrUtil.subAfter(fileUrl, "/", true);
                 if (StrUtil.isBlank(fileName)) {
                     fileName = "unknown_file"; // 如果URL中没有文件名,使用默认名称
+                }else {
+                    fileName = URLDecoder.decode(fileName, "UTF-8");
                 }
 
                 // 创建临时文件

+ 13 - 0
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/CommonConstants.java

@@ -136,6 +136,19 @@ public class CommonConstants {
         return reqDTO;
     }
 
+    /**
+     * 薪酬报告发送
+     **/
+    public static final String EMAIL_SALARY_REPORT = "menduner-salary-report";
+    public static MailSendSingleToUserReqDTO packSalaryReportTemplate(String email,List<String> fileUrlList) {
+        MailSendSingleToUserReqDTO reqDTO = new MailSendSingleToUserReqDTO();
+        reqDTO.setMail(email);
+        reqDTO.setTemplateCode(CommonConstants.EMAIL_SALARY_REPORT);
+        reqDTO.setTemplateParams(MapUtil.<String, Object>builder().build());
+        reqDTO.setFileUrl(fileUrlList);
+        return reqDTO;
+    }
+
 
     /**
      * ========== 短信模版 ==========

+ 2 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -290,6 +290,8 @@ public interface ErrorCodeConstants {
 
     ErrorCode MDE_ENTERPRISE_USER_BIND_PASSWORD_ERROR_TOO_MANY =
             new ErrorCode(1_100_023_010, "该账户密码已经错误多次,为了您的账户安全,超过5次将锁定您的账户。");
+    ErrorCode MDE_ENTERPRISE_USER_BIND_ADMIN_EXISTS = new ErrorCode(1_100_023_011,
+            "已存在企业管理员,数据错误,请联系系统管理员处理");
 
 
 

+ 34 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeDataScopeEnum.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.enums.permission;
+
+import com.citu.framework.common.core.IntArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 数据范围枚举类
+ *
+ * 用于实现数据级别的权限
+ *
+ * @author Rayson
+ */
+@Getter
+@AllArgsConstructor
+public enum MdeDataScopeEnum   {
+
+    ALL("1"), // 全部数据权限
+
+    ENTERPRISE_CUSTOM("2"), // 指定企业数据权限
+    ENTERPRISE_ONLY("3"), // 企业数据权限
+    ENTERPRISE_AND_CHILD("4"), // 企业及以下数据权限
+
+    SELF("5"); // 仅本人数据权限
+
+    /**
+     * 范围
+     */
+    private final String scope;
+
+
+}

+ 3 - 3
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeDefaultRoleEnum.java

@@ -8,13 +8,13 @@ import lombok.Getter;
 public enum MdeDefaultRoleEnum {
 
     /**
-     * 内置角色
+     * 企业管理员
      */
-    MENDUNER_DEFAULT_ROLE("menduner_default_role"),
+    MENDUNER_ENTERPRISE_ADMIN_ROLE("menduner_enterprise_admin"),
     /**
      * 企业用户
      */
-    MENDUNER_ENTERPRISE_ROLE("menduner_enterprise_role");
+    MENDUNER_ENTERPRISE_ROLE("menduner_enterprise");
 
     private final String type;
 

+ 25 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeMenuTypeEnum.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.enums.permission;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 菜单类型枚举类
+ *
+ * @author Rayson
+ */
+@Getter
+@AllArgsConstructor
+public enum MdeMenuTypeEnum {
+
+    DIR(1), // 目录
+    MENU(2), // 菜单
+    BUTTON(3) // 按钮
+    ;
+
+    /**
+     * 类型
+     */
+    private final Integer type;
+
+}

+ 3 - 2
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleCodeEnum.java

@@ -12,7 +12,8 @@ import lombok.Getter;
 public enum MdeRoleCodeEnum {
 
 
-    MDE_ADMIN("menduner_admin", "menduner 管理员"),
+    MDE_ENTERPRISE_ADMIN("menduner_enterprise_admin", "menduner 企业管理员"),
+    MDE_ENTERPRISE_USER("menduner_enterprise_user", "menduner 企业用户"),
     ;
 
     /**
@@ -25,7 +26,7 @@ public enum MdeRoleCodeEnum {
     private final String name;
 
     public static boolean isAdmin(String code) {
-        return ObjectUtils.equalsAny(code, MDE_ADMIN.getCode());
+        return ObjectUtils.equalsAny(code, MDE_ENTERPRISE_ADMIN.getCode());
     }
 
 }

+ 21 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/permission/MdeRoleTypeEnum.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.enums.permission;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum MdeRoleTypeEnum {
+
+    /**
+     * 内置角色
+     */
+    SYSTEM("1"),
+    /**
+     * 自定义角色
+     */
+    CUSTOM("2");
+
+    private final String type;
+
+}

+ 11 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/sync/SyncController.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.system.controller.admin.sync;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.system.old.MdeOldSyncService;
 import com.citu.module.menduner.system.service.sync.ESDataSyncService;
+import com.citu.module.menduner.system.task.SyncEnterpriseUserRoleTask;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
@@ -26,6 +27,9 @@ public class SyncController {
     @Resource
     private MdeOldSyncService oldService;
 
+    @Resource
+    private SyncEnterpriseUserRoleTask syncEnterpriseUserRoleTask;
+
     @PostMapping("/es")
     @Operation(summary = "同步ES相关数据")
     public CommonResult<Boolean> syncData() {
@@ -46,4 +50,11 @@ public class SyncController {
         return success(true);
     }
 
+    @PostMapping("/role-menu")
+    @Operation(summary = "同步企业用户角色和菜单")
+    public CommonResult<Boolean> syncRoleMenu() {
+        syncEnterpriseUserRoleTask.execute();
+        return success(true);
+    }
+
 }

+ 12 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/task/TaskController.java

@@ -2,13 +2,12 @@ package com.citu.module.menduner.system.controller.app.common.task;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.system.task.EnterpriseEmailNoticeTask;
+import com.citu.module.menduner.system.task.SalaryReportEmailSendTask;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
@@ -22,6 +21,10 @@ public class TaskController {
     @Resource
     private EnterpriseEmailNoticeTask enterpriseEmailNoticeTask;
 
+    @Resource
+    private SalaryReportEmailSendTask salaryReportEmailSendTask;
+
+
 
     @Operation(summary = "企业邮箱通知任务(并修改非vip企业的职位发布数量为3)")
     @GetMapping("/notice/enterprise/email")
@@ -30,5 +33,11 @@ public class TaskController {
         return CommonResult.success(true);
     }
 
+    @Operation(summary = "发送薪酬报告")
+    @PostMapping("/send/salary-report")
+    public CommonResult<Boolean> sendSalaryReport() {
+        salaryReportEmailSendTask.execute();
+        return CommonResult.success(true);
+    }
 
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobSaveReqVO.java

@@ -34,11 +34,11 @@ public class AppRecruitJobSaveReqVO {
     private String type;
 
     @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotBlank(message = "{1_100_025_006}")
+//    @NotBlank(message = "{1_100_025_006}")
     private String expType;
 
     @Schema(description = "学历要求", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotBlank(message = "{1_100_025_007}")
+//    @NotBlank(message = "{1_100_025_007}")
     private String eduType;
 
     @Schema(description = "薪酬from")

+ 26 - 14
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/permission/AppMdePermissionController.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.controller.app.recruit.permission;
 
 import cn.hutool.core.collection.CollUtil;
 import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitUserRespVO;
@@ -11,6 +12,7 @@ import com.citu.module.menduner.system.controller.base.permission.permission.Mde
 import com.citu.module.menduner.system.controller.base.permission.permission.MdePermissionAssignUserRoleReqVO;
 import com.citu.module.menduner.system.controller.base.permission.permission.MdePermissionInfoRespVO;
 import com.citu.module.menduner.system.convert.AuthConvert;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeMenuDO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
@@ -82,21 +84,19 @@ public class AppMdePermissionController {
         return success(true);
     }
 
-    @Operation(summary = "获得管理员拥有的角色编号列表")
+    @Operation(summary = "获得企业用户拥有的角色编号列表")
     @Parameter(name = "userId", description = "用户编号", required = true)
     @GetMapping("/list-user-roles")
     @PreAuthenticated
-    public CommonResult<Set<Long>> listAdminRoles(@RequestParam("userId") Long userId) {
-        return success(permissionService.getEnterpriseUserRoleIdListByUserId(LoginUserContext.getEnterpriseId(), userId));
+    public CommonResult<Set<Long>> listUserRoles(@RequestParam("bindId") Long bindId) {
+        return success(permissionService.getUserRoleIdListByBindId(bindId));
     }
 
     @Operation(summary = "赋予用户角色")
     @PostMapping("/assign-user-role")
     @PreAuthenticated
     public CommonResult<Boolean> assignUserRole(@Validated @RequestBody MdePermissionAssignUserRoleReqVO reqVO) {
-        permissionService.assignEnterpriseUserRole(LoginUserContext.getEnterpriseId(),
-                LoginUserContext.getUserId(),
-                reqVO.getRoleIds());
+        permissionService.assignEnterpriseUserRole(reqVO.getBindId(), reqVO.getRoleIds());
         return success(true);
     }
 
@@ -108,27 +108,39 @@ public class AppMdePermissionController {
         EnterpriseEntitlementRespVO entitlementRespVO = entitlementService
                 .getByEnterpriseIdAndUserId(LoginUserContext.getEnterpriseId(), LoginUserContext.getUserId());
         user.setEntitlement(entitlementRespVO);
-        if (userService == null) {
-            return success(null);
-        }
 
+        if(userService.checkIsAdmin(BeanUtils.toBean(user, EnterpriseUserBindDO.class))) {
+            // 管理员,返回所有菜单
+            return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(),getEnabledMenuList(null)));
+        }
         // 1.2 获得角色列表
         Set<Long> roleIds = permissionService.getEnterpriseUserRoleIdListByUserId(LoginUserContext.getEnterpriseId(), getLoginUserId());
         if (CollUtil.isEmpty(roleIds)) {
-            // 兼容没有角色绑定的情况
-            roleIds = Collections.singleton(roleService.getRoleByDefault(MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE).getId());
+            // roleIds = Collections.singleton(roleService.getRoleByDefault(MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE).getId());
             // return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(), Collections.emptyList()));
+            // TODO 没有角色的用户目前也返回所有菜单
+            return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(),getEnabledMenuList(null)));
         }
         List<MdeRoleDO> roles = roleService.getRoleList(roleIds);
         roles.removeIf(role -> !MendunerStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
 
         // 1.3 获得菜单列表
+        List<MdeMenuDO> menuList =  getEnabledMenuList(roles);
+        // 2. 拼接结果返回
+        return success(AuthConvert.INSTANCE.convert(user, roles, menuList));
+    }
+
+    private List<MdeMenuDO> getEnabledMenuList(List<MdeRoleDO> roles) {
+        if(CollUtil.isEmpty(roles)) {
+            List<MdeMenuDO> menuList = menuService.getMenuList();
+            // 移除禁用的菜单
+            menuList.removeIf(menu -> !MendunerStatusEnum.ENABLE.getStatus().equals(menu.getStatus().toString()));
+            return menuList;
+        }
         Set<Long> menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, MdeRoleDO::getId));
         List<MdeMenuDO> menuList = menuService.getMenuList(menuIds);
         menuList.removeIf(menu -> !MendunerStatusEnum.ENABLE.getStatus().equals(menu.getStatus().toString())); // 移除禁用的菜单
-
-        // 2. 拼接结果返回
-        return success(AuthConvert.INSTANCE.convert(user, roles, menuList));
+        return menuList;
     }
 
 }

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/permission/AppMdeRoleController.java

@@ -13,6 +13,7 @@ import com.citu.module.menduner.system.controller.base.permission.role.MdeRoleRe
 import com.citu.module.menduner.system.controller.base.permission.role.MdeRoleSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.permission.MdeRoleTypeEnum;
 import com.citu.module.menduner.system.service.permission.MdeRoleService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -85,7 +86,8 @@ public class AppMdeRoleController {
     @Operation(summary = "获取角色精简信息列表", description = "只包含被开启的角色,主要用于前端的下拉选项")
     @PreAuthenticated
     public CommonResult<List<MdeRoleRespVO>> getSimpleRoleList() {
-        List<MdeRoleDO> list = roleService.getRoleListByStatus(singleton(MendunerStatusEnum.ENABLE.getStatus()));
+        List<MdeRoleDO> list = roleService.getRoleListByStatus(LoginUserContext.getEnterpriseId(),
+                singleton(MendunerStatusEnum.ENABLE.getStatus()));
         list.sort(Comparator.comparing(MdeRoleDO::getSort));
         return success(BeanUtils.toBean(list, MdeRoleRespVO.class));
     }

+ 3 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/permission/MdePermissionAssignRoleDataScopeReqVO.java

@@ -1,7 +1,5 @@
 package com.citu.module.menduner.system.controller.base.permission.permission;
 
-import com.citu.framework.common.validation.InEnum;
-import com.citu.module.system.enums.permission.DataScopeEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -17,12 +15,11 @@ public class MdePermissionAssignRoleDataScopeReqVO {
     @NotNull(message = "{1_100_018_007}")
     private Long roleId;
 
-    @Schema(description = "数据范围,参见 DataScopeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @Schema(description = "数据范围,参见 MdeDataScopeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "{1_100_018_012}")
-    @InEnum(value = DataScopeEnum.class, message = "{1_100_018_013}")
-    private Integer dataScope;
+    private String dataScope;
 
-    @Schema(description = "数据编号列表,只有范围类型为 DEPT_CUSTOM 时,该字段才需要", example = "1,3,5")
+    @Schema(description = "数据编号列表,只有范围类型为 DEPT_CUSTOM 时,该字段才需要")
     private Set<Long> dataScopeEnterpriseIds = Collections.emptySet(); // 兜底
 
 }

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/permission/MdePermissionAssignUserRoleReqVO.java

@@ -11,6 +11,10 @@ import java.util.Set;
 @Data
 public class MdePermissionAssignUserRoleReqVO {
 
+    @Schema(description = "企业用户编码", required = true, example = "1024")
+    @NotNull(message = "用户编号不能为空")
+    private Long bindId;
+
     @Schema(description = "角色编号列表", example = "1,3,5")
     private Set<Long> roleIds = Collections.emptySet(); // 兜底
 

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/permission/MdePermissionInfoRespVO.java

@@ -43,6 +43,9 @@ public class MdePermissionInfoRespVO {
         @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
         private String name;
 
+        @Schema(description = "菜单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+        private Integer type;
+
         @Schema(description = "路由地址,仅菜单类型为菜单或者目录时,才需要传", example = "post")
         private String path;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/role/MdeRoleRespVO.java

@@ -45,7 +45,7 @@ public class MdeRoleRespVO {
     @Schema(description = "备注", example = "我是一个角色")
     private String remark;
 
-    @Schema(description = "数据范围,参见 DataScopeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @Schema(description = "数据范围,参见 MdeDataScopeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @ExcelProperty("数据范围")
     private Integer dataScope;
 

+ 2 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/AuthConvert.java

@@ -1,15 +1,11 @@
 package com.citu.module.menduner.system.convert;
 
 import cn.hutool.core.collection.CollUtil;
-import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitUserRespVO;
 import com.citu.module.menduner.system.controller.base.permission.permission.MdePermissionInfoRespVO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeMenuDO;
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleDO;
-import com.citu.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
-import com.citu.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
-import com.citu.module.system.api.social.dto.SocialUserBindReqDTO;
-import com.citu.module.system.enums.permission.MenuTypeEnum;
+import com.citu.module.menduner.system.enums.permission.MdeMenuTypeEnum;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 import org.slf4j.LoggerFactory;
@@ -48,7 +44,7 @@ public interface AuthConvert {
             return Collections.emptyList();
         }
         // 移除按钮
-        menuList.removeIf(menu -> menu.getType().equals(MenuTypeEnum.BUTTON.getType()));
+        menuList.removeIf(menu -> menu.getType().equals(MdeMenuTypeEnum.BUTTON.getType()));
         // 排序,保证菜单的有序性
         menuList.sort(Comparator.comparing(MdeMenuDO::getSort));
 

+ 0 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/appointment/NewAppointmentsDO.java

@@ -1,12 +1,10 @@
 package com.citu.module.menduner.system.dal.dataobject.appointment;
 
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 /**

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java

@@ -60,10 +60,12 @@ public class JobAdvertisedDO extends TenantBaseDO {
     /**
      * 工作经验
      */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
     private String expType;
     /**
      * 学历要求
      */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
     private String eduType;
     /**
      * 薪酬from

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeMenuDO.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.citu.framework.common.enums.CommonStatusEnum;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
-import com.citu.module.system.enums.permission.MenuTypeEnum;
+import com.citu.module.menduner.system.enums.permission.MdeMenuTypeEnum;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -48,7 +48,7 @@ public class MdeMenuDO extends TenantBaseDO {
     /**
      * 菜单类型
      * <p>
-     * 枚举 {@link MenuTypeEnum}
+     * 枚举 {@link MdeMenuTypeEnum}
      */
     private Integer type;
     /**

+ 12 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeRoleDO.java

@@ -5,10 +5,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
-import com.citu.module.system.enums.permission.DataScopeEnum;
-import com.citu.module.system.enums.permission.RoleTypeEnum;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDataScopeEnum;
+import com.citu.module.menduner.system.enums.permission.MdeRoleTypeEnum;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -40,7 +40,7 @@ public class MdeRoleDO extends TenantBaseDO {
     private String name;
     /**
      * 角色标识
-     *
+     * <p>
      * 枚举
      */
     private String code;
@@ -50,14 +50,14 @@ public class MdeRoleDO extends TenantBaseDO {
     private Integer sort;
     /**
      * 角色状态
-     *
+     * <p>
      * 枚举 {@link MendunerStatusEnum}
      */
     private String status;
     /**
      * 角色类型
-     *
-     * 枚举 {@link RoleTypeEnum}
+     * <p>
+     * 枚举 {@link MdeRoleTypeEnum}
      */
     private String type;
     /**
@@ -67,14 +67,14 @@ public class MdeRoleDO extends TenantBaseDO {
 
     /**
      * 数据范围
-     *
-     * 枚举 {@link DataScopeEnum}
+     * <p>
+     * 枚举 {@link MdeDataScopeEnum}
      */
-    private Integer dataScope;
+    private String dataScope;
     /**
      * 数据范围(指定企业数组)
-     *
-     * 适用于 {@link #dataScope} 的值为 {@link DataScopeEnum#DEPT_CUSTOM} 时
+     * <p>
+     * 适用于 {@link #dataScope} 的值为 {@link MdeDataScopeEnum#ENTERPRISE_CUSTOM} 时
      */
     @TableField(typeHandler = JacksonTypeHandler.class)
     private Set<Long> dataScopeEnterpriseIds;

+ 7 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseUserBindMapper.java

@@ -66,6 +66,13 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
         );
     }
 
+    default EnterpriseUserBindDO getAdminUser(Long enterpriseId) {
+        return selectOne(new LambdaQueryWrapperX<EnterpriseUserBindDO>()
+                .eq(EnterpriseUserBindDO::getEnterpriseId, enterpriseId)
+                .eq(EnterpriseUserBindDO::getUserType, EnterpriseUserTypeEnum.ADMIN.getType())
+        );
+    }
+
     /**
      * 根据查询条件查询企业用户列表
      **/

+ 5 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/permission/MdeRoleMapper.java

@@ -33,8 +33,11 @@ public interface MdeRoleMapper extends BaseMapperX<MdeRoleDO> {
         return selectOne(MdeRoleDO::getCode, code);
     }
 
-    default List<MdeRoleDO> selectListByStatus(@Nullable Collection<String> statuses) {
-        return selectList(MdeRoleDO::getStatus, statuses);
+    default List<MdeRoleDO> selectListByStatus(Long enterpriseId,@Nullable Collection<String> statuses) {
+        return selectList(new LambdaQueryWrapperX<MdeRoleDO>()
+                .eq(MdeRoleDO::getEnterpriseId, enterpriseId)
+                .in(MdeRoleDO::getStatus, statuses)
+        );
     }
 
 }

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java

@@ -264,10 +264,10 @@ public class EnterpriseServiceImpl implements EnterpriseService {
     public Map<String, Object[]> getEnterpriseCount(TimeRangeBaseReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = enterpriseMapper.getEnterpriseCount(reqVO, timeRange[0], timeRange[1]);
-        List<CommonRespVO> sortedResult = result.stream()
-                .sorted(Comparator.comparing(CommonRespVO::getKey))
-                .collect(Collectors.toList());
-        return packBarCount(sortedResult.stream()
+//        List<CommonRespVO> sortedResult = result.stream()
+//                .sorted(Comparator.comparing(CommonRespVO::getKey))
+//                .collect(Collectors.toList());
+        return packBarCount(result.stream()
                 .filter(c -> null != c.getKey())
                 .collect(Collectors.toList())
         );

+ 0 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/apply/EnterpriseUserApplyServiceImpl.java

@@ -139,10 +139,6 @@ public class EnterpriseUserApplyServiceImpl implements EnterpriseUserApplyServic
         userBindDO.setUserType(EnterpriseUserTypeEnum.NORMAL.getType());
         userBindMapper.insert(userBindDO);
 
-        // 审批通过更改用户绑定角色
-        // 绑定企业用户
-        permissionService.assignEnterpriseUserRoleByDefault(userApplyDO.getEnterpriseId(),
-                userApplyDO.getUserId(), MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE);
     }
 
     @Override

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java

@@ -78,6 +78,8 @@ public interface EnterpriseUserBindService {
     EnterpriseUserBindDetailRespVO get(Long id);
 
 
+
+
     /**
      * 更新用户的最后登陆信息
      *

+ 22 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java

@@ -37,7 +37,10 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 import static com.citu.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
@@ -110,7 +113,7 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
 
     @Override
     public EnterpriseUserBindDO getEnterpriseUserBind(Long id) {
-        return mapper.selectById(id);
+        return validateEnterpriseUserBindExists(id);
     }
 
     @Override
@@ -204,9 +207,19 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
         } else {
             userBindDO.setPassword(encodePassword(userBindDO.getPassword()));
         }
+        EnterpriseUserBindDO adminUser = mapper.getAdminUser(userBindDO.getEnterpriseId());
+        if (null != adminUser) {
+            throw exception(MDE_ENTERPRISE_USER_BIND_ADMIN_EXISTS);
+        }
         mapper.insert(userBindDO);
         // 设置用户绑定企业角色
-        // mdePermissionService.assignUserRoleByDefault(userBindDO.getUserId(), MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE);
+        if (checkIsAdmin(userBindDO)) {
+            // 管理员
+            mdePermissionService.assignEnterpriseUserRoleByDefault(userBindDO.getEnterpriseId(),
+                    userBindDO.getUserId(), MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ADMIN_ROLE);
+        } else {
+            // 普通企业用户,不需要绑定角色,默认能查看所有菜单以及操作自己的权限
+        }
     }
 
     @Override
@@ -216,7 +229,7 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
 
     @Override
     public EnterpriseUserBindDO getByEmail(String email) {
-        if(!ValidationUtils.isEmail(email)) {
+        if (!ValidationUtils.isEmail(email)) {
             throw exception(MDE_ENTERPRISE_USER_BIND_EMAIL_FORMAT_ERROR);
         }
         return mapper.selectByEmail(email);
@@ -261,10 +274,10 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     public Map<String, Object[]> getEnterpriseUserCount(TimeRangeBaseReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = mapper.getEnterpriseUserCount(reqVO, timeRange[0], timeRange[1]);
-        List<CommonRespVO> sortedResult = result.stream()
-                .sorted(Comparator.comparing(CommonRespVO::getKey))
-                .collect(Collectors.toList());
-        return packBarCount(sortedResult.stream()
+//        List<CommonRespVO> sortedResult = result.stream()
+//                .sorted(Comparator.comparing(CommonRespVO::getKey))
+//                .collect(Collectors.toList());
+        return packBarCount(result.stream()
                 .filter(c -> null != c.getKey())
                 .collect(Collectors.toList())
         );
@@ -340,11 +353,9 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
 
     @Override
     public AppRecruitUserRespVO getBindEnterprise() {
-        LoginUser loginUser = checkIsEnterpriseUser();
-
         EnterpriseUserBindDO userBindDO = mapper
                 .selectByEnterpriseIdAndUserId(
-                        LoginUserContext.getEnterpriseId(loginUser), loginUser.getId());
+                        LoginUserContext.getEnterpriseId(), LoginUserContext.getUserId());
         if (null == userBindDO) {
             throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
         }

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/invite/EnterpriseInviteRecordServiceImpl.java

@@ -163,7 +163,6 @@ public class EnterpriseInviteRecordServiceImpl implements EnterpriseInviteRecord
             userBindDO.setName(user.getUsername());
             userBindDO.setPhone(user.getPhone());
 
-
             userBindService.createUser(userBindDO);
 
 

+ 6 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeMenuServiceImpl.java

@@ -9,7 +9,8 @@ import com.citu.module.menduner.system.controller.base.permission.menu.MdeMenuSa
 import com.citu.module.menduner.system.dal.dataobject.permission.MdeMenuDO;
 import com.citu.module.menduner.system.dal.mysql.permission.MdeMenuMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
-import com.citu.module.system.enums.permission.MenuTypeEnum;
+
+import com.citu.module.menduner.system.enums.permission.MdeMenuTypeEnum;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
@@ -185,7 +186,7 @@ public class MdeMenuServiceImpl implements MdeMenuService {
      * <p>
      * 1. 不能设置自己为父菜单
      * 2. 父菜单不存在
-     * 3. 父菜单必须是 {@link MenuTypeEnum#MENU} 菜单类型
+     * 3. 父菜单必须是 {@link MdeMenuTypeEnum#MENU} 菜单类型
      *
      * @param parentId 父菜单编号
      * @param childId  当前菜单编号
@@ -205,8 +206,8 @@ public class MdeMenuServiceImpl implements MdeMenuService {
             throw exception(MENU_PARENT_NOT_EXISTS);
         }
         // 父菜单必须是目录或者菜单类型
-        if (!MenuTypeEnum.DIR.getType().equals(menu.getType())
-                && !MenuTypeEnum.MENU.getType().equals(menu.getType())) {
+        if (!MdeMenuTypeEnum.DIR.getType().equals(menu.getType())
+                && !MdeMenuTypeEnum.MENU.getType().equals(menu.getType())) {
             throw exception(MENU_PARENT_NOT_DIR_OR_MENU);
         }
     }
@@ -244,7 +245,7 @@ public class MdeMenuServiceImpl implements MdeMenuService {
      */
     private void initMenuProperty(MdeMenuDO menu) {
         // 菜单为按钮类型时,无需 component、icon、path 属性,进行置空
-        if (MenuTypeEnum.BUTTON.getType().equals(menu.getType())) {
+        if (MdeMenuTypeEnum.BUTTON.getType().equals(menu.getType())) {
             menu.setComponent("");
             menu.setComponentName("");
             menu.setIcon("");

+ 13 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java

@@ -86,11 +86,10 @@ public interface MdePermissionService {
 
     /**
      * 设置用户角色
-     * @param enterpriseId 企业编号
-     * @param userId  角色编号
+     * @param bindId  企业用户id
      * @param roleIds 角色编号集合
      */
-    void assignEnterpriseUserRole(Long enterpriseId,Long userId, Set<Long> roleIds);
+    void assignEnterpriseUserRole(Long bindId, Set<Long> roleIds);
 
     /**
      * 设置用户默认角色
@@ -122,6 +121,14 @@ public interface MdePermissionService {
      */
     Set<Long> getEnterpriseUserRoleIdListByUserId(Long enterpriseId,Long userId);
 
+    /**
+     * 获得用户拥有的角色编号集合
+     *
+     * @param bindId 企业用户id
+     * @return 角色编号集合
+     */
+    Set<Long> getUserRoleIdListByBindId(Long bindId);
+
     /**
      * 获得用户拥有的角色编号集合,从缓存中获取
      * @param enterpriseId 企业编号
@@ -139,16 +146,16 @@ public interface MdePermissionService {
      * @param dataScope        数据范围
      * @param dataScopeDataIds 数据权限编号数组
      */
-    void assignRoleDataScope(Long roleId, Integer dataScope, Set<Long> dataScopeDataIds);
+    void assignRoleDataScope(Long roleId, String dataScope, Set<Long> dataScopeDataIds);
 
 
     /**
-     * 获得登陆用户的部门数据权限
+     * 获得登陆用户的企业数据权限
      *
 
      * @param enterpriseId 企业id
      * @param userId       用户编号
-     * @return 部门数据权限
+     * @return 企业用户数据权限
      */
     DataPermissionRespDTO getDataPermission(Long enterpriseId,Long userId);
 

+ 27 - 16
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java

@@ -16,12 +16,12 @@ import com.citu.module.menduner.system.dal.mysql.permission.MdeRoleMenuMapper;
 import com.citu.module.menduner.system.dal.mysql.permission.MdeUserRoleMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDataScopeEnum;
 import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.user.MdeUserService;
 import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
-import com.citu.module.system.enums.permission.DataScopeEnum;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
@@ -61,10 +61,6 @@ public class MdePermissionServiceImpl implements MdePermissionService {
     @Lazy
     private MdeMenuService menuService;
 
-    @Resource
-    @Lazy
-    private MdeUserService userService;
-
     @Resource
     @Lazy
     private EnterpriseUserBindService enterpriseUserBindService;
@@ -218,10 +214,13 @@ public class MdePermissionServiceImpl implements MdePermissionService {
 
     @Override
     @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
-    @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#userId")
-    public void assignEnterpriseUserRole(Long enterpriseId, Long userId, Set<Long> roleIds) {
+    @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#bindId")
+    public void assignEnterpriseUserRole(Long bindId, Set<Long> roleIds) {
+        EnterpriseUserBindDO bindUser =
+                enterpriseUserBindService.getEnterpriseUserBind(bindId);
         // 获得角色拥有角色编号
-        Set<Long> dbRoleIds = convertSet(userRoleMapper.selectListByEnterpriseIdAndUserId(enterpriseId, userId),
+        Set<Long> dbRoleIds = convertSet(userRoleMapper.selectListByEnterpriseIdAndUserId(bindUser.getEnterpriseId(),
+                        bindUser.getUserId()),
                 MdeUserRoleDO::getRoleId);
         // 计算新增和删除的角色编号
         Set<Long> roleIdList = CollUtil.emptyIfNull(roleIds);
@@ -231,13 +230,17 @@ public class MdePermissionServiceImpl implements MdePermissionService {
         if (!CollectionUtil.isEmpty(createRoleIds)) {
             userRoleMapper.insertBatch(CollectionUtils.convertList(createRoleIds, roleId -> {
                 MdeUserRoleDO entity = new MdeUserRoleDO();
-                entity.setUserId(userId);
+                entity.setEnterpriseId(bindUser.getEnterpriseId());
+                entity.setUserId(bindUser.getUserId());
                 entity.setRoleId(roleId);
                 return entity;
             }));
         }
         if (!CollectionUtil.isEmpty(deleteMenuIds)) {
-            userRoleMapper.deleteListByEnterpriseIdAndUserIdAndRoleIdIds(enterpriseId, userId, deleteMenuIds);
+            userRoleMapper.deleteListByEnterpriseIdAndUserIdAndRoleIdIds(
+                    bindUser.getEnterpriseId(),
+                    bindUser.getUserId(),
+                    deleteMenuIds);
         }
     }
 
@@ -263,6 +266,14 @@ public class MdePermissionServiceImpl implements MdePermissionService {
         return convertSet(userRoleMapper.selectListByEnterpriseIdAndUserId(enterpriseId, userId), MdeUserRoleDO::getRoleId);
     }
 
+    @Override
+    public Set<Long> getUserRoleIdListByBindId(Long bindId) {
+        EnterpriseUserBindDO bindUser = enterpriseUserBindService
+                .getEnterpriseUserBind(bindId);
+        return convertSet(userRoleMapper
+                .selectListByEnterpriseIdAndUserId(bindUser.getEnterpriseId(), bindUser.getUserId()), MdeUserRoleDO::getRoleId);
+    }
+
     @Override
     @Cacheable(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#enterpriseId + ':' + #userId")
     public Set<Long> getEnterpriseUserRoleIdListByUserIdFromCache(Long enterpriseId, Long userId) {
@@ -293,7 +304,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
     // ========== 用户-部门的相关方法  ==========
 
     @Override
-    public void assignRoleDataScope(Long roleId, Integer dataScope, Set<Long> dataScopeDataIds) {
+    public void assignRoleDataScope(Long roleId, String dataScope, Set<Long> dataScopeDataIds) {
         roleService.updateRoleDataScope(roleId, dataScope, dataScopeDataIds);
     }
 
@@ -327,12 +338,12 @@ public class MdePermissionServiceImpl implements MdePermissionService {
                 continue;
             }
             // 情况一,ALL 所有的数据权限
-            if (Objects.equals(role.getDataScope(), DataScopeEnum.ALL.getScope())) {
+            if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ALL.getScope())) {
                 result.setAll(true);
                 continue;
             }
             // 情况二,DEPT_CUSTOM 自定义
-            if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_CUSTOM.getScope())) {
+            if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ENTERPRISE_CUSTOM.getScope())) {
                 CollUtil.addAll(result.getDataIds(), role.getDataScopeEnterpriseIds());
                 // 自定义可见部门时,保证可以看到自己所在的部门。否则,一些场景下可能会有问题。
                 // 例如说,登录时,基于 t_user 的 username 查询会可能被 dept_id 过滤掉
@@ -340,12 +351,12 @@ public class MdePermissionServiceImpl implements MdePermissionService {
                 continue;
             }
             // 情况三,DEPT_ONLY 自己所在的数据权限
-            if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_ONLY.getScope())) {
+            if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ENTERPRISE_ONLY.getScope())) {
                 CollectionUtils.addIfNotNull(result.getDataIds(), enterpriseUserBind.getEnterpriseId());
                 continue;
             }
             // 情况四,DEPT_DEPT_AND_CHILD 自己所在及以下的数据权限
-            if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_AND_CHILD.getScope())) {
+            if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ENTERPRISE_AND_CHILD.getScope())) {
                 CollUtil.addAll(result.getDataIds(), enterpriseService
                         .getChildEnterpriseIdListFromCache(enterpriseUserBind.getEnterpriseId()));
                 // 添加本身部门编号
@@ -354,7 +365,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
                 continue;
             }
             // 情况五,SELF
-            if (Objects.equals(role.getDataScope(), DataScopeEnum.SELF.getScope())) {
+            if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.SELF.getScope())) {
                 //                if (!EnterpriseUserTypeEnum.ADMIN.getType()
                 //                        .equals(enterpriseUserBind.getUserType())) {
                 //                    // 不是管理员,加入自己的权限

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleService.java

@@ -49,7 +49,7 @@ public interface MdeRoleService {
      * @param dataScope        数据范围
      * @param dataScopeEnterpriseIds 部门编号数组
      */
-    void updateRoleDataScope(Long id, Integer dataScope, Set<Long> dataScopeEnterpriseIds);
+    void updateRoleDataScope(Long id, String dataScope, Set<Long> dataScopeEnterpriseIds);
 
     /**
      * 获得角色
@@ -92,11 +92,11 @@ public interface MdeRoleService {
 
     /**
      * 获得角色列表
-     *
+     * @param enterpriseId 企业编号
      * @param statuses 筛选的状态
      * @return 角色列表
      */
-    List<MdeRoleDO> getRoleListByStatus(Collection<String> statuses);
+    List<MdeRoleDO> getRoleListByStatus(Long enterpriseId,Collection<String> statuses);
 
     /**
      * 获得所有角色列表

+ 9 - 9
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleServiceImpl.java

@@ -16,10 +16,10 @@ import com.citu.module.menduner.system.dal.mysql.permission.MdeRoleMapper;
 import com.citu.module.menduner.system.dal.mysql.permission.MdeUserRoleMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDataScopeEnum;
 import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.enums.permission.MdeRoleCodeEnum;
-import com.citu.module.system.enums.permission.DataScopeEnum;
-import com.citu.module.system.enums.permission.RoleTypeEnum;
+import com.citu.module.menduner.system.enums.permission.MdeRoleTypeEnum;
 import com.google.common.annotations.VisibleForTesting;
 import com.mzt.logapi.context.LogRecordContext;
 import com.mzt.logapi.starter.annotation.LogRecord;
@@ -65,9 +65,9 @@ public class MdeRoleServiceImpl implements MdeRoleService {
         // 2. 插入到数据库
         MdeRoleDO role = BeanUtils.toBean(createReqVO, MdeRoleDO.class)
                 .setEnterpriseId(LoginUserContext.getEnterpriseId())
-                .setType(ObjectUtil.defaultIfNull(type, RoleTypeEnum.CUSTOM.getType().toString()))
+                .setType(ObjectUtil.defaultIfNull(type, MdeRoleTypeEnum.CUSTOM.getType().toString()))
                 .setStatus(MendunerStatusEnum.ENABLE.getStatus())
-                .setDataScope(DataScopeEnum.ALL.getScope()); // 默认可查看所有数据。原因是,可能一些项目不需要项目权限
+                .setDataScope(MdeDataScopeEnum.ALL.getScope()); // 默认可查看所有数据。原因是,可能一些项目不需要项目权限
         roleMapper.insert(role);
 
         // 3. 记录操作日志上下文
@@ -95,7 +95,7 @@ public class MdeRoleServiceImpl implements MdeRoleService {
 
     @Override
     @CacheEvict(value = RedisKeyConstants.MDE_ROLE, key = "#id")
-    public void updateRoleDataScope(Long id, Integer dataScope, Set<Long> dataScopeEnterpriseIds) {
+    public void updateRoleDataScope(Long id, String dataScope, Set<Long> dataScopeEnterpriseIds) {
         // 校验是否可以更新
         validateRoleForUpdate(id);
 
@@ -169,10 +169,10 @@ public class MdeRoleServiceImpl implements MdeRoleService {
             throw exception(MDE_ROLE_NOT_EXISTS);
         }
         // 内置角色,不允许删除
-        if (RoleTypeEnum.SYSTEM.getType().equals(role.getType())) {
+        if (MdeRoleTypeEnum.SYSTEM.getType().equals(role.getType())) {
             throw exception(MDE_ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE);
         }
-        if(!role.getEnterpriseId().equals(LoginUserContext.getEnterpriseId())) {
+        if (!role.getEnterpriseId().equals(LoginUserContext.getEnterpriseId())) {
             // 操作别人的数据
             throw exception(MDE_REQUEST_ILLEGAL);
         }
@@ -202,8 +202,8 @@ public class MdeRoleServiceImpl implements MdeRoleService {
 
 
     @Override
-    public List<MdeRoleDO> getRoleListByStatus(Collection<String> statuses) {
-        return roleMapper.selectListByStatus(statuses);
+    public List<MdeRoleDO> getRoleListByStatus(Long enterpriseId,Collection<String> statuses) {
+        return roleMapper.selectListByStatus(enterpriseId,statuses);
     }
 
     @Override

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoServiceImpl.java

@@ -112,10 +112,10 @@ public class PersonInfoServiceImpl implements PersonInfoService {
     public Map<String, Object[]> getPersonCount(TimeRangeBaseReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = personInfoMapper.getNewPersonCount(reqVO, timeRange[0], timeRange[1]);
-        List<CommonRespVO> sortedResult = result.stream()
-                .sorted(Comparator.comparing(CommonRespVO::getKey))
-                .collect(Collectors.toList());
-        return packBarCount(sortedResult.stream()
+//        List<CommonRespVO> sortedResult = result.stream()
+//                .sorted(Comparator.comparing(CommonRespVO::getKey))
+//                .collect(Collectors.toList());
+        return packBarCount(result.stream()
                 .filter(c -> null != c.getKey())
                 .collect(Collectors.toList())
         );

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserServiceImpl.java

@@ -453,10 +453,10 @@ public class MdeUserServiceImpl implements MdeUserService {
     public Map<String, Object[]> getUserCount(TimeRangeBaseReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = mdeUserMapper.getUserCount(reqVO, timeRange[0], timeRange[1]);
-        List<CommonRespVO> sortedResult = result.stream()
-                .sorted(Comparator.comparing(CommonRespVO::getKey))
-                .collect(Collectors.toList());
-        return packBarCount(sortedResult.stream()
+//        List<CommonRespVO> sortedResult = result.stream()
+//                .sorted(Comparator.comparing(CommonRespVO::getKey))
+//                .collect(Collectors.toList());
+        return packBarCount(result.stream()
                 .filter(c -> null != c.getKey())
                 .collect(Collectors.toList())
         );

+ 69 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/SalaryReportEmailSendTask.java

@@ -0,0 +1,69 @@
+package com.citu.module.menduner.system.task;
+
+import com.citu.framework.tenant.core.job.TenantJob;
+import com.citu.module.menduner.system.task.entity.TaskSalaryReportDO;
+import com.citu.module.menduner.system.task.entity.TaskSalaryReportMapper;
+import com.citu.module.menduner.system.util.MessageUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+
+import static com.citu.module.menduner.common.CommonConstants.packSalaryReportTemplate;
+import static org.apache.commons.lang3.exception.ExceptionUtils.getRootCauseMessage;
+
+/**
+ * 薪酬报告邮箱发送任务
+ **/
+@Slf4j
+@Component
+public class SalaryReportEmailSendTask {
+
+    @Resource
+    private MessageUtils messageUtils;
+
+    @Resource
+    private TaskSalaryReportMapper taskSalaryReportMapper;
+
+    @TenantJob
+    @Scheduled(cron = "0 0/1 * * * ?")
+    public void execute() {
+        log.info("SalaryReportEmailSendTask execute");
+//        messageUtils.sendMailAndFile(packSalaryReportTemplate("1142033484@qq.com",
+////                Collections.singletonList("https://menduner.citupro.com:3443/dev/person/789914660768976896/hRVXFYZ.jpg")
+//                Collections.singletonList("https://menduner.citupro.com:3443/dev/file/2024%E9%97%A8%E5%A2%A9%E5%84%BF%E4%B8%AD%E5%9B%BD%E9%85%92%E5%BA%97%E4%B8%9A%E9%AB%98%E7%AE%A1%E8%96%AA%E9%85%AC%E4%B8%8E%E7%A6%8F%E5%88%A9%E8%B0%83%E7%A0%94%E6%8A%A5%E5%91%8A-%E6%9C%80%E7%BB%88%E7%89%88.pdf")
+//
+//        ));
+
+//        messageUtils.sendMailAndFile(packSalaryReportTemplate(email,
+////                Collections.singletonList("https://menduner.citupro.com:3443/dev/person/789914660768976896/hRVXFYZ.jpg")
+//                Collections.singletonList(fileUrl)
+//
+//        ));
+
+        List<TaskSalaryReportDO> list = taskSalaryReportMapper.getOneByStatus(2);
+//        TaskSalaryReportDO entity = taskSalaryReportMapper.getOneByStatus();
+//        if (null == entity) {
+//            return;
+//        }
+        for (TaskSalaryReportDO entity : list) {
+            log.info("[薪酬报告][发送邮箱][{}]", entity.getEmail());
+            try {
+                List<String> fileUrl = Collections.singletonList("https://menduner.citupro.com:3443/dev/file/2024%E9%97%A8%E5%A2%A9%E5%84%BF%E4%B8%AD%E5%9B%BD%E9%85%92%E5%BA%97%E4%B8%9A%E9%AB%98%E7%AE%A1%E8%96%AA%E9%85%AC%E4%B8%8E%E7%A6%8F%E5%88%A9%E8%B0%83%E7%A0%94%E6%8A%A5%E5%91%8A-%E6%9C%80%E7%BB%88%E7%89%88.pdf");
+                messageUtils.sendMail(packSalaryReportTemplate(entity.getEmail().trim().replace(" ",""), fileUrl));
+                entity.setSendStatus(1);
+                taskSalaryReportMapper.updateById(entity);
+                log.info("[薪酬报告][success][{}]", entity.getEmail());
+            } catch (Exception e) {
+                log.error("[薪酬报告][error][{}]", e.toString());
+                entity.setSendStatus(2);
+                entity.setSendException(getRootCauseMessage(e));
+                taskSalaryReportMapper.updateById(entity);
+            }
+        }
+    }
+
+}

+ 110 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/SyncEnterpriseUserRoleTask.java

@@ -0,0 +1,110 @@
+package com.citu.module.menduner.system.task;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
+import com.citu.module.menduner.system.dal.dataobject.permission.MdeMenuDO;
+import com.citu.module.menduner.system.dal.dataobject.permission.MdeRoleMenuDO;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseUserBindMapper;
+import com.citu.module.menduner.system.dal.mysql.permission.MdeRoleMenuMapper;
+import com.citu.module.menduner.system.enums.enterprise.EnterpriseUserTypeEnum;
+import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
+import com.citu.module.menduner.system.service.permission.MdeMenuService;
+import com.citu.module.menduner.system.service.permission.MdePermissionService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StopWatch;
+
+import javax.annotation.Resource;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 同步企业用户角色任务
+ * 第一次同步时使用,后续删除,一次性代码
+ * TODO 作废
+ **/
+@Slf4j
+@Component
+public class SyncEnterpriseUserRoleTask {
+
+    private static final Long ENTERPRISE_ADMIN_ROLE = 1L;
+//    private static final Long ENTERPRISE_USER_ROLE = 2L;
+    @Resource
+    private MdePermissionService permissionService;
+    @Resource
+    private MdeMenuService menuService;
+    @Resource
+    private MdeRoleMenuMapper roleMenuMapper;
+    @Resource
+    private EnterpriseUserBindMapper userBindMapper;
+
+    @Deprecated
+    @DSTransactional
+    public void execute() {
+
+        StopWatch stopWatch = new StopWatch("[execute][开始同步企业用户角色]");
+        stopWatch.start();
+        List<EnterpriseUserBindDO> list = userBindMapper.selectList();
+        if (CollUtil.isEmpty(list)) {
+            log.warn("[execute][没有企业用户数据]");
+            return;
+        }
+        // 排序
+        List<EnterpriseUserBindDO> sortedResult = list.stream()
+                .sorted(Comparator.comparing(EnterpriseUserBindDO::getEnterpriseId))
+                .collect(Collectors.toList());
+
+//        // 获取企业用户角色菜单
+//        List<MdeRoleMenuDO> roleMenuList =
+//                roleMenuMapper.selectListByRoleId(ENTERPRISE_USER_ROLE);
+//        if(CollUtil.isEmpty(roleMenuList)) {
+//            log.warn("[execute][企业用户角色菜单为空]");
+//            // 将所有菜单放入 角色菜单中
+//            List<MdeMenuDO> menuList = menuService.getMenuList();
+//            for (MdeMenuDO menuDO : menuList) {
+//                MdeRoleMenuDO roleMenuDO = new MdeRoleMenuDO();
+//                roleMenuDO.setRoleId(ENTERPRISE_USER_ROLE);
+//                roleMenuDO.setMenuId(menuDO.getId());
+//                roleMenuList.add(roleMenuDO);
+//                roleMenuMapper.insert(roleMenuDO);
+//            }
+//        }
+        // 管理员角色不需要搞菜单对应,因为企业管理员拥有全部菜单
+
+        for (EnterpriseUserBindDO userBindDO : sortedResult) {
+            log.info("[execute][userBindId:{}][start]", userBindDO.getId());
+            // 获得用户拥有的角色编号集合
+            Set<Long> roleIds =
+                    permissionService.getUserRoleIdListByBindId(userBindDO.getId());
+            log.info("[execute][userBindId:{}][roleIdSet:{}]", userBindDO.getId(), roleIds);
+            if (EnterpriseUserTypeEnum.ADMIN.getType()
+                    .equals(userBindDO.getUserType())) {
+                // 管理员
+                log.info("[execute][userBindId:{}][admin]", userBindDO.getId());
+                if (!roleIds.contains(ENTERPRISE_ADMIN_ROLE)) {
+                    // 添加管理员角色
+                    log.info("[execute][userBindId:{}][add admin role]", userBindDO.getId());
+                    permissionService.assignEnterpriseUserRoleByDefault(
+                            userBindDO.getEnterpriseId(), userBindDO.getUserId(),
+                            MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ADMIN_ROLE);
+                }
+                continue;
+            }
+            // 普通企业用户
+//            if (!roleIds.contains(ENTERPRISE_USER_ROLE)) {
+//                // 添加普通企业用户角色
+//                log.info("[execute][userBindId:{}][add user role]", userBindDO.getId());
+//                permissionService.assignEnterpriseUserRoleByDefault(
+//                        userBindDO.getEnterpriseId(), userBindDO.getUserId(),
+//                        MdeDefaultRoleEnum.MENDUNER_ENTERPRISE_ROLE);
+//            }
+            log.info("[execute][userBindId:{}][end]", userBindDO.getId());
+        }
+
+        log.info("{}",stopWatch.prettyPrint());
+    }
+
+}

+ 47 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/entity/TaskSalaryReportDO.java

@@ -0,0 +1,47 @@
+package com.citu.module.menduner.system.task.entity;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import com.citu.module.system.enums.mail.MailSendStatusEnum;
+import lombok.*;
+
+/**
+ * 薪酬报告发送任务 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_task_salary_report")
+@KeySequence("mde_task_salary_report_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaskSalaryReportDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 邮件
+     */
+    private String email;
+
+    /**
+     * 发送状态
+     * 枚举 {@link MailSendStatusEnum}
+     */
+    private Integer sendStatus;
+
+    /**
+     * 发送异常
+     */
+    private String sendException;
+
+}

+ 30 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/task/entity/TaskSalaryReportMapper.java

@@ -0,0 +1,30 @@
+package com.citu.module.menduner.system.task.entity;
+
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 薪酬报告发送任务 Mapper 接口
+ **/
+@Mapper
+public interface TaskSalaryReportMapper extends BaseMapperX<TaskSalaryReportDO> {
+
+
+    default List<TaskSalaryReportDO> selectByList() {
+        return selectList(new LambdaQueryWrapperX<TaskSalaryReportDO>()
+                // 过滤未发送的
+                .ne(TaskSalaryReportDO::getSendStatus, 1)
+        );
+    }
+
+    default List<TaskSalaryReportDO> getOneByStatus(Integer top) {
+        return selectList(new LambdaQueryWrapperX<TaskSalaryReportDO>()
+                // 过滤未发送的
+                .eq(TaskSalaryReportDO::getSendStatus, 0)
+                .last("limit "+top)
+        );
+    }
+}

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/MessageUtils.java

@@ -224,4 +224,13 @@ public class MessageUtils {
     public void sendMail(MailSendSingleToUserReqDTO reqDTO) {
         mailSendApi.sendSingleMailToMember(reqDTO).getCheckedData();
     }
+
+    /**
+     * 发送邮件
+     *
+     * @param reqDTO 请求参数
+     */
+    public void sendMailAndFile(MailSendSingleToUserReqDTO reqDTO) {
+        mailSendApi.sendSingleMailToMember2(reqDTO).getCheckedData();
+    }
 }

+ 1 - 0
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -209,6 +209,7 @@
 1_100_023_008=Enterprise user email cannot be empty
 1_100_023_009=Enterprise user login email format incorrect
 1_100_023_010=The password for this account has been incorrect multiple times. For the security of your account, if it exceeds 5 times, your account will be locked.
+1_100_023_011=Enterprise administrator already exists, data error, please contact system administrator for handling
 # ========== 企业岗位信息 1_100_024_000 ==========
 1_100_024_001=Enterprise position information does not exist
 1_100_024_002=The Chinese name of the position cannot be empty

+ 1 - 0
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -210,6 +210,7 @@
 1_100_023_008=企业用户邮箱不能为空
 1_100_023_009=企业用户登录邮箱格式不正确
 1_100_023_010=该账户密码已经错误多次,为了您的账户安全,超过5次将锁定您的账户。
+1_100_023_011=已存在企业管理员,数据错误,请联系系统管理员处理
 # ========== 企业岗位信息 1_100_024_000 ==========
 1_100_024_001=企业岗位信息不存在
 1_100_024_002=岗位中文名称不能为空