Parcourir la source

1、优化招聘者-招聘职位查询
2、增加忠诚奖励模块

rayson il y a 1 an
Parent
commit
aacf6b2e97
100 fichiers modifiés avec 1388 ajouts et 95 suppressions
  1. 13 0
      citu-dependencies/pom.xml
  2. 1 1
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/dataobject/ESBaseDO.java
  3. 1 1
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/filter/ESFieldFilter.java
  4. 1 1
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/util/ESUtils.java
  5. 12 0
      citu-framework/citu-spring-boot-starter-mybatis/src/main/java/com/citu/framework/mybatis/core/query/MPJLambdaWrapperX.java
  6. 1 1
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/i18n/config/CituI18nAutoConfiguration.java
  7. 2 2
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/i18n/config/LocaleInterceptor.java
  8. 1 1
      citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/BeanToGenerateTable.java
  9. 1 1
      citu-module-mp/citu-module-mp-biz/src/main/java/com/citu/module/mp/dal/dataobject/BeanToGenerateTable.java
  10. 1 1
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/db/CituTransformDataSourceAutoConfiguration.java
  11. 1 1
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/db/TransformDataSourceInterceptor.java
  12. 1 1
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/package-info.java
  13. 25 0
      menduner/menduner-reward-api/pom.xml
  14. 40 0
      menduner/menduner-reward-biz/pom.xml
  15. 28 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/HelloWorldRule.java
  16. 17 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/MendunerRewardApplication.java
  17. 57 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/PointRuleTest.java
  18. 27 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/Test.java
  19. 17 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/config/RulesConfiguration.java
  20. 14 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/core/Handler.java
  21. 15 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/core/filter/UrlRuleFilter.java
  22. 18 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/PointRuleConfig.java
  23. 93 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/rule/DynamicRule.java
  24. 177 0
      menduner/menduner-reward-biz/src/main/resources/application-dev.yaml
  25. 205 0
      menduner/menduner-reward-biz/src/main/resources/application-local.yaml
  26. 142 0
      menduner/menduner-reward-biz/src/main/resources/application.yaml
  27. 23 0
      menduner/menduner-reward-biz/src/main/resources/bootstrap-local.yaml
  28. 14 0
      menduner/menduner-reward-biz/src/main/resources/bootstrap.yaml
  29. 0 0
      menduner/menduner-reward-biz/src/main/resources/i18n/messages.properties
  30. 19 0
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_en_US.properties
  31. 19 0
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_CN.properties
  32. 0 0
      menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_HK.properties
  33. 76 0
      menduner/menduner-reward-biz/src/main/resources/logback-spring.xml
  34. 1 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ApiConstants.java
  35. 1 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/DictTypeConstants.java
  36. 1 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/MdeLogRecordConstants.java
  37. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/MendunerSystemApplication.java
  38. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/package-info.java
  39. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/CustomDataPermissionRule.java
  40. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/CustomDataPermissionRuleCustomizer.java
  41. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/package-info.java
  42. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/industry/vo/IndustryPageReqVO.java
  43. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/industry/vo/IndustryRespVO.java
  44. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/industry/vo/IndustrySaveReqVO.java
  45. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedRespVO.java
  46. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedSaveReqVO.java
  47. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedDetailRespVO.java
  48. 10 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java
  49. 54 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobPageReqVO.java
  50. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobReqVO.java
  51. 71 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobSimpleRespVO.java
  52. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobAdvertisedConvert.java
  53. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseAddressDO.java
  54. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseBusinessDO.java
  55. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java
  56. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java
  57. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseUserBindDO.java
  58. 10 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobAdvertisedDO.java
  59. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/permission/MdeRoleDO.java
  60. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java
  61. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/visits/MdeVisitsDO.java
  62. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java
  63. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseAddressMapper.java
  64. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseBusinessMapper.java
  65. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseMapper.java
  66. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseRegisterMapper.java
  67. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseUserBindMapper.java
  68. 23 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  69. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  70. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/user/MdeUserMapper.java
  71. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/visits/MdeVisitsMapper.java
  72. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/redis/RedisKeyConstants.java
  73. 6 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java
  74. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/producer/MdeVisitsProducer.java
  75. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthService.java
  76. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java
  77. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthService.java
  78. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java
  79. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java
  80. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  81. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/address/EnterpriseAddressService.java
  82. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/address/EnterpriseAddressServiceImpl.java
  83. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  84. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  85. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessService.java
  86. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessServiceImpl.java
  87. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterService.java
  88. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java
  89. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryServiceImpl.java
  90. 7 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  91. 15 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  92. 12 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationService.java
  93. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  94. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionService.java
  95. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdePermissionServiceImpl.java
  96. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/permission/MdeRoleService.java
  97. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java
  98. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserService.java
  99. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserServiceImpl.java
  100. 0 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages.properties

+ 13 - 0
citu-dependencies/pom.xml

@@ -83,6 +83,8 @@
         <jimureport.version>1.6.6</jimureport.version>
         <xercesImpl.version>2.12.2</xercesImpl.version>
         <weixin-java.version>4.6.0</weixin-java.version>
+        <!-- 规则引擎 -->
+        <easy.rules.version>4.1.0</easy.rules.version>
     </properties>
 
     <dependencyManagement>
@@ -685,6 +687,17 @@
                 <version>${xercesImpl.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>org.jeasy</groupId>
+                <artifactId>easy-rules-core</artifactId>
+                <version>${easy.rules.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.jeasy</groupId>
+                <artifactId>easy-rules-mvel</artifactId>
+                <version>${easy.rules.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

+ 1 - 1
citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/dataobject/ESBaseDO.java

@@ -10,7 +10,7 @@ import java.time.LocalDateTime;
 /**
  * ES 基础 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @Data
 public class ESBaseDO {

+ 1 - 1
citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/filter/ESFieldFilter.java

@@ -10,7 +10,7 @@ import java.util.List;
 /**
  * es 自定义字段过滤器
  *
- * @author rayson
+ * @author Rayson
  **/
 public class ESFieldFilter<T> implements SourceFilter {
 

+ 1 - 1
citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/util/ESUtils.java

@@ -7,7 +7,7 @@ import java.util.Map;
 /**
  * es 工具类
  *
- * @author rayson
+ * @author Rayson
  **/
 public class ESUtils {
 

+ 12 - 0
citu-framework/citu-spring-boot-starter-mybatis/src/main/java/com/citu/framework/mybatis/core/query/MPJLambdaWrapperX.java

@@ -20,6 +20,18 @@ import java.util.function.Consumer;
  */
 public class MPJLambdaWrapperX<T> extends MPJLambdaWrapper<T> {
 
+    public MPJLambdaWrapperX() {
+        super();
+    }
+
+    public MPJLambdaWrapperX(Class<T> clazz) {
+        super(clazz);
+    }
+
+    public MPJLambdaWrapperX(T entity) {
+        super(entity);
+    }
+
     public MPJLambdaWrapperX<T> likeIfPresent(SFunction<T, ?> column, String val) {
         MPJWrappers.lambdaJoin().like(column, val);
         if (StringUtils.hasText(val)) {

+ 1 - 1
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/i18n/config/CituI18nAutoConfiguration.java

@@ -18,7 +18,7 @@ import java.util.Locale;
 /**
  * i18n 国际化配置
  *
- * @author rayson
+ * @author Rayson
  **/
 @AutoConfiguration
 @EnableConfigurationProperties(I18nProperties.class)

+ 2 - 2
citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/i18n/config/LocaleInterceptor.java

@@ -16,7 +16,7 @@ import java.util.Locale;
 /**
  * 国际化切换拦截
  *
- * @author rayson
+ * @author Rayson
  **/
 @Slf4j
 public class LocaleInterceptor implements HandlerInterceptor {
@@ -95,7 +95,7 @@ public class LocaleInterceptor implements HandlerInterceptor {
     }
 
     private Locale parseLocale(String languageTag) {
-        String[] langParts = languageTag.split("-");
+        String[] langParts = languageTag.split("_");
         if (langParts.length == 1) {
             return new Locale(langParts[0]);
         } else if (langParts.length == 2) {

+ 1 - 1
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/BeanToGenerateTable.java

@@ -8,7 +8,7 @@ import java.lang.reflect.Method;
 import java.util.List;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description generateTable
  * @create 2024/5/11 下午3:10
  **/

+ 1 - 1
citu-module-mp/citu-module-mp-biz/src/main/java/com/citu/module/mp/dal/dataobject/BeanToGenerateTable.java

@@ -9,7 +9,7 @@ import java.util.List;
 import java.util.Locale;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description generateTable
  * @create 2024/5/11 下午3:10
  **/

+ 1 - 1
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/db/CituTransformDataSourceAutoConfiguration.java

@@ -8,7 +8,7 @@ import org.springframework.context.annotation.Bean;
 /**
  * 数据源自动切换配置类
  *
- * @author rayson
+ * @author Rayson
  **/
 @AutoConfiguration
 @EnableConfigurationProperties(DBTransformProperties.class)

+ 1 - 1
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/db/TransformDataSourceInterceptor.java

@@ -20,7 +20,7 @@ import org.apache.ibatis.session.RowBounds;
  * 读写分离   主写从读
  * 根据sql类型 切换数据源
  *
- * @author rayson
+ * @author Rayson
  **/
 @Intercepts({
         @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),

+ 1 - 1
menduner/menduner-common/src/main/java/com/citu/module/menduner/common/package-info.java

@@ -1,6 +1,6 @@
 /**
  * menduner公共
  *
- * @author rayson
+ * @author Rayson
  */
 package com.citu.module.menduner.common;

+ 25 - 0
menduner/menduner-reward-api/pom.xml

@@ -0,0 +1,25 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.citu</groupId>
+        <artifactId>menduner</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>menduner-reward-api</artifactId>
+    <packaging>jar</packaging>
+    <name>${project.artifactId}</name>
+    <description>
+        门墩儿忠诚奖励api
+    </description>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.citu</groupId>
+            <artifactId>menduner-common</artifactId>
+            <version>${revision}</version>
+        </dependency>
+    </dependencies>
+</project>

+ 40 - 0
menduner/menduner-reward-biz/pom.xml

@@ -0,0 +1,40 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.citu</groupId>
+        <artifactId>menduner</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+
+    <artifactId>menduner-reward-biz</artifactId>
+    <packaging>jar</packaging>
+    <name>${project.artifactId}</name>
+    <description>
+        门墩儿忠诚奖励 biz
+    </description>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.citu</groupId>
+            <artifactId>menduner-reward-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jeasy</groupId>
+            <artifactId>easy-rules-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jeasy</groupId>
+            <artifactId>easy-rules-mvel</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.citu</groupId>
+            <artifactId>citu-spring-boot-starter-biz-tenant</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 28 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/HelloWorldRule.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.reward;
+
+import org.jeasy.rules.annotation.Action;
+import org.jeasy.rules.annotation.Condition;
+import org.jeasy.rules.annotation.Fact;
+import org.jeasy.rules.annotation.Rule;
+import org.jeasy.rules.api.Facts;
+
+/**
+ * @author Rayson
+ * @description HelloWorldRule
+ * @create 2024/6/5 下午6:55
+ **/
+
+@Rule(name = "Hello World rule", description = "Always say hello world")
+public class HelloWorldRule {
+
+    @Condition
+    public boolean when(@Fact("num") int num) {
+        return num % 2 == 0;
+    }
+
+    @Action
+    public void then(Facts facts) throws Exception {
+        facts.put("result","我是偶数");
+    }
+
+}

+ 17 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/MendunerRewardApplication.java

@@ -0,0 +1,17 @@
+package com.citu.module.menduner.reward;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 项目的启动类
+ * 门墩儿 忠诚奖励模块 启动类
+ * @author Rayson
+ */
+@SpringBootApplication
+public class MendunerRewardApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(MendunerRewardApplication.class, args);
+    }
+}

+ 57 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/PointRuleTest.java

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.reward;
+
+import com.citu.module.menduner.reward.dal.dataobject.PointRuleConfig;
+import com.citu.module.menduner.reward.rule.DynamicRule;
+import org.jeasy.rules.api.Facts;
+import org.jeasy.rules.api.Rule;
+import org.jeasy.rules.api.Rules;
+import org.jeasy.rules.api.RulesEngine;
+import org.jeasy.rules.core.DefaultRulesEngine;
+import org.jeasy.rules.mvel.MVELRule;
+import org.mvel2.MVEL;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author rayson
+ * @description PointRuleTest
+ * @create 2024/6/6 上午10:59
+ **/
+public class PointRuleTest {
+
+    public static void main(String[] args) {
+        // 创建一个规则配置
+        PointRuleConfig ruleConfig = new PointRuleConfig(1L,
+                "/menduner/test",
+                "(age>=18 && age<=30) || (name = 张三 || name =李四)",
+                "num <=1",
+                100L);
+
+        // 创建一个动态规则
+        DynamicRule dynamicRule = new DynamicRule(ruleConfig);
+
+        Facts facts = new Facts();
+        facts.put("rule", new DynamicRule(ruleConfig));
+
+        Rule lessRule = new MVELRule()
+                .name("aaaa")
+                .description("xxxx")
+                .when("rule.when()")
+                .then("rule.action()");
+
+
+//        Rules rules = new Rules();
+//        rules.register(lessRule);
+//        DefaultRulesEngine engine = new DefaultRulesEngine();
+//        engine.fire(rules, facts);
+//        System.out.println(facts);
+
+
+        Rules rules2 =new Rules();
+        rules2.register(new DynamicRule(ruleConfig));
+        Facts facts2 = new Facts();
+        RulesEngine actualRules = new DefaultRulesEngine();
+        actualRules.fire(rules2, facts2);
+    }
+}

+ 27 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/Test.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.reward;
+
+import org.jeasy.rules.api.Facts;
+import org.jeasy.rules.api.Rules;
+import org.jeasy.rules.api.RulesEngine;
+import org.jeasy.rules.core.DefaultRulesEngine;
+
+/**
+ * @author Rayson
+ * @description Test
+ * @create 2024/6/5 下午6:55
+ **/
+public class Test {
+    public static void main(String[] args) {
+
+        Rules rules =new Rules();
+        rules.register(new HelloWorldRule());
+        Facts facts = new Facts();
+        facts.put("num", 2);
+        facts.put("result", "我是奇数");
+        RulesEngine actualRules = new DefaultRulesEngine();
+        actualRules.fire(rules,facts);
+        System.out.println(facts);
+    }
+
+
+}

+ 17 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/config/RulesConfiguration.java

@@ -0,0 +1,17 @@
+package com.citu.module.menduner.reward.config;
+
+import org.jeasy.rules.api.RulesEngine;
+import org.jeasy.rules.core.DefaultRulesEngine;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * 规则配置
+ * @author rayson
+ **/
+public class RulesConfiguration {
+
+    @Bean
+    public RulesEngine rulesEngine() {
+        return new DefaultRulesEngine();
+    }
+}

+ 14 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/core/Handler.java

@@ -0,0 +1,14 @@
+package com.citu.module.menduner.reward.core;
+
+/**
+ * 规则处理器
+ * @author rayson
+ **/
+public interface Handler {
+
+    void execute();
+
+    default boolean need() {
+        return false;
+    }
+}

+ 15 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/core/filter/UrlRuleFilter.java

@@ -0,0 +1,15 @@
+package com.citu.module.menduner.reward.core.filter;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * url 规则过滤器
+ *
+ * @author rayson
+ **/
+@Slf4j
+public class UrlRuleFilter {
+
+
+
+}

+ 18 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/dataobject/PointRuleConfig.java

@@ -0,0 +1,18 @@
+package com.citu.module.menduner.reward.dal.dataobject;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * 积分规则配置
+ **/
+@Data
+@AllArgsConstructor
+public class PointRuleConfig {
+
+    private Long id;
+    private String url;
+    private String triggerRuleJson;
+    private String limitRuleJson;
+    private Long point;
+}

+ 93 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/rule/DynamicRule.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.reward.rule;
+
+import com.citu.module.menduner.reward.dal.dataobject.PointRuleConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.jeasy.rules.annotation.Action;
+import org.jeasy.rules.annotation.Condition;
+import org.jeasy.rules.annotation.Rule;
+import org.mvel2.MVEL;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 动态规则
+ *
+ * @author rayson
+ **/
+@Slf4j
+@Rule(name = "DynamicRule")
+public class DynamicRule {
+
+    private final PointRuleConfig ruleConfig;
+
+    public DynamicRule(PointRuleConfig ruleConfig) {
+        this.ruleConfig = ruleConfig;
+    }
+
+
+    @Condition
+    public boolean when() {
+        // 获取触发条件表达式
+
+        // (age>=18 and age<=30) or (name = 张三 or name =李四)
+        String triggerExpression = ruleConfig.getTriggerRuleJson();
+
+        // 解析触发条件表达式
+        Map<String, Object> context = new HashMap<>();
+        context.put("age", "25"); // 从 Redis 中获取年龄
+        context.put("name", "张三"); // 从 Redis 中获取姓名
+
+        log.info("规则 {} , context {}", triggerExpression, context);
+        // 执行触发条件表达式
+        boolean triggerResult = expression(triggerExpression, context);
+        // 如果触发条件不满足,直接返回 false
+        if (!triggerResult) {
+            log.info("不满足触发条件");
+            return false;
+        }
+        // 获取限制条件表达式
+        String limitExpression = ruleConfig.getLimitRuleJson();
+
+        // 如果限制条件为空,则直接返回 true
+        if (limitExpression == null || limitExpression.isEmpty()) {
+            log.info("限制条件为空, 不做效验");
+            return true;
+        }
+
+        context = new HashMap<>();
+        context.put("num", "1"); // 从 Redis 中获取年龄
+        log.info("规则 {} , context {}", limitExpression, context);
+        // 解析限制条件表达式
+        // 这里你可以根据实际情况添加上下文参数
+        // num <=1
+        boolean limitResult = expression(limitExpression, context);
+
+        // 返回限制条件表达式的结果
+        return limitResult;
+    }
+
+    @Action
+    public void action() throws Exception {
+        // 执行动作
+        // 这里可以根据业务需要执行相应的动作
+        System.out.println("加分了: " + ruleConfig.getPoint());
+    }
+
+    /**
+     * 解析执行表达式
+     *
+     * @param expression 表达式
+     * @param context    动态参数值
+     **/
+    private boolean expression(String expression, Map<String, Object> context) {
+        // 解析并执行 MVEL 表达式
+        Object result = MVEL.eval(expression, context);
+        if (result instanceof Boolean) {
+            return (Boolean) result;
+        } else {
+            // 如果表达式的结果不是布尔类型,你可以根据实际情况进行处理
+            return false;
+        }
+    }
+}

+ 177 - 0
menduner/menduner-reward-biz/src/main/resources/application-dev.yaml

@@ -0,0 +1,177 @@
+--- #################### 数据库相关配置 ####################
+spring:
+  # 数据源配置项
+  autoconfigure:
+    exclude:
+      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
+  datasource:
+    druid: # Druid 【监控】相关的全局配置
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 设置白名单,不填则允许所有访问
+        url-pattern: /druid/*
+        login-username: # 控制台管理用户名和密码
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 慢 SQL 记录
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 多数据源配置
+      druid: # Druid 【连接池】相关的全局配置
+        initial-size: 5 # 初始连接数
+        min-idle: 10 # 最小连接池数量
+        max-active: 20 # 最大连接池数量
+        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
+        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
+        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
+        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
+        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+      primary: master
+      datasource:
+        master:
+          name: ruoyi-vue-pro
+          url: jdbc:mysql://400-infra.server.iocoder.cn:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT&nullCatalogMeansCurrent=true
+          driver-class-name: com.mysql.jdbc.Driver
+          username: root
+          password: 3WLiVUBEwTbvAfsh
+        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+          name: ruoyi-vue-pro
+          url: jdbc:mysql://400-infra.server.iocoder.cn:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT&nullCatalogMeansCurrent=true
+          driver-class-name: com.mysql.jdbc.Driver
+          username: root
+          password: 3WLiVUBEwTbvAfsh
+
+  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+  redis:
+    host: 400-infra.server.iocoder.cn # 地址
+    port: 6379 # 端口
+    database: 1 # 数据库索引
+#    password: 123456 # 密码,建议生产环境开启
+
+--- #################### MQ 消息队列相关配置 ####################
+
+# rocketmq 配置项,对应 RocketMQProperties 配置类
+rocketmq:
+  name-server: 127.0.0.1:9876 # RocketMQ Namesrv
+
+spring:
+  # RabbitMQ 配置项,对应 RabbitProperties 配置类
+  rabbitmq:
+    host: 127.0.0.1 # RabbitMQ 服务的地址
+    port: 5672 # RabbitMQ 服务的端口
+    username: guest # RabbitMQ 服务的账号
+    password: guest # RabbitMQ 服务的密码
+  # Kafka 配置项,对应 KafkaProperties 配置类
+  kafka:
+    bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
+  # elasticsearch 配置项
+  elasticsearch:
+    uris: http://192.168.3.80:9200
+
+--- #################### 定时任务相关配置 ####################
+xxl:
+  job:
+    admin:
+      addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
+
+--- #################### 服务保障相关配置 ####################
+
+# Lock4j 配置项
+lock4j:
+  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
+  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
+
+--- #################### 监控相关配置 ####################
+
+# Actuator 监控端点的配置项
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
+      exposure:
+        include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
+
+# Spring Boot Admin 配置项
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 客户端的相关配置
+      client:
+        instance:
+          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+      # Spring Boot Admin Server 服务端的相关配置
+      context-path: /admin # 配置 Spring
+
+--- #################### 微信公众号、小程序相关配置 ####################
+wx:
+  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+    #    app-id: wx041349c6f39b268b
+    #    secret: 5abee519483bc9f8cb37ce280e814bd0
+    app-id: wx5b23ba7a5589ecbb # 测试号
+    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    # 存储配置,解决 AccessToken 的跨节点的共享
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wx # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
+    #    appid: wx62056c0d5e8db250
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+    appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
+    secret: 6f270509224a7ae1296bbf1c8cb97aed
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wa # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+
+--- #################### 芋道相关配置 ####################
+
+# 芋道配置项,设置当前项目所有自定义的配置
+citu:
+  xss:
+    enable: false
+    exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
+      - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
+      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
+  pay:
+    pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
+    pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
+    refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
+  demo: true # 开启演示模式
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 钉钉
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 企业微信
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_APP: # 微信小程序
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
+    WECHAT_MP: # 微信公众号
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+  cache:
+    type: REDIS
+    prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
+    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 205 - 0
menduner/menduner-reward-biz/src/main/resources/application-local.yaml

@@ -0,0 +1,205 @@
+--- #################### 数据库相关配置 ####################
+spring:
+  # 数据源配置项
+  autoconfigure:
+    exclude:
+      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
+      - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
+  datasource:
+    druid: # Druid 【监控】相关的全局配置
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 设置白名单,不填则允许所有访问
+        url-pattern: /druid/*
+        login-username: # 控制台管理用户名和密码
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 慢 SQL 记录
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 多数据源配置
+      druid: # Druid 【连接池】相关的全局配置
+        initial-size: 1 # 初始连接数
+        min-idle: 1 # 最小连接池数量
+        max-active: 20 # 最大连接池数量
+        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
+        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
+        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
+        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
+        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+      primary: master
+      datasource:
+        master:
+          name: citu
+          url: jdbc:mysql://192.168.3.80:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
+          #          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
+          #          url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.master.name} # PostgreSQL 连接的示例
+          #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
+          #          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
+          username: root
+          password: 123456
+        #          username: sa
+        #          password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
+        slave: # 模拟从库,可根据自己需要修改
+          name: citu
+          url: jdbc:mysql://192.168.3.80:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
+          #          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
+          #          url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
+          #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
+          #          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
+          username: root
+          password: 123456
+  #          username: sa
+  #          password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
+
+  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+  redis:
+    host: 192.168.3.80 # 地址
+    port: 6379 # 端口
+    database: 0 # 数据库索引
+#    password: 123456 # 密码,建议生产环境开启
+
+--- #################### MQ 消息队列相关配置 ####################
+
+# rocketmq 配置项,对应 RocketMQProperties 配置类
+rocketmq:
+  name-server: 127.0.0.1:9876 # RocketMQ Namesrv
+
+spring:
+  # RabbitMQ 配置项,对应 RabbitProperties 配置类
+  rabbitmq:
+    host: 127.0.0.1 # RabbitMQ 服务的地址
+    port: 5672 # RabbitMQ 服务的端口
+    username: guest # RabbitMQ 服务的账号
+    password: guest # RabbitMQ 服务的密码
+  # Kafka 配置项,对应 KafkaProperties 配置类
+  kafka:
+    bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
+
+--- #################### 定时任务相关配置 ####################
+
+xxl:
+  job:
+    enabled: false # 是否开启调度中心,默认为 true 开启
+    admin:
+      addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
+
+--- #################### 服务保障相关配置 ####################
+
+# Lock4j 配置项
+lock4j:
+  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
+  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
+
+--- #################### 监控相关配置 ####################
+
+# Actuator 监控端点的配置项
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
+      exposure:
+        include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
+
+# Spring Boot Admin 配置项
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 客户端的相关配置
+      client:
+        instance:
+          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+
+# 日志文件配置
+logging:
+  level:
+    # 配置自己写的 MyBatis Mapper 打印日志
+    com.citu.module.system.dal.mysql: debug
+    com.citu.module.system.dal.mysql.sensitiveword.SensitiveWordMapper: INFO # 配置 SensitiveWordMapper 的日志级别为 info
+    com.citu.module.system.dal.mysql.sms.SmsChannelMapper: INFO # 配置 SmsChannelMapper 的日志级别为 info
+
+--- #################### 微信公众号、小程序相关配置 ####################
+wx:
+  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+    #    app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
+    #    secret: 5abee519483bc9f8cb37ce280e814bd0
+    app-id: wx5b23ba7a5589ecbb # 测试号(自己的)
+    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    #    app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
+    #    secret: bd4f9fab889591b62aeac0d7b8d8b4a0
+    # 存储配置,解决 AccessToken 的跨节点的共享
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wx # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
+    #    appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+    appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
+    secret: 6f270509224a7ae1296bbf1c8cb97aed
+    #    appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
+    #    secret: 4a1a04e07f6a4a0751b39c3064a92c8b
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wa # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+
+--- #################### 芋道相关配置 ####################
+
+# 芋道配置项,设置当前项目所有自定义的配置
+citu:
+  env: # 多环境的配置项
+    tag: ${HOSTNAME}
+  captcha:
+    enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
+  security:
+    mock-enable: true
+  xss:
+    enable: false
+    exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
+      - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
+      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
+  pay:
+    pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
+    pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
+    refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
+  access-log: # 访问日志的配置项
+    enable: false
+  demo: false # 关闭演示模式
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 钉钉
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 企业微信
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_APP: # 微信小程序
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
+    WECHAT_MP: # 微信公众号
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+  cache:
+    type: REDIS
+    prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
+    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

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

@@ -0,0 +1,142 @@
+spring:
+  main:
+    allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
+    allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务
+
+  # 国际化
+  messages:
+    # 默认名称
+    basename: i18n/messages
+    encoding: UTF-8
+    # 找不到对应区域的语言时,是否回退到系统区域的语言,默认 true
+    fallback-to-system-locale: true
+    # 找不到code时,是否直接返回code值,而不是抛异常,默认false,抛异常
+    use-code-as-default-message: true
+    # 是否始终使用MessageFormat格式化国际化消息,即使没有国际化消息参数,默认false
+    always-use-message-format: false
+    # 加载国际化资源后的过期时间,不设置不过期,单位秒
+    cache-duration:
+
+  # Servlet 配置
+  servlet:
+    # 文件上传相关配置项
+    multipart:
+      max-file-size: 16MB # 单个文件大小
+      max-request-size: 32MB # 设置总上传的文件大小
+  mvc:
+    pathmatch:
+      matching-strategy: ANT_PATH_MATCHER # 解决 SpringFox 与 SpringBoot 2.6.x 不兼容的问题,参见 SpringFoxHandlerProviderBeanPostProcessor 类
+
+  # Jackson 配置项
+  jackson:
+    serialization:
+      write-dates-as-timestamps: true # 设置 LocalDateTime 的格式,使用时间戳
+      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
+      write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
+      fail-on-empty-beans: false # 允许序列化无属性的 Bean
+
+  # Cache 配置项
+  cache:
+    type: REDIS
+    redis:
+      time-to-live: 1h # 设置过期时间为 1 小时
+
+--- #################### 接口文档配置 ####################
+
+springdoc:
+  api-docs:
+    enabled: true # 1. 是否开启 Swagger 接文档的元数据
+    path: /v3/api-docs
+  swagger-ui:
+    enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面
+    path: /swagger-ui.html
+    tags-sorter: alpha
+    operations-sorter: alpha
+  default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档
+
+knife4j:
+  enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面
+  setting:
+    language: zh_cn
+
+# MyBatis Plus 的配置项
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志
+  global-config:
+    db-config:
+      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 注解
+      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
+      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
+    banner: true # 关闭控制台的 Banner 打印
+  type-aliases-package: ${citu.info.base-package}.dal.dataobject
+  encryptor:
+    password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成
+
+mybatis-plus-join:
+  banner: true # 关闭控制台的 Banner 打印
+
+# Spring Data Redis 配置
+spring:
+  data:
+    redis:
+      repositories:
+        enabled: false # 项目未使用到 Spring Data Redis 的 Repository,所以直接禁用,保证启动速度
+
+# VO 转换(数据翻译)相关
+easy-trans:
+  is-enable-global: true # 启用全局翻译(拦截所有 SpringMVC ResponseBody 进行自动翻译 )。如果对于性能要求很高可关闭此配置,或通过 @IgnoreTrans 忽略某个接口
+  is-enable-cloud: false # 禁用 TransType.RPC 微服务模式
+
+--- #################### RPC 远程调用相关配置 ####################
+
+--- #################### MQ 消息队列相关配置 ####################
+
+--- #################### 定时任务相关配置 ####################
+
+xxl:
+  job:
+    executor:
+      appname: ${spring.application.name} # 执行器 AppName
+      logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径
+    accessToken: default_token # 执行器通讯TOKEN
+
+--- #################### 芋道相关配置 ####################
+
+citu:
+  info:
+    version: 1.0.0
+    base-package: com.citu.module.menduner.system
+  web:
+    admin-ui:
+      url: http://192.168.3.80 # Admin 管理后台 UI 的地址
+  swagger:
+    title: 管理后台
+    description: 提供管理员管理的所有功能
+    version: ${citu.info.version}
+    base-package: ${citu.info.base-package}
+  # 是否开启国际化
+  i18n:
+    enable: true
+  # db相关
+  db:
+    # 是否开启自动切换数据源 主写从读
+    transform:
+      enable: true
+  captcha:
+    enable: false # 验证码的开关,默认为 true;
+  error-code: # 错误码相关配置项
+    enable: false
+    constants-class-list:
+      - com.citu.module.menduner.system.enums.ErrorCodeConstants
+  tenant: # 多租户相关配置项
+    enable: true
+    ignore-urls:
+    ignore-tables:
+
+debug: false
+

+ 23 - 0
menduner/menduner-reward-biz/src/main/resources/bootstrap-local.yaml

@@ -0,0 +1,23 @@
+--- #################### 注册中心相关配置 ####################
+
+spring:
+  cloud:
+    nacos:
+      server-addr: ${nacosHost:127.0.0.1:8848}
+      discovery:
+        namespace: dev # 命名空间。这里使用 dev 开发环境
+        metadata:
+          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+
+--- #################### 配置中心相关配置 ####################
+
+spring:
+  cloud:
+    nacos:
+      # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
+      config:
+        server-addr: ${nacosHost:127.0.0.1:8848} # Nacos 服务器地址
+        namespace: dev # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+        name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
+        file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

+ 14 - 0
menduner/menduner-reward-biz/src/main/resources/bootstrap.yaml

@@ -0,0 +1,14 @@
+spring:
+  application:
+    name: menduner-reward-server
+
+  profiles:
+    active: local
+
+server:
+  port: 48300
+
+# 日志文件配置。注意,如果 logging.file.name 不放在 bootstrap.yaml 配置文件,而是放在 application.yaml 中,会导致出现 LOG_FILE_IS_UNDEFINED 文件
+logging:
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径

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


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

@@ -0,0 +1,19 @@
+# ========== 系统 ==========
+0=Successful
+# ========== 客户端错误段 ==========
+400=incorrect request parameters
+401=account not logged in
+403=no permission for this operation
+404=request not found
+405=incorrect request method
+423=request failed, please try again later # concurrent request, not allowed
+429=request too frequent, please try again later
+
+# ========== 服务端错误段 ==========
+500=system abnormality
+501=function not implemented/not enabled
+502=incorrect configuration item
+# ========== 自定义错误段 ==========
+900=duplicate request, please try again later # duplicate request
+901=demonstration mode, write operation prohibited
+999=unknown error

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

@@ -0,0 +1,19 @@
+# ========== 系统 ==========
+0=成功
+# ========== 客户端错误段 ==========
+400=请求参数不正确
+401=账号未登录
+403=没有该操作权限
+404=请求未找到
+405=请求方法不正确
+423=请求失败,请稍后重试 # 并发请求,不允许
+429=请求过于频繁,请稍后重试
+
+# ========== 服务端错误段 ==========
+500=系统异常
+501=功能未实现/未开启
+502=错误的配置项
+# ========== 自定义错误段 ==========
+900=重复请求,请稍后重试 # 重复请求
+901=演示模式,禁止写操作
+999=未知错误

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


+ 76 - 0
menduner/menduner-reward-biz/src/main/resources/logback-spring.xml

@@ -0,0 +1,76 @@
+<configuration>
+    <!-- 引用 Spring Boot 的 logback 基础配置 -->
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <!-- 变量 citu.info.base-package,基础业务包 -->
+    <springProperty scope="context" name="citu.info.base-package" source="citu.info.base-package"/>
+    <!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
+    <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
+
+    <!-- 控制台 Appender -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <!-- 文件 Appender -->
+    <!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
+    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+        <!-- 日志文件名 -->
+        <file>${LOG_FILE}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!-- 滚动后的日志文件名 -->
+            <fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
+            <!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
+            <cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
+            <!-- 日志文件,到达多少容量,进行滚动 -->
+            <maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
+            <!-- 日志文件的总大小,0 表示不限制 -->
+            <totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
+            <!-- 日志文件的保留天数 -->
+            <maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
+        </rollingPolicy>
+    </appender>
+    <!-- 异步写入日志,提升性能 -->
+    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
+        <discardingThreshold>0</discardingThreshold>
+        <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
+        <queueSize>256</queueSize>
+        <appender-ref ref="FILE"/>
+    </appender>
+
+    <!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 -->
+    <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <!-- 本地环境 -->
+    <springProfile name="local">
+        <root level="INFO">
+            <appender-ref ref="STDOUT"/>
+            <appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
+            <appender-ref ref="ASYNC"/>  <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
+        </root>
+    </springProfile>
+    <!-- 其它环境 -->
+    <springProfile name="dev,test,stage,prod,default">
+        <root level="INFO">
+            <appender-ref ref="STDOUT"/>
+            <appender-ref ref="ASYNC"/>
+            <appender-ref ref="GRPC"/>
+        </root>
+    </springProfile>
+
+</configuration>

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

@@ -5,7 +5,7 @@ import com.citu.framework.common.enums.RpcConstants;
 /**
  * API 相关的枚举
  *
- * @author rayson
+ * @author Rayson
  */
 public class ApiConstants {
 

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

@@ -3,7 +3,7 @@ package com.citu.module.menduner.system.enums;
 /**
  * menduner 字典类型的枚举类
  *
- * @author rayson
+ * @author Rayson
  */
 public interface DictTypeConstants {
 

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

@@ -4,7 +4,7 @@ package com.citu.module.menduner.system.enums;
  * MDE 操作日志枚举
  * 目的:统一管理,也减少 Service 里各种“复杂”字符串
  *
- * @author rayson
+ * @author Rayson
  */
 public interface MdeLogRecordConstants {
 

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

@@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 /**
  * 项目的启动类
  * 门墩儿 招聘模块 启动类
- * @author rayson
+ * @author Rayson
  */
 @SpringBootApplication
 public class MendunerSystemApplication {

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/package-info.java

@@ -1,4 +1,4 @@
 /**
- * @author rayson
+ * @author Rayson
  */
 package com.citu.module.menduner.system.config;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/CustomDataPermissionRule.java

@@ -29,7 +29,7 @@ import java.util.Map;
 import java.util.Set;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description CustomDataPermissionRule
  * 基于自定义的 {@link DataPermissionRule} 数据权限规则实现
  * @create 2024/5/8 下午7:41

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/CustomDataPermissionRuleCustomizer.java

@@ -1,7 +1,7 @@
 package com.citu.module.menduner.system.config.permission;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description CustomDataPermissionRuleCustomizer {@link CustomDataPermissionRule} 的自定义配置接口
  **/
 @FunctionalInterface

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/config/permission/package-info.java

@@ -1,6 +1,6 @@
 /**
  * 基于企业的数据权限规则
  *
- * @author rayson
+ * @author Rayson
  */
 package com.citu.module.menduner.system.config.permission;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/industry/vo/IndustryPageReqVO.java

@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description 行业信息分页 Request VO
  * @create 2024/4/28 下午5:03
  **/

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/industry/vo/IndustryRespVO.java

@@ -10,7 +10,7 @@ import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description IndustryRespVO 行业信息 Response VO
  * @create 2024/4/28 下午5:04
  **/

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/industry/vo/IndustrySaveReqVO.java

@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description IndustrySaveReqVO 行业信息新增/修改 Request VO
  * @create 2024/4/28 下午5:06
  **/

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedRespVO.java

@@ -81,6 +81,14 @@ public class JobAdvertisedRespVO {
     @ExcelProperty("职位要求")
     private String requirement;
 
+    @Schema(description = "过期时间")
+    @ExcelProperty("过期时间")
+    private LocalDateTime expireTime;
+
+    @Schema(description = "是否置顶")
+    @ExcelProperty("是否置顶")
+    private Boolean top;
+
     @Schema(description = "工作地址")
     @ExcelProperty("工作地址")
     private String address;

+ 7 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedSaveReqVO.java

@@ -7,6 +7,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 
 @Schema(description = "管理后台 - 门墩儿-招聘职位新增/修改 Request VO")
@@ -69,6 +70,12 @@ public class JobAdvertisedSaveReqVO {
     @Schema(description = "工作地址")
     private String address;
 
+    @Schema(description = "过期时间")
+    private LocalDateTime expireTime;
+
+    @Schema(description = "是否置顶")
+    private Boolean top;
+
     @Schema(description = "经度")
     private String longitude;
 

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedDetailRespVO.java

@@ -59,6 +59,12 @@ public class AppJobAdvertisedDetailRespVO {
     @Schema(description = "职位要求")
     private String requirement;
 
+    @Schema(description = "过期时间")
+    private LocalDateTime expireTime;
+
+    @Schema(description = "是否置顶")
+    private Boolean top;
+
     @Schema(description = "工作地址")
     private String address;
 

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

@@ -7,9 +7,12 @@ import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedRespVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobAdvertisedReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 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;
@@ -20,7 +23,7 @@ import javax.validation.Valid;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
 
-@Tag(name = "招聘端 - 门墩儿-招聘职位")
+@Tag(name = "招聘端 - 招聘职位")
 @RestController
 @RequestMapping("/menduner/system/job-advertised")
 @Validated
@@ -28,20 +31,21 @@ public class AppAdminJobAdvertisedController {
 
     @Resource
     private JobAdvertisedService jobAdvertisedService;
+    @Resource
+    private JobIntegrationService jobIntegrationService;
 
 
     @PreAuthenticated
     @GetMapping("/page")
     @Operation(summary = "获得招聘职位分页")
-    public CommonResult<PageResult<JobAdvertisedRespVO>> getJobAdvertisedPage(@Valid JobAdvertisedPageReqVO pageReqVO) {
-        PageResult<JobAdvertisedDO> pageResult = jobAdvertisedService.getJobAdvertisedPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, JobAdvertisedRespVO.class));
+    public CommonResult<PageResult<AppAdminJobSimpleRespVO>> page(@Valid AppAdminJobPageReqVO pageReqVO) {
+        return success(jobIntegrationService.page(pageReqVO));
     }
 
     @PreAuthenticated
     @PostMapping("/save")
     @Operation(summary = "保存职位(发布/编辑)")
-    public CommonResult<Boolean> save(@RequestBody @Valid AppAdminJobAdvertisedReqVO pageReqVO) {
+    public CommonResult<Boolean> save(@RequestBody @Valid AppAdminJobReqVO pageReqVO) {
         jobAdvertisedService.save(pageReqVO);
         return success(true);
     }

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

@@ -0,0 +1,54 @@
+package com.citu.module.menduner.system.controller.appadmin.job.vo;
+
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "招聘者 - 招聘职位分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class AppAdminJobPageReqVO extends PageParam {
+
+    @Schema(description = "工作地区", example = "25976")
+    private Long areaId;
+
+    @Schema(description = "职位名称", example = "张三")
+    private String name;
+
+    @Schema(description = "职位类型id", example = "31707")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", example = "2")
+    private String type;
+
+    @Schema(description = "工作经验", example = "1")
+    private String expType;
+
+    @Schema(description = "学历要求", example = "1")
+    private String eduType;
+
+    @Schema(description = "职位状态", example = "2")
+    private String status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "过期时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] expireTime;
+
+    @Schema(description = "是否获取过期的数据")
+    private boolean hasExpiredData;
+
+}

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobAdvertisedReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobReqVO.java

@@ -9,9 +9,9 @@ import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.List;
 
-@Schema(description = "管理后台 - 门墩儿-招聘职位新增/修改 Request VO")
+@Schema(description = "招聘者 - 招聘职位新增/修改 Request VO")
 @Data
-public class AppAdminJobAdvertisedReqVO {
+public class AppAdminJobReqVO {
 
     @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4770")
     private Long id;

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

@@ -0,0 +1,71 @@
+package com.citu.module.menduner.system.controller.appadmin.job.vo;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "招聘者 - 门墩儿-招聘职位 Response VO")
+@Data
+public class AppAdminJobSimpleRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4770")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29465")
+    private Long enterpriseId;
+
+    @Schema(description = "工作地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "25976")
+    private Long areaId;
+
+    @Schema(description = "职位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    private String name;
+
+    @Schema(description = "职位类型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31707")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    private String type;
+
+    @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private String expType;
+
+    @Schema(description = "学历要求", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private String eduType;
+
+    @Schema(description = "薪酬from")
+    private BigDecimal payFrom;
+
+    @Schema(description = "薪酬to")
+    private BigDecimal payTo;
+
+    @Schema(description = "薪酬单位")
+    private String payUnit;
+
+    @Schema(description = "职位标签")
+    private List<String> tagList;
+
+    @Schema(description = "过期时间")
+    @ExcelProperty("过期时间")
+    private LocalDateTime expireTime;
+
+    @Schema(description = "是否置顶")
+    @ExcelProperty("是否置顶")
+    private Boolean top;
+
+    @Schema(description = "职位状态", example = "2")
+    private String status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "待筛选的简历总数量")
+    private Long count;
+}

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

@@ -2,7 +2,8 @@ package com.citu.module.menduner.system.convert;
 
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSimpleRespVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobAdvertisedReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import org.mapstruct.Mapper;
@@ -28,5 +29,7 @@ public interface JobAdvertisedConvert {
 
     ESJobAdvertisedMergeDO convert2(JobAdvertisedDO bean);
 
-    JobAdvertisedDO convert3(AppAdminJobAdvertisedReqVO bean);
+    JobAdvertisedDO convert3(AppAdminJobReqVO bean);
+
+    AppAdminJobSimpleRespVO convert4(JobAdvertisedDO bean);
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseAddressDO.java

@@ -10,7 +10,7 @@ import lombok.*;
 /**
  * 门墩儿-企业地址 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName("mde_enterprise_address")
 @KeySequence("mde_enterprise_address_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseBusinessDO.java

@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
 /**
  * 门墩儿-企业工商信息 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName("mde_enterprise_business")
 @KeySequence("mde_enterprise_business_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

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

@@ -14,7 +14,7 @@ import java.util.List;
 /**
  * 门墩儿-企业信息 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName(value = "mde_enterprise", autoResultMap = true)
 @KeySequence("mde_enterprise_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java

@@ -10,7 +10,7 @@ import lombok.*;
 /**
  * 门墩儿-企业注册申请 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName("mde_enterprise_register")
 @KeySequence("mde_enterprise_register_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

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

@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
 /**
  * 门墩儿-企业登录用户 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName("mde_enterprise_user_bind")
 @KeySequence("mde_enterprise_user_bind_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

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

@@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
  * 门墩儿-招聘职位 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName(value = "mde_job_advertised", autoResultMap = true)
 @KeySequence("mde_job_advertised_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@@ -92,6 +92,14 @@ public class JobAdvertisedDO extends TenantBaseDO {
      * 职位要求
      */
     private String requirement;
+    /**
+     * 过期时间
+     */
+    private LocalDateTime expireTime;
+    /**
+     * 是否置顶
+     */
+    private Boolean top;
     /**
      * 工作地址
      */

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

@@ -17,7 +17,7 @@ import java.util.Set;
 /**
  * Menduner 角色 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName(value = "mde_role", autoResultMap = true)
 @KeySequence("mde_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java

@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
 /**
  * 门墩儿-用户登录 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName("mde_user")
 @KeySequence("mde_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/visits/MdeVisitsDO.java

@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
 /**
  * 门墩儿-访问量 DO
  *
- * @author rayson
+ * @author Rayson
  */
 @TableName("mde_visits")
 @KeySequence("mde_visits_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。

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

@@ -14,7 +14,7 @@ import java.util.List;
 /**
  * ES 门墩儿-招聘职位(包含企业信息的职位) DO
  *
- * @author rayson
+ * @author Rayson
  */
 @Data
 @Document(indexName = "mde_job_merge")

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

@@ -13,7 +13,7 @@ import java.util.List;
 /**
  * 门墩儿-企业地址 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface EnterpriseAddressMapper extends BaseMapperX<EnterpriseAddressDO> {

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

@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
 /**
  * 门墩儿-企业工商信息 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface EnterpriseBusinessMapper extends BaseMapperX<EnterpriseBusinessDO> {

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

@@ -20,7 +20,7 @@ import java.util.List;
 /**
  * 门墩儿-企业信息 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {

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

@@ -12,7 +12,7 @@ import org.apache.ibatis.annotations.Mapper;
 /**
  * 门墩儿-企业注册申请 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface EnterpriseRegisterMapper extends BaseMapperX<EnterpriseRegisterDO> {

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

@@ -14,7 +14,7 @@ import java.util.List;
 /**
  * 门墩儿-企业登录用户 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBindDO> {

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

@@ -1,26 +1,28 @@
 package com.citu.module.menduner.system.dal.mysql.job;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.common.pojo.PageParam;
 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.admin.job.vo.JobAdvertisedPageReqVO;
-import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
  * 门墩儿-招聘职位 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
@@ -75,5 +77,24 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         return selectJoinPage(pageParam, AppJobAdvertisedRespVO.class, query);
     }
 
+    default PageResult<JobAdvertisedDO> selectPage(AppAdminJobPageReqVO reqVO) {
+        LambdaQueryWrapper<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>()
+                .eqIfPresent(JobAdvertisedDO::getAreaId, reqVO.getAreaId())
+                .likeIfPresent(JobAdvertisedDO::getName, reqVO.getName())
+                .eqIfPresent(JobAdvertisedDO::getPositionId, reqVO.getPositionId())
+                .eqIfPresent(JobAdvertisedDO::getType, reqVO.getType())
+                .eqIfPresent(JobAdvertisedDO::getExpType, reqVO.getExpType())
+                .eqIfPresent(JobAdvertisedDO::getEduType, reqVO.getEduType())
+                .eqIfPresent(JobAdvertisedDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(JobAdvertisedDO::getCreateTime, reqVO.getCreateTime())
+                .betweenIfPresent(JobAdvertisedDO::getExpireTime, reqVO.getExpireTime())
+                .orderByDesc(JobAdvertisedDO::getTop, JobAdvertisedDO::getUpdateTime);
+
+        if(reqVO.isHasExpiredData()) {
+            query.le(JobAdvertisedDO::getExpireTime, LocalDateTime.now());
+        }
+        return selectPage(reqVO,query );
+    }
+
 
 }

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

@@ -5,9 +5,11 @@ import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobCvRelPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 门墩儿-招聘职位简历投递 Mapper
@@ -36,6 +38,13 @@ public interface JobCvRelMapper extends BaseMapperX<JobCvRelDO> {
                 .ge(JobCvRelDO::getCreateTime, LocalDateTime.now().minusDays(15))) > 0;
     }
 
+    default List<JobCvRelDO> selectByJobIdList(List<Long> jobIdList){
+        return selectList(new LambdaQueryWrapperX<JobCvRelDO>()
+                .in(JobCvRelDO::getJobId, jobIdList)
+                .eq(JobCvRelDO::getStatus, MendunerStatusEnum.ENABLE.getStatus())
+        );
+    }
+
 
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/user/MdeUserMapper.java

@@ -12,7 +12,7 @@ import java.util.List;
 /**
  * 门墩儿-用户登录 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface MdeUserMapper extends BaseMapperX<MdeUserDO> {

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/visits/MdeVisitsMapper.java

@@ -17,7 +17,7 @@ import java.util.List;
 /**
  * 门墩儿-访问量 Mapper
  *
- * @author rayson
+ * @author Rayson
  */
 @Mapper
 public interface MdeVisitsMapper extends BaseMapperX<MdeVisitsDO> {

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

@@ -4,7 +4,7 @@ package com.citu.module.menduner.system.dal.redis;
 /**
  * System Redis Key 枚举类
  *
- * @author rayson
+ * @author Rayson
  */
 public interface RedisKeyConstants {
 

+ 6 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java

@@ -5,15 +5,19 @@ import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description ESConsumer
  * @create 2024/5/29 下午5:12
  **/
 public class ESConsumer {
 
-    @EventListener
+
     @Async
+    @EventListener
     public void onMessage(ESJobAdvertisedMergeSendMessage message) {
+        // 更新es数据
+        // 删除
 
     }
+
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/producer/MdeVisitsProducer.java

@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
 /**
  * 点击埋点相关消息的 Producer
  *
- * @author rayson
+ * @author Rayson
  */
 @Slf4j
 @Component
@@ -26,7 +26,7 @@ public class MdeVisitsProducer {
      * @param bizId 业务id
      * @return void
      * @description 发送记录访问消息
-     * @author rayson
+     * @author Rayson
      * @date 2024/5/14 下午3:31
      **/
     public void sendVisitsSendMessage(String type, Long bizId) {

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

@@ -10,7 +10,7 @@ import javax.validation.Valid;
  * <p>
  * 提供用户的账号密码登录、token 的校验等认证相关的功能
  *
- * @author rayson
+ * @author Rayson
  */
 public interface MdeAuthService {
 

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

@@ -48,7 +48,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 /**
  * menduner的认证 Service 接口 实现
  *
- * @author rayson
+ * @author Rayson
  **/
 @Service
 @Slf4j

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

@@ -10,7 +10,7 @@ import javax.validation.Valid;
  * menduner 企业的认证 Service 接口
  * 提供用户的账号密码登录、token 的校验等认证相关的功能
  *
- * @author rayson
+ * @author Rayson
  */
 public interface MdeEnterpriseAuthService {
 

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

@@ -49,7 +49,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 /**
  * menduner 的企业认证 Service 接口 实现
  *
- * @author rayson
+ * @author Rayson
  **/
 @Service
 @Validated

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

@@ -19,7 +19,7 @@ import java.util.Set;
 /**
  * 门墩儿-企业信息 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface EnterpriseService {
 

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

@@ -38,7 +38,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTER
 /**
  * 门墩儿-企业信息 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 @Slf4j
 @Service

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

@@ -11,7 +11,7 @@ import javax.validation.Valid;
 /**
  * 门墩儿-企业地址 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface EnterpriseAddressService {
 

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

@@ -18,7 +18,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTER
 /**
  * 门墩儿-企业地址 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 @Service
 @Validated

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

@@ -13,7 +13,7 @@ import java.util.List;
 /**
  * 门墩儿-企业登录用户 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface EnterpriseUserBindService {
 

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

@@ -35,7 +35,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTER
 /**
  * 门墩儿-企业登录用户 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 @Service
 @Validated

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

@@ -10,7 +10,7 @@ import com.citu.framework.common.pojo.PageResult;
 /**
  * 门墩儿-企业工商信息 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface EnterpriseBusinessService {
 

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

@@ -17,7 +17,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTER
 /**
  * 门墩儿-企业工商信息 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 @Service
 @Validated

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

@@ -14,7 +14,7 @@ import javax.validation.Valid;
 /**
  * 门墩儿-企业注册申请 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface EnterpriseRegisterService {
 

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

@@ -38,7 +38,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 /**
  * 门墩儿-企业注册申请 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 @Service
 @Validated

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

@@ -134,7 +134,7 @@ public class IndustryServiceImpl implements IndustryService {
      * @param level    当前层级
      * @return void
      * @description 递归解析position
-     * @author rayson
+     * @author Rayson
      * @date 2024/5/8 上午11:47
      **/
     private void parseAndSaveIndustry(Map<String, Object> industry, Long parentId, int level) {

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

@@ -7,7 +7,9 @@ import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedPage
 import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedSaveReqVO;
 import com.citu.module.menduner.system.controller.app.appbase.AppCommonRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.*;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobAdvertisedReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 
 import javax.validation.Valid;
@@ -16,7 +18,7 @@ import java.util.List;
 /**
  * 门墩儿-招聘职位 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface JobAdvertisedService {
 
@@ -123,10 +125,11 @@ public interface JobAdvertisedService {
      **/
     List<AppCommonRespVO> getJobAreaCountByEnterpriseId(Long enterpriseId);
 
+    // ========== 招聘者 ==========
     /**
      * 保存职位
-     * @return 公共 Response
      **/
-    boolean save(AppAdminJobAdvertisedReqVO reqVO);
+    boolean save(AppAdminJobReqVO reqVO);
+
 
 }

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

@@ -13,11 +13,12 @@ import com.citu.module.menduner.system.controller.app.appbase.AppCommonRespVO;
 import com.citu.module.menduner.system.controller.app.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.*;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobAdvertisedReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
@@ -52,7 +53,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_JOB_A
 /**
  * 门墩儿-招聘职位 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 
 @Slf4j
@@ -390,7 +391,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
      * @param search 搜索结果
      * @return void
      * @description 填充搜索结果
-     * @author rayson
+     * @author Rayson
      * @date 2024/6/4 下午2:40
      **/
     private void fill(List<AppJobAdvertisedRespVO> list, SearchHits<ESJobAdvertisedMergeDO> search) {
@@ -463,9 +464,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
     @Override
     @DSTransactional
-    public boolean save(AppAdminJobAdvertisedReqVO reqVO) {
-        LoginUser user = getLoginUser();
-        if (null == user || !user.getInfo().containsKey(INFO_KEY_DATA_ID)) {
+    public boolean save(AppAdminJobReqVO reqVO) {
+        LoginUser loginUser = getLoginUser();
+        if (null != loginUser
+                || null == loginUser.getInfo()) {
             // 没权限
             throw exception(FORBIDDEN);
         }
@@ -473,9 +475,9 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         if (null == reqVO.getId()) {
             // 新增
 
-            job.setUserId(user.getId());
+            job.setUserId(loginUser.getId());
 
-            Long enterpriseId = Long.valueOf(user.getInfo().get(INFO_KEY_DATA_ID));
+            Long enterpriseId = Long.valueOf(loginUser.getInfo().get(INFO_KEY_DATA_ID));
             job.setEnterpriseId(enterpriseId);
             job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
 
@@ -485,8 +487,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             // 修改
             JobAdvertisedDO entity = jobAdvertisedMapper.selectById(reqVO.getId());
 
-            if (!Objects.equals(user.getId(), entity.getUserId())
-                    || !Objects.equals(user.getId(), entity.getEnterpriseId())) {
+            if (!Objects.equals(loginUser.getId(), entity.getUserId())
+                    || !Objects.equals(loginUser.getId(), entity.getEnterpriseId())) {
                 // 不是自己的数据
                 throw exception(FORBIDDEN);
             }
@@ -497,4 +499,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         }
         return true;
     }
+
+
 }

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

@@ -5,11 +5,13 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 
 /**
  * 招聘职位相关的整合层
  * 解决三层架构带来的业务循环依赖设计
- * @author rayson
+ * @author Rayson
  **/
 public interface JobIntegrationService {
 
@@ -42,4 +44,13 @@ public interface JobIntegrationService {
      * @param page 分页
      */
     PageResult<AppEnterpriseSimpleRespVO> getEnterpriseSubscribePage(PageParam page);
+
+
+    // ========== 招聘者 ==========
+
+    /**
+     * 分页查询
+     * @return 公共 Response
+     **/
+    PageResult<AppAdminJobSimpleRespVO> page(AppAdminJobPageReqVO reqVO);
 }

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

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.service.job;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
@@ -11,6 +12,9 @@ import com.citu.module.menduner.system.controller.app.contact.AppEnterpriseUserC
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobCvRelReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
+import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
@@ -26,6 +30,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -150,4 +155,29 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
                 .stream().map(PersonEnterpriseSubscribeDO::getEnterpriseId).collect(Collectors.toList());
         return enterpriseMapper.selectByIdListPage(page, idList);
     }
+
+    @Override
+    public PageResult<AppAdminJobSimpleRespVO> page(AppAdminJobPageReqVO reqVO) {
+        PageResult<JobAdvertisedDO> pageResult = jobAdvertisedMapper.selectPage(reqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return PageResult.empty();
+        }
+        List<AppAdminJobSimpleRespVO> list = new ArrayList<>();
+
+        // 获取招聘职位id集合
+        List<Long> jobIdList
+                = pageResult.getList().stream().map(JobAdvertisedDO::getId).collect(Collectors.toList());
+
+        // 查询简历
+        List<JobCvRelDO> jobCvRelDOList = jobCvRelMapper.selectByJobIdList(jobIdList);
+
+        pageResult.getList().forEach(job -> {
+            AppAdminJobSimpleRespVO respVO = JobAdvertisedConvert.INSTANCE.convert4(job);
+            Long count = jobCvRelDOList.stream().filter(jobCvRelDO -> jobCvRelDO.getJobId().equals(job.getId())).count();
+            respVO.setCount(count);
+            list.add(respVO);
+
+        });
+        return new PageResult<>(list, pageResult.getTotal());
+    }
 }

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

@@ -7,7 +7,7 @@ import java.util.Collection;
 import java.util.Set;
 
 /**
- * @author rayson
+ * @author Rayson
  * @description MdePermissionService 权限 Service 接口
  * 提供用户-角色、角色-企业的关联权限处理
  **/

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

@@ -42,7 +42,7 @@ import static com.citu.framework.common.util.json.JsonUtils.toJsonString;
 
 
 /**
- * @author rayson
+ * @author Rayson
  * MdePermissionServiceImpl Menduner权限 Service 实现类
  **/
 @Service

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

@@ -14,7 +14,7 @@ import java.util.Set;
 /**
  * 角色 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface MdeRoleService {
 

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

@@ -66,7 +66,7 @@ public class PositionServiceImpl implements PositionService {
      * @param level    当前层级
      * @return void
      * @description 递归解析position
-     * @author rayson
+     * @author Rayson
      * @date 2024/5/8 上午11:47
      **/
     private void parseAndSavePosition(Map<String, Object> position, Long parentId, int level) {

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/MdeUserService.java

@@ -16,7 +16,7 @@ import java.util.List;
 /**
  * 门墩儿-用户登录 Service 接口
  *
- * @author rayson
+ * @author Rayson
  */
 public interface MdeUserService {
 

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

@@ -47,7 +47,7 @@ import static com.citu.module.system.enums.ErrorCodeConstants.USER_USERNAME_EXIS
 /**
  * 门墩儿-用户登录 Service 实现类
  *
- * @author rayson
+ * @author Rayson
  */
 @Service
 @Validated

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

@@ -1 +0,0 @@
-person.name=3453453

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff