Browse Source

Merge branch 'develop_rayson' into develop_zqc

DESKTOP-VAEGFGM\zqc 1 year ago
parent
commit
75a6f8615b
100 changed files with 1158 additions and 796 deletions
  1. 1 1
      citu-dependencies/pom.xml
  2. 4 4
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/config/CituJacksonAutoConfiguration.java
  3. 8 1
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/web/core/handler/GlobalExceptionHandler.java
  4. 1 1
      citu-module-mall/citu-module-statistics-biz/src/main/resources/mapper/member/MemberStatisticsMapper.xml
  5. 2 4
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListService.java
  6. 12 17
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListServiceImpl.java
  7. 2 4
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleService.java
  8. 4 9
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleServiceImpl.java
  9. 9 2
      citu-module-pay/citu-module-pay-biz/src/main/java/com/citu/module/pay/service/wallet/PayWalletServiceImpl.java
  10. 1 1
      citu-module-pay/citu-module-pay-biz/src/main/resources/application.yaml
  11. 4 4
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/dto/TimeRangeBasePageReqVO.java
  12. 33 0
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/dto/TimeRangeBaseReqVO.java
  13. 17 4
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/util/LoginUserContext.java
  14. 86 0
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/util/TimeUtils.java
  15. 2 1
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java
  16. 5 0
      menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/ErrorCodeConstants.java
  17. 29 0
      menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/config/PointRuleConfigTriggerTypeEnum.java
  18. 33 0
      menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/config/PointRuleConfigTypeEnum.java
  19. 12 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/event/EventTrackController.java
  20. 6 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigPageReqVO.java
  21. 8 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigRespVO.java
  22. 10 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigSaveReqVO.java
  23. 18 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/TaskReqVO.java
  24. 29 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/TaskRespVO.java
  25. 3 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/event/EventTrackUrlRespVO.java
  26. 10 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/config/PointRuleConfigDO.java
  27. 42 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/config/PointRuleConfigMapper.java
  28. 25 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/event/EventRecordMapper.java
  29. 8 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/config/PointRuleConfigService.java
  30. 25 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/config/PointRuleConfigServiceImpl.java
  31. 9 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackService.java
  32. 35 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackServiceImpl.java
  33. 1 1
      menduner/menduner-reward-biz/src/main/resources/application.yaml
  34. 2 0
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_en_US.properties
  35. 2 0
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_CN.properties
  36. 1 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphApi.java
  37. 2 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/DictTypeConstants.java
  38. 5 5
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  39. 3 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/MdeUserTypeEnum.java
  40. 1 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/account/PointBizTypeEnum.java
  41. 1 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/interview/InterviewInviteStatusEnum.java
  42. 25 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobSeekStatusEnum.java
  43. 11 4
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobTypeEnum.java
  44. 2 2
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/PayTypeEnum.java
  45. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/user/UserApiImpl.java
  46. 13 15
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/analysis/AnalysisController.java
  47. 0 93
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterprisePostController.java
  48. 7 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/AppEnterpriseController.java
  49. 0 34
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/AppEnterprisePostController.java
  50. 4 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/vo/AppEnterpriseSearchPageReqVO.java
  51. 7 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/AppJobAdvertisedController.java
  52. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/vo/AppEnterpriseJobRespVO.java
  53. 5 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/person/resume/AppPersonInfoSaveReqVO.java
  54. 14 16
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/analysis/AppRecruitAnalysisController.java
  55. 0 71
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/AppRecruitEnterprisePostController.java
  56. 58 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/AppRecruitJobAdvertisedController.java
  57. 17 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobRenewalReqVO.java
  58. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobSaveReqVO.java
  59. 7 14
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/AppRecruitUserController.java
  60. 0 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitEnterprisePostSimpleRespVO.java
  61. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitUserPageReqVO.java
  62. 0 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitUserRespVO.java
  63. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitUserSaveReqVO.java
  64. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitAnalysisPageReqVO.java
  65. 24 21
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/excel/RecruitJobCvRelAnalysisExcelRespVO.java
  66. 0 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindDetailRespVO.java
  67. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindPageReqVO.java
  68. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindReqVO.java
  69. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindRespVO.java
  70. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSaveReqVO.java
  71. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSimpleRespVO.java
  72. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedImportExcelVO.java
  73. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/job/JobAdvertisedRespVO.java
  74. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/PersonMapQueryReqVO.java
  75. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoPageReqVO.java
  76. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoRespVO.java
  77. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoSaveReqVO.java
  78. 0 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterpriseConvert.java
  79. 0 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterprisePostConvert.java
  80. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobAdvertisedConvert.java
  81. 4 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java
  82. 0 59
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterprisePostDO.java
  83. 6 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseUserBindDO.java
  84. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonInfoDO.java
  85. 19 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java
  86. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/area/AreaMapper.java
  87. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseBusinessMapper.java
  88. 6 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseMapper.java
  89. 0 54
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterprisePostMapper.java
  90. 1 24
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseUserBindMapper.java
  91. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java
  92. 27 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  93. 6 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  94. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionMapper.java
  95. 228 112
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java
  96. 0 60
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/scheduled/InterviewInviteScheduled.java
  97. 4 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java
  98. 0 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java
  99. 0 19
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  100. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/apply/EnterpriseUserApplyServiceImpl.java

+ 1 - 1
citu-dependencies/pom.xml

@@ -61,7 +61,7 @@
         <easyexcel.verion>3.3.4</easyexcel.verion>
         <velocity.version>2.3</velocity.version>
         <screw.version>1.0.5</screw.version>
-        <fastjson.version>1.2.83</fastjson.version>
+        <fastjson.version>2.0.53</fastjson.version>
         <guava.version>33.2.1-jre</guava.version>
         <transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
         <commons-net.version>3.11.1</commons-net.version>

+ 4 - 4
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/config/CituJacksonAutoConfiguration.java

@@ -32,10 +32,10 @@ public class CituJacksonAutoConfiguration {
         SimpleModule simpleModule = new SimpleModule();
         simpleModule
                 // 新增 Long 类型序列化规则,数值超过 2^53-1,在 JS 会出现精度丢失问题,因此 Long 自动序列化为字符串类型
-//                .addSerializer(Long.class, NumberSerializer.INSTANCE)
-//                .addSerializer(Long.TYPE, NumberSerializer.INSTANCE)
-                .addSerializer(Long.class, ToStringSerializer.instance)
-                .addSerializer(Long.TYPE, ToStringSerializer.instance)
+                .addSerializer(Long.class, NumberSerializer.INSTANCE)
+                .addSerializer(Long.TYPE, NumberSerializer.INSTANCE)
+//                .addSerializer(Long.class, ToStringSerializer.instance)
+//                .addSerializer(Long.TYPE, ToStringSerializer.instance)
                 .addSerializer(LocalDate.class, LocalDateSerializer.INSTANCE)
                 .addDeserializer(LocalDate.class, LocalDateDeserializer.INSTANCE)
                 .addSerializer(LocalTime.class, LocalTimeSerializer.INSTANCE)

+ 8 - 1
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/web/core/handler/GlobalExceptionHandler.java

@@ -138,7 +138,14 @@ public class GlobalExceptionHandler {
             // 找不到国际化信息,则使用默认的错误提示
             return CommonResult.error(code, msg);
         } else {
-            return CommonResult.error(code, i18nMsg);
+            if (LocaleContextHolder.getLocale().equals(Locale.CHINA)) {
+                return CommonResult.error(code, msg);
+            } else {
+                // TODO 其他语句有一个问题,如果是  throw exception({},{}, 参数,参数2); 会有问题;
+                // TODO 因为是 先替换{} —> 抛出异常 -> 判断是否国际化 -> 到对应国际化配置里面找内容抛出,所以{}暂时做不到其他语言
+                // TODO 中文可以是英文,代码里面使用的是ErrorCodeConstants的常量值
+                return CommonResult.error(code, i18nMsg);
+            }
         }
     }
 

+ 1 - 1
citu-module-mall/citu-module-statistics-biz/src/main/resources/mapper/member/MemberStatisticsMapper.xml

@@ -14,7 +14,7 @@
             resultType="com.citu.module.statistics.controller.admin.member.vo.MemberSexStatisticsRespVO">
         SELECT sex, COUNT(1) AS userCount
         FROM member_user
-        WHERE deleted = FALSE
+        WHERE deleted = FALSE and sex !=0
         GROUP BY sex
     </select>
 

+ 2 - 4
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListService.java

@@ -1,16 +1,14 @@
 package com.citu.module.member.service.invoice;
 
-import java.util.*;
-import javax.validation.*;
-
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.PageParam;
 import com.citu.module.member.controller.admin.invoice.vo.AdminInvoiceListPageReqVO;
 import com.citu.module.member.controller.admin.invoice.vo.InvoiceStatusUpdateReqVo;
 import com.citu.module.member.controller.app.invoice.vo.InvoiceListPageReqVO;
 import com.citu.module.member.controller.app.invoice.vo.InvoiceListSaveReqVO;
 import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
 
+import javax.validation.Valid;
+
 /**
  * 发票清单 Service 接口
  *

+ 12 - 17
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceListServiceImpl.java

@@ -2,6 +2,8 @@ package com.citu.module.member.service.invoice;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
 import com.citu.module.member.controller.admin.invoice.vo.AdminInvoiceListPageReqVO;
 import com.citu.module.member.controller.admin.invoice.vo.InvoiceStatusUpdateReqVo;
@@ -11,22 +13,16 @@ import com.citu.module.member.dal.dataobject.invoice.InvoiceListDO;
 import com.citu.module.member.dal.mysql.invoice.InvoiceListMapper;
 import com.citu.module.pay.api.order.PayOrderApi;
 import com.citu.module.pay.api.order.dto.PayOrderBaseRespDTO;
-import com.citu.module.pay.api.order.dto.PayOrderRespDTO;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.util.object.BeanUtils;
 
+import javax.annotation.Resource;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.member.enums.ErrorCodeConstants.*;
 
+;
+
 /**
  * 发票清单 Service 实现类
  *
@@ -47,8 +43,8 @@ public class InvoiceListServiceImpl implements InvoiceListService {
     public Long createInvoiceList(InvoiceListSaveReqVO createReqVO) {
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
         PayOrderBaseRespDTO data = payOrderApi.getOrder2(createReqVO.getPayOrderId()).getData();
-        if(null==data){
-            throw   exception(INVOICE_LIST_ORDER_NOT_EXISTS);
+        if (null == data) {
+            throw exception(INVOICE_LIST_ORDER_NOT_EXISTS);
         }
 //        // 非本人订单
 //        if(!loginUserId.toString().equals( data.getChannelUserId())){
@@ -56,11 +52,10 @@ public class InvoiceListServiceImpl implements InvoiceListService {
 //        }
 
 
-
         InvoiceListDO invoiceListDO = invoiceListMapper.selectOne(new LambdaQueryWrapper<InvoiceListDO>().eq(InvoiceListDO::getPayOrderId, createReqVO.getPayOrderId()));
 
-        if(null!=invoiceListDO){
-          throw    exception(INVOICE_EXISTS);
+        if (null != invoiceListDO) {
+            throw exception(INVOICE_EXISTS);
         }
 
         // 插入
@@ -115,11 +110,11 @@ public class InvoiceListServiceImpl implements InvoiceListService {
     @Override
     public Object invoiceStatusUpdate(InvoiceStatusUpdateReqVo reqVo) {
         InvoiceListDO invoiceListDO = invoiceListMapper.selectById(reqVo.getId());
-        if(null == invoiceListDO){
-            throw  exception(INVOICE_LIST_NOT_EXISTS);
+        if (null == invoiceListDO) {
+            throw exception(INVOICE_LIST_NOT_EXISTS);
         }
 
-        if(!invoiceListDO.getStatus().equals(0)){
+        if (!invoiceListDO.getStatus().equals(0)) {
             throw exception(INVOICE_STATUS_ERROR);
         }
 

+ 2 - 4
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleService.java

@@ -1,14 +1,12 @@
 package com.citu.module.member.service.invoice;
 
-import java.util.*;
-import javax.validation.*;
-
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.PageParam;
 import com.citu.module.member.controller.app.invoice.vo.InvoiceTitlePageReqVO;
 import com.citu.module.member.controller.app.invoice.vo.InvoiceTitleSaveReqVO;
 import com.citu.module.member.dal.dataobject.invoice.InvoiceTitleDO;
 
+import javax.validation.Valid;
+
 /**
  * 发票抬头 Service 接口
  *

+ 4 - 9
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/service/invoice/InvoiceTitleServiceImpl.java

@@ -1,24 +1,19 @@
 package com.citu.module.member.service.invoice;
 
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
 import com.citu.module.member.controller.app.invoice.vo.InvoiceTitlePageReqVO;
 import com.citu.module.member.controller.app.invoice.vo.InvoiceTitleSaveReqVO;
 import com.citu.module.member.dal.dataobject.invoice.InvoiceTitleDO;
 import com.citu.module.member.dal.mysql.invoice.InvoiceTitleMapper;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.PageParam;
-import com.citu.framework.common.util.object.BeanUtils;
 
+import javax.annotation.Resource;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.citu.module.member.enums.ErrorCodeConstants.*;
+import static com.citu.module.member.enums.ErrorCodeConstants.INVOICE_TITLE_NOT_EXISTS;
 
 /**
  * 发票抬头 Service 实现类

+ 9 - 2
citu-module-pay/citu-module-pay-biz/src/main/java/com/citu/module/pay/service/wallet/PayWalletServiceImpl.java

@@ -32,7 +32,7 @@ import static com.citu.module.pay.enums.wallet.PayWalletBizTypeEnum.PAYMENT_REFU
  */
 @Service
 @Slf4j
-public class PayWalletServiceImpl implements  PayWalletService {
+public class PayWalletServiceImpl implements PayWalletService {
 
     @Resource
     private PayWalletMapper walletMapper;
@@ -102,7 +102,7 @@ public class PayWalletServiceImpl implements  PayWalletService {
     /**
      * 校验是否能退款
      *
-     * @param refundId 支付退款单 id
+     * @param refundId    支付退款单 id
      * @param walletPayNo 钱包支付 no
      */
     private Long validateWalletCanRefund(Long refundId, String walletPayNo) {
@@ -176,6 +176,13 @@ public class PayWalletServiceImpl implements  PayWalletService {
                 walletMapper.updateWhenRecharge(payWallet.getId(), price);
                 break;
             }
+            case PLATFORM_COMMISSION:
+            case RECOMMENDED_POSITIONS:
+            case DELIVERY_PERSON:
+            case GIFT:
+            case NOT_RECOMMENDED:
+                walletMapper.updateWhenRecharge(payWallet.getId(), price);
+                break;
             default: {
                 // TODO 其它类型待实现
                 throw new UnsupportedOperationException("待实现");

+ 1 - 1
citu-module-pay/citu-module-pay-biz/src/main/resources/application.yaml

@@ -47,7 +47,7 @@ mybatis-plus:
     map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
   global-config:
     db-config:
-      id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
+      id-type: ASSIGN_ID # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
       #      id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
       #      id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
       #      id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/AnalysisBaseReqVO.java → menduner/menduner-common/src/main/java/com/citu/module/menduner/common/dto/TimeRangeBasePageReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.base.analysis;
+package com.citu.module.menduner.common.dto;
 
 import com.citu.framework.common.pojo.PageParam;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -9,9 +9,9 @@ import java.time.LocalDateTime;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@Schema(description = "统计分析公共 Request VO")
+@Schema(description = "时间范围 Request VO")
 @Data
-public class AnalysisBaseReqVO extends PageParam {
+public class TimeRangeBasePageReqVO extends PageParam {
 
     public static final String ALL = "-1";
     public static final String TYPE_RECENT_7_DAYS = "0";
@@ -19,7 +19,7 @@ public class AnalysisBaseReqVO extends PageParam {
     public static final String TYPE_LAST_QUARTER = "2";
     public static final String TYPE_CUSTOM = "99";
 
-    @Schema(description = "统计类型 0最近7天|1上个月|2上季度|99自定义", required = true)
+    @Schema(description = "统计类型 -1全部|0最近7天|1上个月|2上季度|99自定义", required = true)
     private String type;
 
     @Schema(description = "自定义时间范围")

+ 33 - 0
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/dto/TimeRangeBaseReqVO.java

@@ -0,0 +1,33 @@
+package com.citu.module.menduner.common.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "时间范围 Request VO")
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Data
+public class TimeRangeBaseReqVO {
+
+    public static final String ALL = "-1";
+    public static final String TYPE_RECENT_7_DAYS = "0";
+    public static final String TYPE_LAST_MONTH = "1";
+    public static final String TYPE_LAST_QUARTER = "2";
+    public static final String TYPE_CUSTOM = "99";
+
+    @Schema(description = "统计类型 -1全部|0最近7天|1上个月|2上季度|99自定义", required = true)
+    private String type;
+
+    @Schema(description = "自定义时间范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] time;
+}

+ 17 - 4
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/util/LoginUserContext.java

@@ -1,7 +1,6 @@
 package com.citu.module.menduner.common.util;
 
 import cn.hutool.core.collection.CollUtil;
-import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
 
@@ -85,7 +84,7 @@ public class LoginUserContext {
      **/
     public static Long getEnterpriseId2(LoginUser loginUser) {
         if (!checkEnterprise(loginUser)) {
-          return null;
+            return null;
         }
         return Long.valueOf(loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID));
     }
@@ -107,9 +106,9 @@ public class LoginUserContext {
     }
 
     /**
-     * 效验当前用户企业信息是否为UserTypeEnum.MEMBER_ADMIN
+     * 效验当前是不是用户企业信息,不是就抛出异常
      **/
-    public static LoginUser checkUserTypeIsAdmin() {
+    public static LoginUser checkIsEnterpriseUser() {
         LoginUser loginUser = LoginUserContext.get();
         // 判断操作者是否有权限操作
         if (!checkEnterprise(loginUser)) {
@@ -117,4 +116,18 @@ public class LoginUserContext {
         }
         return loginUser;
     }
+
+
+    /**
+     * 效验当前是不是用户企业信息,不是就抛出异常
+     **/
+    public static boolean checkIsEnterpriseUserRetBool() {
+        LoginUser loginUser = LoginUserContext.get();
+        // 判断操作者是否有权限操作
+        if (!checkEnterprise(loginUser)) {
+            return false;
+        }
+        return true;
+    }
+
 }

+ 86 - 0
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/util/TimeUtils.java

@@ -0,0 +1,86 @@
+package com.citu.module.menduner.common.util;
+
+import com.citu.module.menduner.common.dto.TimeRangeBasePageReqVO;
+import com.citu.module.menduner.common.dto.TimeRangeBaseReqVO;
+
+import java.time.LocalDateTime;
+
+/**
+ * 时间相关工具类
+ **/
+public class TimeUtils {
+
+    /**
+     * 生成时间范围
+     **/
+    public static LocalDateTime[] generateDateTimeRange(TimeRangeBasePageReqVO reqVO) {
+        if (TimeRangeBasePageReqVO.TYPE_CUSTOM.equals(reqVO.getType())) {
+            return reqVO.getTime();
+        }
+        LocalDateTime[] dateTimeRange = new LocalDateTime[2];
+        LocalDateTime now = LocalDateTime.now();
+        switch (reqVO.getType()) {
+            case TimeRangeBasePageReqVO.ALL:
+                dateTimeRange[0] = null;
+                dateTimeRange[1] = null;
+                break;
+            case TimeRangeBasePageReqVO.TYPE_RECENT_7_DAYS:
+                // 最新7天内
+                dateTimeRange[0] = now.minusDays(7);
+                dateTimeRange[1] = now;
+                break;
+            case TimeRangeBasePageReqVO.TYPE_LAST_MONTH:
+                // 上个月
+                dateTimeRange[0] = now.minusMonths(1).withDayOfMonth(1);
+                dateTimeRange[1] = now.withDayOfMonth(1).minusNanos(1);
+                break;
+            case TimeRangeBasePageReqVO.TYPE_LAST_QUARTER:
+                // 上季度
+                int currentMonth = now.getMonthValue();
+                // 计算上一季度的起始月份
+                int quarterStartMonth = ((currentMonth - 1) / 3) * 3 + 1;
+                int lastQuarterStartMonth = quarterStartMonth - 3;
+                dateTimeRange[0] = now.withMonth(lastQuarterStartMonth).withDayOfMonth(1);
+                dateTimeRange[1] = now.withMonth(quarterStartMonth).withDayOfMonth(1).minusNanos(1);
+                break;
+        }
+        return dateTimeRange;
+    }
+
+    /**
+     * 生成时间范围
+     **/
+    public static LocalDateTime[] generateDateTimeRange(TimeRangeBaseReqVO reqVO) {
+        if (TimeRangeBasePageReqVO.TYPE_CUSTOM.equals(reqVO.getType())) {
+            return reqVO.getTime();
+        }
+        LocalDateTime[] dateTimeRange = new LocalDateTime[2];
+        LocalDateTime now = LocalDateTime.now();
+        switch (reqVO.getType()) {
+            case TimeRangeBasePageReqVO.ALL:
+                dateTimeRange[0] = null;
+                dateTimeRange[1] = null;
+                break;
+            case TimeRangeBasePageReqVO.TYPE_RECENT_7_DAYS:
+                // 最新7天内
+                dateTimeRange[0] = now.minusDays(7);
+                dateTimeRange[1] = now;
+                break;
+            case TimeRangeBasePageReqVO.TYPE_LAST_MONTH:
+                // 上个月
+                dateTimeRange[0] = now.minusMonths(1).withDayOfMonth(1);
+                dateTimeRange[1] = now.withDayOfMonth(1).minusNanos(1);
+                break;
+            case TimeRangeBasePageReqVO.TYPE_LAST_QUARTER:
+                // 上季度
+                int currentMonth = now.getMonthValue();
+                // 计算上一季度的起始月份
+                int quarterStartMonth = ((currentMonth - 1) / 3) * 3 + 1;
+                int lastQuarterStartMonth = quarterStartMonth - 3;
+                dateTimeRange[0] = now.withMonth(lastQuarterStartMonth).withDayOfMonth(1);
+                dateTimeRange[1] = now.withMonth(quarterStartMonth).withDayOfMonth(1).minusNanos(1);
+                break;
+        }
+        return dateTimeRange;
+    }
+}

+ 2 - 1
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java

@@ -17,6 +17,7 @@ import com.citu.module.menduner.im.service.wukong.WuKongUserService;
 import com.citu.module.menduner.system.api.user.UserApi;
 import com.citu.module.menduner.system.api.user.UserInfoReqDTO;
 import com.citu.module.menduner.system.api.user.UserInfoRespDTO;
+import com.citu.module.menduner.system.enums.MdeUserTypeEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -119,7 +120,7 @@ public class UserServiceImpl implements UserService{
             item.setUserId(userDO.getUserId());
 
             item.setUserType(DEFAULT_ENTERPRISE_ID.equals(userDO.getEnterpriseId())
-                    ?UserInfoReqDTO.USER_TYPE_USER:UserInfoReqDTO.USER_TYPE_ENTERPRISE);
+                    ? MdeUserTypeEnum.USER.getType():MdeUserTypeEnum.ENTERPRISE_USER.getType());
 
             item.setEnterpriseId(DEFAULT_ENTERPRISE_ID.equals(userDO.getEnterpriseId())?null:userDO.getEnterpriseId());
             list.add(item);

+ 5 - 0
menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/ErrorCodeConstants.java

@@ -32,6 +32,11 @@ public interface ErrorCodeConstants {
     ErrorCode POINT_RULE_CONFIG_TRIGGER_RULE_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_007, "触发规则不能为空");
     ErrorCode POINT_RULE_CONFIG_URL_EXISTS = new ErrorCode(1_110_001_008, "事件地址已存在配置");
 
+    ErrorCode POINT_RULE_CONFIG_TRIGGER_RULE_TYPE_NOT_SUPPORT = new ErrorCode(1_110_001_009, "未选择规则触发类型");
+
+    ErrorCode POINT_RULE_CONFIG_MARK_VALUE_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_010, "选择标记事件类型,标记值不能为空");
+
+
     //========== 积分记录 1_110_002_000 ==========
     ErrorCode POINT_RECORD_BIZ_NOT_SUPPORT = new ErrorCode(1_110_002_001, "用户积分记录业务类型不支持");
 

+ 29 - 0
menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/config/PointRuleConfigTriggerTypeEnum.java

@@ -0,0 +1,29 @@
+package com.citu.module.menduner.reward.enums.config;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 事件触发类型
+ * 事件触发类型定义如下:
+ * 请求成功后触发 (0)
+ *   描述:当事件地址的请求返回成功状态码(如 HTTP 200)后触发。
+ *   适用场景:需要确认服务器响应成功的操作,例如表单提交、API 调用等。
+ * 点击立即触发 (1)
+ *   描述:用户点击事件地址后立即触发,无论请求是否成功。
+ *   适用场景:需要记录用户点击行为或立即响应的操作,例如按钮点击、链接跳转等。
+ * 页面停留触发 (2)
+ *   描述:用户点击事件地址后,如果在该页面停留时间达到指定秒数(N秒)后触发。
+ *   适用场景:需要确认用户实际浏览了页面内容的操作,例如文章阅读、产品详情页查看等。
+ */
+@Getter
+@AllArgsConstructor
+public enum PointRuleConfigTriggerTypeEnum {
+    REQUEST_SUCCESS("0", "请求成功后触发"),
+    CLICK("1", "点击触发"),
+    PAGE_STAY("2", "页面停留");
+
+    private final String type;
+    private final String name;
+
+}

+ 33 - 0
menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/config/PointRuleConfigTypeEnum.java

@@ -0,0 +1,33 @@
+package com.citu.module.menduner.reward.enums.config;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 事件类型
+ * 事件类型定义
+ * 普通事件 (0)
+ *  名称:普通事件
+ *  描述:这类事件是随时可以根据规则触发的事件。例如,用户登录、点击某个按钮等。
+ *  用途:适用于任何实时或即时触发的操作。
+ * 标记事件 (1)
+ *  名称:标记事件
+ *  描述:这类事件包含"普通事件"的特性之外, 还用于标记某些特定的状态或行为,以便用户可以在页面上查看该事件是否已经完成。
+ *  用途:适用于需要用户跟踪进度或状态的情况,例如任务完成情况、成就达成等。
+ * 异步确认事件 (2)
+ *  名称:异步确认事件
+ *  描述:这类事件用于处理那些不是立即有结果的操作,需要通过定时扫描或其他方式来确认最终结果。例如,支付操作的结果可能需要一段时间才能确认成功。
+ *  用途:适用于需要等待外部系统反馈或需要经过一定时间才能确认结果的操作,如支付、订单状态更新等。
+ **/
+@Getter
+@AllArgsConstructor
+public enum PointRuleConfigTypeEnum {
+
+    COMMON("0", "普通事件"),
+    MARK("1", "标记事件"),
+    ASYNC_CONFIRM("2", "异步确认事件");
+
+    private final String type;
+    private final String name;
+
+}

+ 12 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/event/EventTrackController.java

@@ -3,6 +3,8 @@ package com.citu.module.menduner.reward.controller.admin.event;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskReqVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
 import com.citu.module.menduner.reward.service.event.EventTrackService;
@@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.annotation.security.PermitAll;
+import javax.validation.Valid;
 import java.util.List;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
@@ -44,6 +47,15 @@ public class EventTrackController {
         return success(service.click(url));
     }
 
+    @PermitAll
+    @PreAuthenticated
+    @GetMapping("/get/mark/task")
+    @Operation(summary = "获取标记事件任务")
+    public CommonResult<List<TaskRespVO>> getMarkTask(@Valid TaskReqVO reqVO) {
+        return success(service.getMarkTask(reqVO));
+    }
+
+
     @PermitAll
     @PreAuthenticated
     @GetMapping("/get/url/list")

+ 6 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigPageReqVO.java

@@ -23,6 +23,12 @@ public class PointRuleConfigPageReqVO extends PageParam {
     @Schema(description = "类型", example = "2")
     private String type;
 
+    @Schema(description = "触发类型", example = "2")
+    private String triggerType;
+
+    @Schema(description = "标记")
+    private String mark;
+
     @Schema(description = "规则标题")
     private String title;
 

+ 8 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigRespVO.java

@@ -25,6 +25,14 @@ public class PointRuleConfigRespVO {
     @ExcelProperty("类型")
     private String type;
 
+    @Schema(description = "触发类型", example = "2")
+    @ExcelProperty("触发类型")
+    private String triggerType;
+
+    @Schema(description = "标记")
+    @ExcelProperty("标记")
+    private String mark;
+
     @Schema(description = "规则标题", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("规则标题")
     private String title;

+ 10 - 3
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigSaveReqVO.java

@@ -1,12 +1,12 @@
 package com.citu.module.menduner.reward.controller.base.config;
 
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.citu.module.menduner.reward.dal.dataobject.config.Condition;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
+import lombok.Data;
 
-import javax.validation.constraints.*;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 
 @Schema(description = "管理后台 - 积分规则配置新增/修改 Request VO")
 @Data
@@ -23,6 +23,13 @@ public class PointRuleConfigSaveReqVO {
     @NotEmpty(message = "{1_110_001_003}")
     private String type;
 
+    @Schema(description = "触发类型", example = "2")
+    @NotEmpty(message = "{1_110_001_009}")
+    private String triggerType;
+
+    @Schema(description = "标记")
+    private String mark;
+
     @Schema(description = "规则标题", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotEmpty(message = "{1_110_001_004}")
     private String title;

+ 18 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/TaskReqVO.java

@@ -0,0 +1,18 @@
+package com.citu.module.menduner.reward.controller.base.config;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "任务参数 Request VO")
+@Data
+public class TaskReqVO {
+    public static final String TYPE_RECOMMEND = "0";
+    public static final String TYPE_TODAY = "1";
+
+    @Schema(description = "任务类型 0推荐任务|1今日任务", required = true)
+    private String type = TYPE_RECOMMEND;
+
+    @Schema(description = "标记")
+    private String mark;
+
+}

+ 29 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/TaskRespVO.java

@@ -0,0 +1,29 @@
+package com.citu.module.menduner.reward.controller.base.config;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "任务 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class TaskRespVO {
+
+    @Schema(description = "规则标题", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String title;
+
+    @Schema(description = "url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
+    private String url;
+
+    @Schema(description = "数学运算符", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String operation;
+
+    @Schema(description = "积分数", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Integer point;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+    @Schema(description = "是否完成")
+    private boolean complete;
+}

+ 3 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/event/EventTrackUrlRespVO.java

@@ -16,6 +16,9 @@ public class EventTrackUrlRespVO {
     @Schema(description = "类型")
     private String type;
 
+    @Schema(description = "触发类型", example = "2")
+    private String triggerType;
+
     @Schema(description = "规则标题")
     private String title;
 

+ 10 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/config/PointRuleConfigDO.java

@@ -33,9 +33,18 @@ public class PointRuleConfigDO extends BaseDO {
      */
     private String url;
     /**
-     * 类型
+     * 事件类型
+     * @link {@link com.citu.module.menduner.reward.enums.config.PointRuleConfigTypeEnum}
      */
     private String type;
+    /**
+     * 触发类型
+     */
+    private String triggerType;
+    /**
+     * 标记
+     */
+    private String mark;
     /**
      * 规则标题
      */

+ 42 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/config/PointRuleConfigMapper.java

@@ -3,11 +3,15 @@ package com.citu.module.menduner.reward.dal.mysql.config;
 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.reward.controller.base.config.PointRuleConfigPageReqVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.dal.dataobject.config.PointRuleConfigDO;
+import com.citu.module.menduner.reward.dal.dataobject.event.EventRecordDO;
 import com.citu.module.menduner.reward.enums.config.PointRuleConfigStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -22,6 +26,8 @@ public interface PointRuleConfigMapper extends BaseMapperX<PointRuleConfigDO> {
         return selectPage(reqVO, new LambdaQueryWrapperX<PointRuleConfigDO>()
                 .likeIfPresent(PointRuleConfigDO::getUrl, reqVO.getUrl())
                 .eqIfPresent(PointRuleConfigDO::getType, reqVO.getType())
+                .eqIfPresent(PointRuleConfigDO::getTriggerType, reqVO.getTriggerType())
+                .likeIfPresent(PointRuleConfigDO::getMark, reqVO.getMark())
                 .likeIfPresent(PointRuleConfigDO::getTitle, reqVO.getTitle())
                 .eqIfPresent(PointRuleConfigDO::getOperation, reqVO.getOperation())
                 .eqIfPresent(PointRuleConfigDO::getStatus, reqVO.getStatus())
@@ -43,7 +49,7 @@ public interface PointRuleConfigMapper extends BaseMapperX<PointRuleConfigDO> {
         );
     }
 
-    default PointRuleConfigDO existByUrl(String url,Long id) {
+    default PointRuleConfigDO existByUrl(String url, Long id) {
         return selectOne(new LambdaQueryWrapperX<PointRuleConfigDO>()
                 .eq(PointRuleConfigDO::getUrl, url)
                 .neIfPresent(PointRuleConfigDO::getId, id)
@@ -58,5 +64,40 @@ public interface PointRuleConfigMapper extends BaseMapperX<PointRuleConfigDO> {
         );
     }
 
+    /**
+     * 查询任务
+     *
+     * @param userId 用户id
+     * @param type   事件类型
+     * @param mark   标记
+     */
+    default List<TaskRespVO> selectTask(Long userId, String type, String mark, LocalDateTime startTime, LocalDateTime endTime) {
+        MPJLambdaWrapperX<PointRuleConfigDO> query = new MPJLambdaWrapperX<>();
+        query.selectAs(PointRuleConfigDO::getTitle, TaskRespVO::getTitle);
+        query.selectAs(PointRuleConfigDO::getUrl, TaskRespVO::getUrl);
+        query.selectAs(PointRuleConfigDO::getPoint, TaskRespVO::getPoint);
+        query.selectAs(PointRuleConfigDO::getSort, TaskRespVO::getSort);
+        query.selectAs(PointRuleConfigDO::getOperation, TaskRespVO::getOperation);
+        // 总数
+//        query.selectFunc(" COALESCE(SUM(%s), 0)", arg -> arg.accept(EventRecordDO::getCount),"totalCount");
+        query.selectFunc("CASE WHEN COALESCE(SUM(%s), 0) > 0 THEN TRUE ELSE FALSE END",
+                arg -> arg.accept(EventRecordDO::getCount), TaskRespVO::isComplete);
+
+        query.leftJoin(EventRecordDO.class, on -> on
+                .eq(EventRecordDO::getUrl, PointRuleConfigDO::getUrl)
+                .eq(EventRecordDO::getUserId, userId)
+                .between(null != startTime && null != endTime,EventRecordDO::getCreateTime, startTime, endTime)
+        );
+
+        // 增加条件
+        query.eq(PointRuleConfigDO::getStatus, PointRuleConfigStatusEnum.ENABLE.getStatus());
+        query.eq(PointRuleConfigDO::getType, type);
+        query.eqIfPresent(PointRuleConfigDO::getMark, mark);
+
+        query.orderByAsc(PointRuleConfigDO::getSort);
+        query.groupBy(PointRuleConfigDO::getId);
+
+        return selectJoinList(TaskRespVO.class, query);
+    }
 
 }

+ 25 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/event/EventRecordMapper.java

@@ -6,6 +6,8 @@ import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.reward.controller.base.event.EventRecordPageReqVO;
 import com.citu.module.menduner.reward.dal.dataobject.event.EventRecordDO;
+import com.citu.module.menduner.system.enums.account.AccountRecordTypeEnum;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDateTime;
@@ -44,6 +46,29 @@ public interface EventRecordMapper extends BaseMapperX<EventRecordDO> {
         return selectList(wrapperX);
     }
 
+    /**
+     * 查询事件在某段时间的点击总数量
+     * @param userId 用户ID
+     * @param url 地址
+     * @param startDate 开始时间
+     * @param endDate 结束时间
+     */
+    default int sumCount(Long userId, String url, LocalDateTime startDate, LocalDateTime endDate) {
+        MPJLambdaWrapper<EventRecordDO> wrapperX = new MPJLambdaWrapper<EventRecordDO>();
+        wrapperX.selectSum(EventRecordDO::getCount);
+        wrapperX.eq(EventRecordDO::getUserId, userId);
+        wrapperX.eqIfExists(EventRecordDO::getUrl, url);
+        if (null != startDate) {
+            wrapperX.ge(EventRecordDO::getCreateTime, startDate);
+        }
+
+        if (null != endDate) {
+            wrapperX.le(EventRecordDO::getCreateTime, endDate);
+        }
+
+        return selectJoinOne(Integer.class, wrapperX);
+    }
+
     // 根据用户ID、地址、指标ID、当天时间查询事件记录
     default EventRecordDO get(Long userId, String url, LocalDateTime date) {
         LambdaQueryWrapperX<EventRecordDO> wrapperX = new LambdaQueryWrapperX<EventRecordDO>();

+ 8 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/config/PointRuleConfigService.java

@@ -3,9 +3,11 @@ package com.citu.module.menduner.reward.service.config;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.reward.controller.base.config.PointRuleConfigPageReqVO;
 import com.citu.module.menduner.reward.controller.base.config.PointRuleConfigSaveReqVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.dal.dataobject.config.PointRuleConfigDO;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -63,6 +65,7 @@ public interface PointRuleConfigService {
 
     /**
      * 获取已上线的积分规则配置
+     *
      * @return 积分规则配置集合
      */
     List<PointRuleConfigDO> selectDistinctUrlList();
@@ -76,4 +79,9 @@ public interface PointRuleConfigService {
      * 关闭规则
      **/
     boolean disable(List<Long> ids);
+
+    /**
+     * 获取任务
+     **/
+    List<TaskRespVO> selectTask(Long userId, String type, String mark, LocalDateTime startTime, LocalDateTime endTime);
 }

+ 25 - 3
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/config/PointRuleConfigServiceImpl.java

@@ -5,21 +5,26 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.reward.controller.base.config.PointRuleConfigPageReqVO;
 import com.citu.module.menduner.reward.controller.base.config.PointRuleConfigSaveReqVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.dal.dataobject.config.PointRuleConfigDO;
 import com.citu.module.menduner.reward.dal.mysql.config.PointRuleConfigMapper;
 import com.citu.module.menduner.reward.dal.redis.RedisKeyConstants;
 import com.citu.module.menduner.reward.enums.config.PointRuleConfigStatusEnum;
+import com.citu.module.menduner.reward.enums.config.PointRuleConfigTypeEnum;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Caching;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.reward.enums.ErrorCodeConstants.POINT_RULE_CONFIG_MARK_VALUE_CAN_NOT_BE_EMPTY;
 import static com.citu.module.menduner.reward.enums.ErrorCodeConstants.POINT_RULE_CONFIG_NOT_EXISTS;
 
 /**
@@ -37,7 +42,7 @@ public class PointRuleConfigServiceImpl implements PointRuleConfigService {
     @Override
     @DSTransactional
     @Caching(evict = {
-            @CacheEvict(value = RedisKeyConstants.POINT_RULE_CONFIG, key = "#updateReqVO.url"),
+            @CacheEvict(value = RedisKeyConstants.POINT_RULE_CONFIG, key = "#createReqVO.url"),
             @CacheEvict(value = RedisKeyConstants.POINT_RULE_CONFIG_LIST, allEntries = true)
     })
     public Long createPointRuleConfig(PointRuleConfigSaveReqVO createReqVO) {
@@ -48,6 +53,11 @@ public class PointRuleConfigServiceImpl implements PointRuleConfigService {
         //        if (null != exist) {
         //            throw exception(POINT_RULE_CONFIG_URL_EXISTS);
         //        }
+        if(PointRuleConfigTypeEnum.MARK.getType().equals(createReqVO.getType())){
+            if(!StringUtils.hasText(createReqVO.getMark())){
+                throw exception(POINT_RULE_CONFIG_MARK_VALUE_CAN_NOT_BE_EMPTY);
+            }
+        }
         mapper.insert(pointRuleConfig);
         // 返回
         return pointRuleConfig.getId();
@@ -67,6 +77,11 @@ public class PointRuleConfigServiceImpl implements PointRuleConfigService {
         //        if (null != exist) {
         //            throw exception(POINT_RULE_CONFIG_URL_EXISTS);
         //        }
+        if(PointRuleConfigTypeEnum.MARK.getType().equals(updateReqVO.getType())){
+            if(!StringUtils.hasText(updateReqVO.getMark())){
+                throw exception(POINT_RULE_CONFIG_MARK_VALUE_CAN_NOT_BE_EMPTY);
+            }
+        }
         // 更新
         PointRuleConfigDO updateObj = BeanUtils.toBean(updateReqVO, PointRuleConfigDO.class);
         mapper.updateById(updateObj);
@@ -85,10 +100,12 @@ public class PointRuleConfigServiceImpl implements PointRuleConfigService {
         mapper.deleteById(id);
     }
 
-    private void validatePointRuleConfigExists(Long id) {
-        if (mapper.selectById(id) == null) {
+    private PointRuleConfigDO validatePointRuleConfigExists(Long id) {
+        PointRuleConfigDO pointRuleConfig = mapper.selectById(id);
+        if(null == pointRuleConfig) {
             throw exception(POINT_RULE_CONFIG_NOT_EXISTS);
         }
+        return pointRuleConfig;
     }
 
     @Override
@@ -160,4 +177,9 @@ public class PointRuleConfigServiceImpl implements PointRuleConfigService {
         }
         return true;
     }
+
+    @Override
+    public List<TaskRespVO> selectTask(Long userId, String type, String mark, LocalDateTime startTime, LocalDateTime endTime) {
+        return mapper.selectTask(userId, type, mark,  startTime,  endTime);
+    }
 }

+ 9 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackService.java

@@ -1,6 +1,8 @@
 package com.citu.module.menduner.reward.service.event;
 
 import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskReqVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
 import com.citu.module.menduner.system.api.url.UrlInfoRespVO;
@@ -27,4 +29,11 @@ public interface EventTrackService {
      * 获取menduner相关服务的url地址
      **/
     List<TreeRespVO<List<TreeRespVO<List<UrlInfoRespVO>>>>> getUrlList();
+
+
+    /**
+     * 根据标记值获取标记事件的任务
+     * @param reqVO 查询条件
+     **/
+    List<TaskRespVO> getMarkTask(TaskReqVO reqVO);
 }

+ 35 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackServiceImpl.java

@@ -3,8 +3,11 @@ package com.citu.module.menduner.reward.service.event;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.security.core.LoginUser;
+import com.citu.module.menduner.common.dto.TimeRangeBaseReqVO;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskReqVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
 import com.citu.module.menduner.reward.convert.PointRuleConfigConvert;
@@ -13,6 +16,7 @@ import com.citu.module.menduner.reward.core.PointRule;
 import com.citu.module.menduner.reward.core.RuleMatch;
 import com.citu.module.menduner.reward.dal.dataobject.config.Condition;
 import com.citu.module.menduner.reward.dal.dataobject.config.PointRuleConfigDO;
+import com.citu.module.menduner.reward.enums.config.PointRuleConfigTypeEnum;
 import com.citu.module.menduner.reward.mq.message.UserPointSendMessage;
 import com.citu.module.menduner.reward.mq.producer.UserPointProducer;
 import com.citu.module.menduner.reward.rule.DynamicPointRule;
@@ -28,9 +32,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
 import static com.citu.module.menduner.reward.enums.EasyRulesConstants.*;
 
 /**
@@ -100,6 +107,29 @@ public class EventTrackServiceImpl implements EventTrackService {
         return convertUrlInfoListToTree(list);
     }
 
+    @Override
+    public List<TaskRespVO> getMarkTask(TaskReqVO reqVO) {
+        LocalDateTime[] timeRange = null;
+        if(TaskReqVO.TYPE_RECOMMEND.equals(reqVO.getType())) {
+            timeRange =generateDateTimeRange(TimeRangeBaseReqVO.builder().type(TimeRangeBaseReqVO.ALL).build());
+        }else {
+            LocalDate today = LocalDate.now();
+            LocalDateTime startOfDay = today.atStartOfDay();  // 当天的开始时间
+            LocalDateTime endOfDay = today.atTime(23, 59, 59);  // 当天的结束时间
+            timeRange =generateDateTimeRange(TimeRangeBaseReqVO.builder()
+                    .type(TimeRangeBaseReqVO.TYPE_CUSTOM)
+                    // time 是数组,第一个元素是开始时间,第二个元素是结束时间,改为当天的起始和结束
+                    .time(new LocalDateTime[]{startOfDay, endOfDay})
+                    .build());
+        }
+        return ruleConfigService.selectTask(LoginUserContext.getUserId(),
+                PointRuleConfigTypeEnum.MARK.getType(),
+                reqVO.getMark(),
+                timeRange[0],
+                timeRange[1]
+        );
+    }
+
     @Override
     @DSTransactional
     public List<EventTrackPointRespVO> click(String url) {
@@ -192,6 +222,10 @@ public class EventTrackServiceImpl implements EventTrackService {
      **/
     private UserPointSendMessage buildUserPointSendMessage(LoginUser loginUser, PointRuleConfigDO config,
                                                            PointRule pointRule, String url) {
+        PointBizTypeEnum bizType = PointBizTypeEnum.EVENT;
+        if (PointRuleConfigTypeEnum.MARK.getType().equals(config.getType())) {
+            bizType = PointBizTypeEnum.RECOMMEND_TASK;
+        }
         return UserPointSendMessage.builder()
                 .userId(loginUser.getId())
                 .url(url)
@@ -199,7 +233,7 @@ public class EventTrackServiceImpl implements EventTrackService {
                 .operation(MathOperationEnum.ADD.getOperator().equals(config.getOperation())
                         ? MathOperationEnum.ADD : MathOperationEnum.SUBTRACT) // 确定操作类型(加法或减法)
                 .point(pointRule.getPoint())
-                .bizType(PointBizTypeEnum.EVENT)
+                .bizType(bizType)
                 .bizId(String.valueOf(config.getId()))
                 .build();
     }

+ 1 - 1
menduner/menduner-reward-biz/src/main/resources/application.yaml

@@ -72,7 +72,7 @@ mybatis-plus:
       #      id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
       logic-delete-value: 1 # 逻辑已删除值(默认为 1)
       logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
-    banner: true # 关闭控制台的 Banner 打印
+    banner: false # 关闭控制台的 Banner 打印
   type-aliases-package: ${citu.info.base-package}.dal.dataobject
   encryptor:
     password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成

+ 2 - 0
menduner/menduner-reward-biz/src/main/resources/i18n/messages_en_US.properties

@@ -29,6 +29,8 @@
 1_110_001_006=The number of points cannot be empty
 1_110_001_007=Trigger rule cannot be empty
 1_110_001_008=Event address already exists in configuration
+1_110_001_009=No rule trigger type selected
+1_110_001_010=Select the marked event type, the marked value cannot be empty
 # ========== 积分记录 1_110_002_000 ==========
 1_110_002_001=User point record business type not supported
 # ========== 签到配置 1_110_003_000 ==========

+ 2 - 0
menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -29,6 +29,8 @@
 1_110_001_006=积分数量不能为空
 1_110_001_007=触发规则不能为空
 1_110_001_008=事件地址已存在配置
+1_110_001_009=未选择规则触发类型
+1_110_001_010=选择标记事件类型,标记值不能为空
 #========== 积分记录 1_110_002_000 ==========
 1_110_002_001=用户积分记录业务类型不支持
 # ========== 签到配置 1_110_003_000 ==========

+ 1 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphApi.java

@@ -32,7 +32,7 @@ public interface GraphApi {
     @Operation(summary = "推荐人才")
     CommonResult<Long[]> queryRecommendPerson(@RequestBody GraphQueryPageDTO queryDTO);
 
-    @PostMapping("/rocket/receive/data")
+    @PostMapping("/rocket/delete/data")
     @Operation(summary = "删除图谱数据")
     CommonResult<Boolean> receiveData(@RequestBody GraphQueryPageDTO queryDTO);
 }

+ 2 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/DictTypeConstants.java

@@ -20,10 +20,11 @@ public interface DictTypeConstants {
     String MENDUNER_EDUCATION_TYPE = "menduner_education_type"; // 学历
     String MENDUNER_EDUCATION_SYSTEM_TYPE = "menduner_education_system_type"; // 学制类型
     String MENDUNER_VISITS_TYPE = "menduner_visits_type"; // 业务类型
+    String MENDUNER_JOB_SEEK_STATUS = "menduner_job_seek_status"; // 求职状态
 
     String MENDUNER_EXP_TYPE = "menduner_exp_type"; // 工作经验
 
-    String MENDUNER_JOB_STATUS = "menduner_job_status"; // 求职状态
+    String MENDUNER_JOB_STATUS = "menduner_job_status"; // 招聘职位状态
     String MENDUNER_SEX = "menduner_sex";
 
 

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

@@ -28,7 +28,6 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_COMMON_USER_TYPE_NOT_NULL = new ErrorCode(1_099_000_008, "用户类型不能为空");
 
 
-
     // ========== 人员信息-个人档案 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, "个人优势不能为空");
@@ -172,7 +171,6 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_USER_EMAIL_NOT_REGISTERED = new ErrorCode(1_100_017_019, "邮箱号未注册");
 
 
-
     // ========== 角色模块 1_100_018_000 ==========
     ErrorCode MDE_ROLE_NOT_EXISTS = new ErrorCode(1_100_018_001, "角色不存在");
     ErrorCode MDE_ROLE_NAME_DUPLICATE = new ErrorCode(1_100_018_002, "已经存在名为【{}】的角色");
@@ -239,7 +237,6 @@ public interface ErrorCodeConstants {
             = new ErrorCode(1_100_021_012, "统一社会信用代码已被注册");
 
 
-
     ErrorCode MDE_ENTERPRISE_REGISTER_CONTACT_NAME_NOT_NULL = new ErrorCode(1_100_021_013, "联系人名称不能为空");
 
     ErrorCode MDE_ENTERPRISE_REGISTER_PASSWORD_NOT_NULL = new ErrorCode(1_100_021_014, "密码不能为空");
@@ -248,6 +245,8 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ENTERPRISE_REGISTER_STATUS_APPLYING = new ErrorCode(1_100_021_016, "企业注册申请中");
 
 
+    ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE = new ErrorCode(1_100_021_017, "该邮箱已被其他企业注册");
+
     // ========== 企业地址 1_100_022_001 ==========
     ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_100_022_001, "企业地址不存在");
 
@@ -260,7 +259,6 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ENTERPRISE_USER_BIND_PASSWORD_LENGTH = new ErrorCode(1_100_023_006, "新密码长度为 8-16 位");
 
 
-
     // ========== 企业岗位信息 1_100_024_000 ==========
     ErrorCode ENTERPRISE_POST_NOT_EXISTS = new ErrorCode(1_100_024_001, "企业岗位信息不存在");
     ErrorCode ENTERPRISE_POST_NAME_CN_NOT_NULL = new ErrorCode(1_100_024_002, "岗位中文名称不能为空");
@@ -280,6 +278,8 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_JOB_ADVERTISED_BALANCE_UPDATE = new ErrorCode(1_100_025_010, "不能修改已发布职位赏金余额");
     ErrorCode MDE_JOB_ADVERTISED_POINT_UPDATE = new ErrorCode(1_100_025_011, "不能修改已发布职位赏金积分");
 
+    ErrorCode MDE_JOB_ADVERTISED_NAME_DUPLICATE = new ErrorCode(1_100_025_012, "职位名称({})已存在,请修改后重新保存");
+    ErrorCode MDE_JOB_ADVERTISED_TIME_ERROR = new ErrorCode(1_100_025_013, "到期时间不能小于当前时间");
 
     // ========== 企业招聘者浏览 1_100_026_000 ==========
     ErrorCode ENTERPRISE_USER_LOOK_NOT_EXISTS = new ErrorCode(1_100_026_001, "企业招聘者浏览不存在");
@@ -423,7 +423,7 @@ public interface ErrorCodeConstants {
     ErrorCode ENTERPRISE_INVITE_RECORD_EXIST_PARENT =
             new ErrorCode(1_100_041_009, "公司已存在所属上级,不能操作成为子公司");
 
-    ErrorCode ENTERPRISE_INVITE_RECORD_EXIST=
+    ErrorCode ENTERPRISE_INVITE_RECORD_EXIST =
             new ErrorCode(1_100_041_010, "已加入该企业不可重复操作");
 
     ErrorCode ENTERPRISE_INVITE_RECORD_PERSON_INFO_NOT_COMPLETE =

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

@@ -9,10 +9,10 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum MdeUserTypeEnum {
-    USER("0", "求职端用户"),
-    ENTERPRISE_USER("1", "企业端用户")
+    USER(0, "求职端用户"),
+    ENTERPRISE_USER(1, "企业端用户")
     ;
 
-    private final String type;
+    private final Integer type;
     private final String name;
 }

+ 1 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/account/PointBizTypeEnum.java

@@ -26,6 +26,7 @@ public enum PointBizTypeEnum {
     NOT_RECOMMENDED(8,"无推荐人,推荐人佣金给到平台","推荐职位,获得 {}",true),
     SIGN(98, "签到", "签到获得 {} 积分", true),
     EVENT(99, "事件跟踪", "访问[{}],{}{} 积分", true),
+    RECOMMEND_TASK(100, "完成任务", "[{}],{}{} 积分", true),
     ;
 
     /**

+ 1 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/interview/InterviewInviteStatusEnum.java

@@ -13,6 +13,7 @@ public enum InterviewInviteStatusEnum {
 
     PENDING_ACCEPTANCE("0", "待接受"),
     PENDING_INTERVIEW("1", "待面试"),
+    // TODO 即将面试去掉
     APPROACHING_INTERVIEW("2", "即将面试"),
     COMPLETED("3", "已完成"),
     FEEDBACK_PROVIDED("4", "已反馈"),

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

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.enums.job;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)
+ **/
+@Getter
+@AllArgsConstructor
+public enum JobSeekStatusEnum {
+    LEAVE("0","离职"),
+    IN_MONTH("1","月内到岗"),
+    CONSIDER("2","考虑机会"),
+    NOT_CONSIDER("3","暂不考虑");
+
+    /**
+     * 状态值
+     */
+    private final String status;
+    /**
+     * 状态名
+     */
+    private final String name;
+}

+ 11 - 4
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobTypeEnum.java

@@ -10,13 +10,20 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum JobTypeEnum {
 
-    FULL_TIME("0"),
-    PART_TIME("1"),
-    TEMPORARY("2"),
-    INTERNSHIP("3");
+    FULL_TIME("0","全职"),
+    PART_TIME("1","兼职"),
+    TEMPORARY("2","临时"),
+    INTERNSHIP("3","实习");
 
     /**
      * 类型
      */
     private final String type;
+
+
+    /**
+     * 标题
+     */
+    private final String name;
+
 }

+ 2 - 2
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/PayTypeEnum.java

@@ -12,8 +12,8 @@ public enum PayTypeEnum {
 
     HOUR_WAGE("0","时"),
     DAY_WAGE("1","天"),
-    MONTH_WAGE("2","月"),
-    YEAR_WAGE("3","年");
+    MONTH_WAGE("2","月"),
+    YEAR_WAGE("3","年");
 
     /**
      * 类型

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/api/user/UserApiImpl.java

@@ -29,7 +29,7 @@ public class UserApiImpl implements UserApi {
         List<UserInfoRespDTO> list = new ArrayList<>();
         for (UserInfoReqDTO dto : req) {
             UserInfoRespDTO respDTO = new UserInfoRespDTO();
-            if (Integer.parseInt(MdeUserTypeEnum.USER.getType()) == dto.getUserType()) {
+            if (MdeUserTypeEnum.USER.getType() == dto.getUserType()) {
                 // 平台用户
                 PersonInfoDO personInfo = personMapper.selectOne(PersonInfoDO::getUserId, dto.getUserId());
                 if (null != personInfo) {
@@ -40,7 +40,7 @@ public class UserApiImpl implements UserApi {
                 }
 
             }
-            if (Integer.parseInt(MdeUserTypeEnum.ENTERPRISE_USER.getType()) == dto.getUserType()) {
+            if (MdeUserTypeEnum.ENTERPRISE_USER.getType() == dto.getUserType()) {
                 // 企业用户
                 UserInfoRespDTO info = bindMapper.selectUserInfo(dto.getEnterpriseId(), dto.getUserId());
                 if (null != info) {

+ 13 - 15
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/analysis/AnalysisController.java

@@ -8,9 +8,8 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.framework.excel.core.util.ExcelWriteDTO;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
-import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelAnalysisRespVO;
@@ -36,7 +35,6 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -62,28 +60,28 @@ public class AnalysisController {
     @GetMapping("/get/job/cv/sex/count")
     @Operation(summary = "获取投递简历的性别分布")
     @PreAuthenticated
-    public CommonResult<List<CommonRespVO>> getJobCvSexCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<List<CommonRespVO>> getJobCvSexCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobCvcRelService.getJobCvSexCount(reqVO));
     }
 
     @GetMapping("/get/job/cv/age/count")
     @Operation(summary = "获取投递简历的年龄分布")
     @PreAuthenticated
-    public CommonResult<Map<String, Object[]>> getJobCvAgeCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Map<String, Object[]>> getJobCvAgeCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobCvcRelService.getJobCvAgeCount(reqVO));
     }
 
     @GetMapping("/get/job/cv/edu/count")
     @Operation(summary = "获取投递简历的学历分布")
     @PreAuthenticated
-    public CommonResult<Map<String, Object[]>> getJobCvEduCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Map<String, Object[]>> getJobCvEduCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobCvcRelService.getJobCvEduCount(reqVO));
     }
 
     @GetMapping("/get/job/cv/exp/count")
     @Operation(summary = "获取投递简历的工作经验分布")
     @PreAuthenticated
-    public CommonResult<Map<String, Object[]>> getJobCvExpCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Map<String, Object[]>> getJobCvExpCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobCvcRelService.getJobCvExpCount(reqVO));
     }
 
@@ -91,7 +89,7 @@ public class AnalysisController {
     @Operation(summary = "获取新投递简历统计分析明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobCvRelAnalysisRespVO>> getNewCvRel(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobCvcRelService.getNewCvRel(reqVO));
     }
 
@@ -99,7 +97,7 @@ public class AnalysisController {
     @Operation(summary = "获取已查看简历统计分析明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobCvRelAnalysisRespVO>> getLookCvRel(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobCvcRelService.getLookCvRel(reqVO));
     }
 
@@ -107,7 +105,7 @@ public class AnalysisController {
     @Operation(summary = "获取待面试统计分析明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitInterviewInviteAnalysisRespVO>> getWaitInterview(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         return success(interviewInviteService.getWaitInterview(reqVO));
     }
 
@@ -115,7 +113,7 @@ public class AnalysisController {
     @Operation(summary = "获取完成面试统计分析明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitInterviewInviteAnalysisRespVO>> getCompleteInterview(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         return success(interviewInviteService.getCompleteInterview(reqVO));
     }
 
@@ -123,13 +121,13 @@ public class AnalysisController {
     @Operation(summary = "获取发布职位浏览量统计分析明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobAnalysisRespVO>> getBrowseNum(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobAdvertisedService.getBrowseNum(reqVO));
     }
 
     @GetMapping("/get/job/browse/num")
     @Operation(summary = "获取发布职位浏览量总数")
-    public CommonResult<Long> getBrowseNumCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Long> getBrowseNumCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobAdvertisedService.getBrowseNumCount(reqVO));
     }
 
@@ -137,14 +135,14 @@ public class AnalysisController {
     @Operation(summary = "获取发布职位统计分析明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobAnalysisRespVO>> getJobNum(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         return success(jobAdvertisedService.getJobNum(reqVO));
     }
 
     @GetMapping("/export")
     @Operation(summary = "导出统计分析 Excel")
     @ApiAccessLog(operateType = EXPORT)
-    public void export(@Valid RecruitAnalysisReqVO reqVO,
+    public void export(@Valid RecruitAnalysisPageReqVO reqVO,
                        HttpServletResponse response) throws IOException {
         reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<ExcelWriteDTO> writeDTOList = new ArrayList<>();

+ 0 - 93
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterprisePostController.java

@@ -1,93 +0,0 @@
-package com.citu.module.menduner.system.controller.admin.enterprise;
-
-import com.citu.framework.apilog.core.annotation.ApiAccessLog;
-import com.citu.framework.common.pojo.CommonResult;
-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.framework.excel.core.util.ExcelUtils;
-import com.citu.module.menduner.system.controller.base.enterprise.post.EnterprisePostPageReqVO;
-import com.citu.module.menduner.system.controller.base.enterprise.post.EnterprisePostRespVO;
-import com.citu.module.menduner.system.controller.base.enterprise.post.EnterprisePostSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
-import com.citu.module.menduner.system.service.enterprise.post.EnterprisePostService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 企业岗位信息")
-@RestController
-@RequestMapping("/menduner/system/enterprise-post")
-@Validated
-public class EnterprisePostController {
-
-    @Resource
-    private EnterprisePostService enterprisePostService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建企业岗位信息")
-    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:create')")
-    public CommonResult<Long> createEnterprisePost(@Valid @RequestBody EnterprisePostSaveReqVO createReqVO) {
-        return success(enterprisePostService.createEnterprisePost(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新企业岗位信息")
-    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:update')")
-    public CommonResult<Boolean> updateEnterprisePost(@Valid @RequestBody EnterprisePostSaveReqVO updateReqVO) {
-        enterprisePostService.updateEnterprisePost(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除企业岗位信息")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:delete')")
-    public CommonResult<Boolean> deleteEnterprisePost(@RequestParam("id") Long id) {
-        enterprisePostService.deleteEnterprisePost(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得企业岗位信息")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:query')")
-    public CommonResult<EnterprisePostRespVO> getEnterprisePost(@RequestParam("id") Long id) {
-        EnterprisePostDO enterprisePost = enterprisePostService.getEnterprisePost(id);
-        return success(BeanUtils.toBean(enterprisePost, EnterprisePostRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得企业岗位信息分页")
-    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:query')")
-    public CommonResult<PageResult<EnterprisePostRespVO>> getEnterprisePostPage(@Valid EnterprisePostPageReqVO pageReqVO) {
-        PageResult<EnterprisePostDO> pageResult = enterprisePostService.getEnterprisePostPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, EnterprisePostRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出企业岗位信息 Excel")
-    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportEnterprisePostExcel(@Valid EnterprisePostPageReqVO pageReqVO,
-                                          HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<EnterprisePostDO> list = enterprisePostService.getEnterprisePostPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "企业岗位信息.xls", "数据", EnterprisePostRespVO.class,
-                BeanUtils.toBean(list, EnterprisePostRespVO.class));
-    }
-
-}

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

@@ -6,10 +6,12 @@ import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.auth
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseClickReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseDetailRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseSearchPageReqVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseBaseSimpleRespVO;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
 import com.citu.module.menduner.system.service.enterprise.auth.EnterpriseAuthService;
+import com.citu.module.menduner.system.service.enterprisejob.EnterpriseJobService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -35,6 +37,9 @@ public class AppEnterpriseController {
     @Resource
     private EnterpriseAuthService enterpriseAuthService;
 
+    @Resource
+    private EnterpriseJobService enterpriseJobService;
+
     @PostMapping("/click")
     @Operation(summary = "点击访问企业埋点")
     public CommonResult<Boolean> click(@RequestBody @Valid AppEnterpriseClickReqVO reqVO) {
@@ -57,8 +62,8 @@ public class AppEnterpriseController {
 
     @GetMapping("/search")
     @Operation(summary = "搜索企业")
-    public CommonResult<PageResult<EnterpriseBaseSimpleRespVO>> search(@Valid AppEnterpriseSearchPageReqVO reqVO) {
-        return success(enterpriseService.search(reqVO));
+    public CommonResult<PageResult<AppEnterpriseJobRespVO>> search(@Valid AppEnterpriseSearchPageReqVO reqVO) {
+        return success(enterpriseJobService.search(reqVO));
     }
 
     @GetMapping("/search/by/name")

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

@@ -1,34 +0,0 @@
-package com.citu.module.menduner.system.controller.app.jobhunt.enterprise;
-
-import com.citu.framework.common.pojo.CommonResult;
-import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterprisePostRespVO;
-import com.citu.module.menduner.system.service.enterprise.post.EnterprisePostService;
-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.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "求职端 - 企业岗位信息")
-@RestController
-@RequestMapping("/menduner/system/enterprise-post")
-@Validated
-public class AppEnterprisePostController {
-
-    @Resource
-    private EnterprisePostService enterprisePostService;
-
-    @GetMapping("/by/enterprise")
-    @Operation(summary = "根据企业id搜索企业的岗位")
-    public CommonResult<List<AppEnterprisePostRespVO>> selectListByEnterpriseId(@RequestParam("enterpriseId") Long enterpriseId) {
-        return success(enterprisePostService.selectListByEnterpriseId(enterpriseId));
-    }
-
-}

+ 4 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/vo/AppEnterpriseSearchPageReqVO.java

@@ -29,6 +29,9 @@ public class AppEnterpriseSearchPageReqVO extends PageParam {
     @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", example = "1")
     private String scale;
 
-    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)",  example = "1")
+    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", example = "1")
     private String financingStatus;
+
+    @Schema(description = "获取职位数量,默认显示一个最新职位", example = "1")
+    private int jobNum = 1;
 }

+ 7 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/AppJobAdvertisedController.java

@@ -7,6 +7,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
 import com.citu.module.menduner.system.mq.producer.MdeVisitsProducer;
+import com.citu.module.menduner.system.service.enterprisejob.EnterpriseJobService;
 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;
@@ -40,6 +41,9 @@ public class AppJobAdvertisedController {
     @Resource
     private MdeVisitsProducer visitsProducer;
 
+    @Resource
+    private EnterpriseJobService enterpriseJobService;
+
     @GetMapping("/get/recommended")
     @Operation(summary = "获取推荐招聘职位分页")
     public CommonResult<PageResult<AppJobAdvertisedHomeRespVO>> getRecommendedPage(@Valid PageParam pageParam) {
@@ -63,8 +67,8 @@ public class AppJobAdvertisedController {
 
     @GetMapping("/get/hot/enterprise")
     @Operation(summary = "获取热门企业的职位分页")
-    public CommonResult<PageResult<AppEnterpriseJobHomeRespVO>> getHotEnterpriseJobPage(@Valid PageParam pageParam) {
-        PageResult<AppEnterpriseJobHomeRespVO> result = jobAdvertisedService.getHotEnterpriseJobPage(pageParam);
+    public CommonResult<PageResult<AppEnterpriseJobRespVO>> getHotEnterpriseJobPage(@Valid PageParam pageParam) {
+        PageResult<AppEnterpriseJobRespVO> result = enterpriseJobService.getHotEnterpriseJobPage(pageParam);
         return success(result);
     }
 
@@ -79,7 +83,7 @@ public class AppJobAdvertisedController {
     @GetMapping("/get/detail")
     @Operation(summary = "获取招聘职位详情")
     public CommonResult<AppJobAdvertisedDetailRespVO> detail(@RequestParam("id") Long id) {
-        AppJobAdvertisedDetailRespVO respVO = jobAdvertisedService.detail(id);
+        AppJobAdvertisedDetailRespVO respVO = enterpriseJobService.detail(id);
         if (null != respVO) {
             visitsProducer.send(MdeVisitsEnum.POSITION_PUBLISH_CLICK, id);
         }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/vo/AppEnterpriseJobHomeRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/vo/AppEnterpriseJobRespVO.java

@@ -14,10 +14,10 @@ import java.util.List;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class AppEnterpriseJobHomeRespVO  {
+public class AppEnterpriseJobRespVO {
 
     @Schema(description = "企业信息", example = "{}")
-    EnterpriseBaseSimpleRespVO enterprise;
+    private EnterpriseBaseSimpleRespVO enterprise;
 
     @Schema(description = "企业发布职位", example = "{}")
     private List<AppJobAdvertisedSimpleRespVO> jobList;

+ 5 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/person/resume/AppPersonInfoSaveReqVO.java

@@ -5,9 +5,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
-import java.util.List;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 
@@ -25,11 +23,11 @@ public class AppPersonInfoSaveReqVO {
     @Schema(description = "头像地址")
     private String avatar;
 
-//    @NotBlank(message = "{1_100_001_004}")
+    //    @NotBlank(message = "{1_100_001_004}")
     @Schema(description = "联系手机号")
     private String phone;
 
-//    @NotBlank(message = "{1_100_001_010}")
+    //    @NotBlank(message = "{1_100_001_010}")
     @Schema(description = "常用邮箱")
     private String email;
 
@@ -38,10 +36,10 @@ public class AppPersonInfoSaveReqVO {
     @Schema(description = "出生日期")
     private LocalDateTime birthday;
 
-    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3暂不透露)", example = "1")
     private String maritalStatus;
 
-//    @NotNull(message = "{1_100_001_009}")
+    //    @NotNull(message = "{1_100_001_009}")
     @Schema(description = "所在城市", example = "8366")
     private Long areaId;
 
@@ -67,4 +65,5 @@ public class AppPersonInfoSaveReqVO {
     @Schema(description = "学历", example = "2")
     private String eduType;
 
+
 }

+ 14 - 16
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/analysis/AppRecruitAnalysisController.java

@@ -5,20 +5,18 @@ import com.citu.framework.apilog.core.annotation.ApiAccessLog;
 import com.citu.framework.common.pojo.CommonResult;
 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.framework.excel.core.util.ExcelUtils;
 import com.citu.framework.excel.core.util.ExcelWriteDTO;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.excel.RecruitInterviewInviteAnalysisExcelRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.excel.RecruitJobAnalysisExcelRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.excel.RecruitJobCvRelAnalysisExcelRespVO;
-import com.citu.module.menduner.system.controller.base.hunt.HuntRespVO;
 import com.citu.module.menduner.system.convert.InterviewInviteConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.convert.JobCvRelConvert;
@@ -64,7 +62,7 @@ public class AppRecruitAnalysisController {
     @GetMapping("/get/job/cv/sex/count")
     @Operation(summary = "获取投递简历的性别分布")
     @PreAuthenticated
-    public CommonResult<List<CommonRespVO>> getJobCvSexCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<List<CommonRespVO>> getJobCvSexCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobCvcRelService.getJobCvSexCount(reqVO));
     }
@@ -72,7 +70,7 @@ public class AppRecruitAnalysisController {
     @GetMapping("/get/job/cv/age/count")
     @Operation(summary = "获取投递简历的年龄分布")
     @PreAuthenticated
-    public CommonResult<Map<String, Object[]>> getJobCvAgeCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Map<String, Object[]>> getJobCvAgeCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobCvcRelService.getJobCvAgeCount(reqVO));
     }
@@ -80,7 +78,7 @@ public class AppRecruitAnalysisController {
     @GetMapping("/get/job/cv/edu/count")
     @Operation(summary = "获取投递简历的学历分布")
     @PreAuthenticated
-    public CommonResult<Map<String, Object[]>> getJobCvEduCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Map<String, Object[]>> getJobCvEduCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobCvcRelService.getJobCvEduCount(reqVO));
     }
@@ -88,7 +86,7 @@ public class AppRecruitAnalysisController {
     @GetMapping("/get/job/cv/exp/count")
     @Operation(summary = "获取投递简历的工作经验分布")
     @PreAuthenticated
-    public CommonResult<Map<String, Object[]>> getJobCvExpCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Map<String, Object[]>> getJobCvExpCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobCvcRelService.getJobCvExpCount(reqVO));
     }
@@ -97,7 +95,7 @@ public class AppRecruitAnalysisController {
     @Operation(summary = "获取新投递简历明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobCvRelAnalysisRespVO>> getNewCvRel(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobCvcRelService.getNewCvRel(reqVO));
     }
@@ -106,7 +104,7 @@ public class AppRecruitAnalysisController {
     @Operation(summary = "获取已查看简历明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobCvRelAnalysisRespVO>> getLookCvRel(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobCvcRelService.getLookCvRel(reqVO));
     }
@@ -115,7 +113,7 @@ public class AppRecruitAnalysisController {
     @Operation(summary = "获取待面试明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitInterviewInviteAnalysisRespVO>> getWaitInterview(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(interviewInviteService.getWaitInterview(reqVO));
     }
@@ -124,7 +122,7 @@ public class AppRecruitAnalysisController {
     @Operation(summary = "获取完成面试明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitInterviewInviteAnalysisRespVO>> getCompleteInterview(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(interviewInviteService.getCompleteInterview(reqVO));
     }
@@ -133,7 +131,7 @@ public class AppRecruitAnalysisController {
     @Operation(summary = "获取发布职位浏览量明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobAnalysisRespVO>> getBrowseNum(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobAdvertisedService.getBrowseNum(reqVO));
     }
@@ -141,7 +139,7 @@ public class AppRecruitAnalysisController {
     @GetMapping("/get/job/browse/num")
     @Operation(summary = "获取发布职位浏览量总数")
     @PreAuthenticated
-    public CommonResult<Long> getBrowseNumCount(@Valid RecruitAnalysisReqVO reqVO) {
+    public CommonResult<Long> getBrowseNumCount(@Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobAdvertisedService.getBrowseNumCount(reqVO));
     }
@@ -150,7 +148,7 @@ public class AppRecruitAnalysisController {
     @Operation(summary = "获取发布职位明细")
     @PreAuthenticated
     public CommonResult<PageResult<RecruitJobAnalysisRespVO>> getJobNum(
-            @Valid RecruitAnalysisReqVO reqVO) {
+            @Valid RecruitAnalysisPageReqVO reqVO) {
         setCommonCondition(reqVO);
         return success(jobAdvertisedService.getJobNum(reqVO));
     }
@@ -158,7 +156,7 @@ public class AppRecruitAnalysisController {
     @GetMapping("/export")
     @Operation(summary = "导出统计分析 Excel")
     @ApiAccessLog(operateType = EXPORT)
-    public void export(@Valid RecruitAnalysisReqVO reqVO,
+    public void export(@Valid RecruitAnalysisPageReqVO reqVO,
                        HttpServletResponse response) throws IOException {
         setCommonCondition(reqVO);
         reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
@@ -210,7 +208,7 @@ public class AppRecruitAnalysisController {
     }
 
 
-    private void setCommonCondition(RecruitAnalysisReqVO reqVO) {
+    private void setCommonCondition(RecruitAnalysisPageReqVO reqVO) {
         reqVO.setEnterpriseId(LoginUserContext.getEnterpriseId());
         reqVO.setUserId(Collections.singletonList(LoginUserContext.getUserId()));
     }

+ 0 - 71
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/AppRecruitEnterprisePostController.java

@@ -1,71 +0,0 @@
-package com.citu.module.menduner.system.controller.app.recruit.enterprise;
-
-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.app.recruit.enterprise.post.AppRecruitEnterprisePostPageReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.enterprise.post.AppRecruitEnterprisePostRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.enterprise.post.AppRecruitEnterprisePostSaveReqVO;
-import com.citu.module.menduner.system.service.enterprise.post.EnterprisePostService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-
-import static com.citu.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "招聘端 - 企业岗位信息")
-@RestController
-@RequestMapping("/menduner/system/recruit/enterprise-post")
-@Validated
-public class AppRecruitEnterprisePostController {
-
-    @Resource
-    private EnterprisePostService enterprisePostService;
-
-    @PostMapping("/create")
-    @Operation(summary = "新增")
-    @PreAuthenticated
-    public CommonResult<Long> create(
-            @Valid @RequestBody AppRecruitEnterprisePostSaveReqVO createReqVO) {
-        return success(enterprisePostService.create(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新")
-    @PreAuthenticated
-    public CommonResult<Boolean> update(
-            @Valid @RequestBody AppRecruitEnterprisePostSaveReqVO updateReqVO) {
-        enterprisePostService.update(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthenticated
-    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
-        enterprisePostService.delete(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthenticated
-    public CommonResult<AppRecruitEnterprisePostRespVO> get(@RequestParam("id") Long id) {
-        return success(enterprisePostService.get(id));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得分页")
-    @PreAuthenticated
-    public CommonResult<PageResult<AppRecruitEnterprisePostRespVO>> page(
-            @Valid AppRecruitEnterprisePostPageReqVO pageReqVO) {
-        return success(enterprisePostService.page(pageReqVO));
-    }
-}

+ 58 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/AppRecruitJobAdvertisedController.java

@@ -5,23 +5,35 @@ import com.citu.framework.apilog.core.annotation.ApiAccessLog;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.date.LocalDateTimeUtils;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.common.util.string.StrUtils;
 import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.*;
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedImportExcelVO;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
+import com.citu.module.menduner.system.enums.eduexp.EducationTypeEnum;
+import com.citu.module.menduner.system.enums.job.JobStatusEnum;
+import com.citu.module.menduner.system.enums.job.JobTypeEnum;
+import com.citu.module.menduner.system.enums.job.PayTypeEnum;
+import com.citu.module.menduner.system.enums.workexp.ExpTypeEnum;
+import com.citu.module.menduner.system.service.enterprisejob.EnterpriseJobService;
 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 org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.time.Duration;
+import java.util.Arrays;
 import java.util.List;
 
 import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -37,6 +49,8 @@ public class AppRecruitJobAdvertisedController {
     private JobAdvertisedService jobAdvertisedService;
     @Resource
     private JobIntegrationService jobIntegrationService;
+    @Resource
+    private EnterpriseJobService enterpriseJobService;
 
 
     @PreAuthenticated
@@ -46,6 +60,7 @@ public class AppRecruitJobAdvertisedController {
         return success(jobIntegrationService.page(pageReqVO));
     }
 
+    @PreAuthenticated
     @GetMapping("/export")
     @Operation(summary = "导出招聘职位 Excel")
     @ApiAccessLog(operateType = EXPORT)
@@ -58,11 +73,45 @@ public class AppRecruitJobAdvertisedController {
                 BeanUtils.toBean(list, AppRecruitJobExportRespVO.class));
     }
 
+    @GetMapping("/import-template")
+    @Operation(summary = "导入招聘职位模板")
+    @ApiAccessLog(operateType = EXPORT)
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        // 手动创建导出 demo
+        List<JobAdvertisedImportExcelVO> list = Arrays.asList(
+                JobAdvertisedImportExcelVO.builder().name("人力资源经理").position("人力资源经理").type(JobTypeEnum.FULL_TIME.getType())
+                        .expType(ExpTypeEnum.THREE_TO_FIVE_YEARS.getType()).eduType(EducationTypeEnum.COLLEGE.getType())
+                        .payFrom(BigDecimal.valueOf(10000)).payTo(BigDecimal.valueOf(15000))
+                        .payUnit(PayTypeEnum.MONTH_WAGE.getType()).content("岗位职责内容").requirement("岗位要求")
+                        .expireTime(LocalDateTimeUtils.addTime(Duration.ofDays(7))).area("广州市").address("天河区")
+                        .status(JobStatusEnum.ENABLE.getStatus()).build(),
+
+                JobAdvertisedImportExcelVO.builder().name("企业副总裁").position("副总裁").type(JobTypeEnum.TEMPORARY.getType())
+                        .expType(ExpTypeEnum.MORE_THAN_TWENTY_YEARS.getType()).eduType(EducationTypeEnum.DOCTOR.getType())
+                        .payFrom(BigDecimal.valueOf(10000)).payTo(BigDecimal.valueOf(15000))
+                        .payUnit(PayTypeEnum.DAY_WAGE.getType()).content("岗位职责内容").requirement("岗位要求")
+                        .expireTime(LocalDateTimeUtils.addTime(Duration.ofDays(7))).area("北京市").address("海定区")
+                        .status(JobStatusEnum.DISABLE.getStatus()).build()
+        );
+        // 输出
+        ExcelUtils.write(response, "职位导入模板.xls", "职位列表", JobAdvertisedImportExcelVO.class, list);
+    }
+
+    @PreAuthenticated
+    @PostMapping("/import")
+    @Operation(summary = "导入招聘职位")
+    public CommonResult<Boolean> importExcel(@RequestPart @RequestParam MultipartFile multipartFile)
+            throws Exception {
+        List<JobAdvertisedImportExcelVO> list = ExcelUtils.read(multipartFile, JobAdvertisedImportExcelVO.class);
+        jobIntegrationService.importData(list);
+        return success(true);
+    }
+
     @PreAuthenticated
     @GetMapping("/detail")
     @Operation(summary = "获得招聘职位详情")
     public CommonResult<AppRecruitJobDetailRespVO> detail(@RequestParam("id") Long id) {
-        return success(JobAdvertisedConvert.INSTANCE.convert5(jobAdvertisedService.detail(id)));
+        return success(JobAdvertisedConvert.INSTANCE.convert5(enterpriseJobService.detail(id)));
     }
 
     @PreAuthenticated
@@ -112,5 +161,13 @@ public class AppRecruitJobAdvertisedController {
         return success(true);
     }
 
+    @PreAuthenticated
+    @PostMapping("/renewal")
+    @Operation(summary = "职位续期")
+    public CommonResult<Boolean> renewal(@RequestBody @Valid AppRecruitJobRenewalReqVO reqVO) {
+        jobAdvertisedService.renewal(reqVO);
+        return success(true);
+    }
+
 
 }

+ 17 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/job/vo/AppRecruitJobRenewalReqVO.java

@@ -0,0 +1,17 @@
+package com.citu.module.menduner.system.controller.app.recruit.job.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "招聘端 - 职位续期 Request VO")
+@Data
+public class AppRecruitJobRenewalReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4770")
+    private Long id;
+
+    @Schema(description = "续期后的时间")
+    private LocalDateTime time;
+}

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

@@ -77,5 +77,8 @@ public class AppRecruitJobSaveReqVO {
     @Schema(description = "雇佣金额")
     private Long hirePrice;
 
+    @Schema(description = "职位状态")
+    private String status;
+
 
 }

+ 7 - 14
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/AppRecruitUserController.java

@@ -53,6 +53,13 @@ public class AppRecruitUserController {
         return success(service.save(reqVO));
     }
 
+    @PreAuthenticated
+    @PostMapping("/update")
+    @Operation(summary = "管理员-修改用户信息")
+    public CommonResult<Boolean> update(@Valid @RequestBody AppRecruitUserSaveReqVO reqVO) {
+        return success(service.update(reqVO));
+    }
+
     @PreAuthenticated
     @PostMapping("/disable")
     @Operation(summary = "禁用账户")
@@ -76,20 +83,6 @@ public class AppRecruitUserController {
         return success(service.selectPage(reqVO));
     }
 
-    @PreAuthenticated
-    @PostMapping("/bind/post")
-    @Operation(summary = "绑定用户的岗位")
-    public CommonResult<Boolean> bindPost(
-            @RequestParam("id") Long id, @RequestParam("postId") Long postId) {
-        return success(service.bindPost(id, postId));
-    }
-
-    @PreAuthenticated
-    @GetMapping("/check/post")
-    @Operation(summary = "效验该岗位下是否绑定用户")
-    public CommonResult<Boolean> checkPost(@RequestParam("postId") Long postId) {
-        return success(service.checkPost(postId));
-    }
 
     @PutMapping("/update-email")
     @Operation(summary = "绑定/修改用户邮箱")

+ 0 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitEnterprisePostSimpleRespVO.java

@@ -1,10 +0,0 @@
-package com.citu.module.menduner.system.controller.app.recruit.user.vo;
-
-import com.citu.module.menduner.system.controller.base.enterprise.post.EnterprisePostSimpleRespVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "企业岗位简易信息 Response VO")
-@Data
-public class AppRecruitEnterprisePostSimpleRespVO extends EnterprisePostSimpleRespVO {
-}

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

@@ -11,8 +11,8 @@ public class AppRecruitUserPageReqVO extends PageParam {
     @Schema(description = "下级企业id", example = "23317")
     private Long enterpriseId;
 
-    @Schema(description = "岗位id", example = "23317")
-    private Long postId;
+    @Schema(description = "岗位")
+    private String postName;
 
     @Schema(description = "名称", example = "x女士")
     private String name;

+ 0 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitUserRespVO.java

@@ -10,9 +10,6 @@ import java.time.LocalDateTime;
 @Data
 public class AppRecruitUserRespVO extends EnterpriseUserBindSimpleRespVO {
 
-    @Schema(description = "企业岗位id", example = "25968")
-    private Long postId;
-
     @Schema(description = "联系手机号")
     private String phone;
 
@@ -25,8 +22,5 @@ public class AppRecruitUserRespVO extends EnterpriseUserBindSimpleRespVO {
     @Schema(description = "更新时间")
     private LocalDateTime updateTime;
 
-    @Schema(description = "岗位信息")
-    private AppRecruitEnterprisePostSimpleRespVO post;
-
 
 }

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/vo/AppRecruitUserSaveReqVO.java

@@ -19,6 +19,9 @@ public class AppRecruitUserSaveReqVO {
     @NotEmpty(message = "{1_100_023_002}")
     private String name;
 
+    @Schema(description = "岗位")
+    private String postName;
+
     @Schema(description = "用户性别")
     private String sex;
 

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitAnalysisReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitAnalysisPageReqVO.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.controller.base.analysis;
 
+import com.citu.module.menduner.common.dto.TimeRangeBasePageReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -7,7 +8,7 @@ import java.util.List;
 
 @Schema(description = "menduner - 统计分析公共 Request VO")
 @Data
-public class RecruitAnalysisReqVO extends AnalysisBaseReqVO {
+public class RecruitAnalysisPageReqVO extends TimeRangeBasePageReqVO {
 
     @Schema(description = "企业id")
     private Long enterpriseId;

+ 24 - 21
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/excel/RecruitJobCvRelAnalysisExcelRespVO.java

@@ -17,14 +17,31 @@ import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
 @ExcelIgnoreUnannotated
 public class RecruitJobCvRelAnalysisExcelRespVO {
 
+    // ========== 招聘职位信息 ==========
+
+    @ExcelProperty("招聘职位标题")
+    @Schema(description = "招聘职位标题", example = "项目经理")
+    private String jobName;
+
+    @ExcelProperty("薪酬from")
+    @Schema(description = "薪酬from", example = "6")
+    private BigDecimal payFrom;
+
+    @ExcelProperty("薪酬to")
+    @Schema(description = "薪酬to", example = "12")
+    private BigDecimal payTo;
+
+    @ExcelProperty(value = "薪酬单位", converter = DictConvert.class)
+    @DictFormat(MENDUNER_PAY_UNIT)
+    @Schema(description = "薪酬单位(menduner_pay_unit)", example = "月/年")
+    private String payUnit;
+
+    // ========== 简历信息 ==========
+
     @ExcelProperty("简历附件标题")
     @Schema(description = "简历附件标题")
     private String title;
 
-    @ExcelProperty("简历附件地址")
-    @Schema(description = "简历附件地址")
-    private String url;
-
     @ExcelProperty("投递用户姓名")
     @Schema(description = "真实姓名", example = "王五")
     private String name;
@@ -57,24 +74,10 @@ public class RecruitJobCvRelAnalysisExcelRespVO {
     @Schema(description = "投递时间")
     private LocalDateTime createTime;
 
-    // ========== 招聘职位信息 ==========
-
-    @ExcelProperty("招聘职位标题")
-    @Schema(description = "招聘职位标题", example = "项目经理")
-    private String jobName;
-
-    @ExcelProperty("薪酬from")
-    @Schema(description = "薪酬from", example = "6")
-    private BigDecimal payFrom;
-
-    @ExcelProperty("薪酬to")
-    @Schema(description = "薪酬to", example = "12")
-    private BigDecimal payTo;
+    @ExcelProperty("简历附件地址")
+    @Schema(description = "简历附件地址")
+    private String url;
 
-    @ExcelProperty(value = "薪酬单位", converter = DictConvert.class)
-    @DictFormat(MENDUNER_PAY_UNIT)
-    @Schema(description = "薪酬单位(menduner_pay_unit)", example = "月/年")
-    private String payUnit;
 
 
 }

+ 0 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindDetailRespVO.java

@@ -20,7 +20,5 @@ public class EnterpriseUserBindDetailRespVO extends EnterpriseUserBindRespVO{
     @Schema(description = "企业姓名", example = "616")
     private String enterpriseName;
 
-    @Schema(description = "岗位名称", example = "23317")
-    private String postName;
 
 }

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindPageReqVO.java

@@ -30,6 +30,9 @@ public class EnterpriseUserBindPageReqVO extends PageParam {
     @Schema(description = "联系手机号")
     private String phone;
 
+    @Schema(description = "岗位名称", example = "23317")
+    private String postName;
+
     @Schema(description = "用户邮箱")
     private String email;
 

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

@@ -26,8 +26,8 @@ public class EnterpriseUserBindReqVO {
     @Schema(description = "用户邮箱")
     private String email;
 
-    @Schema(description = "岗位id", example = "23317")
-    private Long postId;
+    @Schema(description = "岗位名称", example = "23317")
+    private String postName;
 
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", example = "2")
     private String status;

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

@@ -26,10 +26,6 @@ public class EnterpriseUserBindRespVO {
     @ExcelProperty("企业id")
     private Long enterpriseId;
 
-    @Schema(description = "岗位id", example = "23317")
-    @ExcelProperty("岗位id")
-    private Long postId;
-
     @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23317")
     @ExcelProperty("用户id")
     private Long userId;
@@ -46,6 +42,10 @@ public class EnterpriseUserBindRespVO {
     @ExcelProperty("头像地址")
     private String avatar;
 
+    @ExcelProperty("岗位名称")
+    @Schema(description = "岗位名称", example = "23317")
+    private String postName;
+
     @Schema(description = "联系手机号")
     @ExcelProperty("联系手机号")
     private String phone;

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

@@ -19,9 +19,6 @@ public class EnterpriseUserBindSaveReqVO {
     @NotNull(message = "{1_100_019_002}")
     private Long enterpriseId;
 
-    @Schema(description = "岗位id", example = "23317")
-    private Long postId;
-
     @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23317")
     @NotEmpty(message = "{1_100_016_018}")
     private Long userId;
@@ -36,6 +33,9 @@ public class EnterpriseUserBindSaveReqVO {
     @Schema(description = "头像地址")
     private String avatar;
 
+    @Schema(description = "岗位名称", example = "23317")
+    private String postName;
+
     @Schema(description = "联系手机号")
     private String phone;
 

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSimpleRespVO.java

@@ -21,6 +21,9 @@ public class EnterpriseUserBindSimpleRespVO {
     @Schema(description = "企业简称", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
     private String enterpriseAnotherName;
 
+    @Schema(description = "岗位名称", example = "23317")
+    private String postName;
+
     @Schema(description = "企业logo地址")
     private String logoUrl;
 

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

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.base.job;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.annotations.ExcelColumnSelect;
+import com.citu.framework.excel.core.convert.DictConvert;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
+
+/**
+ * 职位 Excel 导入 VO
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false)
+public class JobAdvertisedImportExcelVO {
+
+    @Schema(description = "职位名称")
+    @ExcelProperty("职位名称")
+    private String name;
+
+    @Schema(description = "职位类型")
+    @ExcelProperty("职位类型")
+    private String position;
+
+    @Schema(description = "招聘类型")
+    @ExcelProperty(value = "招聘类型", converter = DictConvert.class)
+    @DictFormat(MENDUNER_JOB_TYPE)
+    @ExcelColumnSelect(dictType = MENDUNER_JOB_TYPE)
+    private String type;
+
+    @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "工作经验", converter = DictConvert.class)
+    @DictFormat(MENDUNER_EXP_TYPE)
+    @ExcelColumnSelect(dictType = MENDUNER_EXP_TYPE)
+    private String expType;
+
+    @Schema(description = "学历要求", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "学历要求", converter = DictConvert.class)
+    @DictFormat(MENDUNER_EDUCATION_TYPE)
+    @ExcelColumnSelect(dictType = MENDUNER_EDUCATION_TYPE)
+    private String eduType;
+
+    @Schema(description = "薪酬from")
+    @ExcelProperty("最低薪酬")
+    private BigDecimal payFrom;
+
+    @Schema(description = "薪酬to")
+    @ExcelProperty("最高薪酬")
+    private BigDecimal payTo;
+
+    @Schema(description = "薪酬单位")
+    @ExcelProperty(value = "薪酬单位", converter = DictConvert.class)
+    @DictFormat(MENDUNER_PAY_UNIT)
+    @ExcelColumnSelect(dictType = MENDUNER_PAY_UNIT)
+    private String payUnit;
+
+    @Schema(description = "工作区域")
+    @ExcelProperty("工作区域")
+    private String area;
+
+    @Schema(description = "职位内容")
+    @ExcelProperty("职位内容")
+    private String content;
+
+    @Schema(description = "职位要求")
+    @ExcelProperty("职位要求")
+    private String requirement;
+
+    @Schema(description = "过期时间")
+    @ExcelProperty("过期时间")
+    private LocalDateTime expireTime;
+
+    @Schema(description = "工作地址")
+    @ExcelProperty("工作地址")
+    private String address;
+
+    @Schema(description = "职位状态", example = "2")
+    @ExcelProperty(value = "职位状态", converter = DictConvert.class)
+    @DictFormat(MENDUNER_JOB_STATUS)
+    @ExcelColumnSelect(dictType = MENDUNER_JOB_STATUS)
+    private String status;
+}

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

@@ -113,7 +113,7 @@ public class JobAdvertisedRespVO {
 
     @Schema(description = "职位状态", example = "2")
     @ExcelProperty(value = "职位状态", converter = DictConvert.class)
-    @DictFormat(MENDUNER_STATUS)
+    @DictFormat(MENDUNER_JOB_STATUS)
     private String status;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

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

@@ -24,7 +24,7 @@ public class PersonMapQueryReqVO extends PageParam {
     @Schema(description = "年龄", example = "[18,20]")
     private Integer[] age;
 
-    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3暂不透露)", example = "1")
     private String maritalStatus;
 
     @Schema(description = "现居住地", example = "8366")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoPageReqVO.java

@@ -43,7 +43,7 @@ public class PersonInfoPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime birthday;
 
-    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3暂不透露)", example = "1")
     private String maritalStatus;
 
     @Schema(description = "现居住地", example = "8366")

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoRespVO.java

@@ -49,8 +49,8 @@ public class PersonInfoRespVO {
     @ExcelProperty("出生日期")
     private LocalDateTime birthday;
 
-    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
-    @ExcelProperty("婚姻状况(0未婚 1已婚 2离异 3保密)")
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3暂不透露)", example = "1")
+    @ExcelProperty("婚姻状况(0未婚 1已婚 2离异 3暂不透露)")
     private String maritalStatus;
 
     @Schema(description = "现居住地", example = "8366")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/person/info/PersonInfoSaveReqVO.java

@@ -41,7 +41,7 @@ public class PersonInfoSaveReqVO {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime birthday;
 
-    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3暂不透露)", example = "1")
     private String maritalStatus;
 
     @Schema(description = "现居住地", example = "8366")

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

@@ -43,8 +43,6 @@ public interface EnterpriseConvert {
 
     AppEnterpriseRegisterRespVO convert8(EnterpriseRegisterDO bean);
 
-    List<AppEnterprisePostRespVO> convertList2(List<EnterprisePostDO> list);
-
     AppEnterpriseUserApplyRespVO convert9(EnterpriseUserApplyDO bean);
 
     EnterpriseUserApplyDO convert10(AppEnterpriseUserApplyReqVO reqVO);

+ 0 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterprisePostConvert.java

@@ -1,18 +0,0 @@
-package com.citu.module.menduner.system.convert;
-
-import com.citu.module.menduner.system.controller.app.recruit.enterprise.post.AppRecruitEnterprisePostRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.enterprise.post.AppRecruitEnterprisePostSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-@Mapper
-public interface EnterprisePostConvert {
-
-
-    EnterprisePostConvert INSTANCE = Mappers.getMapper(EnterprisePostConvert.class);
-
-    EnterprisePostDO convert(AppRecruitEnterprisePostSaveReqVO bean);
-
-    AppRecruitEnterprisePostRespVO convert2(EnterprisePostDO bean);
-}

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

@@ -3,14 +3,18 @@ package com.citu.module.menduner.system.convert;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobDetailRespVO;
+import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.excel.RecruitJobAnalysisExcelRespVO;
+import com.citu.module.menduner.system.controller.base.job.JobAdvertisedImportExcelVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.mapstruct.Named;
 import org.mapstruct.factory.Mappers;
 
@@ -51,4 +55,6 @@ public interface JobAdvertisedConvert {
 
     @Named("convertList7")
     List<JobAdvertisedRespVO> convertList7(List<JobAdvertisedDO> list);
+
+    AppRecruitJobSaveReqVO convert8(JobAdvertisedImportExcelVO resp);
 }

+ 4 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java

@@ -86,17 +86,17 @@ public class EnterpriseDO extends TenantBaseDO {
     /**
      * 企业福利
      */
-    @TableField(typeHandler = JacksonTypeHandler.class,updateStrategy = FieldStrategy.ALWAYS)
+    @TableField(typeHandler = JacksonTypeHandler.class)
     private List<String> welfareList;
     /**
      * 企业相册
      */
-    @TableField(typeHandler = JacksonTypeHandler.class,updateStrategy = FieldStrategy.ALWAYS)
+    @TableField(typeHandler = JacksonTypeHandler.class)
     private List<String> albumList;
     /**
      * 企业标签
      */
-    @TableField(typeHandler = JacksonTypeHandler.class,updateStrategy = FieldStrategy.ALWAYS)
+    @TableField(typeHandler = JacksonTypeHandler.class)
     private List<String> tagList;
     /**
      * 上班时间
@@ -116,6 +116,7 @@ public class EnterpriseDO extends TenantBaseDO {
     /**
      * 开业时间
      */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
     private LocalDateTime openTime;
     /**
      * 是否筹备

+ 0 - 59
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterprisePostDO.java

@@ -1,59 +0,0 @@
-package com.citu.module.menduner.system.dal.dataobject.enterprise;
-
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.citu.framework.mybatis.core.dataobject.BaseDO;
-import com.citu.framework.tenant.core.db.TenantBaseDO;
-import lombok.*;
-
-/**
- * 企业岗位信息 DO
- *
- * @author Rayson
- */
-@TableName("mde_enterprise_post")
-@KeySequence("mde_enterprise_post_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class EnterprisePostDO extends TenantBaseDO {
-
-    /**
-     * 岗位ID
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属企业id
-     */
-    private Long enterpriseId;
-    /**
-     * 岗位缩写
-     */
-    private String code;
-    /**
-     * 岗位中文名称
-     */
-    private String nameCn;
-    /**
-     * 岗位英文
-     */
-    private String nameEn;
-    /**
-     * 显示顺序
-     */
-    private Integer sort;
-    /**
-     * 状态(0正常 1停用)
-     */
-    private String status;
-    /**
-     * 备注
-     */
-    private String remark;
-
-}

+ 6 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseUserBindDO.java

@@ -1,10 +1,7 @@
 package com.citu.module.menduner.system.dal.dataobject.enterprise;
 
 
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 
@@ -34,10 +31,6 @@ public class EnterpriseUserBindDO extends TenantBaseDO {
      * 企业id
      */
     private Long enterpriseId;
-    /**
-     * 岗位id
-     */
-    private Long postId;
     /**
      * 用户id
      */
@@ -54,6 +47,11 @@ public class EnterpriseUserBindDO extends TenantBaseDO {
      * 头像地址
      */
     private String avatar;
+    /**
+     * 岗位名称
+     */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
+    private String postName;
     /**
      * 联系手机号
      */

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

@@ -68,7 +68,7 @@ public class PersonInfoDO extends TenantBaseDO {
      */
     private LocalDateTime birthday;
     /**
-     * 婚姻状况(0未婚 1已婚 2离异 3保密
+     * 婚姻状况(0未婚 1已婚 2离异 3暂不透露
      */
     private String maritalStatus;
     /**
@@ -109,7 +109,7 @@ public class PersonInfoDO extends TenantBaseDO {
     /**
      * 人才标签
      */
-    @TableField(updateStrategy = FieldStrategy.ALWAYS, typeHandler = JacksonTypeHandler.class)
+    @TableField(typeHandler = JacksonTypeHandler.class)
     private List<String> tagList;
 
 }

+ 19 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java

@@ -4,10 +4,7 @@ package com.citu.module.menduner.system.dal.es.job;
 import com.citu.framework.es.core.dataobject.ESBaseDO;
 import com.citu.module.menduner.system.enums.FieldAnalyzer;
 import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.DateFormat;
-import org.springframework.data.elasticsearch.annotations.Document;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
+import org.springframework.data.elasticsearch.annotations.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -46,7 +43,12 @@ public class ESJobAdvertisedMergeDO extends ESBaseDO {
     /**
      * 职位名称
      */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    @MultiField(
+            mainField = @Field(type = FieldType.Text, analyzer = FieldAnalyzer.IK_MAX_WORD),
+            otherFields = {
+                    @InnerField(suffix = "keyword", type = FieldType.Keyword, ignoreAbove = 256)
+            }
+    )
     private String name;
     /**
      * 职位类型id
@@ -142,12 +144,22 @@ public class ESJobAdvertisedMergeDO extends ESBaseDO {
     /**
      * 企业全称
      */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    @MultiField(
+            mainField = @Field(type = FieldType.Text, analyzer = FieldAnalyzer.IK_MAX_WORD),
+            otherFields = {
+                    @InnerField(suffix = "keyword", type = FieldType.Keyword, ignoreAbove = 256)
+            }
+    )
     private String enterpriseName;
     /**
      * 企业别称
      */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    @MultiField(
+            mainField = @Field(type = FieldType.Text, analyzer = FieldAnalyzer.IK_MAX_WORD),
+            otherFields = {
+                    @InnerField(suffix = "keyword", type = FieldType.Keyword, ignoreAbove = 256)
+            }
+    )
     private String enterpriseAnotherName;
     /**
      * 企业官网

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/area/AreaMapper.java

@@ -7,6 +7,7 @@ import com.citu.module.menduner.system.controller.base.area.AreaListReqVO;
 import com.citu.module.menduner.system.controller.base.area.AreaPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.area.vo.AppAreaListReqVO;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
+import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.Collection;
@@ -56,4 +57,8 @@ public interface AreaMapper extends BaseMapperX<AreaDO> {
     default List<AreaDO> selectListByIdList(List<Long> ids) {
         return selectList(AreaDO::getId, ids);
     }
+
+    default List<AreaDO> selectListByNameList(String name) {
+        return selectList(AreaDO::getName, name);
+    }
 }

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

@@ -42,5 +42,10 @@ public interface EnterpriseBusinessMapper extends BaseMapperX<EnterpriseBusiness
                 .eqIfPresent(EnterpriseBusinessDO::getCode, code));
     }
 
+    default EnterpriseBusinessDO selectByName(String name) {
+        return selectOne(new LambdaQueryWrapperX<EnterpriseBusinessDO>()
+                .eqIfPresent(EnterpriseBusinessDO::getName, name));
+    }
+
 
 }

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

@@ -7,6 +7,7 @@ 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.app.jobhunt.enterprise.vo.AppEnterpriseSearchPageReqVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseBaseSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.vo.EnterpriseDetailRespVO;
@@ -106,9 +107,9 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
     /**
      * 根据查询条件搜索企业信息,返回简易的企业信息
      **/
-    default PageResult<EnterpriseBaseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO) {
+    default PageResult<AppEnterpriseJobRespVO> search(AppEnterpriseSearchPageReqVO reqVO) {
         MPJLambdaWrapperX<EnterpriseDO> query = new MPJLambdaWrapperX<>();
-        query.selectAll(EnterpriseDO.class);
+        query.selectAssociation(EnterpriseDO.class, AppEnterpriseJobRespVO::getEnterprise);
         query.leftJoin(EnterpriseBusinessDO.class, EnterpriseBusinessDO::getEnterpriseId, EnterpriseDO::getId);
         if (StringUtils.hasText(reqVO.getName())) {
             query.and(wrapper -> wrapper
@@ -130,10 +131,12 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
         query.eqIfPresent(EnterpriseDO::getScale, reqVO.getScale());
         query.eqIfPresent(EnterpriseDO::getFinancingStatus, reqVO.getFinancingStatus());
 
+        query.orderByDesc(EnterpriseDO::getVipFlag, EnterpriseDO::getVipExpireDate);
+
         // EnterpriseAddressDO 对应的是企业的多个地址,可能出现重复问题
         query.groupBy(EnterpriseDO::getId);
 
-        return selectJoinPage(reqVO, EnterpriseBaseSimpleRespVO.class, query);
+        return selectJoinPage(reqVO, AppEnterpriseJobRespVO.class, query);
     }
 
     /**

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

@@ -1,54 +0,0 @@
-package com.citu.module.menduner.system.dal.mysql.enterprise;
-
-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.app.recruit.enterprise.post.AppRecruitEnterprisePostRespVO;
-import com.citu.module.menduner.system.controller.base.enterprise.post.EnterprisePostPageReqVO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
-import com.citu.module.menduner.system.enums.MendunerStatusEnum;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 企业岗位信息 Mapper
- *
- * @author Rayson
- */
-@Mapper
-public interface EnterprisePostMapper extends BaseMapperX<EnterprisePostDO> {
-
-    default PageResult<EnterprisePostDO> selectPage(EnterprisePostPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<EnterprisePostDO>()
-                .eqIfPresent(EnterprisePostDO::getEnterpriseId, reqVO.getEnterpriseId())
-                .eqIfPresent(EnterprisePostDO::getCode, reqVO.getCode())
-                .likeIfPresent(EnterprisePostDO::getNameCn, reqVO.getNameCn())
-                .likeIfPresent(EnterprisePostDO::getNameEn, reqVO.getNameEn())
-                .eqIfPresent(EnterprisePostDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(EnterprisePostDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(EnterprisePostDO::getSort));
-    }
-
-    /** 根据企业id查询企业岗位,返回企业岗位信息 **/
-    default List<EnterprisePostDO> selectListByEnterpriseId(Long enterpriseId) {
-        return selectList(new LambdaQueryWrapperX<EnterprisePostDO>()
-                .eqIfPresent(EnterprisePostDO::getEnterpriseId, enterpriseId)
-                .eqIfPresent(EnterprisePostDO::getStatus, MendunerStatusEnum.ENABLE.getStatus())
-        );
-    }
-    /** 根据企业id和查询条件查询企业岗位,返回企业岗位信息 **/
-    default PageResult<AppRecruitEnterprisePostRespVO> page(EnterprisePostPageReqVO reqVO, Long enterpriseId) {
-        return selectJoinPage(reqVO, AppRecruitEnterprisePostRespVO.class,
-                new MPJLambdaWrapperX<EnterprisePostDO>()
-                        .selectAll(EnterprisePostDO.class)
-                        .eq(EnterprisePostDO::getEnterpriseId, enterpriseId)
-                        .eqIfPresent(EnterprisePostDO::getCode, reqVO.getCode())
-                        .likeIfPresent(EnterprisePostDO::getNameCn, reqVO.getNameCn())
-                        .likeIfPresent(EnterprisePostDO::getNameEn, reqVO.getNameEn())
-                        .eqIfPresent(EnterprisePostDO::getStatus, reqVO.getStatus())
-                        .betweenIfPresent(EnterprisePostDO::getCreateTime, reqVO.getCreateTime())
-                        .orderByDesc(EnterprisePostDO::getSort, EnterprisePostDO::getUpdateTime));
-    }
-}

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

@@ -15,7 +15,6 @@ import com.citu.module.menduner.system.controller.base.enterprise.bind.Enterpris
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindPageReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
@@ -40,7 +39,6 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
                 .likeIfPresent(EnterpriseUserBindDO::getPhone, reqVO.getPhone())
                 .likeIfPresent(EnterpriseUserBindDO::getEmail, reqVO.getEmail())
                 .likeIfPresent(EnterpriseUserBindDO::getName, reqVO.getName())
-                .eqIfPresent(EnterpriseUserBindDO::getPostId, reqVO.getPostId())
                 .orderByDesc(EnterpriseUserBindDO::getId));
     }
 
@@ -59,7 +57,6 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
                 .likeIfPresent(EnterpriseUserBindDO::getPhone, reqVO.getPhone())
                 .likeIfPresent(EnterpriseUserBindDO::getEmail, reqVO.getEmail())
                 .likeIfPresent(EnterpriseUserBindDO::getName, reqVO.getName())
-                .eqIfPresent(EnterpriseUserBindDO::getPostId, reqVO.getPostId())
                 .orderByDesc(EnterpriseUserBindDO::getId));
 
     }
@@ -69,9 +66,7 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
         MPJLambdaWrapperX<EnterpriseUserBindDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAll(EnterpriseUserBindDO.class);
         wrapper.selectAs(EnterpriseDO::getName, EnterpriseUserBindDetailRespVO::getEnterpriseName);
-        wrapper.selectAs(EnterprisePostDO::getNameCn, EnterpriseUserBindDetailRespVO::getPostName);
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, EnterpriseUserBindDO::getEnterpriseId);
-        wrapper.leftJoin(EnterprisePostDO.class, EnterprisePostDO::getId, EnterpriseUserBindDO::getPostId);
         wrapper.eqIfPresent(EnterpriseUserBindDO::getEnterpriseId, reqVO.getEnterpriseId());
         wrapper.eqIfPresent(EnterpriseUserBindDO::getUserId, reqVO.getUserId());
         wrapper.eqIfPresent(EnterpriseUserBindDO::getStatus, reqVO.getStatus());
@@ -87,9 +82,7 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
         MPJLambdaWrapperX<EnterpriseUserBindDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAll(EnterpriseUserBindDO.class);
         wrapper.selectAs(EnterpriseDO::getName, EnterpriseUserBindDetailRespVO::getEnterpriseName);
-        wrapper.selectAs(EnterprisePostDO::getNameCn, EnterpriseUserBindDetailRespVO::getPostName);
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, EnterpriseUserBindDO::getEnterpriseId);
-        wrapper.leftJoin(EnterprisePostDO.class, EnterprisePostDO::getId, EnterpriseUserBindDO::getPostId);
         wrapper.eq(EnterpriseUserBindDO::getId, id);
         return selectJoinOne(EnterpriseUserBindDetailRespVO.class, wrapper);
 
@@ -124,7 +117,7 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
     default List<EnterpriseUserBindDO> selectByEnterpriseIdAndPostId(Long enterpriseId, Long postId) {
         return selectList(new LambdaQueryWrapperX<EnterpriseUserBindDO>()
                 .eqIfPresent(EnterpriseUserBindDO::getEnterpriseId, enterpriseId)
-                .eqIfPresent(EnterpriseUserBindDO::getPostId, postId)
+                .eqIfPresent(EnterpriseUserBindDO::getName, postId)
         );
     }
 
@@ -133,23 +126,18 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
     default PageResult<AppRecruitUserRespVO> selectPage(AppRecruitUserPageReqVO reqVO, Long enterpriseId) {
         MPJLambdaWrapperX<EnterpriseUserBindDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAll(EnterpriseUserBindDO.class);
-        wrapper.selectAssociation(EnterprisePostDO.class, AppRecruitUserRespVO::getPost);
-
         wrapper.selectAs(EnterpriseDO::getId, AppRecruitUserRespVO::getEnterpriseId);
         wrapper.selectAs(EnterpriseDO::getName, AppRecruitUserRespVO::getEnterpriseName);
         wrapper.selectAs(EnterpriseDO::getAnotherName, AppRecruitUserRespVO::getEnterpriseAnotherName);
         wrapper.selectAs(EnterpriseDO::getLogoUrl, AppRecruitUserRespVO::getLogoUrl);
 
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, EnterpriseUserBindDO::getEnterpriseId);
-        wrapper.leftJoin(EnterprisePostDO.class, EnterprisePostDO::getId, EnterpriseUserBindDO::getPostId);
-
         wrapper.eq(EnterpriseDO::getId, enterpriseId);
         wrapper.eq(EnterpriseUserBindDO::getEnterpriseId, enterpriseId);
         wrapper.likeIfPresent(EnterpriseUserBindDO::getName, reqVO.getName());
         wrapper.likeIfPresent(EnterpriseUserBindDO::getPhone, reqVO.getPhone());
         wrapper.likeIfPresent(EnterpriseUserBindDO::getEmail, reqVO.getEmail());
         wrapper.eqIfPresent(EnterpriseUserBindDO::getSex, reqVO.getSex());
-        wrapper.eqIfPresent(EnterpriseUserBindDO::getPostId, reqVO.getPostId());
         wrapper.eqIfPresent(EnterpriseUserBindDO::getStatus, reqVO.getStatus());
 
         wrapper.orderByDesc(EnterpriseUserBindDO::getUserType, EnterpriseUserBindDO::getUpdateTime);
@@ -160,7 +148,6 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
     default AppRecruitEnterpriseUserRespVO selectEnterpriseUser(Long enterpriseId, Long userId) {
         MPJLambdaWrapperX<EnterpriseUserBindDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAll(EnterpriseUserBindDO.class);
-        wrapper.selectAsClass(EnterprisePostDO.class, AppRecruitEnterpriseUserRespVO.class);
         wrapper.selectAs(EnterpriseDO::getName, AppRecruitEnterpriseUserRespVO::getEnterpriseName);
         wrapper.selectAs(EnterpriseDO::getAnotherName, AppRecruitEnterpriseUserRespVO::getEnterpriseAnotherName);
         wrapper.selectAs(EnterpriseDO::getLogoUrl, AppRecruitEnterpriseUserRespVO::getLogoUrl);
@@ -181,11 +168,6 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
         MPJLambdaWrapperX<EnterpriseUserBindDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAssociation(EnterpriseUserBindDO.class, EnterpriseUserSummaryRespVO::getContact);
         wrapper.selectAssociation(EnterpriseDO.class, EnterpriseUserSummaryRespVO::getEnterprise);
-        wrapper.selectAssociation(EnterprisePostDO.class, EnterpriseUserSummaryRespVO::getPost);
-
-
-        // 企业用户 inner 企业岗位
-        wrapper.leftJoin(EnterprisePostDO.class, EnterprisePostDO::getId, EnterpriseUserBindDO::getPostId);
 
         // 企业用户 inner 企业信息
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, EnterpriseUserBindDO::getEnterpriseId);
@@ -207,12 +189,7 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
         wrapper.selectAs(EnterpriseDO::getAnotherName, UserInfoRespDTO::getEnterpriseAnotherName);
         wrapper.selectAs(EnterpriseDO::getLogoUrl, UserInfoRespDTO::getLogoUrl);
 
-        wrapper.selectAs(EnterprisePostDO::getCode, UserInfoRespDTO::getPostCode);
-        wrapper.selectAs(EnterprisePostDO::getNameCn, UserInfoRespDTO::getPostNameCn);
-        wrapper.selectAs(EnterprisePostDO::getNameEn, UserInfoRespDTO::getPostNameEn);
-
         wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, EnterpriseUserBindDO::getEnterpriseId);
-        wrapper.leftJoin(EnterprisePostDO.class, EnterprisePostDO::getId, EnterpriseUserBindDO::getPostId);
 
         wrapper.eq(EnterpriseUserBindDO::getEnterpriseId, enterpriseId);
         wrapper.eq(EnterpriseUserBindDO::getUserId, userId);

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

@@ -10,7 +10,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.interview.vo.AppIn
 import com.citu.module.menduner.system.controller.app.recruit.interview.vo.AppRecruitInterviewInviteReqPageVO;
 import com.citu.module.menduner.system.controller.app.recruit.interview.vo.AppRecruitInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInvitePageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
@@ -226,7 +226,7 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
      * @param status    面试状态
      **/
     default PageResult<RecruitInterviewInviteAnalysisRespVO> getAnalysisDetail(
-            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime, String status) {
+            RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime, String status) {
         MPJLambdaWrapperX<InterviewInviteDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(InterviewInviteDO.class);
         query.selectAssociation(PersonInfoDO.class, AppRecruitInterviewInviteRespVO::getPerson);

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

@@ -8,14 +8,14 @@ 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.app.jobhunt.job.vo.AppEnterpriseJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedReqVO;
@@ -185,9 +185,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param pageParam 分页
      * @return PageResult<AppEnterpriseSimpleRespVO>
      **/
-    default PageResult<AppEnterpriseJobHomeRespVO> getHotEnterpriseJobPage(PageParam pageParam) {
+    default PageResult<AppEnterpriseJobRespVO> getHotEnterpriseJobPage(PageParam pageParam) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
-        query.selectAssociation(EnterpriseDO.class, AppEnterpriseJobHomeRespVO::getEnterprise);
+        query.selectAssociation(EnterpriseDO.class, AppEnterpriseJobRespVO::getEnterprise);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         query.eq(EnterpriseDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
         query.eq(JobAdvertisedDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
@@ -197,7 +197,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         query.gt(EnterpriseDO::getVipExpireDate, LocalDateTime.now());
         query.orderByDesc(JobAdvertisedDO::getUpdateTime);
         query.groupBy(JobAdvertisedDO::getEnterpriseId);
-        return selectJoinPage(pageParam, AppEnterpriseJobHomeRespVO.class, query);
+        return selectJoinPage(pageParam, AppEnterpriseJobRespVO.class, query);
 
     }
 
@@ -237,11 +237,15 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
     /**
      * 根据企业id集合查询企业数据
      **/
-    default List<JobAdvertisedDO> selectByEnterpriseIdList(List<Long> ids) {
+    default List<JobAdvertisedDO> selectByEnterpriseId(Long id, Integer num) {
         LambdaQueryWrapper<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>();
-        query.in(JobAdvertisedDO::getEnterpriseId, ids);
+        query.in(JobAdvertisedDO::getEnterpriseId, id);
         query.eq(JobAdvertisedDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
         notExpireTime(query);
+        query.orderByDesc(JobAdvertisedDO::getUpdateTime);
+        if (null != num) {
+            query.last("limit " + num);
+        }
         return selectList(query);
     }
 
@@ -299,7 +303,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param endTime   结束时间
      **/
     default PageResult<RecruitJobAnalysisRespVO> getAnalysisDetail(
-            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+            RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(JobAdvertisedDO.class);
         query.selectSum(MdeVisitsDO::getCount, RecruitJobAnalysisRespVO::getNum);
@@ -328,7 +332,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param startTime 开始时间
      * @param endTime   结束时间
      **/
-    default Long getBrowseNumCount(RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+    default Long getBrowseNumCount(RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
 
         query.selectSum(MdeVisitsDO::getCount, "num");
@@ -359,7 +363,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param endTime   结束时间
      **/
     default PageResult<RecruitJobAnalysisRespVO> getJobNum(
-            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+            RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(JobAdvertisedDO.class);
 
@@ -452,4 +456,17 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .lt(JobAdvertisedDO::getExpireTime, LocalDateTime.now())
         );
     }
+
+    /**
+     * 根据企业id、用户id、职位名称查询是否存在
+     **/
+    default boolean existByName(Long enterpriseId,Long userId,Long id,String name) {
+        return selectCount(new LambdaQueryWrapperX<JobAdvertisedDO>()
+                .eq(JobAdvertisedDO::getEnterpriseId, enterpriseId)
+                .eq(JobAdvertisedDO::getUserId, userId)
+                // 不等于某个id,兼容修改操作
+                .neIfPresent(JobAdvertisedDO::getId, id)
+                .eq(JobAdvertisedDO::getName, name)
+        ) > 0;
+    }
 }

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

@@ -12,7 +12,7 @@ import com.citu.module.menduner.system.controller.app.recruit.person.cv.AppRecru
 import com.citu.module.menduner.system.controller.app.recruit.person.hire.AppRecruitHireJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.hire.AppRecruitHireJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
@@ -225,7 +225,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
     /**
      * 投递简历的性别比例
      **/
-    default List<CommonRespVO> getJobCvSexCount(RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+    default List<CommonRespVO> getJobCvSexCount(RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAs(PersonInfoDO::getSex, "`key`");
         wrapper.selectCount(JobCvRelDO::getId, CommonRespVO::getValue);
@@ -245,7 +245,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
      * 投递简历的年龄分布
      **/
     default List<CommonRespVO> getJobCvAgeCount
-    (RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+    (RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
 
         String sql = "CASE \n" +
@@ -275,7 +275,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
      * 投递简历的工作经验分布
      **/
     default List<CommonRespVO> getJobCvExpCount
-    (RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+    (RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAs(PersonInfoDO::getExpType, "`key`");
         wrapper.selectCount(JobCvRelDO::getId, CommonRespVO::getValue);
@@ -295,7 +295,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
      * 投递简历的学历分布
      **/
     default List<CommonRespVO> getJobCvEduCount
-    (RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+    (RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAs(PersonInfoDO::getEduType, "`key`");
         wrapper.selectCount(JobCvRelDO::getId, CommonRespVO::getValue);
@@ -321,7 +321,7 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
      * @param status    投递简历的状态
      **/
     default PageResult<RecruitJobCvRelAnalysisRespVO> getAnalysisDetail(
-            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime, String status) {
+            RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime, String status) {
         MPJLambdaWrapperX<JobCvRelDO> wrapper = new MPJLambdaWrapperX<>();
         wrapper.selectAsClass(JobCvRelDO.class, RecruitJobCvRelAnalysisRespVO.class);
         wrapper.selectAssociation(JobAdvertisedDO.class, RecruitJobCvRelAnalysisRespVO::getJob);

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

@@ -78,4 +78,7 @@ public interface PositionMapper extends BaseMapperX<PositionDO> {
     @Select("SELECT * FROM mde_position Where level =#{level}  ORDER BY RAND() LIMIT 10")
     List<PositionDO> getRandomTenByLevel(Integer level);
 
+    default List<PositionDO> selectListByNameList(String name) {
+        return selectList(PositionDO::getNameCn, name);
+    }
 }

+ 228 - 112
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -137,27 +137,29 @@ public class MdeOldSyncService {
 
     private String url = "https://www.mendunerhr.com/";
 
+    private Map<Long, OldMdeUser> userMap = new HashMap<>();
+
     @Async
     @TenantIgnore
     public void run() {
 //        // 同步区域
 //        syncArea();
-//        // 同步感兴趣城市 or 订阅的职位类型
-//        syncInterested();
 //        // 同步职位信息
 //        syncPosition();
-//        // 同步用户信息
-//        syncUser();
-        // 同步vip企业信息
-        syncVipEnterprise();
+        // 同步用户信息
+        syncUser();
+//        // 同步vip企业信息
+//        syncVipEnterprise();
 //        // 同步发布职位
 //        syncJob();
 //        // 同步人才工作经历、教育经历
 //        syncPersonExtend();
+//        // 同步感兴趣城市 or 订阅的职位类型
+//        syncInterested();
 //        // 同步人才简历附件、投递简历
 //        syncCv();
-//        // 计算工作年限和最高学历
-//        syncEduAndWork();
+        // 计算工作年限和最高学历
+        syncEduAndWork();
     }
 
     public void syncArea() {
@@ -276,16 +278,16 @@ public class MdeOldSyncService {
         // 企业vip用户
         List<OldMdeUser> userList = oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
                 .eq(OldMdeUser::getDelFlag, 0)
-                .eq(OldMdeUser::getIdentityFlag,"1")
-                .gt(OldMdeUser::getVipFlag,"0")
+                .eq(OldMdeUser::getIdentityFlag, "1")
+                .gt(OldMdeUser::getVipFlag, "0")
         );
 
         userList.forEach(oldMdeUser -> {
             EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
             if (null != enterpriseDO) {
-              enterpriseDO.setVipFlag(oldMdeUser.getVipFlag());
-              enterpriseDO.setVipExpireDate(oldMdeUser.getDueDate().atStartOfDay());
-              enterpriseMapper.updateById(enterpriseDO);
+                enterpriseDO.setVipFlag(oldMdeUser.getVipFlag());
+                enterpriseDO.setVipExpireDate(oldMdeUser.getDueDate().atStartOfDay());
+                enterpriseMapper.updateById(enterpriseDO);
             }
         });
 
@@ -374,16 +376,53 @@ public class MdeOldSyncService {
 
     }
 
+    public boolean containsKey(Long key) {
+        if (userMap.isEmpty()) {
+            userMap.putAll(oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
+                    .eq(OldMdeUser::getDelFlag, 0)
+                    .orderByAsc(OldMdeUser::getIdentityFlag)
+            ).stream().collect(Collectors.toMap(OldMdeUser::getUserCode, v -> v)));
+        }
+        return userMap.containsKey(key);
+    }
+
     public void syncUser() {
 
         // 所有用户
         List<OldMdeUser> userList = oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
                 .eq(OldMdeUser::getDelFlag, 0)
+                // 求职用户在前面,招聘用户在后面
+                .orderByAsc(OldMdeUser::getIdentityFlag)
         );
-
+        userMap.putAll(userList.stream().collect(Collectors.toMap(OldMdeUser::getUserCode, v -> v)));
         // 新增用户 or 人才基本信息
         userList.stream().forEach(oldMdeUser -> {
-            MdeUserDO userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
+
+            MdeUserDO userDO = null;
+            if (oldMdeUser.getIdentityFlag().equals("1")) {
+                // 企业用户,判断预留的手机号有没有注册过用户
+                if(StringUtils.hasText(oldMdeUser.getEntPhone())) {
+                    // 手机号不为空
+                    MdeUserDO enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+                    if (null != enterpriseUser) {
+                        // 存在了,不再创建用户
+                        return;
+                    }
+                }else {
+                    // 企业预留的手机号为空
+                }
+            } else {
+                // 求职端用户
+                userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
+                if (null == userDO ) {
+                    MdeUserDO userNameUserDO = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+                    if (null != userNameUserDO) {
+                        // 根据账号名也匹配到数据,说明是同一个用户,直接使用账号名(手机号)匹配到的数据
+                        userDO = userNameUserDO;
+                    }
+                }
+
+            }
 
             // 账户信息
             MdeUserDO insertionDO = MdeUserDO.builder()
@@ -415,6 +454,16 @@ public class MdeOldSyncService {
                     .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
                     .build();
 
+            if (null != oldMdeUser.getBirthday()) {
+                // 生日转换
+                personInfoDO.setBirthday(DateUtils.of(oldMdeUser.getBirthday(), FORMAT_YEAR_MONTH_DAY).atStartOfDay());
+            }
+
+            if (oldMdeUser.getIdentityFlag().equals("0")) {
+                // 企业基本信息 不新增人才信息,只有普通用户才新增
+                setCommon(personInfoDO);
+                personInfoMapper.insertOrUpdate(personInfoDO);
+            }
 
             if (oldMdeUser.getIdentityFlag().equals("0")) {
                 // 个人
@@ -424,102 +473,113 @@ public class MdeOldSyncService {
                 insertionDO.setPhone(oldMdeUser.getEntPhone());
             }
 
-            if (null != oldMdeUser.getBirthday()) {
-                // 生日转换
-                personInfoDO.setBirthday(DateUtils.of(oldMdeUser.getBirthday(), FORMAT_YEAR_MONTH_DAY).atStartOfDay());
-            }
-
-            setCommon(personInfoDO);
-            personInfoMapper.insertOrUpdate(personInfoDO);
 
             setCommon(insertionDO);
             mdeUserMapper.insertOrUpdate(insertionDO);
         });
 
-
-        // 企业用户
-        List<OldMdeUser> enterpriseUserList = userList.stream().filter(c -> c.getIdentityFlag().equals("1")).collect(Collectors.toList());
-        enterpriseUserList.forEach(oldMdeUser -> {
-            EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(EnterpriseUserBindDO::getUserId, oldMdeUser.getUserCode());
-
-            // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
-            EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
-
-            EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
-
-            EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
-                    .id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
-                    .parentId(0L)
-                    .name(oldMdeUser.getName())
-                    .foreignName(oldMdeUser.getForeignName())
-                    .anotherName(oldMdeUser.getName())
-                    .website(oldMdeUser.getWebsite())
-                    .introduce(oldMdeUser.getIntroduction())
-                    .contact(oldMdeUser.getEntContacts())
-                    .phone(oldMdeUser.getEntPhone())
-                    .logoUrl(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
-                    .businessUrl(null == oldMdeUser.getImage() ? null : url + oldMdeUser.getImage())
-                    .status(MendunerStatusEnum.ENABLE.getStatus())
-                    .build();
-
-
-            EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
-                    .id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
-                    .enterpriseId(oldMdeUser.getUserCode())
-                    .userId(oldMdeUser.getUserCode())
-                    .name(oldMdeUser.getEntContacts())
-                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
-                    .email(oldMdeUser.getUserName())
-                    .password((passwordEncoder.encode(oldMdeUser.getUserName())))
-                    .phone(oldMdeUser.getEntPhone())
-                    .userType(EnterpriseUserTypeEnum.ADMIN.getType())
-                    .build();
-
-            EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
-                    .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
-                    .enterpriseId(oldMdeUser.getUserCode())
-                    .address(oldMdeUser.getAddDetail())
-                    .build();
-
-            // 优先级:区 > 市 > 省
-            String area = oldMdeUser.getAddrArea();
-            String city = oldMdeUser.getAddrCity();
-            String province = oldMdeUser.getAddrProvince();
-
-            if (StringUtils.hasText(area)) {
-                // 如果有区,则设置区ID
-                addressInsertionDO.setAreaId(Long.valueOf(area));
-            } else if (StringUtils.hasText(city)) {
-                // 如果没有区但有市,则设置市ID
-                addressInsertionDO.setAreaId(Long.valueOf(city));
-            } else if (StringUtils.hasText(province)) {
-                // 如果没有区和市但有省,则设置省ID
-                addressInsertionDO.setAreaId(Long.valueOf(province));
-            } else {
-                // 如果都没有,则设置为null
-                addressInsertionDO.setAreaId(null);
-            }
-
-            if (0 != oldMdeUser.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
-                addressInsertionDO.setLongitude(String.valueOf(oldMdeUser.getAddLongitude()));
-                addressInsertionDO.setLatitude(String.valueOf(oldMdeUser.getAddLatitude()));
-            }
-
-            setCommon(enterpriseInsertionDO);
-            // 插入企业信息
-            enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
-
-            setCommon(userInsertionDO);
-            // 插入企业用户绑定信息
-            enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
-
-
-            setCommon(addressInsertionDO);
-            // 插入企业地址信息
-            enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);
-
-        });
-
+//
+//        // 企业用户
+//        List<OldMdeUser> enterpriseUserList = userList.stream().filter(c -> c.getIdentityFlag().equals("1")).collect(Collectors.toList());
+//        enterpriseUserList.forEach(oldMdeUser -> {
+//            MdeUserDO enterpriseUser = null;
+//            if (StringUtils.hasText(oldMdeUser.getEntPhone())) {
+//                // 根据手机号获取用户信息
+//                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+//                if (null == enterpriseUser) {
+//                    return;
+//                }
+//            } else {
+//                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+//                if (null == enterpriseUser) {
+//                    return;
+//                }
+//            }
+//
+//            // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
+//            EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
+//            EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
+//                    .id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
+//                    .parentId(0L)
+//                    .name(oldMdeUser.getName())
+//                    .foreignName(oldMdeUser.getForeignName())
+//                    .anotherName(oldMdeUser.getName())
+//                    .website(oldMdeUser.getWebsite())
+//                    .introduce(oldMdeUser.getIntroduction())
+//                    .contact(oldMdeUser.getEntContacts())
+//                    .phone(oldMdeUser.getEntPhone())
+//                    .logoUrl(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
+//                    .businessUrl(null == oldMdeUser.getImage() ? null : url + oldMdeUser.getImage())
+//                    .status(MendunerStatusEnum.ENABLE.getStatus())
+//                    .build();
+//
+//
+//            // 该企业下的用户信息
+//            EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(
+//                    EnterpriseUserBindDO::getUserId, enterpriseUser.getId(),
+//                    EnterpriseUserBindDO::getEnterpriseId, oldMdeUser.getUserCode()
+//            );
+//
+//            EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
+//                    .id(null == userDO ? null : userDO.getId())
+//                    .enterpriseId(oldMdeUser.getUserCode())
+//                    .userId(enterpriseUser.getId())
+//                    .name(oldMdeUser.getEntContacts())
+//                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
+//                    .email(oldMdeUser.getUserName())
+//                    .password((passwordEncoder.encode(oldMdeUser.getUserName())))
+//                    .phone(oldMdeUser.getEntPhone())
+//                    .userType(EnterpriseUserTypeEnum.ADMIN.getType())
+//                    .build();
+//
+//
+//            // 企业的地址
+//            EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
+//
+//            EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
+//                    .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
+//                    .enterpriseId(oldMdeUser.getUserCode())
+//                    .address(oldMdeUser.getAddDetail())
+//                    .build();
+//
+//            // 优先级:区 > 市 > 省
+//            String area = oldMdeUser.getAddrArea();
+//            String city = oldMdeUser.getAddrCity();
+//            String province = oldMdeUser.getAddrProvince();
+//
+//            if (StringUtils.hasText(area)) {
+//                // 如果有区,则设置区ID
+//                addressInsertionDO.setAreaId(Long.valueOf(area));
+//            } else if (StringUtils.hasText(city)) {
+//                // 如果没有区但有市,则设置市ID
+//                addressInsertionDO.setAreaId(Long.valueOf(city));
+//            } else if (StringUtils.hasText(province)) {
+//                // 如果没有区和市但有省,则设置省ID
+//                addressInsertionDO.setAreaId(Long.valueOf(province));
+//            } else {
+//                // 如果都没有,则设置为null
+//                addressInsertionDO.setAreaId(null);
+//            }
+//
+//            if (0 != oldMdeUser.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
+//                addressInsertionDO.setLongitude(String.valueOf(oldMdeUser.getAddLongitude()));
+//                addressInsertionDO.setLatitude(String.valueOf(oldMdeUser.getAddLatitude()));
+//            }
+//
+//            setCommon(enterpriseInsertionDO);
+//            // 插入企业信息
+//            enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
+//
+//            setCommon(userInsertionDO);
+//            // 插入企业用户绑定信息
+//            enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
+//
+//            setCommon(addressInsertionDO);
+//            // 插入企业地址信息
+//            enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);
+//
+//        });
+//
 
     }
 
@@ -527,6 +587,14 @@ public class MdeOldSyncService {
         // 职位信息
         List<OldMdeJobAdvertised> jobList = oldJobAdvertisedMapper.selectList();
         jobList.forEach(oldMdeJobAdvertised -> {
+            if (!containsKey(oldMdeJobAdvertised.getPublisher())) {
+                return;
+            }
+
+            Long userId = getSystemUserId(oldMdeJobAdvertised.getPublisher());
+            if (null == userId) {
+                return;
+            }
             JobAdvertisedDO jobAdvertisedDO = jobAdvertisedMapper.selectOne(JobAdvertisedDO::getId, oldMdeJobAdvertised.getJobId());
 
 
@@ -537,7 +605,7 @@ public class MdeOldSyncService {
                     .content(oldMdeJobAdvertised.getJobDescribe())
                     .requirement(oldMdeJobAdvertised.getJobRequirement())
                     .positionId(Long.valueOf(oldMdeJobAdvertised.getPositionId()))
-                    .userId(oldMdeJobAdvertised.getPublisher())
+                    .userId(userId)
                     .enterpriseId(oldMdeJobAdvertised.getPublisher())
                     .address(oldMdeJobAdvertised.getAddDetail())
                     .eduType(eduTypeMapRelation.get(oldMdeJobAdvertised.getEducation()))
@@ -588,10 +656,17 @@ public class MdeOldSyncService {
         List<OldMdeEducationExperience> eduList =
                 oldEducationExperienceMapper.selectList(OldMdeEducationExperience::getDelFlag, 0);
         eduList.forEach(e -> {
+            if (!containsKey(e.getUserCode())) {
+                return;
+            }
+            Long userId = getSystemUserId(e.getUserCode());
+            if (null == userId) {
+                return;
+            }
             EduExpDO eduExpDO = eduExpMapper.selectOne(EduExpDO::getId, e.getEduId());
             EduExpDO insertionDO = EduExpDO.builder()
                     .id(null == eduExpDO ? e.getEduId() : eduExpDO.getId())
-                    .userId(e.getUserCode())
+                    .userId(userId)
                     .schoolId(null)
                     .schoolName(e.getSchName())
                     .educationType(eduTypeMapRelation.get(e.getEducation()))
@@ -607,10 +682,17 @@ public class MdeOldSyncService {
 
         List<OldMdeWorkExperience> workList = oldWorkExperienceMapper.selectList(OldMdeWorkExperience::getDelFlag, 0);
         workList.forEach(e -> {
+            if (!containsKey(e.getUserCode())) {
+                return;
+            }
+            Long userId = getSystemUserId(e.getUserCode());
+            if (null == userId) {
+                return;
+            }
             WorkExpDO workExpDO = workExpMapper.selectOne(WorkExpDO::getId, e.getWorkId());
             WorkExpDO insertionDO = WorkExpDO.builder()
                     .id(null == workExpDO ? e.getWorkId() : workExpDO.getId())
-                    .userId(e.getUserCode())
+                    .userId(userId)
                     .enterpriseId(null)
                     .industryId(null)
                     .deptName(null)
@@ -633,10 +715,17 @@ public class MdeOldSyncService {
         // 人才投递的简历、附件
         List<OldMdeUserCv> cvList = oldUserCvMapper.selectList(OldMdeUserCv::getDelFlag, 0);
         cvList.forEach(e -> {
+            if (!containsKey(e.getUserCode())) {
+                return;
+            }
+            Long userId = getSystemUserId(e.getUserCode());
+            if (null == userId) {
+                return;
+            }
             CvAttachmentDO cvDO = cvAttachmentMapper.selectOne(CvAttachmentDO::getId, e.getCvId());
             CvAttachmentDO insertionDO = CvAttachmentDO.builder()
                     .id(null == cvDO ? e.getCvId() : cvDO.getId())
-                    .userId(e.getUserCode())
+                    .userId(userId)
                     .title(e.getCvTitle())
                     .url(url + e.getCvUrl())
                     .build();
@@ -648,7 +737,14 @@ public class MdeOldSyncService {
                 .eq(OldPositionCvRelDO::getDelFlag, 0)
         );
         cvRelDOList.forEach(e -> {
-            if (!StringUtils.hasText(e.getCvUrl())) {
+            if (!StringUtils.hasText(e.getCvUrl()) || !StringUtils.hasText(e.getPublisher())) {
+                return;
+            }
+            if (!containsKey(Long.valueOf(e.getPublisher()))) {
+                return;
+            }
+            Long userId = getSystemUserId(Long.valueOf(e.getPublisher()));
+            if (null == userId) {
                 return;
             }
             JobCvRelDO cvDO = jobCvRelMapper.selectOne(JobCvRelDO::getId, e.getIntvId());
@@ -662,7 +758,7 @@ public class MdeOldSyncService {
                     .type("0")
                     .enterpriseId(advertisedDO.getEnterpriseId())
                     .jobId(advertisedDO.getId())
-                    .publishUserId(Long.valueOf(e.getPublisher()))
+                    .publishUserId(userId)
                     .recommendUserId(null)
                     .userId(e.getCandidate())
                     .title(e.getCvTitle())
@@ -680,6 +776,7 @@ public class MdeOldSyncService {
     public void syncEduAndWork() {
         List<PersonInfoDO> personList = personInfoMapper.selectList();
         personList.forEach(person -> {
+
             boolean isUpdate = false;
             EduExpDO eduMax = eduExpMapper.selectMaxEducationByUserId(person.getUserId());
             if (null != eduMax) {
@@ -741,4 +838,23 @@ public class MdeOldSyncService {
     private void setCommon(TenantBaseDO tenantBaseDO) {
         tenantBaseDO.setTenantId(155L);
     }
+
+
+    private Long getSystemUserId(Long userId) {
+        MdeUserDO enterpriseUser = null;
+        OldMdeUser oldMdeUser = userMap.get(userId);
+        if (StringUtils.hasText(oldMdeUser.getEntPhone())) {
+            // 根据手机号获取用户信息
+            enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+            if (null == enterpriseUser) {
+                return null;
+            }
+        } else {
+            enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+            if (null == enterpriseUser) {
+                return null;
+            }
+        }
+        return enterpriseUser.getId();
+    }
 }

+ 0 - 60
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/scheduled/InterviewInviteScheduled.java

@@ -1,60 +0,0 @@
-package com.citu.module.menduner.system.scheduled;
-
-import cn.hutool.core.collection.CollUtil;
-import com.citu.framework.tenant.core.aop.TenantIgnore;
-import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
-import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
-import com.citu.module.menduner.system.enums.interview.InterviewInviteStatusEnum;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.util.StopWatch;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * @author rayson
- * 面试定时任务
- * TODO 先暂时这么干
- * @create 2024/7/24 下午2:28
- **/
-@Slf4j
-@Configuration
-@RequiredArgsConstructor
-public class InterviewInviteScheduled {
-
-    @Resource
-    private InterviewInviteMapper mapper;
-
-    /**
-     * 即将到达的面试提醒
-     * 每隔3分钟扫描一遍
-     **/
-    @Async
-    @TenantIgnore
-//    @Scheduled(cron = "0 */3 * * * ?")
-    // 10s
-    @Scheduled(cron = "*/10 * * * * *")
-    public void approachingInterview() {
-        List<InterviewInviteDO> list = mapper.getApproachingInterviewList();
-
-        if (CollUtil.isEmpty(list)) {
-            return;
-        }
-
-        StopWatch stopWatch = new StopWatch();
-        stopWatch.start("即将到达的面试提醒");
-
-        for (InterviewInviteDO inviteDO : list) {
-            inviteDO.setStatus(InterviewInviteStatusEnum.APPROACHING_INTERVIEW.getStatus());
-            mapper.updateById(inviteDO);
-            // TODO 发送消息提醒
-
-        }
-        stopWatch.stop();
-        stopWatch.prettyPrint();
-    }
-}

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

@@ -122,7 +122,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
             // 企业邮箱登录
             return enterpriseAuthService.login(reqVO.getAccount(), reqVO.getPassword());
         }
-        return null;
+        throw exception(MDE_USER_NOT_EXISTS);
     }
 
     protected MdeUserDO check(LoginLogTypeEnum logTypeEnum, String account, String password) {
@@ -301,12 +301,13 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         }
 
         // 执行发送
-        smsCodeApi.sendSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setCreateIp(getClientIP()).setMobile(reqVO.getPhone()));
+        smsCodeApi.sendSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setCreateIp(getClientIP()).setMobile(reqVO.getPhone()))
+                .getCheckedData();
     }
 
     @Override
     public void validateSmsCode(AppMdeAuthSmsValidateReqVO reqVO) {
-        smsCodeApi.validateSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setMobile(reqVO.getPhone()));
+        smsCodeApi.validateSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setMobile(reqVO.getPhone())).getCheckedData();
     }
 
     @Override

+ 0 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java

@@ -139,13 +139,6 @@ public interface EnterpriseService {
      **/
     AppEnterpriseDetailRespVO getEnterpriseDetail(Long id);
 
-    /**
-     * 根据查询条件分页搜索
-     *
-     * @param reqVO 查询条件
-     * @return 分页简易企业对象
-     **/
-    PageResult<EnterpriseBaseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO);
 
     /**
      * 根据企业id获取简易的企业信息

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

@@ -67,9 +67,6 @@ public class EnterpriseServiceImpl implements EnterpriseService {
     @Resource
     private EnterpriseAddressMapper enterpriseAddressMapper;
 
-    @Resource
-    private AreaService areaService;
-
     @Resource
     private ESProducer esProducer;
 
@@ -242,22 +239,6 @@ public class EnterpriseServiceImpl implements EnterpriseService {
         return respVO;
     }
 
-    @Override
-    public PageResult<EnterpriseBaseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO) {
-        if (null != reqVO.getAreaIds()) {
-            // 取最后一个元素
-            Set<Long> areaIds = areaService.
-                    getChildrenIds(reqVO.getAreaIds().get(reqVO.getAreaIds().size() - 1));
-            if (!areaIds.isEmpty()) {
-                List<Long> areaIdList = new ArrayList<>(areaIds);
-                // 包括自己
-                areaIdList.add(reqVO.getAreaIds().get(0));
-                reqVO.setAreaIds(areaIdList);
-            }
-        }
-        return enterpriseMapper.search(reqVO);
-    }
-
     @Override
     public EnterpriseBaseSimpleRespVO getEnterpriseSimple(Long id) {
         EnterpriseDO enterprise = enterpriseMapper.selectById(id);

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

@@ -135,7 +135,6 @@ public class EnterpriseUserApplyServiceImpl implements EnterpriseUserApplyServic
         userBindDO.setEnterpriseId(userApplyDO.getEnterpriseId());
         userBindDO.setUserId(userApplyDO.getUserId());
         userBindDO.setName(userApplyDO.getName());
-        userBindDO.setPostId(userApplyDO.getPostId());
         userBindDO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
         userBindDO.setUserType(EnterpriseUserTypeEnum.NORMAL.getType());
         userBindMapper.insert(userBindDO);

Some files were not shown because too many files changed in this diff