Bladeren bron

1、增加es职位搜索
2、增加企业注册审批

rayson 1 jaar geleden
bovenliggende
commit
6ff9776684
36 gewijzigde bestanden met toevoegingen van 619 en 598 verwijderingen
  1. 27 0
      citu-framework/citu-spring-boot-starter-es/pom.xml
  2. 1 1
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/dataobject/ESBaseDO.java
  3. 77 0
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/filter/ESFieldFilter.java
  4. 42 0
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/util/ESUtils.java
  5. 4 0
      citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/package-info.java
  6. 2 0
      citu-framework/pom.xml
  7. 7 4
      menduner/menduner-system-biz/pom.xml
  8. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/sync/SyncController.java
  9. 1 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseController.java
  10. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseDetailRespVO.java
  11. 1 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseSearchPageReqVO.java
  12. 4 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSearchPageReqVO.java
  13. 17 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterpriseConvert.java
  14. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobAdvertisedConvert.java
  15. 0 41
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/EsEnterpriseMergeDO.java
  16. 0 44
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/enterprise/ESEnterpriseAddressDO.java
  17. 0 106
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/enterprise/ESEnterpriseBusinessDO.java
  18. 0 107
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedDO.java
  19. 95 21
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java
  20. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseAddressMapper.java
  21. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseBusinessMapper.java
  22. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseMapper.java
  23. 0 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/repository/ESEnterpriseDORepository.java
  24. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/repository/ESJobAdvertisedMergeRepository.java
  25. 1 19
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/consumer/ESConsumer.java
  26. 0 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESEnterpriseAddressSendMessage.java
  27. 0 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESEnterpriseBusinessSendMessage.java
  28. 0 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESEnterpriseSendMessage.java
  29. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESJobAdvertisedMergeSendMessage.java
  30. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseService.java
  31. 24 161
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  32. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  33. 53 37
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  34. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/sync/ESDataSyncService.java
  35. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/sync/ESDataSyncServiceImpl.java
  36. 98 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/EsQueryBuildUtils.java

+ 27 - 0
citu-framework/citu-spring-boot-starter-es/pom.xml

@@ -0,0 +1,27 @@
+<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>citu-framework</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <artifactId>citu-spring-boot-starter-es</artifactId>
+    <packaging>jar</packaging>
+
+    <name>${project.artifactId}</name>
+    <description>ElasticSearch 封装拓展</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.citu</groupId>
+            <artifactId>citu-common</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
+        </dependency>
+
+    </dependencies>
+</project>

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/base/ESBaseDO.java → citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/core/dataobject/ESBaseDO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.dal.es.base;
+package com.citu.framework.es.core.dataobject;
 
 import lombok.Data;
 import org.springframework.data.elasticsearch.annotations.DateFormat;

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

@@ -0,0 +1,77 @@
+package com.citu.framework.es.core.filter;
+
+import org.springframework.data.elasticsearch.core.query.SourceFilter;
+import org.springframework.lang.Nullable;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * es 自定义字段过滤器
+ *
+ * @author rayson
+ **/
+public class ESFieldFilter<T> implements SourceFilter {
+
+    @Nullable
+    private String[] includes;
+    @Nullable
+    private String[] excludes;
+
+    public ESFieldFilter(@Nullable final String[] includes, @Nullable final String[] excludes) {
+        this.includes = includes;
+        this.excludes = excludes;
+    }
+
+    public ESFieldFilter(@Nullable final String[] includes) {
+        this.includes = includes;
+    }
+
+    public ESFieldFilter(@Nullable Class<T> includesClazz) {
+        this.includes = getFieldsAsArray(includesClazz);
+    }
+
+    public ESFieldFilter(@Nullable Class<T> includesClazz, @Nullable Class<T> excludesClazz) {
+        this.includes = getFieldsAsArray(includesClazz);
+        this.excludes = getFieldsAsArray(excludesClazz);
+    }
+
+    public ESFieldFilter(@Nullable Class<T> includesClazz, @Nullable final String[] excludes) {
+        this.includes = getFieldsAsArray(includesClazz);
+        this.excludes = excludes;
+    }
+
+    public ESFieldFilter(@Nullable final String[] includes, @Nullable Class<T> excludesClazz) {
+        this.includes = includes;
+        this.excludes = getFieldsAsArray(excludesClazz);
+    }
+
+
+    @Override
+    public String[] getIncludes() {
+        return includes;
+    }
+
+    @Override
+    public String[] getExcludes() {
+        return excludes;
+    }
+
+
+    /**
+     * 获取对象字段的数组
+     *
+     * @param clazz 对象
+     **/
+    private String[] getFieldsAsArray(Class<T> clazz) {
+        List<String> fieldList = new ArrayList<>();
+        Field[] declaredFields = clazz.getDeclaredFields();
+
+        for (Field field : declaredFields) {
+            fieldList.add(field.getName());
+        }
+        // 将列表转换为数组
+        return fieldList.toArray(new String[0]);
+    }
+}

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

@@ -0,0 +1,42 @@
+package com.citu.framework.es.core.util;
+
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * es 工具类
+ *
+ * @author rayson
+ **/
+public class ESUtils {
+
+    /**
+     * 设置高亮文本
+     *
+     * @param object          对象
+     * @param highlightFields 高亮字段Map
+     **/
+    public static <T> void setHighlightFields(T object, Map<String, List<String>> highlightFields) {
+        Class<?> clazz = object.getClass();
+        for (Map.Entry<String, List<String>> entry : highlightFields.entrySet()) {
+            String fieldName = entry.getKey();
+            List<String> highlightValues = entry.getValue();
+            try {
+                String[] fieldNames = fieldName.split("\\.");
+                if (fieldNames.length >1) {
+                    continue;
+                }
+                // 检查字段是否存在
+                Field field = clazz.getDeclaredField(fieldName);
+                field.setAccessible(true);
+                // 设置字段的值
+                if (!highlightValues.isEmpty()) {
+                    field.set(object, highlightValues.get(0));
+                }
+            } catch (NoSuchFieldException | IllegalAccessException e) {
+                // 处理字段不存在的情况 || 处理无法访问字段的情况
+            }
+        }
+    }
+}

+ 4 - 0
citu-framework/citu-spring-boot-starter-es/src/main/java/com/citu/framework/es/package-info.java

@@ -0,0 +1,4 @@
+/**
+ *  Spring Data es
+ */
+package com.citu.framework.es;

+ 2 - 0
citu-framework/pom.xml

@@ -31,6 +31,8 @@
         <module>citu-spring-boot-starter-biz-tenant</module>
         <module>citu-spring-boot-starter-biz-data-permission</module>
         <module>citu-spring-boot-starter-biz-ip</module>
+
+        <module>citu-spring-boot-starter-es</module>
     </modules>
 
     <artifactId>citu-framework</artifactId>

+ 7 - 4
menduner/menduner-system-biz/pom.xml

@@ -41,21 +41,24 @@
             <groupId>com.citu</groupId>
             <artifactId>citu-spring-boot-starter-biz-data-permission</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.citu</groupId>
             <artifactId>citu-spring-boot-starter-biz-tenant</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>com.xingyuv</groupId>
-            <artifactId>spring-boot-starter-captcha-plus</artifactId> <!-- 验证码,一般用于登录使用 -->
+            <groupId>com.citu</groupId>
+            <artifactId>citu-spring-boot-starter-es</artifactId>
+            <version>${revision}</version>
         </dependency>
 
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
+            <groupId>com.xingyuv</groupId>
+            <artifactId>spring-boot-starter-captcha-plus</artifactId> <!-- 验证码,一般用于登录使用 -->
         </dependency>
 
+
         <!-- Web 相关 -->
         <dependency>
             <groupId>com.citu</groupId>

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

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.sync;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.service.sync.ESDataSyncService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 数据同步")
+@RestController
+@RequestMapping("/menduner/system/sync")
+@Validated
+public class SyncController {
+
+    @Resource
+    private ESDataSyncService service;
+
+    @PostMapping("/es/enterprise")
+    @Operation(summary = "同步ES企业相关数据")
+    public CommonResult<Boolean> syncEnterprise() {
+        service.syncEnterprise();
+        return success(true);
+    }
+}

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

@@ -57,10 +57,9 @@ public class AppEnterpriseController {
     }
 
 
-    @GetMapping("/tets")
+    @GetMapping("/test")
     @Operation(summary = "test")
     public CommonResult<Boolean> test() {
-        enterpriseService.test();
         return success(true);
     }
 

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseDetailRespVO.java

@@ -21,6 +21,8 @@ public class AppEnterpriseDetailRespVO {
     @Schema(description = "企业地址信息")
     private List<AppEnterpriseAddressRespVO> addressList;
 
+    /** 取消该字段,不放该类 **/
+    @Deprecated
     @Schema(description = "企业在招职位")
     private Integer JobAdvertisedCount;
 

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

@@ -20,6 +20,7 @@ public class AppEnterpriseSearchPageReqVO extends PageParam {
     @Schema(description = "公司地点", example = "[]")
     private List<Long> areaIds;
 
+    @Deprecated
     @Schema(description = "企业类型(menduner_enterprise_type)", example = "[]")
     private String enterpriseType;
 

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

@@ -20,9 +20,6 @@ public class AppJobAdvertisedSearchPageReqVO extends PageParam {
     private String content;
 
     // ========== 发布职位相关 ==========
-    @Schema(description = "工作地区id集合", example = "[]")
-    private List<Long> areaIds;
-
     @Schema(description = "工作经验(menduner_exp_type)",  example = "[]")
     private List<String> expType;
 
@@ -40,9 +37,13 @@ public class AppJobAdvertisedSearchPageReqVO extends PageParam {
 
 
     // ========== 企业相关 ==========
+    @Schema(description = "工作地区id集合", example = "[]")
+    private List<Long> areaIds;
+
     @Schema(description = "企业id", example = "15967")
     private Long enterpriseId;
 
+    @Deprecated
     @Schema(description = "企业类型(menduner_enterprise_type)", example = "[]")
     private List<String> enterpriseType;
 

+ 17 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterpriseConvert.java

@@ -1,14 +1,18 @@
 package com.citu.module.menduner.system.convert;
 
 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.enterprise.vo.*;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSearchRespVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
-import com.citu.module.menduner.system.dal.es.EsEnterpriseMergeDO;
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseDO;
+import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
+import java.util.List;
+
 @Mapper
 public interface EnterpriseConvert {
 
@@ -16,7 +20,15 @@ public interface EnterpriseConvert {
 
     AppEnterpriseSimpleRespVO convert(EnterpriseDO bean);
 
-    AppEnterpriseUserContactRespVO convert(EnterpriseUserBindDO bean);
+    AppEnterpriseUserContactRespVO convert2(EnterpriseUserBindDO bean);
+
+    AppEnterpriseRespVO convert3(EnterpriseDO bean);
+
+    AppEnterpriseBusinessRespVO convert4(EnterpriseBusinessDO bean);
+
+    List<AppEnterpriseAddressRespVO> convertList(List<EnterpriseAddressDO> list);
+
+    AppEnterpriseSimpleRespVO convert5(ESJobAdvertisedMergeDO bean);
+
 
-    EsEnterpriseMergeDO convert2(EnterpriseDO bean);
 }

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

@@ -3,6 +3,7 @@ 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.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
@@ -16,7 +17,13 @@ public interface JobAdvertisedConvert {
 
     AppJobAdvertisedDetailRespVO convert(JobAdvertisedDO bean);
 
+    AppJobAdvertisedSimpleRespVO convert(ESJobAdvertisedMergeDO bean);
+
     AppJobAdvertisedSimpleRespVO convertSimple(JobAdvertisedDO bean);
 
     List<AppJobAdvertisedSimpleRespVO> convertListSimple(List<JobAdvertisedDO> list);
+
+    List<ESJobAdvertisedMergeDO> convertList(List<JobAdvertisedDO> list);
+
+    ESJobAdvertisedMergeDO convert2(JobAdvertisedDO bean);
 }

+ 0 - 41
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/EsEnterpriseMergeDO.java

@@ -1,41 +0,0 @@
-package com.citu.module.menduner.system.dal.es;
-
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseAddressDO;
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseBusinessDO;
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseDO;
-import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedDO;
-import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.Document;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
-
-import java.util.List;
-
-/**
- * ES 企业信息-合并索引 DO
- *
- * @author rayson
- */
-@Data
-@Document(indexName = "mde_enterprise")
-public class EsEnterpriseMergeDO extends ESEnterpriseDO {
-
-    /**
-     * 企业工商信息
-     **/
-    @Field(type = FieldType.Object, ignoreMalformed = true)
-    private ESEnterpriseBusinessDO business;
-
-    /**
-     * 企业地址
-     **/
-    @Field(type = FieldType.Nested, ignoreMalformed = true)
-    private List<ESEnterpriseAddressDO> addressList;
-
-    /**
-     * 企业发布的招聘职位
-     **/
-    @Field(type = FieldType.Nested, ignoreMalformed = true)
-    private List<ESJobAdvertisedDO> jobAdvertisedList;
-
-}

+ 0 - 44
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/enterprise/ESEnterpriseAddressDO.java

@@ -1,44 +0,0 @@
-package com.citu.module.menduner.system.dal.es.enterprise;
-
-import com.citu.framework.tenant.core.db.TenantBaseDO;
-import com.citu.module.menduner.system.enums.FieldAnalyzer;
-import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
-
-
-/**
- * ES 门墩儿-企业地址 DO
- *
- * @author rayson
- */
-@Data
-public class ESEnterpriseAddressDO extends TenantBaseDO {
-
-    /**
-     * id
-     */
-    private Long id;
-    /**
-     * 企业id
-     */
-    private Long enterpriseId;
-    /**
-     * 地区id
-     */
-    private Long areaId;
-    /**
-     * 公司地址
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String address;
-    /**
-     * 经度
-     */
-    private String longitude;
-    /**
-     * 维度
-     */
-    private String latitude;
-
-}

+ 0 - 106
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/enterprise/ESEnterpriseBusinessDO.java

@@ -1,106 +0,0 @@
-package com.citu.module.menduner.system.dal.es.enterprise;
-
-import com.citu.framework.tenant.core.db.TenantBaseDO;
-import com.citu.module.menduner.system.dal.es.base.ESBaseDO;
-import com.citu.module.menduner.system.enums.FieldAnalyzer;
-import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.DateFormat;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
-
-import java.time.LocalDateTime;
-
-
-/**
- * ES 门墩儿-企业工商信息 DO
- *
- * @author rayson
- */
-@Data
-public class ESEnterpriseBusinessDO extends ESBaseDO {
-
-    /**
-     * id
-     */
-    private Long id;
-    /**
-     * 企业id
-     */
-    private Long enterpriseId;
-    /**
-     * 统一社会信用代码
-     */
-    private String code;
-    /**
-     * 企业名称
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String name;
-    /**
-     * 企业类型
-     * <p>
-     * 枚举 {@link TODO menduner_enterprise_type 对应的类}
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String type;
-    /**
-     * 所属地区
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String area;
-    /**
-     * 注册地址
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String address;
-    /**
-     * 法定代表人
-     */
-    private String representative;
-    /**
-     * 成立时间
-     */
-    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime establishmentTime;
-    /**
-     * 注册资金
-     */
-    private String registeredCapital;
-    /**
-     * 核准日期
-     */
-    private String approvalTime;
-    /**
-     * 曾用名
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String formerName;
-    /**
-     * 所属行业
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String industry;
-    /**
-     * 注册机关
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String registrationAuthority;
-    /**
-     * 经营状态
-     * <p>
-     * 枚举 {@link TODO menduner_business_status 对应的类}
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String businessStatus;
-    /**
-     * 营业期限
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String businessTerm;
-    /**
-     * 经营范围
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String businessScope;
-
-}

+ 0 - 107
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedDO.java

@@ -1,107 +0,0 @@
-package com.citu.module.menduner.system.dal.es.job;
-
-
-import com.citu.module.menduner.system.dal.es.base.ESBaseDO;
-import com.citu.module.menduner.system.enums.FieldAnalyzer;
-import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * ES 门墩儿-招聘职位 DO
- *
- * @author rayson
- */
-@Data
-public class ESJobAdvertisedDO extends ESBaseDO {
-
-    /**
-     * id
-     */
-    private Long id;
-    /**
-     * 企业id
-     */
-    private Long enterpriseId;
-    /**
-     * 发布用户id
-     */
-    private Long userId;
-    /**
-     * 工作地区
-     */
-    private Long areaId;
-    /**
-     * 职位名称
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String name;
-    /**
-     * 职位类型id
-     */
-    private Long positionId;
-    /**
-     * 招聘类型
-     * <p>
-     * 枚举 {@link TODO menduner_job_type 对应的类}
-     */
-    private String type;
-    /**
-     * 工作经验
-     */
-    private String expType;
-    /**
-     * 学历要求
-     */
-    private String eduType;
-    /**
-     * 薪酬from
-     */
-    private BigDecimal payFrom;
-    /**
-     * 薪酬to
-     */
-    private BigDecimal payTo;
-    /**
-     * 薪酬单位
-     */
-    private String payUnit;
-    /**
-     * 职位标签
-     */
-//    @Field(type = FieldType.Nested, ignoreMalformed = true)
-    private List<String> tagList;
-    /**
-     * 职位内容
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String content;
-    /**
-     * 职位要求
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String requirement;
-    /**
-     * 工作地址
-     */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String address;
-    /**
-     * 经度
-     */
-    private String longitude;
-    /**
-     * 维度
-     */
-    private String latitude;
-    /**
-     * 职位状态
-     * <p>
-     * 枚举 {@link TODO menduner_status 对应的类}
-     */
-    private String status;
-
-}

+ 95 - 21
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/enterprise/ESEnterpriseDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java

@@ -1,43 +1,123 @@
-package com.citu.module.menduner.system.dal.es.enterprise;
+package com.citu.module.menduner.system.dal.es.job;
 
-import com.citu.framework.tenant.core.db.TenantBaseDO;
-import com.citu.module.menduner.system.dal.es.base.ESBaseDO;
-import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedDO;
+
+import com.citu.framework.es.core.dataobject.ESBaseDO;
 import com.citu.module.menduner.system.enums.FieldAnalyzer;
 import lombok.Data;
-import org.springframework.data.annotation.Id;
 import org.springframework.data.elasticsearch.annotations.Document;
 import org.springframework.data.elasticsearch.annotations.Field;
 import org.springframework.data.elasticsearch.annotations.FieldType;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
- * ES 门墩儿-企业基本信息 DO
+ * ES 门墩儿-招聘职位(包含企业信息的职位) DO
  *
  * @author rayson
  */
 @Data
-public class ESEnterpriseDO extends ESBaseDO {
+@Document(indexName = "mde_job_merge")
+public class ESJobAdvertisedMergeDO extends ESBaseDO {
 
+    // 职位信息
 
-    @Id
+    /**
+     * id
+     */
     private Long id;
-
     /**
-     * 上级id
-     **/
-    private Long parentId;
+     * 企业id
+     */
+    private Long enterpriseId;
     /**
-     * 企业全称
+     * 发布用户id
+     */
+    private Long userId;
+    /**
+     * 工作地区
+     */
+    private Long areaId;
+    /**
+     * 职位名称
      */
     @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
     private String name;
+    /**
+     * 职位类型id
+     */
+    private Long positionId;
+    /**
+     * 招聘类型
+     * <p>
+     * 枚举 {@link TODO menduner_job_type 对应的类}
+     */
+    private String type;
+    /**
+     * 工作经验
+     */
+    private String expType;
+    /**
+     * 学历要求
+     */
+    private String eduType;
+    /**
+     * 薪酬from
+     */
+    private BigDecimal payFrom;
+    /**
+     * 薪酬to
+     */
+    private BigDecimal payTo;
+    /**
+     * 薪酬单位
+     */
+    private String payUnit;
+    /**
+     * 职位标签
+     */
+    private List<String> tagList;
+    /**
+     * 职位内容
+     */
+    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    private String content;
+    /**
+     * 职位要求
+     */
+    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    private String requirement;
+    /**
+     * 工作地址
+     */
+    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    private String address;
+    /**
+     * 经度
+     */
+    private String longitude;
+    /**
+     * 维度
+     */
+    private String latitude;
+    /**
+     * 职位状态
+     * <p>
+     * 枚举 {@link TODO menduner_status 对应的类}
+     */
+    private String status;
+
+    // ========== 企业信息 ==========
+    /**
+     * 企业全称
+     */
+    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    private String enterpriseName;
     /**
      * 企业别称
      */
     @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
-    private String anotherName;
+    private String enterpriseAnotherName;
     /**
      * 企业官网
      */
@@ -98,11 +178,5 @@ public class ESEnterpriseDO extends ESBaseDO {
      */
     @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
     private String receivedHonors;
-    /**
-     * 帐号状态(0正常 1停用)
-     **/
-    private String status;
-
-
 
-}
+}

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

@@ -8,6 +8,8 @@ import com.citu.module.menduner.system.controller.admin.enterprise.address.Enter
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 门墩儿-企业地址 Mapper
  *
@@ -24,4 +26,8 @@ public interface EnterpriseAddressMapper extends BaseMapperX<EnterpriseAddressDO
                 .orderByDesc(EnterpriseAddressDO::getId));
     }
 
+    default List<EnterpriseAddressDO> selectByEnterpriseId(Long enterpriseId){
+        return selectList(EnterpriseAddressDO::getEnterpriseId, enterpriseId);
+    }
+
 }

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

@@ -33,4 +33,9 @@ public interface EnterpriseBusinessMapper extends BaseMapperX<EnterpriseBusiness
                 .orderByDesc(EnterpriseBusinessDO::getId));
     }
 
+    default EnterpriseBusinessDO selectByEnterpriseId(Long enterpriseId) {
+        return selectOne(new LambdaQueryWrapperX<EnterpriseBusinessDO>()
+                .eq(EnterpriseBusinessDO::getEnterpriseId, enterpriseId));
+    }
+
 }

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

@@ -8,8 +8,10 @@ import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
 import com.citu.module.menduner.system.controller.admin.enterprise.vo.EnterpriseListReqVO;
 import com.citu.module.menduner.system.controller.admin.enterprise.vo.EnterprisePageReqVO;
 import com.citu.module.menduner.system.controller.app.appbase.AppCommonRespVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSearchPageReqVO;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import org.apache.ibatis.annotations.Mapper;
@@ -44,6 +46,20 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
         return selectJoinPage(pageParam, AppEnterpriseSimpleRespVO.class, query);
     }
 
+    default PageResult<AppEnterpriseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO){
+        MPJLambdaWrapperX<EnterpriseDO> query = new MPJLambdaWrapperX<>();
+        query.selectAll(EnterpriseDO.class);
+        query.selectAll(EnterpriseBusinessDO.class);
+        query.innerJoin(EnterpriseBusinessDO.class,  EnterpriseBusinessDO::getEnterpriseId,EnterpriseDO::getId);
+        query.likeIfPresent(EnterpriseDO::getName, reqVO.getName());
+        query.likeIfPresent(EnterpriseDO::getAnotherName, reqVO.getName());
+        query.inIfPresent(EnterpriseDO::getIndustryId, reqVO.getIndustryIds());
+        query.eqIfPresent(EnterpriseDO::getScale, reqVO.getScale());
+        query.eqIfPresent(EnterpriseDO::getFinancingStatus, reqVO.getFinancingStatus());
+        return selectJoinPage(reqVO, AppEnterpriseSimpleRespVO.class, query);
+    }
+
+
     default List<EnterpriseDO> selectList(EnterpriseListReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<EnterpriseDO>()
                 .likeIfPresent(EnterpriseDO::getName, reqVO.getName())

+ 0 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/repository/ESEnterpriseDORepository.java

@@ -1,10 +0,0 @@
-package com.citu.module.menduner.system.dal.repository;
-
-import com.citu.module.menduner.system.dal.es.EsEnterpriseMergeDO;
-import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
-
-/**
- * ES 企业基本信息 repository
- **/
-public interface ESEnterpriseDORepository extends ElasticsearchRepository<EsEnterpriseMergeDO, Long> {
-}

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/repository/ESJobAdvertisedMergeRepository.java

@@ -0,0 +1,10 @@
+package com.citu.module.menduner.system.dal.repository;
+
+import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
+import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
+
+/**
+ * ES 招聘职位 repository
+ **/
+public interface ESJobAdvertisedMergeRepository extends ElasticsearchRepository<ESJobAdvertisedMergeDO, Long> {
+}

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

@@ -13,25 +13,7 @@ public class ESConsumer {
 
     @EventListener
     @Async
-    public void onMessage(ESEnterpriseSendMessage message) {
-
-    }
-
-    @EventListener
-    @Async
-    public void onMessage(ESEnterpriseBusinessSendMessage message) {
-
-    }
-
-    @EventListener
-    @Async
-    public void onMessage(ESEnterpriseAddressSendMessage message) {
-
-    }
-
-    @EventListener
-    @Async
-    public void onMessage(ESJobAdvertisedSendMessage message) {
+    public void onMessage(ESJobAdvertisedMergeSendMessage message) {
 
     }
 }

+ 0 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESEnterpriseAddressSendMessage.java

@@ -1,12 +0,0 @@
-package com.citu.module.menduner.system.mq.message;
-
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseAddressDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-
-@Data
-@Schema(description = "ES 企业地址信息")
-public class ESEnterpriseAddressSendMessage extends ESEnterpriseAddressDO {
-
-}

+ 0 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESEnterpriseBusinessSendMessage.java

@@ -1,11 +0,0 @@
-package com.citu.module.menduner.system.mq.message;
-
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseBusinessDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-
-@Data
-@Schema(description = "ES 企业工商信息")
-public class ESEnterpriseBusinessSendMessage extends ESEnterpriseBusinessDO {
-}

+ 0 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESEnterpriseSendMessage.java

@@ -1,10 +0,0 @@
-package com.citu.module.menduner.system.mq.message;
-
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@Schema(description = "ES 企业信息")
-public class ESEnterpriseSendMessage extends ESEnterpriseDO {
-}

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESJobAdvertisedSendMessage.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/ESJobAdvertisedMergeSendMessage.java

@@ -1,12 +1,12 @@
 package com.citu.module.menduner.system.mq.message;
 
 
-import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedDO;
+import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 
 @Data
 @Schema(description = "ES 招聘职位")
-public class ESJobAdvertisedSendMessage extends ESJobAdvertisedDO {
+public class ESJobAdvertisedMergeSendMessage extends ESJobAdvertisedMergeDO {
 }

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

@@ -130,5 +130,4 @@ public interface EnterpriseService {
      **/
     List<AppCommonRespVO> searchByName(String name);
 
-    void test();
 }

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

@@ -1,42 +1,45 @@
 package com.citu.module.menduner.system.service.enterprise;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.datapermission.core.annotation.DataPermission;
+import com.citu.framework.es.core.filter.ESFieldFilter;
+import com.citu.framework.es.core.util.ESUtils;
 import com.citu.module.menduner.system.controller.admin.enterprise.vo.EnterpriseListReqVO;
 import com.citu.module.menduner.system.controller.admin.enterprise.vo.EnterprisePageReqVO;
 import com.citu.module.menduner.system.controller.admin.enterprise.vo.EnterpriseSaveReqVO;
 import com.citu.module.menduner.system.controller.app.appbase.AppCommonRespVO;
-import com.citu.module.menduner.system.controller.app.enterprise.vo.*;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseClickReqVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseDetailRespVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSearchPageReqVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.convert.EnterpriseConvert;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
-import com.citu.module.menduner.system.dal.es.EsEnterpriseMergeDO;
-import com.citu.module.menduner.system.dal.es.enterprise.ESEnterpriseDO;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseAddressMapper;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseBusinessMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
-import com.citu.module.menduner.system.dal.repository.ESEnterpriseDORepository;
 import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
 import com.citu.module.menduner.system.mq.producer.MdeVisitsProducer;
-import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.index.query.QueryBuilders;
+import com.citu.module.menduner.system.util.EsQueryBuildUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 import org.springframework.data.elasticsearch.core.SearchHits;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-import java.time.LocalDateTime;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.util.collection.CollectionUtils.convertSet;
@@ -47,6 +50,7 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTER
  *
  * @author rayson
  */
+@Slf4j
 @Service
 @Validated
 public class EnterpriseServiceImpl implements EnterpriseService {
@@ -58,10 +62,10 @@ public class EnterpriseServiceImpl implements EnterpriseService {
     private MdeVisitsProducer producer;
 
     @Resource
-    private ESEnterpriseDORepository repository;
+    private EnterpriseBusinessMapper enterpriseBusinessMapper;
 
     @Resource
-    private ElasticsearchRestTemplate elasticsearchTemplate;
+    private EnterpriseAddressMapper enterpriseAddressMapper;
 
 
     @Override
@@ -147,140 +151,24 @@ public class EnterpriseServiceImpl implements EnterpriseService {
 
     @Override
     public AppEnterpriseDetailRespVO getEnterpriseDetail(Long id) {
+
         AppEnterpriseDetailRespVO respVO = new AppEnterpriseDetailRespVO();
 
-        AppEnterpriseRespVO enterprise = new AppEnterpriseRespVO();
-        enterprise.setId(id);
-        enterprise.setName("xx门墩儿信息科技有限公司");
-        enterprise.setAnotherName("门墩儿科技");
-        enterprise.setIntroduce("广州珠光物业管理有限公司是珠光集团属下从事高级住宅小区、商业、办公楼等物业管理的专业大型公司。目前,公司在管\n面积300余万平方米,遍及广州、北京、惠州、梅州、海南、新疆等城市。\n为更好地开展与服务关联的各项工作,公司于2014年分别成立广州御家清洁服务有限公司、广州御茵园林工程有限公司、广州御科机电科技有限公司、广州御安置业有限公司四家专业公司。\n" +
-                "\n" +
-                "一直以来,珠光物业默默地深耕物业服务行业,怀揣着“社区是个大家庭家”的理念,致力于将传统院落的文化内涵与社区管理相融合,营造“大家”爱“小家”的良好氛围,\n将亲情融入到物业服务的点点滴滴,倡导融洽和睦的家庭观念、亲仁善邻的道德态度与醇厚善邻的邻里关系");
-        enterprise.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-        enterprise.setIndustryId(2L);
-        enterprise.setFinancingStatus("2");
-        enterprise.setScale("3");
-        enterprise.setWelfareList(ListUtil.of("五险一金", "交通补助", "餐补", "话补", "补贴", "住房补贴", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠", "住房优惠"));
-        enterprise.setAlbumList(ListUtil.of(
-                "https://zhipin-company-1251955568.file.myqcloud.com/zhipin-company/99/20231021/fpf81b1cdecd7a27dca3eeb40f661f1a3e_1a3cd48c41c942d0aa084b3dd0262681-OSS11.aac.s44100.stereo.1080x1920.b2000000.libx264.mp4?sign=d840267a7fb629df0a70cbc85702303e&t=1715917059",
-                "https://img.bosszhipin.com/beijin/upload/com/img/20210113/9721a38a2ee987949634e03ebcbeeb768c9fa67a7309bcd3394445118f39eee3.jpg?x-oss-process=image/auto-orient,1/watermark,size_18,t_50,color_FFFFFF,text_QOacrOWbvueUseivpeWFrOWPuOazqOWGjOeUqOaIt-S4iuS8oA==,type_ZHJvaWRzYW5zZmFsbGJhY2s,image/resize,p_50",
-                "https://zhipin-company-1251955568.file.myqcloud.com/zhipin-company/99/20231021/fp3692be34c52d0ad19616e3b18f94cf83_3f6de97ce4f7480c9b9b921159a0c077-OSS11.aac.s44100.stereo.1080x606.b2000000.libx264.mp4?sign=b463389d85d317d95084aee80e52ff12&t=1715836781",
-                "https://img.bosszhipin.com/beijin/upload/com/img/20210113/753ff7a19883590a242e1e3ff779e5f48c9fa67a7309bcd3394445118f39eee3.jpg?x-oss-process=image/auto-orient,1/watermark,size_18,t_50,color_FFFFFF,text_QOacrOWbvueUseivpeWFrOWPuOazqOWGjOeUqOaIt-S4iuS8oA==,type_ZHJvaWRzYW5zZmFsbGJhY2s,image/resize,p_50"
-        ));
-        enterprise.setWorkTime("上午09:00 - 下午06:00");
-        enterprise.setDevelopHistory("2019-2021 成立xxx \n 2021-2023 建立分公司");
-        enterprise.setReceivedHonors("拿了很多奖");
-        enterprise.setStatus("0");
-        enterprise.setCreateTime(LocalDateTime.now());
-        respVO.setEnterprise(enterprise);
+        EnterpriseDO enterprise = enterpriseMapper.selectById(id);
+        respVO.setEnterprise(EnterpriseConvert.INSTANCE.convert3(enterprise));
 
-        AppEnterpriseBusinessRespVO business = new AppEnterpriseBusinessRespVO();
-        business.setId(1L);
-        business.setEnterpriseId(id);
-        business.setName("xx门墩儿信息科技有限公司");
-        business.setAddress("广东省广州市天河区天河路");
-        business.setArea("广东省");
-        business.setEstablishmentTime(LocalDateTime.now());
-        business.setBusinessScope("物业管理;非居住房地产租赁;建筑物清洁服务;停车场服务;专业保洁、清洗、消毒服务;健身休闲活动;台球活动;棋牌室服务;家用电器安装服务;餐饮管理;酒店管理;日用品销售;住房租赁;广告设计、代理;房地产咨询;企业管理咨询;园林绿化工程施工;对外承包工程;安全技术防范系统设计施工服务;厨具卫具及日用杂品零售;五金产品零售;文具用品零售;体育用品及器材零售;日用家电零售;五金产品批发;文具用品批发;日用品批发;移动通信设备销售;会议及展览服务;商务代理代办服务;票务代理服务;城市公园管理;仓储设备租赁服务;金属门窗工程施工;农业园艺服务;家具安装和维修服务;家具零配件销售;家具销售;机构养老服务;养老服务;翻译服务;护理机构服务(不含医疗服务);信息系统集成服务;信息系统运行维护服务;市政设施管理;礼仪服务;城乡市容管理;建筑装饰材料销售;办公设备耗材销售;办公服务;通用设备修理;旅客票务代理;日用百货销售;婚姻介绍服务;礼品花卉销售;家政服务;居民日常生活服务;咨询策划服务;机械设备租赁;白蚁防治服务;环保咨询服务;环境卫生公共设施安装服务;城市绿化管理;办公设备租赁服务;");
-        business.setBusinessTerm("1998-03-13至-");
-        business.setApprovalTime("1998-03-13");
-        business.setRegistrationAuthority("广州市工商行政管理局");
-        business.setCode("91440105708269224U");
-        business.setBusinessStatus("在营");
-        business.setType("有限责任公司");
-        business.setRegisteredCapital("1000万");
-        respVO.setBusiness(business);
+        EnterpriseBusinessDO business = enterpriseBusinessMapper.selectByEnterpriseId(id);
+        respVO.setBusiness(EnterpriseConvert.INSTANCE.convert4(business));
 
-        List<AppEnterpriseAddressRespVO> addressList = new ArrayList<>();
-        for (int i = 0; i < 3; i++) {
-            AppEnterpriseAddressRespVO address = new AppEnterpriseAddressRespVO();
-            address.setId(i + 1L);
-            address.setEnterpriseId(id);
-            address.setAddress("广东省广州市天河区天河路" + i + "号");
-            address.setAreaId(2L);
-            address.setLongitude("113.265");
-            address.setLatitude("23.132");
-            address.setCreateTime(LocalDateTime.now());
-            addressList.add(address);
-        }
-        respVO.setAddressList(addressList);
+        List<EnterpriseAddressDO> addresseList =  enterpriseAddressMapper.selectByEnterpriseId(id);
+        respVO.setAddressList(EnterpriseConvert.INSTANCE.convertList(addresseList));
 
-        respVO.setJobAdvertisedCount(67);
         return respVO;
     }
 
     @Override
     public PageResult<AppEnterpriseSimpleRespVO> search(AppEnterpriseSearchPageReqVO reqVO) {
-        PageResult<AppEnterpriseSimpleRespVO> result = new PageResult<>();
-        List<AppEnterpriseSimpleRespVO> list = new ArrayList<>();
-        AppEnterpriseSimpleRespVO respVO = new AppEnterpriseSimpleRespVO();
-        respVO.setId(1L);
-        respVO.setAnotherName("门墩儿科技");
-        respVO.setIndustryId(1L);
-        respVO.setScale("0");
-        respVO.setFinancingStatus("0");
-        respVO.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-
-        AppEnterpriseSimpleRespVO respVO2 = new AppEnterpriseSimpleRespVO();
-        respVO2.setId(2L);
-        respVO2.setAnotherName("门墩儿科技222");
-        respVO2.setIndustryId(2L);
-        respVO2.setScale("1");
-        respVO2.setFinancingStatus("1");
-        respVO2.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-        list.add(respVO);
-        list.add(respVO2);
-
-        result.setList(list);
-        result.setTotal(2L);
-
-        //分页
-        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
-
-        // 添加关键词查询条件
-        if (StringUtils.hasText(reqVO.getName())) {
-            boolQuery.must(QueryBuilders.matchQuery("name", reqVO.getName()));
-            boolQuery.must(QueryBuilders.matchQuery("anotherName", reqVO.getName()));
-        }
-        if (null!= reqVO.getAreaIds() ) {
-            boolQuery.should(QueryBuilders.termsQuery("areaIds", reqVO.getAreaIds()));
-        }
-        if (null!= reqVO.getIndustryIds()) {
-            boolQuery.should(QueryBuilders.termsQuery("industryIds", reqVO.getIndustryIds()));
-        }
-        // 添加范围查询条件
-        if (StringUtils.hasText(reqVO.getScale())) {
-            boolQuery.must(QueryBuilders.termQuery("scale", reqVO.getScale()));
-        }
-        if (StringUtils.hasText(reqVO.getFinancingStatus())) {
-            boolQuery.must(QueryBuilders.termQuery("financingStatus", reqVO.getFinancingStatus()));
-        }
-
-        // 构建分页
-        Pageable pageable = PageRequest.of(reqVO.getPageNo()-1, reqVO.getPageSize());
-
-        // 构建高亮
-        HighlightBuilder highlightBuilder = new HighlightBuilder();
-        highlightBuilder.field("name").preTags("<span style='color:red'>").postTags("</span>");
-        highlightBuilder.field("anotherName").preTags("<span style='color:red'>").postTags("</span>");
-
-//        // 构建排序
-//        Sort sort = Sort.by(Sort.Order.asc("name"));
-
-        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
-                .withQuery(boolQuery)
-                .withHighlightFields(  new HighlightBuilder
-                        .Field("*")
-                        .preTags("<span style='color:red'>")
-                        .postTags("</span>").requireFieldMatch(false))
-//                .withHighlightBuilder(new HighlightBuilder().preTags("<span style='color:red'>").postTags("</span>"))
-                .withPageable(pageable)
-//                .withSort(sort)
-                .build();
-
-        SearchHits<EsEnterpriseMergeDO> searchHits =  elasticsearchTemplate.search(searchQuery, EsEnterpriseMergeDO.class);
-        System.out.println(searchHits);
-        return result;
+        return enterpriseMapper.selectPage(reqVO);
     }
 
     @Override
@@ -302,29 +190,4 @@ public class EnterpriseServiceImpl implements EnterpriseService {
         return enterpriseMapper.searchByName(name);
     }
 
-    @Override
-    public void test() {
-        EnterpriseDO enterprise = enterpriseMapper.selectById(1L);
-        if (null == enterprise) {
-            throw exception(MDE_ENTERPRISE_NOT_EXISTS);
-        }
-
-        EsEnterpriseMergeDO esEnterprise = EnterpriseConvert.INSTANCE.convert2(enterprise);
-        ESEnterpriseDO entity = repository.save(esEnterprise);
-        System.out.println(entity);
-
-        Optional<EsEnterpriseMergeDO> query = repository.findById(1L);
-        if (query.isPresent()) {
-            EsEnterpriseMergeDO esEnterpriseDO = query.get();
-            System.out.println(esEnterpriseDO);
-
-            if (null != esEnterpriseDO.getWelfareList()
-                    && esEnterpriseDO.getWelfareList().size() < 8) {
-                esEnterpriseDO.getWelfareList().add("我是测试");
-                entity = repository.save(esEnterpriseDO);
-                System.out.println(entity);
-            }
-        }
-
-    }
 }

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

@@ -87,7 +87,7 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
         if (null == userBindDO) {
             throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
         }
-        AppEnterpriseUserContactRespVO resp = EnterpriseConvert.INSTANCE.convert(userBindDO);
+        AppEnterpriseUserContactRespVO resp = EnterpriseConvert.INSTANCE.convert2(userBindDO);
 
         // 获取企业岗位信息
         if (null != userBindDO.getPostId()) {

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

@@ -11,11 +11,22 @@ 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.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+import com.citu.module.menduner.system.dal.es.job.ESJobAdvertisedMergeDO;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
+import com.citu.module.menduner.system.util.EsQueryBuildUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.SearchHits;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -34,6 +45,8 @@ import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_JOB_A
  *
  * @author rayson
  */
+
+@Slf4j
 @Service
 @Validated
 public class JobAdvertisedServiceImpl implements JobAdvertisedService {
@@ -47,6 +60,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     @Resource
     private EnterpriseUserBindService userBindService;
 
+    @Resource
+    private ElasticsearchRestTemplate elasticsearchTemplate;
+
+
     @Override
     public Long createJobAdvertised(JobAdvertisedSaveReqVO createReqVO) {
         // 插入
@@ -331,46 +348,44 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
         PageResult<AppJobAdvertisedSearchRespVO> result = new PageResult<>();
         List<AppJobAdvertisedSearchRespVO> list = new ArrayList<>();
-        AppJobAdvertisedSearchRespVO respVO = new AppJobAdvertisedSearchRespVO();
-
-        AppJobAdvertisedSimpleRespVO job = new AppJobAdvertisedSimpleRespVO();
-        job.setId(1L);
-        job.setAreaId(110000L);
-        job.setPositionId(1L);
-        job.setPayFrom(BigDecimal.valueOf(5000));
-        job.setPayTo(BigDecimal.valueOf(12000));
-        job.setPayUnit("1");
-        job.setName("项目经理");
-        job.setExpType("0");
-        job.setEduType("0");
-        job.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
-        respVO.setJob(job);
-
-        AppEnterpriseSimpleRespVO enterprise = new AppEnterpriseSimpleRespVO();
-        enterprise.setId(1L);
-        enterprise.setName("广州门墩儿科技有限公司");
-        enterprise.setAnotherName("门墩儿科技");
-        enterprise.setIndustryId(1L);
-        enterprise.setScale("0");
-        enterprise.setFinancingStatus("0");
-        enterprise.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
 
-        respVO.setEnterprise(enterprise);
-
-        AppEnterpriseUserContactRespVO contact = new AppEnterpriseUserContactRespVO();
-        contact.setAvatar("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F5bbef4cc-6268-46d9-87b3-3aa7d2168aad%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1718339519&t=6ff0d47abd90d209ca81b671e898deb8");
-        contact.setUserId(1L);
-        contact.setEnterpriseId(1L);
-        contact.setPostCode("HR");
-        contact.setPostNameCn("人事经理");
-        contact.setPostNameEn("uman resources");
-        contact.setName("肖女士");
-        respVO.setContact(contact);
+        // 构建分页
+        Pageable pageable = PageRequest.of(reqVO.getPageNo() - 1, reqVO.getPageSize());
+
+        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
+                .withQuery(EsQueryBuildUtils.jobSearch(reqVO))
+                // 高亮
+                //                .withHighlightFields(new HighlightBuilder
+                //                        .Field("*")
+                //                        .preTags("<span style='color:red'>")
+                //                        .postTags("</span>").requireFieldMatch(false))
+                .withPageable(pageable)
+                .build();
+        SearchHits<ESJobAdvertisedMergeDO> search = elasticsearchTemplate.search(searchQuery, ESJobAdvertisedMergeDO.class);
+        log.info("NativeSearchQuery json : " + searchQuery.getQuery().toString());
+
+        search.getSearchHits().stream()
+                .forEach(searchHit -> {
+                    AppJobAdvertisedSearchRespVO respVO = new AppJobAdvertisedSearchRespVO();
+                    respVO.setJob(JobAdvertisedConvert.INSTANCE.convert(searchHit.getContent()));
+
+                    AppEnterpriseSimpleRespVO enterprise = EnterpriseConvert.INSTANCE.convert5(searchHit.getContent());
+                    enterprise.setId(searchHit.getContent().getEnterpriseId());
+                    enterprise.setName(searchHit.getContent().getEnterpriseName());
+                    enterprise.setAnotherName(searchHit.getContent().getEnterpriseAnotherName());
+                    respVO.setEnterprise(enterprise);
+
+                    // 获取职位发布人
+                    AppEnterpriseUserContactRespVO contactRespVO = userBindService
+                            .getEnterpriseUserContact(searchHit.getContent().getEnterpriseId(), searchHit.getContent().getUserId());
+                    // 设置联系人
+                    respVO.setContact(contactRespVO);
+                    list.add(respVO);
+
+                });
 
-
-        list.add(respVO);
         result.setList(list);
-        result.setTotal(1L);
+        result.setTotal(list.stream().count());
         return result;
     }
 
@@ -413,4 +428,5 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         }
         return list;
     }
+
 }

+ 13 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/sync/ESDataSyncService.java

@@ -0,0 +1,13 @@
+package com.citu.module.menduner.system.service.sync;
+
+/**
+ * es 数据同步接口
+ **/
+public interface ESDataSyncService {
+
+    /** 同步企业相关数据 **/
+    void syncEnterprise();
+
+    /** 同步求职者相关数据 **/
+    void syncJobSeeker();
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/sync/ESDataSyncServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.sync;
+
+import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
+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.dal.es.job.ESJobAdvertisedMergeDO;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
+import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
+import com.citu.module.menduner.system.dal.repository.ESJobAdvertisedMergeRepository;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * es 数据同步接口 实现类
+ **/
+@Slf4j
+@Service
+public class ESDataSyncServiceImpl implements ESDataSyncService {
+
+    @Resource
+    private ESJobAdvertisedMergeRepository repository;
+
+    @Resource
+    private EnterpriseMapper enterpriseMapper;
+
+    @Resource
+    private JobAdvertisedMapper jobAdvertisedMapper;
+
+
+    @Async
+    @Override
+    public void syncEnterprise() {
+        // 清空
+        repository.deleteAll();
+
+        List<JobAdvertisedDO> jobAdvertisedList = jobAdvertisedMapper.selectList();
+        for (JobAdvertisedDO job : jobAdvertisedList) {
+
+            ESJobAdvertisedMergeDO jobAdvertisedMergeDO = JobAdvertisedConvert.INSTANCE.convert2(job);
+
+            EnterpriseDO enterpriseDO = enterpriseMapper.selectById(job.getEnterpriseId());
+
+            jobAdvertisedMergeDO.setEnterpriseName(enterpriseDO.getName());
+            jobAdvertisedMergeDO.setEnterpriseAnotherName(enterpriseDO.getAnotherName());
+            jobAdvertisedMergeDO.setIndustryId(enterpriseDO.getIndustryId());
+            jobAdvertisedMergeDO.setLogoUrl(enterpriseDO.getLogoUrl());
+            jobAdvertisedMergeDO.setScale(enterpriseDO.getScale());
+            jobAdvertisedMergeDO.setWebsite(enterpriseDO.getWebsite());
+            jobAdvertisedMergeDO.setFinancingStatus(enterpriseDO.getFinancingStatus());
+            jobAdvertisedMergeDO.setPhone(enterpriseDO.getPhone());
+            jobAdvertisedMergeDO.setDevelopHistory(enterpriseDO.getDevelopHistory());
+            jobAdvertisedMergeDO.setContact(enterpriseDO.getContact());
+            jobAdvertisedMergeDO.setWelfareList(enterpriseDO.getWelfareList());
+            jobAdvertisedMergeDO.setAlbumList(enterpriseDO.getAlbumList());
+            jobAdvertisedMergeDO.setWorkTime(enterpriseDO.getWorkTime());
+            jobAdvertisedMergeDO.setReceivedHonors(enterpriseDO.getReceivedHonors());
+            jobAdvertisedMergeDO.setIntroduce(enterpriseDO.getIntroduce());
+            repository.save(jobAdvertisedMergeDO);
+        }
+
+    }
+
+    @Async
+    @Override
+    public void syncJobSeeker() {
+
+    }
+}

+ 98 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/EsQueryBuildUtils.java

@@ -0,0 +1,98 @@
+package com.citu.module.menduner.system.util;
+
+import com.citu.framework.tenant.core.context.TenantContextHolder;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSearchPageReqVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedSearchPageReqVO;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import org.apache.lucene.search.join.ScoreMode;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.InnerHitBuilder;
+import org.elasticsearch.index.query.NestedQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.springframework.util.StringUtils;
+
+/**
+ * es 查询条件构造工具
+ **/
+public class EsQueryBuildUtils {
+
+
+    /**
+     * 职位检索查询条件
+     *
+     * @param reqVO 查询条件
+     * @return BoolQueryBuilder
+     **/
+    public static BoolQueryBuilder jobSearch(AppJobAdvertisedSearchPageReqVO reqVO) {
+        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
+
+        if (StringUtils.hasText(reqVO.getContent())) {
+            // 企业名称 企业别称
+            boolQuery.must(QueryBuilders.multiMatchQuery
+                    (
+                            reqVO.getContent(),
+                            "name",
+                            "content",
+                            "enterpriseAnotherName",
+                            "enterpriseName",
+                            "welfareList",
+                            "developHistory",
+                            "receivedHonors"
+                    )
+            );
+        }
+        // 企业相关
+        if (null != reqVO.getIndustryIds()) {
+            // 行业
+            boolQuery.filter(QueryBuilders.termsQuery("industryId", reqVO.getIndustryIds()));
+        }
+        if (null != reqVO.getScale()) {
+            // 规模
+            boolQuery.filter(QueryBuilders.termsQuery("scale", reqVO.getScale()));
+        }
+        if (null != reqVO.getFinancingStatus()) {
+            // 融资阶段
+            boolQuery.filter(QueryBuilders.termsQuery("financingStatus", reqVO.getFinancingStatus()));
+        }
+        if (null != reqVO.getEnterpriseId()) {
+            // 企业id
+            boolQuery.filter(QueryBuilders.termQuery("enterpriseId", reqVO.getEnterpriseId()));
+        }
+        if (null != reqVO.getEnterpriseType()) {
+            // 企业类型
+//            boolQuery.must(QueryBuilders.termQuery("enterpriseType", reqVO.getEnterpriseType()));
+        }
+
+        if (null != reqVO.getPositionId()) {
+            // 职位类型
+            boolQuery.filter(QueryBuilders.termQuery("positionId", reqVO.getPositionId()));
+        }
+        if (null != reqVO.getJobType()) {
+            // 求职类型
+            boolQuery.filter(QueryBuilders.termsQuery("type", reqVO.getJobType()));
+        }
+        if (null != reqVO.getEduType()) {
+            // 学历类型
+            boolQuery.filter(QueryBuilders.termsQuery("eduType", reqVO.getEduType()));
+        }
+        if (null != reqVO.getExpType()) {
+            // 工作经验
+            boolQuery.filter(QueryBuilders.termsQuery("expType", reqVO.getExpType()));
+        }
+        if (null != reqVO.getPayType()) {
+            // 薪酬待遇
+            boolQuery.filter(QueryBuilders.termsQuery("payType", reqVO.getPayType()));
+        }
+        if (null != reqVO.getAreaIds()) {
+            // 地区
+            boolQuery.filter
+                    (QueryBuilders.termsQuery("areaId", reqVO.getAreaIds()));
+        }
+
+        // 状态
+        boolQuery.must(QueryBuilders.termQuery("status", MendunerStatusEnum.ENABLE.getStatus()));
+        boolQuery.must(QueryBuilders.termQuery("tenantId", TenantContextHolder.getTenantId()));
+
+        return boolQuery;
+    }
+}