Ver Fonte

1、增加人才投递管理
2、修改错误码

rayson há 1 ano atrás
pai
commit
8e6b500075
98 ficheiros alterados com 1139 adições e 470 exclusões
  1. 5 0
      citu-framework/citu-common/src/main/java/com/citu/framework/common/util/string/StrUtils.java
  2. 48 27
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  3. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/area/AppAreaController.java
  4. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java
  5. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/enterprise/AppEnterpriseAuthLoginReqVO.java
  6. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/enterprise/AppEnterpriseAuthSmsLoginReqVO.java
  7. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/enterprise/AppEnterpriseAuthSwitchLoginReqVO.java
  8. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthCheckCodeReqVO.java
  9. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginReqVO.java
  10. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginRespVO.java
  11. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsLoginReqVO.java
  12. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsSendReqVO.java
  13. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsValidateReqVO.java
  14. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSocialLoginReqVO.java
  15. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthWeixinMiniAppLoginReqVO.java
  16. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeWeixinJsapiSignatureRespVO.java
  17. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseController.java
  18. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterprisePostController.java
  19. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseRegisterController.java
  20. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserApplyController.java
  21. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserBindController.java
  22. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserLookController.java
  23. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/apply/AppEnterpriseUserApplyReqVO.java
  24. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/AppIndustryController.java
  25. 6 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobAdvertisedController.java
  26. 8 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobCvRelController.java
  27. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedPageReqVO.java
  28. 3 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSearchPageReqVO.java
  29. 2 39
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSimpleRespVO.java
  30. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/major/AppMajorController.java
  31. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonController.java
  32. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonRecordController.java
  33. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonResumeController.java
  34. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/enterprise/PersonEnterpriseSubscribeReqVO.java
  35. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java
  36. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/school/AppSchoolController.java
  37. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/test/TestController.java
  38. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/AppMdeUserController.java
  39. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/vo/AppMdeUserUpdatePhoneByWeixinReqVO.java
  40. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/visits/AppMdeVisitsController.java
  41. 12 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/auth/AppAdminEnterpriseAuthController.java
  42. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/auth/vo/AppEnterpriseAuthLoginReqVO.java
  43. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/auth/vo/AppEnterpriseAuthSmsLoginReqVO.java
  44. 17 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/cv/AppAdminJobCvRelPageReqVO.java
  45. 36 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/cv/AppAdminJobCvRelRespVO.java
  46. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/enterprise/AppAdminEnterpriseUserBindController.java
  47. 9 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java
  48. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobRespVO.java
  49. 3 14
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobSimpleRespVO.java
  50. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/AppAdminPersonCvController.java
  51. 40 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/eduexp/AppAdminEduExpRespVO.java
  52. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/eduexp/AppAdminEduExpSimpleRespVO.java
  53. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/vo/AppAdminPersonPageReqVO.java
  54. 51 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/vo/AppAdminPersonSimpleRespVO.java
  55. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/workexp/AppAdminWorkExpRespVO.java
  56. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/workexp/AppAdminWorkExpSimpleRespVO.java
  57. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/certificate/CertificateSaveReqVO.java
  58. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSaveReqVO.java
  59. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/post/EnterprisePostSaveReqVO.java
  60. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterAuditReqVO.java
  61. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterSaveReqVO.java
  62. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/user/EnterpriseUserApplyAuditReqVO.java
  63. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/user/EnterpriseUserApplySaveReqVO.java
  64. 53 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedSimpleRespVO.java
  65. 7 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobCvRelSaveReqVO.java
  66. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/major/MajorSaveReqVO.java
  67. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/permission/role/MdeRoleSaveReqVO.java
  68. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/school/SchoolSaveReqVO.java
  69. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/user/MdeUserSaveReqVO.java
  70. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/user/MdeUserUpdateStatusReqVO.java
  71. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobAdvertisedConvert.java
  72. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/MdeAuthConvert.java
  73. 17 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseMapper.java
  74. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  75. 19 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  76. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java
  77. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionMapper.java
  78. 17 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/redis/RedisKeyConstants.java
  79. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/framework/datapermission/config/DataPermissionConfiguration.java
  80. 9 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaService.java
  81. 21 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaServiceImpl.java
  82. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthService.java
  83. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java
  84. 9 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthService.java
  85. 29 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java
  86. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  87. 5 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryServiceImpl.java
  88. 15 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  89. 30 101
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  90. 15 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java
  91. 45 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java
  92. 28 15
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java
  93. 170 61
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  94. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java
  95. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationService.java
  96. 11 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java
  97. 22 21
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  98. 25 22
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

+ 5 - 0
citu-framework/citu-common/src/main/java/com/citu/framework/common/util/string/StrUtils.java

@@ -42,6 +42,11 @@ public class StrUtils {
         return false;
     }
 
+    public static List<Long> splitToLong(String value) {
+        long[] longs = StrUtil.splitToLong(value, StrPool.COMMA);
+        return Arrays.stream(longs).boxed().collect(Collectors.toList());
+    }
+
     public static List<Long> splitToLong(String value, CharSequence separator) {
         long[] longs = StrUtil.splitToLong(value, separator);
         return Arrays.stream(longs).boxed().collect(Collectors.toList());

+ 48 - 27
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -1,15 +1,31 @@
 package com.citu.module.menduner.system.enums;
 
 import com.citu.framework.common.exception.ErrorCode;
+import com.citu.framework.common.exception.enums.GlobalErrorCodeConstants;
 import com.citu.framework.common.exception.enums.ServiceErrorCodeRange;
 
 /**
  * 门墩儿 后台 错误码枚举类
+ * 错误码增减原则 规范
+ * 1、每个模块都有单独的错误码;
+ * 2、假设招聘职位模块要效验企业id,则在”招聘职位模块"下新增"企业id不能为空"错误码,不允许引用"企业模块"的"id不能为空";
+ * 3、列外,所有模块都可以引用 {公共 1_200_000_000} or {@link GlobalErrorCodeConstants} 的错误码,除此之外不可引用不同业务块的错误码;
  * 参见 {@link ServiceErrorCodeRange}
+ *
+ * @author Rayson
  **/
 public interface ErrorCodeConstants {
 
 
+    // ========== 公共 1_200_000_000 ==========
+    ErrorCode MDE_COMMON_STATUS_NOT_NULL = new ErrorCode(1_200_000_001, "状态不能为空");
+    ErrorCode MDE_COMMON_STATUS_ERROR = new ErrorCode(1_200_000_002, "修改状态必须是 {value}");
+    ErrorCode MDE_COMMON_SORT_NOT_NULL = new ErrorCode(1_200_000_003, "显示顺序不能为空");
+    ErrorCode MDE_COMMON_PARENT_ID_NOT_NULL = new ErrorCode(1_200_000_004, "上级id不能为空");
+    ErrorCode MDE_COMMON_ID_NOT_NULL = new ErrorCode(1_200_000_005, "id不能为空");
+    ErrorCode MDE_COMMON_USER_ID_NOT_NULL = new ErrorCode(1_200_000_006, "用户id不能为空");
+    ErrorCode MDE_COMMON_ENTERPRISE_ID_NOT_NULL = new ErrorCode(1_200_000_007, "企业id不能为空");
+
     // ========== 人员信息-个人档案 1_100_001_000 ==========
     ErrorCode MDE_USER_INFO_NOT_EXISTS = new ErrorCode(1_100_001_001, "人员信息-个人档案不存在");
     ErrorCode MDE_PERSON_ADVANTAGE_NOT_EXISTS = new ErrorCode(1_100_001_002, "个人优势不能为空");
@@ -52,7 +68,8 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_JOB_INTERESTED_NOT_EXISTS = new ErrorCode(1_100_007_001, "求职意向不存在");
 
     ErrorCode MDE_JOB_INTERESTED_POSITION_ID_NOT_EXISTS = new ErrorCode(1_100_007_002, "未选择期望职位");
-    ErrorCode MDE_JOB_INTERESTED_INDUSTRY_ID_LIST_NOT_EXISTS = new ErrorCode(1_100_007_003, "未选择期望行业");
+    ErrorCode MDE_JOB_INTERESTED_INDUSTRY_ID_LIST_NOT_EXISTS
+            = new ErrorCode(1_100_007_003, "未选择期望行业");
     ErrorCode MDE_JOB_INTERESTED_JOB_TYPE_NOT_EXISTS = new ErrorCode(1_100_007_004, "未选择求职类型");
     ErrorCode MDE_JOB_INTERESTED_PAY_FROM_NOT_EXISTS = new ErrorCode(1_100_007_005, "未填写薪酬最低要求");
     ErrorCode MDE_JOB_INTERESTED_PAY_TO_NOT_EXISTS = new ErrorCode(1_100_007_006, "未填写薪酬最高要求");
@@ -124,26 +141,29 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_AUTH_SOCIAL_USER_NOT_FOUND = new ErrorCode(1_200_002_003, "登录失败,解析不到三方登录信息");
     ErrorCode MDE_AUTH_MOBILE_USED = new ErrorCode(1_200_002_004, "手机号已经被使用");
 
-    ErrorCode MDE_AUTH_LOGIN_CAPTCHA_CODE_ERROR = new ErrorCode(1_002_000_004, "验证码不正确,原因:{}");
-    ErrorCode MDE_AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1_002_000_005, "未绑定账号,需要进行绑定");
-    ErrorCode MDE_AUTH_TOKEN_EXPIRED = new ErrorCode(1_002_000_006, "Token 已经过期");
-    ErrorCode MDE_AUTH_MOBILE_NOT_EXISTS = new ErrorCode(1_002_000_007, "手机号不存在");
-    ErrorCode MDE_AUTH_SEND_SMS_SCENE_NOT_NULL = new ErrorCode(1_002_000_008, "发送场景不能为空");
-    ErrorCode MDE_AUTH_PHONE_CODE_NOT_NULL = new ErrorCode(1_002_000_009, "手机code不能为空");
-    ErrorCode MDE_AUTH_LOGIN_CODE_ERROR = new ErrorCode(1_002_000_010, "登录code不能为空");
-    ErrorCode MDE_AUTH_LOGIN_STATE_NOT_NULL = new ErrorCode(1_002_000_011, "state不能为空");
-    ErrorCode MDE_AUTH_AUTHORIZATION_CODE_NOT_NULL = new ErrorCode(1_002_000_012, "授权码不能为空");
-    ErrorCode MDE_AUTH_SOCIAL_TYPE_NOT_NULL = new ErrorCode(1_002_000_013, "社交平台的类型不能为空");
-    ErrorCode MDE_AUTH_CAPTCHA_CODE_NOT_NULL = new ErrorCode(1_002_000_014, "验证码不能为空");
-    ErrorCode MDE_USER_ENTERPRISE_NOT_EXISTS = new ErrorCode(1_200_000_015, "未选择企业");
-    ErrorCode MDE_USER_ENTERPRISE_NOT_USER_NULL = new ErrorCode(1_200_000_016, "未注册用户,请先注册个人用户再申请企业用户");
+    ErrorCode MDE_AUTH_LOGIN_CAPTCHA_CODE_ERROR = new ErrorCode(1_200_002_005, "验证码不正确,原因:{}");
+    ErrorCode MDE_AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1_200_002_006, "未绑定账号,需要进行绑定");
+    ErrorCode MDE_AUTH_TOKEN_EXPIRED = new ErrorCode(1_200_002_007, "Token 已经过期");
+    ErrorCode MDE_AUTH_MOBILE_NOT_EXISTS = new ErrorCode(1_200_002_008, "手机号不存在");
+    ErrorCode MDE_AUTH_SEND_SMS_SCENE_NOT_NULL = new ErrorCode(1_200_002_009, "发送场景不能为空");
+    ErrorCode MDE_AUTH_PHONE_CODE_NOT_NULL = new ErrorCode(1_200_002_010, "手机code不能为空");
+    ErrorCode MDE_AUTH_LOGIN_CODE_ERROR = new ErrorCode(1_200_002_011, "登录code不能为空");
+    ErrorCode MDE_AUTH_LOGIN_STATE_NOT_NULL = new ErrorCode(1_200_002_012, "state不能为空");
+    ErrorCode MDE_AUTH_AUTHORIZATION_CODE_NOT_NULL = new ErrorCode(1_200_002_013, "授权码不能为空");
+    ErrorCode MDE_AUTH_SOCIAL_TYPE_NOT_NULL = new ErrorCode(1_200_002_014, "社交平台的类型不能为空");
+    ErrorCode MDE_AUTH_CAPTCHA_CODE_NOT_NULL = new ErrorCode(1_200_002_015, "验证码不能为空");
+    ErrorCode MDE_USER_ENTERPRISE_NOT_EXISTS = new ErrorCode(1_200_002_016, "未选择企业");
+    ErrorCode MDE_USER_ENTERPRISE_NOT_USER_NULL
+            = new ErrorCode(1_200_002_017, "未注册用户,请先注册个人用户再申请企业用户");
+    ErrorCode MDE_AUTH_TOKEN_NOT_NULL = new ErrorCode(1_200_002_018, "访问令牌不能为空");
 
 
     // ========== 角色模块 1_200_003_000 ==========
     ErrorCode MDE_ROLE_NOT_EXISTS = new ErrorCode(1_200_003_001, "角色不存在");
     ErrorCode MDE_ROLE_NAME_DUPLICATE = new ErrorCode(1_200_003_002, "已经存在名为【{}】的角色");
     ErrorCode MDE_ROLE_CODE_DUPLICATE = new ErrorCode(1_200_003_003, "已经存在编码为【{}】的角色");
-    ErrorCode MDE_ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1_200_003_004, "不能操作类型为系统内置的角色");
+    ErrorCode MDE_ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE
+            = new ErrorCode(1_200_003_004, "不能操作类型为系统内置的角色");
     ErrorCode MDE_ROLE_IS_DISABLE = new ErrorCode(1_200_003_005, "名字为【{}】的角色已被禁用");
     ErrorCode MDE_ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_200_003_006, "编码【{}】不能使用");
     ErrorCode MDE_ROLE_ID_NOT_NULL = new ErrorCode(1_200_003_007, "角色编号不能为空");
@@ -176,11 +196,13 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ENTERPRISE_REGISTER_BUSINESS_LICENSE_URL_NOT_NULL =
             new ErrorCode(1_200_006_007, "未上传营业执照");
 
-    ErrorCode MDE_ENTERPRISE_REGISTER_CREDIT_CODE_NOT_NULL = new ErrorCode(1_200_006_008, "统一社会信用代码不能为空");
+    ErrorCode MDE_ENTERPRISE_REGISTER_CREDIT_CODE_NOT_NULL
+            = new ErrorCode(1_200_006_008, "统一社会信用代码不能为空");
 
     ErrorCode MDE_ENTERPRISE_REGISTER_DUPLICATE = new ErrorCode(1_200_006_009, "企业已注册");
 
-    ErrorCode MDE_ENTERPRISE_REGISTER_APPLY_DUPLICATE = new ErrorCode(1_200_006_010, "企业已申请审核中,请勿重复提交");
+    ErrorCode MDE_ENTERPRISE_REGISTER_APPLY_DUPLICATE
+            = new ErrorCode(1_200_006_010, "企业已申请审核中,请勿重复提交");
 
     // ========== 企业地址 1_200_007_001 ==========
     ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_200_007_001, "企业地址不存在");
@@ -205,7 +227,6 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_JOB_ADVERTISED_EDU_TYPE_NOT_NULL = new ErrorCode(1_200_010_007, "学历要求不能为空");
 
 
-
     // ========== 企业招聘者浏览 1_200_011_000 ==========
     ErrorCode ENTERPRISE_USER_LOOK_NOT_EXISTS = new ErrorCode(1_200_011_001, "企业招聘者浏览不存在");
 
@@ -241,19 +262,14 @@ public interface ErrorCodeConstants {
     ErrorCode SKILL_NAME_CN_DUPLICATE = new ErrorCode(1_200_017_005, "已经存在该技能中文名称的职业技能");
     ErrorCode SKILL_PARENT_IS_CHILD = new ErrorCode(1_200_017_006, "不能设置自己的子Skill为父Skill");
 
-    // ========== 公共 1_200_018_000 ==========
-    ErrorCode MDE_ACCOUNT_STATUS_NOT_NULL = new ErrorCode(1_200_018_001, "状态不能为空");
-    ErrorCode MDE_ACCOUNT_STATUS_ERROR = new ErrorCode(1_200_018_002, "修改状态必须是 {value}");
-    ErrorCode MDE_ACCOUNT_SORT_NOT_NULL = new ErrorCode(1_200_018_003, "显示顺序不能为空");
-    ErrorCode MDE_ACCOUNT_PARENT_ID_NOT_NULL = new ErrorCode(1_200_018_004, "上级id不能为空");
-    ErrorCode MDE_ACCOUNT_ID_NOT_NULL = new ErrorCode(1_200_018_005, "id不能为空");
-    ErrorCode MDE_ACCOUNT_USER_ID_NOT_NULL = new ErrorCode(1_200_018_006, "用户id不能为空");
+    // ========== 占用 1_200_018_000 ==========
+
 
     // ========== 门墩儿-企业用户申请 1_200_019_000 ==========
     ErrorCode ENTERPRISE_USER_APPLY_NOT_EXISTS = new ErrorCode(1_200_019_001, "企业用户申请不存在");
     ErrorCode ENTERPRISE_USER_APPLY_APPROVED = new ErrorCode(1_200_019_002, "用户申请已审批");
-    ErrorCode ENTERPRISE_USER_APPLY_APPROVED_SUCCESS = new ErrorCode(1_200_019_003, "用户申请申请已审批通过,无法拒绝");
-    ErrorCode ENTERPRISE_USER_APPLY_ENTERPRISE_ID_NOT_NULL = new ErrorCode(1_200_019_004, "企业id不能为空");
+    ErrorCode ENTERPRISE_USER_APPLY_APPROVED_SUCCESS
+            = new ErrorCode(1_200_019_003, "用户申请申请已审批通过,无法拒绝");
     ErrorCode ENTERPRISE_USER_APPLY_APPLYING = new ErrorCode(1_200_019_005, "已申请审核中,请勿重复提交");
 
 
@@ -265,4 +281,9 @@ public interface ErrorCodeConstants {
     ErrorCode JOB_CV_REL_JOB_NOT_ALLOW_DELIVERY = new ErrorCode(1_200_020_005, "该职位暂不允许投递");
     ErrorCode JOB_CV_REL_JOB_STOP_DELIVERY = new ErrorCode(1_200_020_006, "该职位停止招聘");
 
+    ErrorCode JOB_CV_REL_TITLE_NOT_NULL = new ErrorCode(1_200_020_007, "简历附件标题不能为空");
+    ErrorCode JOB_CV_REL_URL_NOT_NULL = new ErrorCode(1_200_020_008, "简历附件地址不能为空");
+    ErrorCode JOB_CV_REL_STATUS_NOT_NULL = new ErrorCode(1_200_020_009, "投递的简历状态不能为空");
+
+
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/area/AppAreaController.java

@@ -22,7 +22,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 区域信息")
+@Tag(name = "求职端 - 区域信息")
 @RestController
 @RequestMapping("/menduner/system/area")
 @Validated

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java

@@ -5,6 +5,7 @@ import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.config.SecurityProperties;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
+import com.citu.module.menduner.system.controller.app.auth.vo.*;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.service.auth.MdeAuthService;
 import com.citu.module.system.api.social.SocialClientApi;
@@ -24,7 +25,7 @@ import javax.validation.Valid;
 import static com.citu.framework.common.pojo.CommonResult.success;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
-@Tag(name = "用户端 - 用户登录")
+@Tag(name = "求职端 - 用户登录")
 @RestController
 @RequestMapping("/menduner/system/auth")
 @Validated

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/enterprise/AppEnterpriseAuthLoginReqVO.java

@@ -1,6 +1,6 @@
 package com.citu.module.menduner.system.controller.app.auth.enterprise;
 
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -16,7 +16,7 @@ import javax.validation.constraints.NotNull;
 @Builder
 public class AppEnterpriseAuthLoginReqVO extends AppMdeAuthLoginReqVO {
 
-    @NotNull(message = "{1_200_000_015}")
+    @NotNull(message = "{1_200_002_016}")
     @Schema(description = "企业id", example = "616")
     private Long enterpriseId;
 

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/enterprise/AppEnterpriseAuthSmsLoginReqVO.java

@@ -1,6 +1,6 @@
 package com.citu.module.menduner.system.controller.app.auth.enterprise;
 
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthSmsLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthSmsLoginReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class AppEnterpriseAuthSmsLoginReqVO extends AppMdeAuthSmsLoginReqVO {
 
-    @NotNull(message = "{1_200_000_015}")
+    @NotNull(message = "{1_200_002_016}")
     @Schema(description = "企业id", example = "616")
     private Long enterpriseId;
 

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/enterprise/AppEnterpriseAuthSwitchLoginReqVO.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.controller.app.auth.enterprise;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "menduner 企业 - 切换登录 Request VO")
+@Data
+public class AppEnterpriseAuthSwitchLoginReqVO {
+
+    @NotNull(message = "{1_200_002_016}")
+    @Schema(description = "企业id", example = "616")
+    private Long enterpriseId;
+
+}

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthCheckCodeReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthCheckCodeReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import com.citu.framework.common.validation.InEnum;
 import com.citu.framework.common.validation.Mobile;
@@ -34,7 +34,7 @@ public class AppMdeAuthCheckCodeReqVO {
     private String code;
 
     @Schema(description = "发送场景,对应 SmsSceneEnum 枚举", example = "1")
-    @NotNull(message = "{1_002_000_008}")
+    @NotNull(message = "{1_200_002_009}")
     @InEnum(SmsSceneEnum.class)
     private Integer scene;
 

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import cn.hutool.core.util.StrUtil;
 import com.citu.framework.common.validation.InEnum;
@@ -30,7 +30,7 @@ public class AppMdeAuthLoginReqVO {
 
     @Schema(description = "验证码,验证码开启时,需要传递", requiredMode = Schema.RequiredMode.REQUIRED,
             example = "PfcH6mgr8tpXuMWFjvW6YVaqrswIuwmWI5dsVZSg7sGpWtDCUbHuDEXl3cFB1+VvCC/rAkSwK8Fad52FSuncVg==")
-    @NotEmpty(message = "{1_002_000_014}", groups = CodeEnableGroup.class)
+    @NotEmpty(message = "{1_200_002_015}", groups = CodeEnableGroup.class)
     private String captchaVerification;
 
     // ========== 绑定社交登录时,需要传递如下参数 ==========
@@ -45,12 +45,12 @@ public class AppMdeAuthLoginReqVO {
     @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
     private String socialState;
 
-    @AssertTrue(message = "{1_002_000_012}")
+    @AssertTrue(message = "{1_200_002_013}")
     public boolean isSocialCodeValid() {
         return socialType == null || StrUtil.isNotEmpty(socialCode);
     }
 
-    @AssertTrue(message = "{1_002_000_011}")
+    @AssertTrue(message = "{1_200_002_012}")
     public boolean isSocialState() {
         return socialType == null || StrUtil.isNotEmpty(socialState);
     }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthLoginRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthSmsLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsLoginReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import cn.hutool.core.util.StrUtil;
 import com.citu.framework.common.validation.InEnum;
@@ -45,12 +45,12 @@ public class AppMdeAuthSmsLoginReqVO {
     @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
     private String socialState;
 
-    @AssertTrue(message = "{1_002_000_012}")
+    @AssertTrue(message = "{1_200_002_013}")
     public boolean isSocialCodeValid() {
         return socialType == null || StrUtil.isNotEmpty(socialCode);
     }
 
-    @AssertTrue(message = "{1_002_000_011}")
+    @AssertTrue(message = "{1_200_002_012}")
     public boolean isSocialState() {
         return socialType == null || StrUtil.isNotEmpty(socialState);
     }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthSmsSendReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsSendReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import com.citu.framework.common.validation.InEnum;
 import com.citu.framework.common.validation.Mobile;
@@ -19,7 +19,7 @@ public class AppMdeAuthSmsSendReqVO {
     private String phone;
 
     @Schema(description = "发送场景,对应 SmsSceneEnum 枚举", example = "1")
-    @NotNull(message = "{1_002_000_008}")
+    @NotNull(message = "{1_200_002_009}")
     @InEnum(SmsSceneEnum.class)
     private Integer scene;
 

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthSmsValidateReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsValidateReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import com.citu.framework.common.validation.InEnum;
 import com.citu.framework.common.validation.Mobile;
@@ -22,7 +22,7 @@ public class AppMdeAuthSmsValidateReqVO {
     private String phone;
 
     @Schema(description = "发送场景,对应 SmsSceneEnum 枚举", example = "1")
-    @NotNull(message = "{1_002_000_008}")
+    @NotNull(message = "{1_200_002_009}")
     @InEnum(SmsSceneEnum.class)
     private Integer scene;
 

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthSocialLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSocialLoginReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import com.citu.framework.common.validation.InEnum;
 import com.citu.module.system.enums.social.SocialTypeEnum;
@@ -20,15 +20,15 @@ public class AppMdeAuthSocialLoginReqVO {
 
     @Schema(description = "社交平台的类型,参见 SocialTypeEnum 枚举值", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @InEnum(SocialTypeEnum.class)
-    @NotNull(message = "{1_002_000_013}")
+    @NotNull(message = "{1_200_002_014}")
     private Integer type;
 
     @Schema(description = "授权码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotEmpty(message = "{1_002_000_012}")
+    @NotEmpty(message = "{1_200_002_013}")
     private String code;
 
     @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
-    @NotEmpty(message = "{1_002_000_011}")
+    @NotEmpty(message = "{1_200_002_012}")
     private String state;
 
 }

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthWeixinMiniAppLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthWeixinMiniAppLoginReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
@@ -16,15 +16,15 @@ import javax.validation.constraints.NotEmpty;
 public class AppMdeAuthWeixinMiniAppLoginReqVO {
 
     @Schema(description = "手机 code,小程序通过 wx.getPhoneNumber 方法获得", requiredMode = Schema.RequiredMode.REQUIRED, example = "hello")
-    @NotEmpty(message = "{1_002_000_009}")
+    @NotEmpty(message = "{1_200_002_010}")
     private String phoneCode;
 
     @Schema(description = "登录 code,小程序通过 wx.login 方法获得", requiredMode = Schema.RequiredMode.REQUIRED, example = "word")
-    @NotEmpty(message = "{1_002_000_010}")
+    @NotEmpty(message = "{1_200_002_011}")
     private String loginCode;
 
     @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
-    @NotEmpty(message = "{1_002_000_011}")
+    @NotEmpty(message = "{1_200_002_012}")
     private String state;
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeWeixinJsapiSignatureRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeWeixinJsapiSignatureRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.app.auth;
+package com.citu.module.menduner.system.controller.app.auth.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseController.java

@@ -20,7 +20,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 企业信息")
+@Tag(name = "求职端 - 企业信息")
 @RestController
 @RequestMapping("/menduner/system/enterprise")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterprisePostController.java

@@ -16,7 +16,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 企业岗位信息")
+@Tag(name = "求职端 - 企业岗位信息")
 @RestController
 @RequestMapping("/menduner/system/enterprise-post")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseRegisterController.java

@@ -15,7 +15,7 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 企业注册申请")
+@Tag(name = "求职端 - 企业注册申请")
 @RestController
 @RequestMapping("/menduner/system/enterprise-register")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserApplyController.java

@@ -15,7 +15,7 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 企业用户申请")
+@Tag(name = "求职端 - 企业用户申请")
 @RestController
 @RequestMapping("/menduner/system/enterprise-user-apply")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserBindController.java

@@ -16,7 +16,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 企业用户")
+@Tag(name = "求职端 - 企业用户")
 @RestController
 @RequestMapping("/menduner/system/enterprise-user-bind")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserLookController.java

@@ -6,7 +6,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-@Tag(name = "用户端 - 企业招聘者浏览")
+@Tag(name = "求职端 - 企业招聘者浏览")
 @RestController
 @RequestMapping("/menduner/system/enterprise-user-look")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/apply/AppEnterpriseUserApplyReqVO.java

@@ -11,7 +11,7 @@ public class AppEnterpriseUserApplyReqVO {
 
 
     @Schema(description = "所属企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1420")
-    @NotNull(message = "{1_200_019_004}")
+    @NotNull(message = "{1_200_000_007}")
     private Long enterpriseId;
 
     @Schema(description = "企业岗位id", example = "25968")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/AppIndustryController.java

@@ -21,7 +21,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 行业信息")
+@Tag(name = "求职端 - 行业信息")
 @RestController
 @RequestMapping("/menduner/system/industry")
 @Validated

+ 6 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobAdvertisedController.java

@@ -6,6 +6,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.*;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
+import com.citu.module.menduner.system.service.job.JobIntegrationService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -22,7 +23,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 招聘职位信息")
+@Tag(name = "求职端 - 招聘职位信息")
 @RestController
 @RequestMapping("/menduner/system/job/advertised")
 @Validated
@@ -32,6 +33,9 @@ public class AppJobAdvertisedController {
     @Resource
     private JobAdvertisedService jobAdvertisedService;
 
+    @Resource
+    private JobIntegrationService jobIntegrationService;
+
     @GetMapping("/get/recommended")
     @Operation(summary = "获取推荐招聘职位分页")
     public CommonResult<PageResult<AppJobAdvertisedHomeRespVO>> getRecommendedPage(@Valid PageParam pageParam) {
@@ -77,7 +81,7 @@ public class AppJobAdvertisedController {
     @GetMapping("/search")
     @Operation(summary = "根据条件搜索招聘职位")
     public CommonResult<PageResult<AppJobAdvertisedRespVO>> search(@Valid AppJobAdvertisedSearchPageReqVO pageReqVO) {
-        PageResult<AppJobAdvertisedRespVO> respVO = jobAdvertisedService.search(pageReqVO);
+        PageResult<AppJobAdvertisedRespVO> respVO = jobIntegrationService.search(pageReqVO);
         return success(respVO);
     }
 

+ 8 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobCvRelController.java

@@ -7,6 +7,7 @@ import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
+import com.citu.module.menduner.system.service.job.JobCvRelService;
 import com.citu.module.menduner.system.service.job.JobIntegrationService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -18,7 +19,7 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 招聘职位简历投递")
+@Tag(name = "求职端 - 招聘职位简历投递")
 @RestController
 @RequestMapping("/menduner/system/job-cv-rel")
 @Validated
@@ -26,20 +27,23 @@ public class AppJobCvRelController {
 
     @Resource
     private JobIntegrationService jobIntegrationService;
+    
+    @Resource
+    private JobCvRelService jobCvRelService;
 
     @PostMapping("/send")
     @PreAuthenticated
     @Operation(summary = "投递简历")
     public CommonResult<Boolean> send(@Valid @RequestBody AppJobCvRelReqVO reqVO) {
-        jobIntegrationService.send(reqVO);
+        jobCvRelService.send(reqVO);
         return success(true);
     }
 
-    @GetMapping("/check/send")
+    @GetMapping("/send/check")
     @PreAuthenticated
     @Operation(summary = "效验招聘职位是否投递")
     public CommonResult<Boolean> checkSend(@RequestParam("jobId") Long jobId) {
-        return success(jobIntegrationService.checkSend(jobId));
+        return success(jobCvRelService.checkSend(jobId));
     }
 
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedPageReqVO.java

@@ -20,7 +20,7 @@ import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DA
 public class AppJobAdvertisedPageReqVO extends PageParam {
 
     @Schema(description = "职位id集合", example = "29465")
-    private List<Long> idList;
+    private List<Long> ids;
 
     @Schema(description = "企业id", example = "29465")
     private Long enterpriseId;

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

@@ -35,10 +35,11 @@ public class AppJobAdvertisedSearchPageReqVO extends PageParam {
     @Schema(description = "职位类型", example = "2")
     private Long positionId;
 
+    @Schema(description = "工作区域id集合", example = "[]")
+    private List<Long> areaIds;
+
 
     // ========== 企业相关 ==========
-    @Schema(description = "工作地区id集合", example = "[]")
-    private List<Long> areaIds;
 
     @Schema(description = "企业id", example = "15967")
     private Long enterpriseId;

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

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.controller.app.job.vo;
 
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSimpleRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -9,44 +10,6 @@ import java.util.List;
 
 @Schema(description = "menduner - 首页-职位简易 Response VO")
 @Data
-public class AppJobAdvertisedSimpleRespVO {
+public class AppJobAdvertisedSimpleRespVO extends JobAdvertisedSimpleRespVO {
 
-    @Schema(description = "职位id", example = "123")
-    private Long id;
-
-    @Schema(description = "发布用户id", example = "9592")
-    private Long userId;
-
-    @Schema(description = "招聘职位标题", example = "项目经理")
-    private String name;
-
-    @Schema(description = "职位类型id", example = "123")
-    private Long positionId;
-
-    @Schema(description = "薪酬from", example = "6")
-    private BigDecimal payFrom;
-
-    @Schema(description = "薪酬to", example = "12")
-    private BigDecimal payTo;
-
-    @Schema(description = "薪酬单位(menduner_pay_unit)", example = "月/年")
-    private String payUnit;
-
-    @Schema(description = "工作地区id", example = "110000")
-    private Long areaId;
-
-    @Schema(description = "工作经验(menduner_exp_type)", example = "1")
-    private String expType;
-
-    @Schema(description = "学历要求(menduner_education_type)", example = "1")
-    private String eduType;
-
-    @Schema(description = "职位标签", example = "[xx,xx]")
-    private List<String> tagList;
-
-    @Schema(description = "状态", example = "1")
-    private String status;
-
-    @Schema(description = "更新时间")
-    private LocalDateTime updateTime;
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/major/AppMajorController.java

@@ -16,7 +16,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 专业信息")
+@Tag(name = "求职端 - 专业信息")
 @RestController
 @RequestMapping("/menduner/system/major")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonController.java

@@ -27,7 +27,7 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 人才信息")
+@Tag(name = "求职端 - 人才信息")
 @RestController
 @RequestMapping("/menduner/system/person")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonRecordController.java

@@ -21,7 +21,7 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 记录")
+@Tag(name = "求职端 - 记录")
 @RestController
 @RequestMapping("/menduner/system/person/record")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonResumeController.java

@@ -46,7 +46,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 人才简历")
+@Tag(name = "求职端 - 人才简历")
 @RestController
 @RequestMapping("/menduner/system/person/resume")
 @Validated

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/enterprise/PersonEnterpriseSubscribeReqVO.java

@@ -3,10 +3,14 @@ package com.citu.module.menduner.system.controller.app.person.enterprise;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 @Schema(description = "menduner 用户关注订阅企业 Request VO")
 @Data
 public class PersonEnterpriseSubscribeReqVO {
 
+    @NotNull(message = "{1_200_000_007}")
     @Schema(description = "企业id", example = "19293")
     private Long enterpriseId;
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java

@@ -20,7 +20,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 职位信息")
+@Tag(name = "求职端 - 职位信息")
 @RestController
 @RequestMapping("/menduner/system/position")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/school/AppSchoolController.java

@@ -18,7 +18,7 @@ import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "用户端 - 学校信息")
+@Tag(name = "求职端 - 学校信息")
 @RestController
 @RequestMapping("/menduner/system/school")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/test/TestController.java

@@ -14,7 +14,7 @@ import java.util.Locale;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_AREA_HOT_EXISTS;
 
-@Tag(name = "用户端 - test")
+@Tag(name = "求职端 - test")
 @RestController
 @RequestMapping("/menduner/system/test")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/AppMdeUserController.java

@@ -19,7 +19,7 @@ import javax.validation.Valid;
 import static com.citu.framework.common.pojo.CommonResult.success;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
-@Tag(name = "用户端 - 用户信息")
+@Tag(name = "求职端 - 用户信息")
 @RestController
 @RequestMapping("/menduner/system/mde-user")
 @Validated

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/vo/AppMdeUserUpdatePhoneByWeixinReqVO.java

@@ -11,7 +11,7 @@ public class AppMdeUserUpdatePhoneByWeixinReqVO {
 
     @Schema(description = "手机 code,小程序通过 wx.getPhoneNumber 方法获得",
             requiredMode = Schema.RequiredMode.REQUIRED, example = "hello")
-    @NotEmpty(message = "{1_002_000_009}")
+    @NotEmpty(message = "{1_200_002_010}")
     private String code;
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/visits/AppMdeVisitsController.java

@@ -5,7 +5,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-@Tag(name = "用户端 - 访问量")
+@Tag(name = "求职端 - 访问量")
 @RestController
 @RequestMapping("/menduner/system/visits")
 @Validated

+ 12 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/auth/AppAdminEnterpriseAuthController.java

@@ -1,9 +1,11 @@
 package com.citu.module.menduner.system.controller.appadmin.auth;
 
 import com.citu.framework.common.pojo.CommonResult;
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthLoginRespVO;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthSwitchLoginReqVO;
 import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthLoginReqVO;
 import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthSmsLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginRespVO;
 import com.citu.module.menduner.system.service.auth.MdeEnterpriseAuthService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -48,4 +50,13 @@ public class AppAdminEnterpriseAuthController {
         return success(enterpriseAuthService.smsLogin(reqVO));
     }
 
+    // ========== 自动登录相关 ==========
+    @PreAuthenticated
+    @PostMapping("/switch-login")
+    @Operation(summary = "切换登录")
+    public CommonResult<AppMdeAuthLoginRespVO> switchLogin(
+            @RequestBody @Valid AppEnterpriseAuthSwitchLoginReqVO reqVO) {
+        return success(enterpriseAuthService.switchLogin(reqVO));
+    }
+
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/auth/vo/AppEnterpriseAuthLoginReqVO.java

@@ -1,6 +1,6 @@
 package com.citu.module.menduner.system.controller.appadmin.auth.vo;
 
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -16,7 +16,7 @@ import javax.validation.constraints.NotNull;
 @Builder
 public class AppEnterpriseAuthLoginReqVO extends AppMdeAuthLoginReqVO {
 
-    @NotNull(message = "{1_200_000_015}")
+    @NotNull(message = "{1_200_002_016}")
     @Schema(description = "企业id", example = "616")
     private Long enterpriseId;
 

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/auth/vo/AppEnterpriseAuthSmsLoginReqVO.java

@@ -1,6 +1,6 @@
 package com.citu.module.menduner.system.controller.appadmin.auth.vo;
 
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthSmsLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthSmsLoginReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class AppEnterpriseAuthSmsLoginReqVO extends AppMdeAuthSmsLoginReqVO {
 
-    @NotNull(message = "{1_200_000_015}")
+    @NotNull(message = "{1_200_002_016}")
     @Schema(description = "企业id", example = "616")
     private Long enterpriseId;
 

+ 17 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/cv/AppAdminJobCvRelPageReqVO.java

@@ -0,0 +1,17 @@
+package com.citu.module.menduner.system.controller.appadmin.cv;
+
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonPageReqVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 招聘职位简历投递分页 Request VO")
+@Data
+public class AppAdminJobCvRelPageReqVO extends AppAdminPersonPageReqVO {
+
+    @Schema(description = "简历投递状态",example = "1")
+    private String status;
+
+    @Schema(description = "投递的岗位", example = "1")
+    private Long jobId;
+
+}

+ 36 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/cv/AppAdminJobCvRelRespVO.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.system.controller.appadmin.cv;
+
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Schema(description = "menduner - 招聘职位简历投递分页 Response VO")
+@Data
+public class AppAdminJobCvRelRespVO {
+
+    @Schema(description = "id", example = "24200")
+    private Long id;
+
+    @Schema(description = "简历附件标题")
+    private String title;
+
+    @Schema(description = "简历附件地址")
+    private String url;
+
+    @Schema(description = "投递用户id")
+    private Long userId;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "人才信息")
+    private AppAdminPersonSimpleRespVO person;
+
+    @Schema(description = "招聘信息")
+    private AppAdminJobSimpleRespVO job;
+
+}

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/enterprise/AppAdminEnterpriseUserBindController.java

@@ -25,7 +25,6 @@ public class AppAdminEnterpriseUserBindController {
     private EnterpriseUserBindService enterpriseUserBindService;
 
 
-
     @PreAuthenticated
     @GetMapping("/get/user")
     @Operation(summary = "获取当前登录的企业用户信息")

+ 9 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java

@@ -3,12 +3,12 @@ package com.citu.module.menduner.system.controller.appadmin.job;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.string.StrUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobDetailRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobRespVO;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import com.citu.module.menduner.system.service.job.JobIntegrationService;
@@ -37,7 +37,7 @@ public class AppAdminJobAdvertisedController {
     @PreAuthenticated
     @GetMapping("/page")
     @Operation(summary = "获得招聘职位分页")
-    public CommonResult<PageResult<AppAdminJobSimpleRespVO>> page(@Valid AppAdminJobPageReqVO pageReqVO) {
+    public CommonResult<PageResult<AppAdminJobRespVO>> page(@Valid AppAdminJobPageReqVO pageReqVO) {
         return success(jobIntegrationService.page(pageReqVO));
     }
 
@@ -60,27 +60,26 @@ public class AppAdminJobAdvertisedController {
     @PreAuthenticated
     @PostMapping("/enable")
     @Operation(summary = "开启职位")
-    public CommonResult<Boolean> enable(@RequestParam("id") Long id) {
-        jobAdvertisedService.enable(id);
+    public CommonResult<Boolean> enable(@RequestParam("ids") String ids) {
+        jobAdvertisedService.enable(StrUtils.splitToLong(ids));
         return success(true);
     }
 
     @PreAuthenticated
     @PostMapping("/disable")
     @Operation(summary = "关闭职位")
-    public CommonResult<Boolean> disable(@RequestParam("id") Long id) {
-        jobAdvertisedService.disable(id);
+    public CommonResult<Boolean> disable(@RequestParam("ids") String ids) {
+        jobAdvertisedService.disable(StrUtils.splitToLong(ids));
         return success(true);
     }
 
     @PreAuthenticated
     @PostMapping("/refresh")
     @Operation(summary = "刷新职位")
-    public CommonResult<Boolean> refresh(@RequestParam("id") Long id) {
-        jobAdvertisedService.refresh(id);
+    public CommonResult<Boolean> refresh(@RequestParam("ids") String ids) {
+        jobAdvertisedService.refresh(StrUtils.splitToLong(ids));
         return success(true);
     }
 
 
-
 }

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobRespVO.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.controller.appadmin.job.vo;
+
+
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "招聘者 - 门墩儿-招聘职位 Response VO")
+@Data
+public class AppAdminJobRespVO extends JobAdvertisedSimpleRespVO {
+
+    @Schema(description = "过期时间")
+    private LocalDateTime expireTime;
+
+    @Schema(description = "是否置顶")
+    private Boolean top;
+
+    @Schema(description = "待筛选的简历总数量")
+    private Long count;
+
+    @Schema(description = "到期天数")
+    private Long expireDay;
+}

+ 3 - 14
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobSimpleRespVO.java

@@ -1,25 +1,14 @@
 package com.citu.module.menduner.system.controller.appadmin.job.vo;
 
 
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSimpleRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
 
-@Schema(description = "招聘者 - 门墩儿-招聘职位 Response VO")
+@Schema(description = "招聘者 - 招聘职位简易 Response VO")
 @Data
-public class AppAdminJobSimpleRespVO extends AppJobAdvertisedSimpleRespVO {
+public class AppAdminJobSimpleRespVO extends JobAdvertisedSimpleRespVO {
 
-    @Schema(description = "过期时间")
-    private LocalDateTime expireTime;
-
-    @Schema(description = "是否置顶")
-    private Boolean top;
-
-    @Schema(description = "待筛选的简历总数量")
-    private Long count;
-
-    @Schema(description = "到期天数")
-    private Long expireDay;
 }

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/AppAdminPersonCvController.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.controller.appadmin.person;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelRespVO;
+import com.citu.module.menduner.system.service.job.JobIntegrationService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+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 javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "招聘端 - 人才投递")
+@RestController
+@RequestMapping("/menduner/system/person-cv")
+@Validated
+public class AppAdminPersonCvController {
+
+    @Resource
+    private JobIntegrationService jobIntegrationService;
+
+    @PreAuthenticated
+    @GetMapping("/page")
+    @Operation(summary = "获得投递职位分页")
+    public CommonResult<PageResult<AppAdminJobCvRelRespVO>> page(@Valid AppAdminJobCvRelPageReqVO pageReqVO) {
+        return success(jobIntegrationService.page(pageReqVO));
+    }
+
+}

+ 40 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/eduexp/AppAdminEduExpRespVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.menduner.system.controller.appadmin.person.eduexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+@Schema(description = "menduner - 教育经历 Response VO")
+public class AppAdminEduExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24831")
+    private Long id;
+
+    @Schema(description = "学校名称(没有选择系统企业可自定义)", example = "李四")
+    private String schoolName;
+
+    @Schema(description = "学历(0初中及以下 | 1中专/中技 | 2高中 | 3大专 | 4 本科 5 硕士 6 博士 99 其他)", example = "2")
+    private String educationType;
+
+    @Schema(description = "学制类型(0 全日制 | 1 非全日制)", example = "1")
+    private String educationSystemType;
+
+    @Schema(description = "专业名称(没有选择系统企业可自定义)")
+    private String major;
+
+    @Schema(description = "在校开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在校结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "在校经历")
+    private String content;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/eduexp/AppAdminEduExpSimpleRespVO.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.controller.appadmin.person.eduexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+@Schema(description = "menduner - 简易教育经历 Response VO")
+public class AppAdminEduExpSimpleRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24831")
+    private Long id;
+
+    @Schema(description = "学校名称(没有选择系统企业可自定义)", example = "李四")
+    private String schoolName;
+
+    @Schema(description = "学历(0初中及以下 | 1中专/中技 | 2高中 | 3大专 | 4 本科 5 硕士 6 博士 99 其他)", example = "2")
+    private String educationType;
+
+    @Schema(description = "专业名称(没有选择系统企业可自定义)")
+    private String major;
+
+    @Schema(description = "在校开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在校结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/vo/AppAdminPersonPageReqVO.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.controller.appadmin.person.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "menduner - 人才分页检索")
+@Data
+public class AppAdminPersonPageReqVO extends PageParam {
+
+    @Schema(description = "人才姓名", example = "张三")
+    private String name;
+
+    @Schema(description = "用户id", example = "[]")
+    private List<Long> userId;
+
+    @Schema(description = "工作经验(menduner_exp_type)", example = "1")
+    private String expType;
+
+    @Schema(description = "学历要求(menduner_education_type)", example = "1")
+    private String eduType;
+
+    @Schema(description = "求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)", example = "1")
+    private String jobStatus;
+}

+ 51 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/vo/AppAdminPersonSimpleRespVO.java

@@ -0,0 +1,51 @@
+package com.citu.module.menduner.system.controller.appadmin.person.vo;
+
+import com.citu.module.menduner.system.controller.appadmin.person.eduexp.AppAdminEduExpSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.person.workexp.AppAdminWorkExpSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "menduner - 个人简易信息 Response VO")
+@Data
+public class AppAdminPersonSimpleRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25036")
+    private Long id;
+
+    @Schema(description = "用户id")
+    private Long userId;
+
+    @Schema(description = "真实姓名", example = "王五")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private String sex;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @Schema(description = "出生日期")
+    private LocalDateTime birthday;
+
+    @Schema(description = "求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)", example = "1")
+    private String jobStatus;
+
+    @Schema(description = "工作经验", example = "1")
+    private String expType;
+
+    @Schema(description = "学历", example = "2")
+    private String eduType;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "教育经历信息")
+    private List<AppAdminEduExpSimpleRespVO> eduExpList;
+
+    @Schema(description = "工作经验信息")
+    private List<AppAdminWorkExpSimpleRespVO> workExpList;
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/workexp/AppAdminWorkExpRespVO.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.controller.appadmin.person.workexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner - 工作经历 Response VO")
+public class AppAdminWorkExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2363")
+    private Long id;
+
+    @Schema(description = "企业名称(没有选择系统企业时可自定义)", example = "张三")
+    private String enterpriseName;
+
+    @Schema(description = "所属行业", example = "21570")
+    private Long industryId;
+
+    @Schema(description = "所属部门", example = "李四")
+    private String deptName;
+
+    @Schema(description = "职位名称(没有选择系统职位时可自定义)", example = "赵六")
+    private String positionName;
+
+    @Schema(description = "在职开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在职结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "工作内容")
+    private String content;
+
+    @Schema(description = "业绩")
+    private String achievement;
+
+    @Schema(description = "薪酬")
+    private BigDecimal pay;
+
+    @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
+    private String payUnit;
+
+    @Schema(description = "货币类型", example = "2")
+    private String currencyType;
+
+    @Schema(description = "技能")
+    private String skillList;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/person/workexp/AppAdminWorkExpSimpleRespVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.appadmin.person.workexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner - 简易工作经历 Response VO")
+public class AppAdminWorkExpSimpleRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2363")
+    private Long id;
+
+    @Schema(description = "企业名称(没有选择系统企业时可自定义)", example = "张三")
+    private String enterpriseName;
+
+    @Schema(description = "职位名称(没有选择系统职位时可自定义)", example = "赵六")
+    private String positionName;
+
+    @Schema(description = "在职开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在职结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/certificate/CertificateSaveReqVO.java

@@ -20,7 +20,7 @@ public class CertificateSaveReqVO {
     private String nameEn;
 
     @Schema(description = "上级id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19827")
-    @NotNull(message = "{1_200_018_004}")
+    @NotNull(message = "{1_200_000_004}")
     private Long parentId;
 
     @Schema(description = "层级")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSaveReqVO.java

@@ -43,7 +43,7 @@ public class EnterpriseUserBindSaveReqVO {
     private String email;
 
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotBlank(message = "{1_200_018_001}")
+    @NotBlank(message = "{1_200_000_001}")
     private String status;
 
     @Schema(description = "最后登录IP")

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/post/EnterprisePostSaveReqVO.java

@@ -29,11 +29,11 @@ public class EnterprisePostSaveReqVO {
     private String nameEn;
 
     @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "{1_200_018_003}")
+    @NotNull(message = "{1_200_000_003}")
     private Integer sort;
 
     @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotBlank(message = "{1_200_018_001}")
+    @NotBlank(message = "{1_200_000_001}")
     private String status;
 
     @Schema(description = "备注", example = "随便")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterAuditReqVO.java

@@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class EnterpriseRegisterAuditReqVO {
 
-    @NotNull(message = "{1_200_018_005}")
+    @NotNull(message = "{1_200_000_005}")
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9045")
     private Long id;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterSaveReqVO.java

@@ -32,7 +32,7 @@ public class EnterpriseRegisterSaveReqVO {
     private String businessLicenseUrl;
 
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotBlank(message = "{1_200_018_001}")
+    @NotBlank(message = "{1_200_000_001}")
     private String status;
 
     @Schema(description = "审核原因", example = "不喜欢")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/user/EnterpriseUserApplyAuditReqVO.java

@@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class EnterpriseUserApplyAuditReqVO {
 
-    @NotNull(message = "{1_200_018_005}" )
+    @NotNull(message = "{1_200_000_005}" )
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9045")
     private Long id;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/user/EnterpriseUserApplySaveReqVO.java

@@ -13,7 +13,7 @@ public class EnterpriseUserApplySaveReqVO {
     private Long id;
 
     @Schema(description = "所属企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1420")
-    @NotNull(message = "{1_200_019_004}")
+    @NotNull(message = "{1_200_000_007}")
     private Long enterpriseId;
 
     @Schema(description = "企业岗位id", example = "25968")

+ 53 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedSimpleRespVO.java

@@ -0,0 +1,53 @@
+package com.citu.module.menduner.system.controller.base.job;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "menduner - 招聘职位简易 Response VO")
+@Data
+public class JobAdvertisedSimpleRespVO {
+
+    @Schema(description = "职位id", example = "123")
+    private Long id;
+
+    @Schema(description = "发布用户id", example = "9592")
+    private Long userId;
+
+    @Schema(description = "招聘职位标题", example = "项目经理")
+    private String name;
+
+    @Schema(description = "职位类型id", example = "123")
+    private Long positionId;
+
+    @Schema(description = "薪酬from", example = "6")
+    private BigDecimal payFrom;
+
+    @Schema(description = "薪酬to", example = "12")
+    private BigDecimal payTo;
+
+    @Schema(description = "薪酬单位(menduner_pay_unit)", example = "月/年")
+    private String payUnit;
+
+    @Schema(description = "工作地区id", example = "110000")
+    private Long areaId;
+
+    @Schema(description = "工作经验(menduner_exp_type)", example = "1")
+    private String expType;
+
+    @Schema(description = "学历要求(menduner_education_type)", example = "1")
+    private String eduType;
+
+    @Schema(description = "职位标签", example = "[xx,xx]")
+    private List<String> tagList;
+
+    @Schema(description = "状态", example = "1")
+    private String status;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 7 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobCvRelSaveReqVO.java

@@ -14,31 +14,31 @@ public class JobCvRelSaveReqVO {
     private Long id;
 
     @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20026")
-    @NotNull(message = "企业id不能为空")
+    @NotNull(message = "{1_200_000_007}")
     private Long enterpriseId;
 
     @Schema(description = "发布的职位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19402")
-    @NotNull(message = "发布的职位id不能为空")
+    @NotNull(message = "{1_200_020_004}")
     private Long jobId;
 
     @Schema(description = "发布职位的用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6227")
-    @NotNull(message = "发布职位的用户id不能为空")
+    @NotNull(message = "{1_200_000_006}")
     private Long publishUserId;
 
     @Schema(description = "投递用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7769")
-    @NotNull(message = "投递用户id不能为空")
+    @NotNull(message = "{1_200_000_006}")
     private Long userId;
 
     @Schema(description = "简历附件标题", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "简历附件标题不能为空")
+    @NotEmpty(message = "{1_200_020_007}")
     private String title;
 
     @Schema(description = "简历附件地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
-    @NotEmpty(message = "简历附件地址不能为空")
+    @NotEmpty(message = "{1_200_020_008}")
     private String url;
 
     @Schema(description = "投递的简历状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotEmpty(message = "投递的简历状态不能为空")
+    @NotEmpty(message = "{1_200_020_009}")
     private String status;
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/major/MajorSaveReqVO.java

@@ -19,7 +19,7 @@ public class MajorSaveReqVO {
     private String nameEn;
 
     @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotBlank(message = "{1_200_018_001}")
+    @NotBlank(message = "{1_200_000_001}")
     private String status;
 
 }

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

@@ -28,7 +28,7 @@ public class MdeRoleSaveReqVO {
     private String code;
 
     @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "{1_200_018_003}")
+    @NotNull(message = "{1_200_000_003}")
     @DiffLogField(name = "显示顺序")
     private Integer sort;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/school/SchoolSaveReqVO.java

@@ -40,7 +40,7 @@ public class SchoolSaveReqVO {
     private String latitude;
 
     @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotBlank(message = "{1_200_018_001}")
+    @NotBlank(message = "{1_200_000_001}")
     private String status;
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/user/MdeUserSaveReqVO.java

@@ -33,7 +33,7 @@ public class MdeUserSaveReqVO {
     private String avatar;
 
     @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotBlank(message = "{1_200_018_001}")
+    @NotBlank(message = "{1_200_000_001}")
     private String status;
 
     @Schema(description = "注册 IP")

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/user/MdeUserUpdateStatusReqVO.java

@@ -17,8 +17,8 @@ public class MdeUserUpdateStatusReqVO {
     private Long id;
 
     @Schema(description = "状态,见 MendunerStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotBlank(message = "{1_200_018_001}")
-    @InEnum(value = MendunerStatusEnum.class, message = "{1_200_018_002}")
+    @NotBlank(message = "{1_200_000_001}")
+    @InEnum(value = MendunerStatusEnum.class, message = "{1_200_000_002}")
     private String status;
 
 }

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

@@ -4,7 +4,7 @@ import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDet
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSimpleRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobDetailRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import org.mapstruct.Mapper;
@@ -35,7 +35,7 @@ public interface JobAdvertisedConvert {
     JobAdvertisedDO convert3(AppAdminJobReqVO bean);
 
     @Named("convert4")
-    AppAdminJobSimpleRespVO convert4(JobAdvertisedDO bean);
+    AppAdminJobRespVO convert4(JobAdvertisedDO bean);
 
     AppAdminJobDetailRespVO convert5(AppJobAdvertisedDetailRespVO resp);
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/MdeAuthConvert.java

@@ -1,7 +1,7 @@
 package com.citu.module.menduner.system.convert;
 
 
-import com.citu.module.menduner.system.controller.app.auth.*;
+import com.citu.module.menduner.system.controller.app.auth.vo.*;
 import com.citu.module.menduner.system.controller.app.user.vo.AppMdeUserResetPasswordReqVO;
 import com.citu.module.system.api.oauth2.dto.OAuth2AccessTokenRespDTO;
 import com.citu.module.system.api.sms.dto.code.SmsCodeSendReqDTO;

+ 17 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseMapper.java

@@ -5,14 +5,15 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
-import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseListReqVO;
-import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterprisePageReqVO;
-import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSearchPageReqVO;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.CommonRespVO;
+import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseListReqVO;
+import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterprisePageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.springframework.util.StringUtils;
 
 import java.util.Collection;
 import java.util.List;
@@ -38,26 +39,31 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
                 .orderByDesc(EnterpriseDO::getId));
     }
 
-    default PageResult<AppEnterpriseSimpleRespVO> selectPage(PageParam pageParam){
+    default PageResult<AppEnterpriseSimpleRespVO> selectPage(PageParam pageParam) {
         MPJLambdaWrapperX<EnterpriseDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(EnterpriseDO.class);
         return selectJoinPage(pageParam, AppEnterpriseSimpleRespVO.class, query);
     }
 
-    default PageResult<AppEnterpriseSimpleRespVO> selectByIdListPage(PageParam pageParam,List<Long> idList){
+    default PageResult<AppEnterpriseSimpleRespVO> selectByIdListPage(PageParam pageParam, List<Long> ids) {
         MPJLambdaWrapperX<EnterpriseDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(EnterpriseDO.class);
-        query.in(EnterpriseDO::getId, idList);
+        query.in(EnterpriseDO::getId, ids);
         return selectJoinPage(pageParam, AppEnterpriseSimpleRespVO.class, query);
     }
 
-    default PageResult<AppEnterpriseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO){
+    default PageResult<AppEnterpriseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO) {
         MPJLambdaWrapperX<EnterpriseDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(EnterpriseDO.class);
         query.selectAll(EnterpriseBusinessDO.class);
-        query.innerJoin(EnterpriseBusinessDO.class,  EnterpriseBusinessDO::getEnterpriseId,EnterpriseDO::getId);
-        query.likeIfPresent(EnterpriseDO::getName, reqVO.getName());
-        query.likeIfPresent(EnterpriseDO::getAnotherName, reqVO.getName());
+        query.innerJoin(EnterpriseBusinessDO.class, EnterpriseBusinessDO::getEnterpriseId, EnterpriseDO::getId);
+        if (StringUtils.hasText(reqVO.getName())) {
+            query.and(wrapper -> wrapper
+                    .likeIfExists(EnterpriseDO::getName, reqVO.getName())
+                    .or()
+                    .likeIfExists(EnterpriseDO::getAnotherName, reqVO.getName())
+            );
+        }
         query.inIfPresent(EnterpriseDO::getIndustryId, reqVO.getIndustryIds());
         query.eqIfPresent(EnterpriseDO::getScale, reqVO.getScale());
         query.eqIfPresent(EnterpriseDO::getFinancingStatus, reqVO.getFinancingStatus());
@@ -74,8 +80,7 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
         return selectList(EnterpriseDO::getParentId, parentIds);
     }
 
-     List<CommonRespVO> searchByName(String name);
-
+    List<CommonRespVO> searchByName(String name);
 
 
 }

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java

@@ -67,12 +67,12 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         return selectJoinPage(pageParam, AppJobAdvertisedHomeRespVO.class, query);
     }
 
-    default PageResult<AppJobAdvertisedRespVO> selectByIdListPage(PageParam pageParam, List<Long> idList) {
+    default PageResult<AppJobAdvertisedRespVO> selectByIdListPage(PageParam pageParam, List<Long> ids) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAssociation(JobAdvertisedDO.class, AppJobAdvertisedRespVO::getJob);
         query.selectAssociation(EnterpriseDO.class, AppJobAdvertisedRespVO::getEnterprise);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
-        query.in(JobAdvertisedDO::getId, idList);
+        query.in(JobAdvertisedDO::getId, ids);
         query.orderByDesc(JobAdvertisedDO::getUpdateTime);
         return selectJoinPage(pageParam, AppJobAdvertisedRespVO.class, query);
     }
@@ -94,11 +94,11 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
             // 获取过期的数据 当前时间小于过期时间
             query.le(JobAdvertisedDO::getExpireTime, LocalDateTime.now());
         } else {
-            query
+            query.and(wrapper -> wrapper
                     .ge(JobAdvertisedDO::getExpireTime, LocalDateTime.now())
                     .or()
                     .isNull(JobAdvertisedDO::getExpireTime)
-            ;
+            );
         }
         return selectPage(reqVO, query);
     }

+ 19 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java

@@ -3,8 +3,15 @@ package com.citu.module.menduner.system.dal.mysql.job;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelRespVO;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -27,7 +34,18 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
                 .eqIfPresent(JobCvRelDO::getUserId, reqVO.getUserId())
                 .eqIfPresent(JobCvRelDO::getStatus, reqVO.getStatus())
                 .betweenIfPresent(JobCvRelDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(JobCvRelDO::getId));
+                .orderByDesc(JobCvRelDO::getUpdateTime));
+    }
+
+    default PageResult<AppAdminJobCvRelRespVO> selectPage(AppAdminJobCvRelPageReqVO reqVO) {
+        MPJLambdaWrapperX<JobCvRelDO> wrapper =  new MPJLambdaWrapperX<>();
+        wrapper.selectAsClass(JobCvRelDO.class, AppAdminJobCvRelRespVO.class);
+        wrapper.selectAssociation(JobAdvertisedDO.class,AppAdminJobCvRelRespVO::getJob);
+        wrapper.innerJoin(JobAdvertisedDO.class,JobAdvertisedDO::getId,JobCvRelDO::getJobId);
+        wrapper.eqIfPresent(JobCvRelDO::getJobId, reqVO.getJobId());
+        wrapper.eqIfPresent(JobCvRelDO::getStatus, reqVO.getStatus());
+        wrapper.orderByDesc(JobCvRelDO::getUpdateTime);
+        return selectJoinPage(reqVO, AppAdminJobCvRelRespVO.class, wrapper);
     }
 
     // 根据用户ID和职位id判断15天内是否有数据,如果有返回true

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonInfoMapper.java

@@ -3,8 +3,13 @@ package com.citu.module.menduner.system.dal.mysql.person;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.controller.base.person.info.PersonInfoPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -33,4 +38,24 @@ public interface PersonInfoMapper extends BaseMapperX<PersonInfoDO> {
                 .orderByDesc(PersonInfoDO::getId));
     }
 
+
+    default PageResult<AppAdminPersonSimpleRespVO> selectSimplePersonPage(AppAdminPersonPageReqVO reqVO) {
+        MPJLambdaWrapperX<PersonInfoDO> wrapper =  new MPJLambdaWrapperX<>();
+        wrapper.selectAsClass(PersonInfoDO.class, AppAdminPersonSimpleRespVO.class);
+        wrapper.selectCollection(WorkExpDO.class,AppAdminPersonSimpleRespVO::getWorkExpList);
+        wrapper.selectCollection(EduExpDO.class,AppAdminPersonSimpleRespVO::getEduExpList);
+        wrapper.leftJoin(WorkExpDO.class,WorkExpDO::getUserId,PersonInfoDO::getUserId);
+        wrapper.leftJoin(EduExpDO.class,EduExpDO::getUserId,PersonInfoDO::getUserId);
+        wrapper.eqIfPresent(PersonInfoDO::getJobStatus, reqVO.getJobStatus());
+        wrapper.eqIfPresent(PersonInfoDO::getEduType, reqVO.getEduType());
+        wrapper.eqIfPresent(PersonInfoDO::getExpType, reqVO.getExpType());
+        wrapper.likeIfPresent(PersonInfoDO::getName, reqVO.getName());
+        wrapper.inIfPresent(PersonInfoDO::getUserId, reqVO.getUserId());
+
+        wrapper.orderByDesc(WorkExpDO::getStartTime);
+        wrapper.orderByDesc(EduExpDO::getStartTime);
+        wrapper.orderByDesc(PersonInfoDO::getUpdateTime);
+        return selectJoinPage(reqVO, AppAdminPersonSimpleRespVO.class, wrapper);
+    }
+
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionMapper.java

@@ -55,8 +55,8 @@ public interface PositionMapper extends BaseMapperX<PositionDO> {
         return selectList(PositionDO::getParentId, parentIds);
     }
 
-    default List<PositionDO> selectListByIdList(Collection<Long> idList) {
-        return selectList(PositionDO::getId, idList);
+    default List<PositionDO> selectListByIdList(Collection<Long> ids) {
+        return selectList(PositionDO::getId, ids);
     }
 
     /**

+ 17 - 9
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/redis/RedisKeyConstants.java

@@ -14,12 +14,12 @@ public interface RedisKeyConstants {
      * KEY 格式:enterprise_children_ids:{id}
      * VALUE 数据类型:String 子企业编号集合
      */
-    String ENTERPRISE_CHILDREN_ID_LIST = "enterprise_children_ids";
+    String ENTERPRISE_CHILDREN_IDS = "enterprise_children_ids";
 
     /**
      * 角色的缓存
      * <p>
-     * KEY 格式:role:{id}
+     * KEY 格式:mde_role:{id}
      * VALUE 数据类型:String 角色信息
      */
     String MDE_ROLE = "mde_role";
@@ -27,10 +27,10 @@ public interface RedisKeyConstants {
     /**
      * 用户拥有的角色编号的缓存
      * <p>
-     * KEY 格式:user_role_ids:{userId}
+     * KEY 格式:mde_user_role_ids:{userId}
      * VALUE 数据类型:String 角色编号集合
      */
-    String MDE_USER_ROLE_ID_LIST = "mde_user_role_ids";
+    String MDE_USER_ROLE_IDS = "mde_user_role_ids";
 
     /**
      * 指定区域的所有子区域信息的缓存
@@ -38,7 +38,15 @@ public interface RedisKeyConstants {
      * KEY 格式:mde_area_children:{id}
      * VALUE 数据类型:String 子区域编号集合
      */
-    String MDE_AREA_CHILDREN_id_LIST ="mde_area_children";
+    String MDE_AREA_CHILDREN ="mde_area_children";
+
+    /**
+     * 指定区域的所有子区域id的缓存
+     * <p>
+     * KEY 格式:mde_area_ids:{id}
+     * VALUE 数据类型:String 子区域编号集合
+     */
+    String MDE_AREA_IDS ="mde_area_ids";
 
     /**
      * 所有区域信息的缓存
@@ -51,18 +59,18 @@ public interface RedisKeyConstants {
     /**
      * 指定职位的所有子区域信息的缓存
      * <p>
-     * KEY 格式:mde_area_children:{id}
+     * KEY 格式:mde_position_children:{id}
      * VALUE 数据类型:String 子职位编号集合
      */
-    String MDE_POSITION_CHILDREN_id_LIST ="mde_position_children";
+    String MDE_POSITION_CHILDREN ="mde_position_children";
 
     /**
      * 指定行业的所有子行业信息的缓存
      * <p>
-     * KEY 格式:mde_area_children:{id}
+     * KEY 格式:mde_industry_children:{id}
      * VALUE 数据类型:String 子行业编号集合
      */
-    String MDE_INDUSTRY_CHILDREN_id_LIST ="mde_industry_children";
+    String MDE_INDUSTRY_CHILDREN ="mde_industry_children";
 
 
 }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/framework/datapermission/config/DataPermissionConfiguration.java

@@ -4,6 +4,8 @@ package com.citu.module.menduner.system.framework.datapermission.config;
 import com.citu.module.menduner.system.config.permission.CustomDataPermissionRuleCustomizer;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -28,6 +30,10 @@ public class DataPermissionConfiguration {
             // 企业用户绑定表 where user_id = xx and enterprise_id = xx
 //            rule.addUserColumn(EnterpriseUserBindDO.class, "user_id");
 //            rule.addDataColumn(EnterpriseUserBindDO.class, "enterprise_id");
+
+            // 简历投递表 where publish_user_id = xx and enterprise_id = xx
+            rule.addUserColumn(JobCvRelDO.class, "publish_user_id");
+            rule.addDataColumn(JobCvRelDO.class, "enterprise_id");
         };
     }
 }

+ 9 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaService.java

@@ -2,14 +2,15 @@ package com.citu.module.menduner.system.service.area;
 
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.area.vo.AppAreaHotRespVO;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaListReqVO;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaSimpleRespVO;
-import com.citu.module.menduner.system.controller.app.area.vo.AppAreaHotRespVO;
 import com.citu.module.menduner.system.controller.base.area.*;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 地区 Service 接口
@@ -77,6 +78,13 @@ public interface AreaService {
      **/
     List<AppAreaChildrenRespVO> getAreaIdChildren(Long id);
 
+    /**
+     * 根据区域id获得下级id集合
+     * @param id 父级id
+     * @return 地区id集合
+     **/
+    Set<Long> getAreaIdChildrenIds(Long id);
+
     /**
      * 获取区域
      *

+ 21 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaServiceImpl.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.system.service.area;
 import cn.hutool.core.collection.CollUtil;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.datapermission.core.annotation.DataPermission;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaChildrenRespVO;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaListReqVO;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaSimpleRespVO;
@@ -12,6 +13,7 @@ import com.citu.module.menduner.system.controller.base.area.*;
 import com.citu.module.menduner.system.convert.AreaConvert;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaHotDO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.mysql.area.AreaHotMapper;
 import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
@@ -54,7 +56,11 @@ public class AreaServiceImpl implements AreaService {
     }
 
     @Override
-    @CacheEvict(cacheNames = {RedisKeyConstants.MDE_AREA_CHILDREN_id_LIST, RedisKeyConstants.MDE_AREA_LIST},
+    @CacheEvict(cacheNames = {
+            RedisKeyConstants.MDE_AREA_CHILDREN,
+            RedisKeyConstants.MDE_AREA_LIST,
+            RedisKeyConstants.MDE_AREA_IDS
+    },
             allEntries = true) // allEntries 清空所有缓存,因为操作一个区域,涉及到多个缓存
     public void updateArea(AreaSaveReqVO updateReqVO) {
         // 校验存在
@@ -65,7 +71,11 @@ public class AreaServiceImpl implements AreaService {
     }
 
     @Override
-    @CacheEvict(cacheNames = {RedisKeyConstants.MDE_AREA_CHILDREN_id_LIST, RedisKeyConstants.MDE_AREA_LIST},
+    @CacheEvict(cacheNames = {
+            RedisKeyConstants.MDE_AREA_CHILDREN,
+            RedisKeyConstants.MDE_AREA_LIST,
+            RedisKeyConstants.MDE_AREA_IDS
+    },
             allEntries = true) // allEntries 清空所有缓存,因为操作一个区域,涉及到多个缓存
     public void deleteArea(Long id) {
         // 校验存在
@@ -101,7 +111,7 @@ public class AreaServiceImpl implements AreaService {
     }
 
     @Override
-    @Cacheable(cacheNames = RedisKeyConstants.MDE_AREA_CHILDREN_id_LIST, key = "#id", unless = "#result.size==0")
+    @Cacheable(cacheNames = RedisKeyConstants.MDE_AREA_CHILDREN, key = "#id", unless = "#result.size==0")
     public List<AppAreaChildrenRespVO> getAreaIdChildren(Long id) {
         List<AppAreaChildrenRespVO> children = new LinkedList<>();
         // 遍历每一层
@@ -120,6 +130,14 @@ public class AreaServiceImpl implements AreaService {
         return children;
     }
 
+    @Override
+    @DataPermission(enable = false)
+    @Cacheable(cacheNames = RedisKeyConstants.MDE_AREA_IDS, key = "#id", unless = "#result.size==0")
+    public Set<Long> getAreaIdChildrenIds(Long id) {
+        List<AppAreaChildrenRespVO> children = getAreaIdChildren(id);
+        return convertSet(children, AppAreaChildrenRespVO::getId);
+    }
+
     @Override
     public List<AppAreaChildrenRespVO> getArea(AreaListReqVO reqVO) {
         List<AreaDO> areaList = areaMapper.selectList(reqVO);

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthService.java

@@ -1,7 +1,7 @@
 package com.citu.module.menduner.system.service.auth;
 
 
-import com.citu.module.menduner.system.controller.app.auth.*;
+import com.citu.module.menduner.system.controller.app.auth.vo.*;
 
 import javax.validation.Valid;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java

@@ -8,7 +8,7 @@ import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.framework.common.util.monitor.TracerUtils;
 import com.citu.framework.common.util.servlet.ServletUtils;
 import com.citu.framework.common.util.validation.ValidationUtils;
-import com.citu.module.menduner.system.controller.app.auth.*;
+import com.citu.module.menduner.system.controller.app.auth.vo.*;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;

+ 9 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthService.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.service.auth;
 
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthLoginRespVO;
+import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthSwitchLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginRespVO;
 import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthLoginReqVO;
 import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthSmsLoginReqVO;
 
@@ -30,5 +31,12 @@ public interface MdeEnterpriseAuthService {
      */
     AppMdeAuthLoginRespVO smsLogin(@Valid AppEnterpriseAuthSmsLoginReqVO reqVO);
 
+    /**
+     * 切换登录
+     *
+     * @param reqVO 登陆信息
+     * @return 登录结果
+     */
+    AppMdeAuthLoginRespVO switchLogin(@Valid AppEnterpriseAuthSwitchLoginReqVO reqVO);
 
 }

+ 29 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java

@@ -9,10 +9,11 @@ import com.citu.framework.common.util.monitor.TracerUtils;
 import com.citu.framework.common.util.servlet.ServletUtils;
 import com.citu.framework.common.util.validation.ValidationUtils;
 import com.citu.framework.security.core.LoginUser;
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthLoginReqVO;
-import com.citu.module.menduner.system.controller.app.auth.AppMdeAuthLoginRespVO;
 import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthLoginReqVO;
 import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthSmsLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.enterprise.AppEnterpriseAuthSwitchLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginReqVO;
+import com.citu.module.menduner.system.controller.app.auth.vo.AppMdeAuthLoginRespVO;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
@@ -43,6 +44,7 @@ import java.util.Objects;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
 import static com.citu.framework.web.core.util.WebFrameworkUtils.getTerminal;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
@@ -107,7 +109,7 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
 
         // 如果 socialType 非空,说明需要绑定社交用户
         String openid = null;
-        if (reqVO.getSocialType() != null) {
+        if (null != reqVO.getSocialType()) {
             openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
                     reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState())).getCheckedData();
         }
@@ -139,7 +141,7 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
 
         // 如果 socialType 非空,说明需要绑定社交用户
         String openid = null;
-        if (reqVO.getSocialType() != null) {
+        if (null != reqVO.getSocialType()) {
             openid = socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
                     reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState())).getCheckedData();
         }
@@ -149,12 +151,33 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
                 LoginLogTypeEnum.LOGIN_SMS, openid, reqVO.getEnterpriseId());
     }
 
+    @Override
+    @DSTransactional
+    public AppMdeAuthLoginRespVO switchLogin(AppEnterpriseAuthSwitchLoginReqVO reqVO) {
+        LoginUser loginUser = getLoginUser();
+        // 查询用户
+        MdeUserDO user = userService.getMdeUser(loginUser.getId());
+        EnterpriseUserBindDO bindUser = check2(reqVO.getEnterpriseId(), user.getId(), user.getPhone(),
+                LoginLogTypeEnum.LOGIN_MOBILE);
+
+        // 创建 Token 令牌,记录登录日志
+        AppMdeAuthLoginRespVO resp = createTokenAfterLoginSuccess(
+                bindUser,
+                user,
+                user.getPhone(),
+                LoginLogTypeEnum.LOGIN_MOBILE,
+                null,
+                reqVO.getEnterpriseId()
+        );
+
+        return resp;
+    }
 
     protected MdeUserDO check(String mobile, String password) {
         final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_MOBILE;
         // 校验账号是否存在
         MdeUserDO user = userService.getUserByPhone(mobile);
-        if (user == null) {
+        if (null == user) {
             createLoginLog(null, mobile, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
             throw exception(MDE_AUTH_LOGIN_BAD_CREDENTIALS);
         }
@@ -223,7 +246,7 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
         reqDTO.setResult(loginResult.getResult());
         loginLogApi.createLoginLog(reqDTO);
         // 更新最后登录时间
-        if (bindUserId != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) {
+        if (null != bindUserId && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) {
             userBindService.updateUserLogin(bindUserId, getClientIP());
         }
     }

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

@@ -102,7 +102,7 @@ public class EnterpriseServiceImpl implements EnterpriseService {
 
     @Override
     @DataPermission(enable = false) // 禁用数据权限,避免建立不正确的缓存
-    @Cacheable(cacheNames = RedisKeyConstants.ENTERPRISE_CHILDREN_ID_LIST, key = "#id")
+    @Cacheable(cacheNames = RedisKeyConstants.ENTERPRISE_CHILDREN_IDS, key = "#id")
     public Set<Long> getChildEnterpriseIdListFromCache(Long id) {
         List<EnterpriseDO> children = getChildEnterpriseList(id);
         return convertSet(children, EnterpriseDO::getId);

+ 5 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryServiceImpl.java

@@ -50,7 +50,7 @@ public class IndustryServiceImpl implements IndustryService {
     private RestTemplate restTemplate;
 
     @Override
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN,
             allEntries = true)
     public Long createIndustry(IndustrySaveReqVO createReqVO) {
         // 插入
@@ -61,7 +61,7 @@ public class IndustryServiceImpl implements IndustryService {
     }
 
     @Override
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN,
             allEntries = true)
     public void updateIndustry(IndustrySaveReqVO updateReqVO) {
         // 校验存在
@@ -72,7 +72,7 @@ public class IndustryServiceImpl implements IndustryService {
     }
 
     @Override
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN,
             allEntries = true)
     public void deleteIndustry(Long id) {
         // 校验存在
@@ -104,7 +104,7 @@ public class IndustryServiceImpl implements IndustryService {
 
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN,
             allEntries = true)
     public void syncBossIndustry() {
         log.info(" ========== 开始解析同步BOSS行业信息到数据库 ========== ");
@@ -178,7 +178,7 @@ public class IndustryServiceImpl implements IndustryService {
     }
 
     @Override
-    @Cacheable(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN_id_LIST, key = "#id", unless = "#result.size==0")
+    @Cacheable(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN, key = "#id", unless = "#result.size==0")
     public List<AppIndustryChildrenRespVO> getIndustryIdChildren(Long id) {
         List<AppIndustryChildrenRespVO> children = new LinkedList<>();
         // 遍历每一层

+ 15 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java

@@ -3,11 +3,14 @@ package com.citu.module.menduner.system.service.job;
 
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
-import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.*;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 
 import javax.validation.Valid;
@@ -105,39 +108,40 @@ public interface JobAdvertisedService {
      **/
     PageResult<AppJobAdvertisedHomeRespVO> getAcquaintedPage(AppJobAdvertisedPageReqVO pageReqVO);
 
-    /**
-     * 根据条件搜索职位
-     * @return 门墩儿-招聘职位列表
-     **/
-    PageResult<AppJobAdvertisedRespVO> search(AppJobAdvertisedSearchPageReqVO reqVO);
 
     /**
      * 根据企业id统计职位类型的数量
+     *
      * @return 公共 Response
      **/
     List<CommonRespVO> getJobPositionCountByEnterpriseId(Long enterpriseId);
 
     /**
      * 根据企业id获取企业职位区域
+     *
      * @return 公共 Response
      **/
     List<CommonRespVO> getJobAreaCountByEnterpriseId(Long enterpriseId);
 
     // ========== 招聘者 ==========
+
     /**
      * 保存职位
      **/
     boolean save(AppAdminJobReqVO reqVO);
+
     /**
      * 开启职位
      **/
-    boolean enable(Long id);
+    boolean enable(List<Long> ids);
+
     /**
      * 关闭职位
      **/
-    boolean disable(Long id);
+    boolean disable(List<Long> ids);
+
     /**
      * 刷新职位
      **/
-    void refresh(Long id);
+    void refresh(List<Long> ids);
 }

+ 30 - 101
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -8,29 +8,22 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.*;
+import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
-import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
-import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 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.util.EsQueryBuildUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
-import org.springframework.data.elasticsearch.core.SearchHits;
-import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
-import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -69,9 +62,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     @Resource
     private EnterpriseUserBindService userBindService;
 
-    @Resource
-    private ElasticsearchRestTemplate elasticsearchTemplate;
-
 
     @Override
     public Long createJobAdvertised(JobAdvertisedSaveReqVO createReqVO) {
@@ -352,75 +342,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
 
-    @Override
-    public PageResult<AppJobAdvertisedRespVO> search(AppJobAdvertisedSearchPageReqVO reqVO) {
-
-        PageResult<AppJobAdvertisedRespVO> result = new PageResult<>();
-        List<AppJobAdvertisedRespVO> list = new ArrayList<>();
-
-        // 构建分页
-        Pageable pageable = PageRequest.of(reqVO.getPageNo() - 1, reqVO.getPageSize());
-
-        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
-                .withQuery(EsQueryBuildUtils.jobSearch(reqVO))
-                // 高亮
-                //                .withHighlightFields(new HighlightBuilder
-                //                        .Field("*")
-                //                        .preTags("<span style='color:red'>")
-                //                        .postTags("</span>").requireFieldMatch(false))
-                .withHighlightBuilder(new HighlightBuilder().field("name").field("enterpriseName")
-                        .field("enterpriseAnotherName").requireFieldMatch(Boolean.TRUE)
-                        .preTags("<span style='color:red'>")
-                        .postTags("</span>")
-                        .numOfFragments(10000)
-                )
-                .withPageable(pageable)
-                .build();
-        SearchHits<ESJobAdvertisedMergeDO> search = elasticsearchTemplate.search(searchQuery, ESJobAdvertisedMergeDO.class);
-        log.info("NativeSearchQuery json : " + searchQuery.getQuery().toString());
-
-        fill(list, search);
-        result.setList(list);
-        result.setTotal(list.stream().count());
-        return result;
-    }
-
-    /**
-     * @param list   目标对象
-     * @param search 搜索结果
-     * @return void
-     * @description 填充搜索结果
-     * @author Rayson
-     * @date 2024/6/4 下午2:40
-     **/
-    private void fill(List<AppJobAdvertisedRespVO> list, SearchHits<ESJobAdvertisedMergeDO> search) {
-        search.getSearchHits().stream()
-                .forEach(searchHit -> {
-                    Map<String, List<String>> highlightFields = searchHit.getHighlightFields();
-
-                    AppJobAdvertisedRespVO respVO = new AppJobAdvertisedRespVO();
-                    respVO.setJob(JobAdvertisedConvert.INSTANCE.convert(searchHit.getContent()));
-                    if (null != highlightFields.get("name")) {
-                        respVO.getJob()
-                                .setName(highlightFields.get("name").get(0));
-                    }
-
-                    AppEnterpriseSimpleRespVO enterprise = EnterpriseConvert.INSTANCE.convert5(searchHit.getContent());
-                    enterprise.setId(searchHit.getContent().getEnterpriseId());
-                    enterprise.setName(searchHit.getContent().getEnterpriseName());
-                    enterprise.setAnotherName(searchHit.getContent().getEnterpriseAnotherName());
-                    respVO.setEnterprise(enterprise);
-
-                    // 获取职位发布人
-                    AppEnterpriseUserContactRespVO contactRespVO = userBindService
-                            .getContact(searchHit.getContent().getEnterpriseId(), searchHit.getContent().getUserId());
-                    // 设置联系人
-                    respVO.setContact(contactRespVO);
-                    list.add(respVO);
-
-                });
-    }
-
     @Override
     public List<CommonRespVO> getJobPositionCountByEnterpriseId(Long enterpriseId) {
         List<CommonRespVO> list = new ArrayList<>();
@@ -509,33 +430,41 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
     @Override
     @DSTransactional
-    public boolean enable(Long id) {
-        JobAdvertisedDO job = get(id);
-        if (MendunerStatusEnum.ENABLE.getStatus().equals(job.getStatus())) {
-            // 已经是开启状态
-            return true;
+    public boolean enable(List<Long> ids) {
+        for (Long id : ids) {
+            JobAdvertisedDO job = get(id);
+            if (MendunerStatusEnum.ENABLE.getStatus().equals(job.getStatus())) {
+                // 已经是开启状态
+                return true;
+            }
+            job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
+            jobAdvertisedMapper.updateById(job);
         }
-        job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
-        return jobAdvertisedMapper.updateById(job) > 0;
+        return true;
     }
 
     @Override
     @DSTransactional
-    public boolean disable(Long id) {
-        JobAdvertisedDO job = get(id);
-        if (MendunerStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
-            // 已经是关闭状态
-            return true;
+    public boolean disable(List<Long> ids) {
+        for (Long id : ids) {
+            JobAdvertisedDO job = get(id);
+            if (MendunerStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
+                // 已经是关闭状态
+                return true;
+            }
+            job.setStatus(MendunerStatusEnum.DISABLE.getStatus());
+            jobAdvertisedMapper.updateById(job);
         }
-        job.setStatus(MendunerStatusEnum.DISABLE.getStatus());
-        return jobAdvertisedMapper.updateById(job) > 0;
+        return true;
     }
 
     @Override
     @DSTransactional
-    public void refresh(Long id) {
-        JobAdvertisedDO job = get(id);
-        job.setUpdateTime(LocalDateTime.now());
-        jobAdvertisedMapper.updateById(job);
+    public void refresh(List<Long> ids) {
+        for (Long id : ids) {
+            JobAdvertisedDO job = get(id);
+            job.setUpdateTime(LocalDateTime.now());
+            jobAdvertisedMapper.updateById(job);
+        }
     }
 }

+ 15 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.service.job;
 
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
@@ -52,4 +53,18 @@ public interface JobCvRelService {
      */
     PageResult<JobCvRelDO> getJobCvRelPage(JobCvRelPageReqVO pageReqVO);
 
+    // ========== 求职者 ==========
+
+    /**
+     * 简历投递
+     * @param reqVO
+     */
+    void send(AppJobCvRelReqVO reqVO);
+
+    /**
+     * 效验是否投递了该职位
+     * @param jobId 职位id
+     */
+    boolean checkSend(Long jobId);
+
 }

+ 45 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java

@@ -1,18 +1,24 @@
 package com.citu.module.menduner.system.service.job;
 
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobCvRelSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
+import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_CV_REL_NOT_EXISTS;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
 /**
  * 门墩儿-招聘职位简历投递 Service 实现类
@@ -26,6 +32,9 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     @Resource
     private JobCvRelMapper jobCvRelMapper;
 
+    @Resource
+    private JobAdvertisedMapper jobAdvertisedMapper;
+
     @Override
     public Long createJobCvRel(JobCvRelSaveReqVO createReqVO) {
         // 插入
@@ -67,4 +76,39 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     public PageResult<JobCvRelDO> getJobCvRelPage(JobCvRelPageReqVO pageReqVO) {
         return jobCvRelMapper.selectPage(pageReqVO);
     }
+
+    @Override
+    @DSTransactional
+    public void send(AppJobCvRelReqVO reqVO) {
+        // 效验职位是否关闭
+        JobAdvertisedDO job = jobAdvertisedMapper.selectById(reqVO.getJobId());
+        if (MendunerStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
+            throw exception(JOB_CV_REL_JOB_STOP_DELIVERY);
+        }
+        Long userId = getLoginUserId();
+        // 效验某段时间是否投递过
+        if (jobCvRelMapper.checkDataWithin15Day(userId, reqVO.getJobId())) {
+            throw exception(JOB_CV_REL_EXISTS);
+        }
+        // 赋值
+        JobCvRelDO jobCvRel = BeanUtils.toBean(reqVO, JobCvRelDO.class);
+        jobCvRel.setUserId(userId);
+        jobCvRel.setPublishUserId(job.getUserId());
+        jobCvRel.setEnterpriseId(job.getEnterpriseId());
+        // 暂时不知道有什么状态
+        jobCvRel.setStatus(MendunerStatusEnum.ENABLE.getStatus());
+        // 保存
+        jobCvRelMapper.insert(jobCvRel);
+    }
+
+    @Override
+    public boolean checkSend(Long jobId) {
+        Long userId = getLoginUserId();
+        if (null == userId) {
+            // 没登录
+            return false;
+        }
+        // 效验某段时间是否投递过
+        return jobCvRelMapper.checkDataWithin15Day(userId, jobId);
+    }
 }

+ 28 - 15
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java

@@ -4,53 +4,66 @@ import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSearchPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobRespVO;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
 
 /**
  * 招聘职位相关的整合层
  * 解决三层架构带来的业务循环依赖设计
+ * 招聘职位相关业务涉及三种及以上关系的在该处统一处理
+ *
  * @author Rayson
  **/
 public interface JobIntegrationService {
 
-    /**
-     * 简历投递
-     * @param reqVO
-     */
-    void send(AppJobCvRelReqVO reqVO);
-
-    /**
-     * 效验是否投递了该职位
-     * @param jobId 职位id
-     */
-    boolean checkSend(Long jobId);
+    // ========== 求职者 ==========
 
     /**
      * 获取已投递的招聘职位信息分页
+     *
      * @param page 分页
      */
     PageResult<AppJobAdvertisedRespVO> getJobCvPage(PageParam page);
 
     /**
      * 获取收藏的招聘职位分页
+     *
      * @param page 分页
      */
     PageResult<AppJobAdvertisedRespVO> getJobFavoritePage(PageParam page);
 
     /**
      * 获取关注的企业分页
+     *
      * @param page 分页
      */
     PageResult<AppEnterpriseSimpleRespVO> getEnterpriseSubscribePage(PageParam page);
 
+    /**
+     * 根据条件搜索职位
+     *
+     * @return 门墩儿-招聘职位列表
+     **/
+    PageResult<AppJobAdvertisedRespVO> search(AppJobAdvertisedSearchPageReqVO reqVO);
+
 
     // ========== 招聘者 ==========
 
     /**
-     * 分页查询
+     * 招聘职位分页查询
+     *
+     * @return 公共 Response
+     **/
+    PageResult<AppAdminJobRespVO> page(AppAdminJobPageReqVO reqVO);
+
+    /**
+     * 投递职位分页查询
      * @return 公共 Response
      **/
-    PageResult<AppAdminJobSimpleRespVO> page(AppAdminJobPageReqVO reqVO);
+    PageResult<AppAdminJobCvRelRespVO> page(AppAdminJobCvRelPageReqVO reqVO);
+
 }

+ 170 - 61
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java

@@ -1,31 +1,45 @@
 package com.citu.module.menduner.system.service.job;
 
 import cn.hutool.core.collection.CollUtil;
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
-import com.citu.module.menduner.system.controller.base.person.favorite.PersonJobFavoritePageReqVO;
-import com.citu.module.menduner.system.controller.base.person.subscribe.PersonEnterpriseSubscribePageReqVO;
-import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSearchPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.cv.AppAdminJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobRespVO;
+import com.citu.module.menduner.system.controller.appadmin.person.vo.AppAdminPersonSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
+import com.citu.module.menduner.system.controller.base.job.JobCvRelPageReqVO;
+import com.citu.module.menduner.system.controller.base.person.favorite.PersonJobFavoritePageReqVO;
+import com.citu.module.menduner.system.controller.base.person.subscribe.PersonEnterpriseSubscribePageReqVO;
+import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
+import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
-import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
+import com.citu.module.menduner.system.service.area.AreaService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.person.favorite.PersonJobFavoriteService;
 import com.citu.module.menduner.system.service.person.subscribe.PersonEnterpriseSubscribeService;
+import com.citu.module.menduner.system.util.EsQueryBuildUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.SearchHits;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -34,13 +48,13 @@ import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
-import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_CV_REL_EXISTS;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_CV_REL_JOB_STOP_DELIVERY;
 
+@Slf4j
 @Service
 @Validated
 public class JobIntegrationServiceImpl implements JobIntegrationService {
@@ -63,43 +77,18 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
     @Resource
     private EnterpriseMapper enterpriseMapper;
 
-    @Override
-    @DSTransactional
-    public void send(AppJobCvRelReqVO reqVO) {
-        // 效验职位是否关闭
-        JobAdvertisedDO job = jobAdvertisedMapper.selectById(reqVO.getJobId());
-        if (MendunerStatusEnum.DISABLE.getStatus().equals(job.getStatus())) {
-            throw exception(JOB_CV_REL_JOB_STOP_DELIVERY);
-        }
-        Long userId = getLoginUserId();
-        // 效验某段时间是否投递过
-        if (jobCvRelMapper.checkDataWithin15Day(userId, reqVO.getJobId())) {
-            throw exception(JOB_CV_REL_EXISTS);
-        }
-        // 赋值
-        JobCvRelDO jobCvRel = BeanUtils.toBean(reqVO, JobCvRelDO.class);
-        jobCvRel.setUserId(userId);
-        jobCvRel.setPublishUserId(job.getUserId());
-        jobCvRel.setEnterpriseId(job.getEnterpriseId());
-        // 暂时不知道有什么状态
-        jobCvRel.setStatus(MendunerStatusEnum.ENABLE.getStatus());
-        // 保存
-        jobCvRelMapper.insert(jobCvRel);
-    }
+    @Resource
+    private AreaService areaService;
 
-    @Override
-    public boolean checkSend(Long jobId) {
-        Long userId = getLoginUserId();
-        if (null == userId) {
-            // 没登录
-            return false;
-        }
-        // 效验某段时间是否投递过
-        return jobCvRelMapper.checkDataWithin15Day(userId, jobId);
-    }
+    @Resource
+    private PersonInfoMapper personInfoMapper;
 
-    public PageResult<AppJobAdvertisedRespVO> gteJobByIdList(PageParam page, List<Long> idList) {
-        PageResult<AppJobAdvertisedRespVO> result = jobAdvertisedMapper.selectByIdListPage(page, idList);
+    @Resource
+    private ElasticsearchRestTemplate elasticsearchTemplate;
+
+
+    public PageResult<AppJobAdvertisedRespVO> getJobByIdList(PageParam page, List<Long> ids) {
+        PageResult<AppJobAdvertisedRespVO> result = jobAdvertisedMapper.selectByIdListPage(page, ids);
         for (AppJobAdvertisedRespVO respVO : result.getList()) {
             // 获取职位发布人
             AppEnterpriseUserContactRespVO contactRespVO = userBindService
@@ -120,10 +109,13 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         relPageReqVO.setPageNo(page.getPageNo());
         relPageReqVO.setPageSize(page.getPageSize());
         relPageReqVO.setUserId(userId);
-        PageResult<JobCvRelDO> jobCvRelDOPageResult = jobCvRelMapper.selectPage(relPageReqVO);
+        PageResult<JobCvRelDO> result = jobCvRelMapper.selectPage(relPageReqVO);
+        if (CollUtil.isEmpty(result.getList())) {
+            return PageResult.empty();
+        }
         // 查询招聘职位等信息
-        List<Long> idList = jobCvRelDOPageResult.getList().stream().map(JobCvRelDO::getJobId).collect(Collectors.toList());
-        return gteJobByIdList(page, idList);
+        List<Long> ids = result.getList().stream().map(JobCvRelDO::getJobId).collect(Collectors.toList());
+        return getJobByIdList(page, ids);
     }
 
     @Override
@@ -133,14 +125,16 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         pageReqVO.setPageNo(page.getPageNo());
         pageReqVO.setPageSize(page.getPageSize());
         pageReqVO.setUserId(userId);
-        PageResult<PersonJobFavoriteDO> personJobFavoritePageResult =
+        PageResult<PersonJobFavoriteDO> result =
                 personJobFavoriteService.getPersonJobFavoritePage(pageReqVO);
-
+        if (CollUtil.isEmpty(result.getList())) {
+            return PageResult.empty();
+        }
         // 查询招聘职位等信息
-        List<Long> idList = personJobFavoritePageResult.getList()
+        List<Long> ids = result.getList()
                 .stream().map(PersonJobFavoriteDO::getJobId).collect(Collectors.toList());
 
-        return gteJobByIdList(page, idList);
+        return getJobByIdList(page, ids);
     }
 
     @Override
@@ -150,21 +144,106 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         pageReqVO.setPageNo(page.getPageNo());
         pageReqVO.setPageSize(page.getPageSize());
         pageReqVO.setUserId(userId);
-        PageResult<PersonEnterpriseSubscribeDO> personJobFavoritePageResult =
+        PageResult<PersonEnterpriseSubscribeDO> result =
                 personEnterpriseSubscribeService.getPersonEnterpriseSubscribePage(pageReqVO);
+        if (CollUtil.isEmpty(result.getList())) {
+            return PageResult.empty();
+        }
         // 查询招聘职位等信息
-        List<Long> idList = personJobFavoritePageResult.getList()
+        List<Long> ids = result.getList()
                 .stream().map(PersonEnterpriseSubscribeDO::getEnterpriseId).collect(Collectors.toList());
-        return enterpriseMapper.selectByIdListPage(page, idList);
+        return enterpriseMapper.selectByIdListPage(page, ids);
     }
 
     @Override
-    public PageResult<AppAdminJobSimpleRespVO> page(AppAdminJobPageReqVO reqVO) {
+    public PageResult<AppJobAdvertisedRespVO> search(AppJobAdvertisedSearchPageReqVO reqVO) {
+
+        PageResult<AppJobAdvertisedRespVO> result = new PageResult<>();
+        List<AppJobAdvertisedRespVO> list = new ArrayList<>();
+
+        // 构建分页
+        Pageable pageable = PageRequest.of(reqVO.getPageNo() - 1, reqVO.getPageSize());
+
+        if (null != reqVO.getAreaIds() && reqVO.getAreaIds().size() <= 1) {
+            // 不为空且只有一个区域id的情况
+            Set<Long> areaIds = areaService.getAreaIdChildrenIds(reqVO.getAreaIds().get(0));
+            if (!areaIds.isEmpty()) {
+                List<Long> areaIdList = new ArrayList<>(areaIds);
+                // 包括自己
+                areaIds.add(reqVO.getAreaIds().get(0));
+                reqVO.setAreaIds(areaIdList);
+            }
+        }
+        BoolQueryBuilder queryBuilder = EsQueryBuildUtils.jobSearch(reqVO);
+
+        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
+                .withQuery(queryBuilder)
+                // 高亮
+                //                .withHighlightFields(new HighlightBuilder
+                //                        .Field("*")
+                //                        .preTags("<span style='color:red'>")
+                //                        .postTags("</span>").requireFieldMatch(false))
+                .withHighlightBuilder(new HighlightBuilder().field("name").field("enterpriseName")
+                        .field("enterpriseAnotherName").requireFieldMatch(Boolean.TRUE)
+                        .preTags("<span style='color:red'>")
+                        .postTags("</span>")
+                        .numOfFragments(10000)
+                )
+                .withPageable(pageable)
+                .build();
+        SearchHits<ESJobAdvertisedMergeDO> search = elasticsearchTemplate.search(searchQuery, ESJobAdvertisedMergeDO.class);
+        log.info("NativeSearchQuery json : " + searchQuery.getQuery().toString());
+
+        fill(list, search);
+        result.setList(list);
+        result.setTotal(search.getTotalHits());
+        return result;
+    }
+
+    /**
+     * @param list   目标对象
+     * @param search 搜索结果
+     * @return void
+     * @description 填充搜索结果
+     * @author Rayson
+     * @date 2024/6/4 下午2:40
+     **/
+    private void fill(List<AppJobAdvertisedRespVO> list, SearchHits<ESJobAdvertisedMergeDO> search) {
+        search.getSearchHits().stream()
+                .forEach(searchHit -> {
+                    Map<String, List<String>> highlightFields = searchHit.getHighlightFields();
+
+                    AppJobAdvertisedRespVO respVO = new AppJobAdvertisedRespVO();
+                    respVO.setJob(JobAdvertisedConvert.INSTANCE.convert(searchHit.getContent()));
+                    if (null != highlightFields.get("name")) {
+                        respVO.getJob()
+                                .setName(highlightFields.get("name").get(0));
+                    }
+
+                    AppEnterpriseSimpleRespVO enterprise = EnterpriseConvert.INSTANCE.convert5(searchHit.getContent());
+                    enterprise.setId(searchHit.getContent().getEnterpriseId());
+                    enterprise.setName(searchHit.getContent().getEnterpriseName());
+                    enterprise.setAnotherName(searchHit.getContent().getEnterpriseAnotherName());
+                    respVO.setEnterprise(enterprise);
+
+                    // 获取职位发布人
+                    AppEnterpriseUserContactRespVO contactRespVO = userBindService
+                            .getContact(searchHit.getContent().getEnterpriseId(), searchHit.getContent().getUserId());
+                    // 设置联系人
+                    respVO.setContact(contactRespVO);
+                    list.add(respVO);
+
+                });
+    }
+
+
+    @Override
+    public PageResult<AppAdminJobRespVO> page(AppAdminJobPageReqVO reqVO) {
         PageResult<JobAdvertisedDO> pageResult = jobAdvertisedMapper.selectPage(reqVO);
         if (CollUtil.isEmpty(pageResult.getList())) {
             return PageResult.empty();
         }
-        List<AppAdminJobSimpleRespVO> list = new ArrayList<>();
+        List<AppAdminJobRespVO> list = new ArrayList<>();
 
         // 获取招聘职位id集合
         List<Long> jobIdList
@@ -174,11 +253,11 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         List<JobCvRelDO> jobCvRelDOList = jobCvRelMapper.selectByJobIdList(jobIdList);
 
         pageResult.getList().forEach(job -> {
-            AppAdminJobSimpleRespVO respVO = JobAdvertisedConvert.INSTANCE.convert4(job);
+            AppAdminJobRespVO respVO = JobAdvertisedConvert.INSTANCE.convert4(job);
             Long count = jobCvRelDOList.stream().filter(jobCvRelDO -> jobCvRelDO.getJobId().equals(job.getId())).count();
             respVO.setCount(count);
             // 计算多少天后到期
-            if(null != job.getExpireTime()) {
+            if (null != job.getExpireTime()) {
                 respVO.setExpireDay(ChronoUnit.DAYS.between(LocalDateTime.now(), respVO.getExpireTime()));
             }
             list.add(respVO);
@@ -186,4 +265,34 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
         });
         return new PageResult<>(list, pageResult.getTotal());
     }
+
+    @Override
+    public PageResult<AppAdminJobCvRelRespVO> page(AppAdminJobCvRelPageReqVO reqVO) {
+
+        PageResult<AppAdminJobCvRelRespVO> pageResult = jobCvRelMapper.selectPage(reqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return PageResult.empty();
+        }
+        // 取得用户id集合
+        List<Long> userIdList = pageResult.getList()
+                .stream().map(AppAdminJobCvRelRespVO::getUserId).collect(Collectors.toList());
+        reqVO.setUserId(userIdList);
+        PageResult<AppAdminPersonSimpleRespVO> personSimpleResult
+                = personInfoMapper.selectSimplePersonPage(reqVO);
+
+        List<AppAdminJobCvRelRespVO> list = new ArrayList<>();
+
+        for (AppAdminPersonSimpleRespVO personSimple : personSimpleResult.getList()) {
+            AppAdminJobCvRelRespVO respVO = pageResult.getList().stream()
+                    .filter(jobCvRel -> jobCvRel.getUserId().equals(personSimple.getUserId()))
+                    .findFirst().orElse(null);
+            respVO.setPerson(personSimple);
+            list.add(respVO);
+        }
+        // 以二次查询的personSimpleResult 为准
+        pageResult.setList(list);
+        pageResult.setTotal(personSimpleResult.getTotal());
+        return pageResult;
+
+    }
 }

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

@@ -128,7 +128,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
 
     @Override
     @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
-    @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_ID_LIST, key = "#userId")
+    @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#userId")
     public void assignUserRole(Long userId, Set<Long> roleIds) {
         // 获得角色拥有角色编号
         Set<Long> dbRoleIds = convertSet(mdeUserRoleMapper.selectListByUserId(userId),
@@ -165,7 +165,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
     @Caching(evict = {
-            @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_ID_LIST,
+            @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS,
                     allEntries = true) // allEntries 清空所有缓存,此处无法方便获得 roleId 对应的 user 缓存们
     })
     public void processRoleDeleted(Long roleId) {
@@ -174,7 +174,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
     }
 
     @Override
-    @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_ID_LIST, key = "#userId")
+    @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#userId")
     public void processUserDeleted(Long userId) {
         mdeUserRoleMapper.deleteListByUserId(userId);
     }
@@ -191,7 +191,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
 
 
     @Override
-    @Cacheable(value = RedisKeyConstants.MDE_USER_ROLE_ID_LIST, key = "#userId")
+    @Cacheable(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#userId")
     public Set<Long> getUserRoleIdListByUserIdFromCache(Long userId) {
         return getUserRoleIdListByUserId(userId);
     }

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/PersonIntegrationService.java

@@ -0,0 +1,9 @@
+package com.citu.module.menduner.system.service.person;
+
+/**
+ * 人才信息相关的整合层
+ * 解决三层架构带来的业务循环依赖设计
+ * 人才信息相关业务涉及三种及以上关系的在该处统一处理
+ **/
+public interface PersonIntegrationService {
+}

+ 11 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java

@@ -88,7 +88,7 @@ public class PositionServiceImpl implements PositionService {
 
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN,
             allEntries = true)
     public Long createPosition(PositionSaveReqVO createReqVO) {
         // 插入
@@ -99,7 +99,7 @@ public class PositionServiceImpl implements PositionService {
     }
 
     @Override
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN,
             allEntries = true)
     public void updatePosition(PositionSaveReqVO updateReqVO) {
         // 校验存在
@@ -110,7 +110,7 @@ public class PositionServiceImpl implements PositionService {
     }
 
     @Override
-    @CacheEvict(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN_id_LIST,
+    @CacheEvict(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN,
             allEntries = true)
     public void deletePosition(Long id) {
         // 校验存在
@@ -195,7 +195,7 @@ public class PositionServiceImpl implements PositionService {
     }
 
     @Override
-    @Cacheable(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN_id_LIST, key = "#id", unless = "#result.size==0")
+    @Cacheable(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN, key = "#id", unless = "#result.size==0")
     public List<AppPositionChildrenRespVO> getPositionIdChildren(Long id) {
         List<AppPositionChildrenRespVO> children = new LinkedList<>();
         // 遍历每一层
@@ -234,7 +234,7 @@ public class PositionServiceImpl implements PositionService {
 
     @Override
     public List<AppPositionSimpleRespVO> getHotPosition() {
-        List<Long> idList = visitsService.getBizIdVisitsTop10List(
+        List<Long> ids = visitsService.getBizIdVisitsTop10List(
                 MdeVisitsListReqVO.builder()
                         .type(MdeVisitsEnum.POSITION_CLICK.getType())
                         .userId(getLoginUserId())
@@ -247,31 +247,31 @@ public class PositionServiceImpl implements PositionService {
         Integer level = 3;
 
         // 该用户(包括访客)没有埋点
-        if (idList.size() < 1) {
+        if (ids.size() < 1) {
             // 随机十条,深度为{level}的数据
             return PositionConvert.INSTANCE.convertList2(positionMapper.getRandomTenByLevel(level));
 
         }
 
         // 埋点数据不够
-        if (idList.size() < num) {
+        if (ids.size() < num) {
             // 随机十条,深度为{level}的数据
             List<PositionDO> positionDOList1 = positionMapper.getRandomTenByLevel(level);
             // 找出埋点的职位数据
-            List<PositionDO> positionDOList2 = positionMapper.selectListByIdList(idList);
+            List<PositionDO> positionDOList2 = positionMapper.selectListByIdList(ids);
             // 合并数据
             List<PositionDO> mergedList = Stream.concat(
                     // positionDOList2 数据
                     positionDOList2.stream(),
-                    // positionDOList1 取前 (positionDOList1.size()-idList.size())条数据
+                    // positionDOList1 取前 (positionDOList1.size()-ids.size())条数据
                     positionDOList1.stream()
-                            .limit(positionDOList1.size() - idList.size()).collect(Collectors.toList()).stream()
+                            .limit(positionDOList1.size() - ids.size()).collect(Collectors.toList()).stream()
             ).collect(Collectors.toList());
             return PositionConvert.INSTANCE.convertList2(mergedList);
         }
 
         // 该用户(包括访客)有埋点数据的情况
-        List<PositionDO> positionDOList = positionMapper.selectListByIdList(idList);
+        List<PositionDO> positionDOList = positionMapper.selectListByIdList(ids);
         return PositionConvert.INSTANCE.convertList2(positionDOList);
     }
 

+ 22 - 21
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -17,6 +17,14 @@
 900=duplicate request, please try again later # duplicate request
 901=demonstration mode, write operation prohibited
 999=unknown error
+# ========== 公共 1_200_000_000 ==========
+1_200_000_001=Status cannot be empty
+1_200_000_002=The modification status must be {value}
+1_200_000_003=Display order cannot be empty
+1_200_000_004=Superior ID cannot be empty
+1_200_000_005=id cannot be empty
+1_200_000_006=User ID cannot be empty
+1_200_000_007=Enterprise ID cannot be empty
 # ========== 人员信息-个人档案 1_100_001_000 ==========
 1_100_001_001=Personal Profile Does Not Exist
 1_100_001_002=Personal advantage cannot be empty
@@ -107,19 +115,20 @@
 1_200_002_002=Login failed, account disabled
 1_200_002_003=Login failed, unable to resolve third-party login information
 1_200_002_004=The phone number has already been used
-1_002_000_004=Incorrect verification code, reason: {}
-1_002_000_005=Account not bound, needs to be bound
-1_002_000_006=Token has expired
-1_002_000_007=Phone number does not exist
-1_002_000_008=Sending scene cannot be empty
-1_002_000_009=Phone code cannot be empty
-1_002_000_010=Login code cannot be empty
-1_002_000_011=State cannot be empty
-1_002_000_012=Authorization code cannot be empty
-1_002_000_013=The type of social platform cannot be empty
-1_002_000_014=The verification code cannot be empty
-1_200_000_015=No enterprise selected
-1_200_000_016=Unregistered user, please register individual user first before applying for enterprise user
+1_200_002_005=Incorrect verification code, reason: {}
+1_200_002_006=Account not bound, needs to be bound
+1_200_002_007=Token has expired
+1_200_002_008=Phone number does not exist
+1_200_002_009=Sending scene cannot be empty
+1_200_002_010=Phone code cannot be empty
+1_200_002_011=Login code cannot be empty
+1_200_002_012=State cannot be empty
+1_200_002_013=Authorization code cannot be empty
+1_200_002_014=The type of social platform cannot be empty
+1_200_002_015=The verification code cannot be empty
+1_200_002_016=No enterprise selected
+1_200_002_017=Unregistered user, please register individual user first before applying for enterprise user
+1_200_002_018=Access token cannot be empty
 # ========== 角色模块 1_200_003_000 ==========
 1_200_003_001=Character does not exist
 1_200_003_002=A role named [{}] already exists
@@ -196,18 +205,10 @@
 1_200_017_004=Unable to set oneself as a parent vocational skill
 1_200_017_005=There is already a vocational skill with the Chinese name for this skill
 1_200_017_006=Cannot set one's own child Skill as the parent Skill
-# ========== 公共 1_200_018_000 ==========
-1_200_018_001=Status cannot be empty
-1_200_018_002=The modification status must be {value}
-1_200_018_003=Display order cannot be empty
-1_200_018_004=Superior ID cannot be empty
-1_200_018_005=id cannot be empty
-1_200_018_006=User ID cannot be empty
 # ========== 企业用户申请 1_200_019_000 ==========
 1_200_019_001=Enterprise user application does not exist
 1_200_019_002=User application has been approved
 1_200_019_003=The user's application has been approved and cannot be rejected
-1_200_019_004=Enterprise ID cannot be empty
 1_200_019_005=Applied for review, please do not resubmit
 # ========== 招聘职位简历投递 1_200_019_000 ==========
 1_200_020_001=Recruitment position resume submission does not exist

+ 25 - 22
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -17,7 +17,14 @@
 900=重复请求,请稍后重试 # 重复请求
 901=演示模式,禁止写操作
 999=未知错误
-
+# ========== 公共 1_200_000_000 ==========
+1_200_000_001=帐号状态不能为空
+1_200_000_002=修改状态必须是 {value}
+1_200_000_003=显示顺序不能为空
+1_200_000_004=上级id不能为空
+1_200_000_005=id不能为空
+1_200_000_006=用户id不能为空
+1_200_000_007=企业id不能为空
 # ========== 人员信息-个人档案 1_100_001_000 ==========
 1_100_001_001=个人档案不存在
 1_100_001_002=个人优势不能为空
@@ -108,19 +115,20 @@
 1_200_002_002=登录失败,账号被禁用
 1_200_002_003=登录失败,解析不到三方登录信息
 1_200_002_004=手机号已经被使用
-1_002_000_004=验证码不正确,原因:{}
-1_002_000_005=未绑定账号,需要进行绑定
-1_002_000_006=Token 已经过期
-1_002_000_007=手机号不存在
-1_002_000_008=发送场景不能为空
-1_002_000_009=手机code不能为空
-1_002_000_010=登录code不能为空
-1_002_000_011=state不能为空
-1_002_000_012=授权码不能为空
-1_002_000_013=社交平台的类型不能为空
-1_002_000_014=验证码不能为空
-1_200_000_015=未选择企业
-1_200_000_016=未注册用户,请先注册个人用户再申请企业用户
+1_200_002_005=验证码不正确,原因:{}
+1_200_002_006=未绑定账号,需要进行绑定
+1_200_002_007=Token 已经过期
+1_200_002_008=手机号不存在
+1_200_002_009=发送场景不能为空
+1_200_002_010=手机code不能为空
+1_200_002_011=登录code不能为空
+1_200_002_012=state不能为空
+1_200_002_013=授权码不能为空
+1_200_002_014=社交平台的类型不能为空
+1_200_002_015=验证码不能为空
+1_200_002_016=未选择企业
+1_200_002_017=未注册用户,请先注册个人用户再申请企业用户
+1_200_002_018=访问令牌不能为空
 # ========== 角色模块 1_200_003_000 ==========
 1_200_003_001=角色不存在
 1_200_003_002=已经存在名为【{}】的角色
@@ -197,18 +205,10 @@
 1_200_017_004=不能设置自己为父职业技能
 1_200_017_005=已经存在该技能中文名称的职业技能
 1_200_017_006=不能设置自己的子Skill为父Skill
-# ========== 公共 1_200_018_000 ==========
-1_200_018_001=帐号状态不能为空
-1_200_018_002=修改状态必须是 {value}
-1_200_018_003=显示顺序不能为空
-1_200_018_004=上级id不能为空
-1_200_018_005=id不能为空
-1_200_018_006=用户id不能为空
 # ========== 企业用户申请 1_200_019_000 ==========
 1_200_019_001=企业用户申请不存在
 1_200_019_002=用户申请已审批
 1_200_019_003=用户申请申请已审批通过,无法拒绝
-1_200_019_004=企业id不能为空
 1_200_019_005=已申请审核中,请勿重复提交
 # ========== 招聘职位简历投递 1_200_019_000 ==========
 1_200_020_001=招聘职位简历投递不存在
@@ -217,3 +217,6 @@
 1_200_020_004=招聘职位id不能为空
 1_200_020_005=该职位暂不允许投递
 1_200_020_006=该职位停止招聘
+1_200_020_007=简历附件标题不能为空
+1_200_020_008=简历附件地址不能为空
+1_200_020_009=投递的简历状态不能为空