瀏覽代碼

1、优化职位相识度的查询
2、优化职位推荐的查询
3、增加企业用户检查密码是否需要修改接口
4、增加营业执照图片识别ocr接口
5、改造企业注册申请接口逻辑

rayson 9 月之前
父節點
當前提交
811a390dee
共有 17 個文件被更改,包括 325 次插入109 次删除
  1. 9 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphApi.java
  2. 42 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphQueryPageDTO.java
  3. 2 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  4. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/vo/register/AppEnterpriseRegisterReqVO.java
  5. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/job/vo/AppJobAdvertisedPageReqVO.java
  6. 18 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/enterprise/AppRecruitEnterpriseController.java
  7. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/user/AppRecruitUserController.java
  8. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterRespVO.java
  9. 4 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterSaveReqVO.java
  10. 9 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseRegisterDO.java
  11. 73 30
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  12. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  13. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  14. 29 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/register/EnterpriseRegisterServiceImpl.java
  15. 87 64
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  16. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  17. 1 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

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

@@ -21,4 +21,13 @@ public interface GraphApi {
     @Operation(summary = "查询知识图谱数据")
     @Operation(summary = "查询知识图谱数据")
     CommonResult<Long[]> query(@RequestBody GraphQueryDTO queryDTO);
     CommonResult<Long[]> query(@RequestBody GraphQueryDTO queryDTO);
 
 
+
+    @PostMapping("/rocket/match/job")
+    @Operation(summary = "基于职位查找相似职位")
+    CommonResult<Long[]> queryMatchJob(@RequestBody GraphQueryPageDTO queryDTO);
+
+
+    @PostMapping("/rocket/recommend/job")
+    @Operation(summary = "推荐职位")
+    CommonResult<Long[]> queryRecommendJob(@RequestBody GraphQueryPageDTO queryDTO);
 }
 }

+ 42 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/api/python/GraphQueryPageDTO.java

@@ -0,0 +1,42 @@
+package com.citu.module.menduner.system.api.python;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description = "图谱分页查询")
+public class GraphQueryPageDTO {
+
+    public static final String JOB = "job";
+
+    /**
+     * 当前页
+     **/
+    private Integer current;
+
+    /**
+     * 大小
+     **/
+    private Integer size;
+    /**
+     * 数据id
+     **/
+    private Long id;
+    /**
+     * 用户id
+     **/
+    private Long userId;
+
+    /**
+     * 数据类型
+     **/
+    private String type;
+
+
+}

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

@@ -208,6 +208,8 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ENTERPRISE_BUSINESS_NAME_NOT_NULL = new ErrorCode(1_100_020_002, "未填写企业名称");
     ErrorCode MDE_ENTERPRISE_BUSINESS_NAME_NOT_NULL = new ErrorCode(1_100_020_002, "未填写企业名称");
     ErrorCode MDE_ENTERPRISE_BUSINESS_CODE_NOT_NULL = new ErrorCode(1_100_020_003, "未填写统一社会信用代码");
     ErrorCode MDE_ENTERPRISE_BUSINESS_CODE_NOT_NULL = new ErrorCode(1_100_020_003, "未填写统一社会信用代码");
 
 
+    ErrorCode MDE_BUSINESS_LICENSE_OCR_FAIL = new ErrorCode(1_100_020_004, "营业执照图片识别失败,请重新上传清晰合法图片");
+
     // ========== 企业注册申请 1_100_021_000 ==========
     // ========== 企业注册申请 1_100_021_000 ==========
     ErrorCode MDE_ENTERPRISE_REGISTER_NOT_EXISTS = new ErrorCode(1_100_021_001, "企业注册申请不存在");
     ErrorCode MDE_ENTERPRISE_REGISTER_NOT_EXISTS = new ErrorCode(1_100_021_001, "企业注册申请不存在");
     ErrorCode MDE_ENTERPRISE_REGISTER_AUDITING_APPROVED =
     ErrorCode MDE_ENTERPRISE_REGISTER_AUDITING_APPROVED =
@@ -246,7 +248,6 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ENTERPRISE_REGISTER_STATUS_APPLYING = new ErrorCode(1_100_021_016, "企业注册申请中");
     ErrorCode MDE_ENTERPRISE_REGISTER_STATUS_APPLYING = new ErrorCode(1_100_021_016, "企业注册申请中");
 
 
 
 
-
     // ========== 企业地址 1_100_022_001 ==========
     // ========== 企业地址 1_100_022_001 ==========
     ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_100_022_001, "企业地址不存在");
     ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_100_022_001, "企业地址不存在");
 
 

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/enterprise/vo/register/AppEnterpriseRegisterReqVO.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.register;
 package com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.register;
 
 
 
 
+import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 import org.hibernate.validator.constraints.Length;
 import org.hibernate.validator.constraints.Length;
@@ -47,6 +48,9 @@ public class AppEnterpriseRegisterReqVO {
     @Schema(description = "营业执照图片", example = "https://www.iocoder.cn")
     @Schema(description = "营业执照图片", example = "https://www.iocoder.cn")
     private String businessLicenseUrl;
     private String businessLicenseUrl;
 
 
+    // ========== 公共对象 ==========
+    @Schema(description = "ocr识别对象")
+    private BusinessLicenseOcr ocr;
 
 
 
 
 }
 }

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

@@ -23,6 +23,13 @@ public class AppJobAdvertisedPageReqVO extends PageParam {
 
 
     private final static String BEGIN_TIME_KEY = "beginTime";
     private final static String BEGIN_TIME_KEY = "beginTime";
 
 
+
+    @Schema(description = "发布职位id")
+    private Long id;
+
+    @Schema(description = "发布职位id集合")
+    private Long[] ids;
+
     @Schema(description = "企业id", example = "29465")
     @Schema(description = "企业id", example = "29465")
     private Long enterpriseId;
     private Long enterpriseId;
 
 

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

@@ -1,5 +1,7 @@
 package com.citu.module.menduner.system.controller.app.recruit.enterprise;
 package com.citu.module.menduner.system.controller.app.recruit.enterprise;
 
 
+import com.citu.framework.baiduaip.core.AipOcrClient;
+import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.common.util.LoginUserContext;
@@ -18,7 +20,9 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.Valid;
 
 
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.pojo.CommonResult.success;
 import static com.citu.framework.common.pojo.CommonResult.success;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_BUSINESS_LICENSE_OCR_FAIL;
 
 
 @Tag(name = "招聘端 - 企业信息")
 @Tag(name = "招聘端 - 企业信息")
 @RestController
 @RestController
@@ -36,6 +40,9 @@ public class AppRecruitEnterpriseController {
     @Resource
     @Resource
     private EnterpriseAuthService enterpriseAuthService;
     private EnterpriseAuthService enterpriseAuthService;
 
 
+    @Resource
+    private AipOcrClient aipOcrClient;
+
 
 
     @PreAuthenticated
     @PreAuthenticated
     @GetMapping("/get/tree")
     @GetMapping("/get/tree")
@@ -128,4 +135,15 @@ public class AppRecruitEnterpriseController {
         return CommonResult.success(enterpriseBusinessService.get());
         return CommonResult.success(enterpriseBusinessService.get());
     }
     }
 
 
+    @PreAuthenticated
+    @PostMapping("/business/ocr")
+    @Operation(summary = "企业营业执照图片识别文字")
+    public CommonResult<BusinessLicenseOcr> businessOcr(@RequestParam("url") String url) {
+        BusinessLicenseOcr businessLicenseOcr = aipOcrClient.businessLicense(url);
+        if (null == businessLicenseOcr) {
+            throw exception(MDE_BUSINESS_LICENSE_OCR_FAIL);
+        }
+        return success(businessLicenseOcr);
+    }
+
 }
 }

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

@@ -106,4 +106,14 @@ public class AppRecruitUserController {
         return success(true);
         return success(true);
     }
     }
 
 
+
+    @PreAuthenticated
+    @GetMapping("/check/password")
+    @Operation(summary = "检查密码是否需要修改")
+    public CommonResult<Boolean> checkNeedUpdatePassword() {
+        return success(service.checkNeedUpdatePassword());
+    }
+
+
+
 }
 }

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/register/EnterpriseRegisterRespVO.java

@@ -1,6 +1,9 @@
 package com.citu.module.menduner.system.controller.base.enterprise.register;
 package com.citu.module.menduner.system.controller.base.enterprise.register;
 
 
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.*;
 
 
@@ -60,6 +63,13 @@ public class EnterpriseRegisterRespVO {
     @ExcelProperty("营业执照图片")
     @ExcelProperty("营业执照图片")
     private String businessLicenseUrl;
     private String businessLicenseUrl;
 
 
+    /**
+     * 营业执照图片ocr识别的对象
+     */
+    @Schema(description = "ocr识别")
+    @ExcelProperty("ocr识别")
+    private BusinessLicenseOcr ocr;
+
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty(value = "帐号状态(0正常 1停用 2 等待审核 3不通过)", converter = DictConvert.class)
     @ExcelProperty(value = "帐号状态(0正常 1停用 2 等待审核 3不通过)", converter = DictConvert.class)
     @DictFormat(MENDUNER_STATUS)
     @DictFormat(MENDUNER_STATUS)

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

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.controller.base.enterprise.register;
 package com.citu.module.menduner.system.controller.base.enterprise.register;
 
 
 
 
+import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 
 
@@ -40,6 +41,9 @@ public class EnterpriseRegisterSaveReqVO {
     @Schema(description = "营业执照图片", example = "https://www.iocoder.cn")
     @Schema(description = "营业执照图片", example = "https://www.iocoder.cn")
     private String businessLicenseUrl;
     private String businessLicenseUrl;
 
 
+    @Schema(description = "ocr识别")
+    private BusinessLicenseOcr ocr;
+
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @NotBlank(message = "{1_099_000_001}")
     @NotBlank(message = "{1_099_000_001}")
     private String status;
     private String status;

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

@@ -1,8 +1,8 @@
 package com.citu.module.menduner.system.dal.dataobject.enterprise;
 package com.citu.module.menduner.system.dal.dataobject.enterprise;
 
 
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -13,7 +13,7 @@ import lombok.*;
  *
  *
  * @author Rayson
  * @author Rayson
  */
  */
-@TableName("mde_enterprise_register")
+@TableName(value = "mde_enterprise_register", autoResultMap = true)
 @KeySequence("mde_enterprise_register_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @KeySequence("mde_enterprise_register_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @Data
 @EqualsAndHashCode(callSuper = true)
 @EqualsAndHashCode(callSuper = true)
@@ -68,6 +68,11 @@ public class EnterpriseRegisterDO extends TenantBaseDO {
      * 营业执照图片
      * 营业执照图片
      */
      */
     private String businessLicenseUrl;
     private String businessLicenseUrl;
+    /**
+     * 营业执照图片ocr识别的对象
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private BusinessLicenseOcr ocr;
     /**
     /**
      * 帐号状态(0审核中 1审核通过 2审核不通过)
      * 帐号状态(0审核中 1审核通过 2审核不通过)
      * <p>
      * <p>

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

@@ -61,7 +61,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .orderByDesc(JobAdvertisedDO::getId));
                 .orderByDesc(JobAdvertisedDO::getId));
     }
     }
 
 
-    /** 根据查询条件查询职位信息 **/
+    /**
+     * 根据查询条件查询职位信息
+     **/
     default List<JobAdvertisedDO> list(JobAdvertisedReqVO reqVO) {
     default List<JobAdvertisedDO> list(JobAdvertisedReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<JobAdvertisedDO>()
         return selectList(new LambdaQueryWrapperX<JobAdvertisedDO>()
                 .inIfPresent(JobAdvertisedDO::getId, reqVO.getId())
                 .inIfPresent(JobAdvertisedDO::getId, reqVO.getId())
@@ -78,14 +80,18 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                 .orderByDesc(JobAdvertisedDO::getId));
                 .orderByDesc(JobAdvertisedDO::getId));
     }
     }
 
 
-    /** 根据企业id查询正常状态的职位数量 **/
+    /**
+     * 根据企业id查询正常状态的职位数量
+     **/
     default Long countByEnterpriseId(Long enterpriseId) {
     default Long countByEnterpriseId(Long enterpriseId) {
         return selectCount(new LambdaQueryWrapperX<JobAdvertisedDO>()
         return selectCount(new LambdaQueryWrapperX<JobAdvertisedDO>()
                 .eq(JobAdvertisedDO::getEnterpriseId, enterpriseId)
                 .eq(JobAdvertisedDO::getEnterpriseId, enterpriseId)
                 .eq(JobAdvertisedDO::getStatus, MendunerStatusEnum.ENABLE.getStatus()));
                 .eq(JobAdvertisedDO::getStatus, MendunerStatusEnum.ENABLE.getStatus()));
     }
     }
 
 
-    /** 根据企业id查询正常状态和没有过期的职位信息 **/
+    /**
+     * 根据企业id查询正常状态和没有过期的职位信息
+     **/
     default List<JobAdvertisedDO> selectByEnterpriseIdAndNotExpireTime(Long enterpriseId) {
     default List<JobAdvertisedDO> selectByEnterpriseIdAndNotExpireTime(Long enterpriseId) {
         LambdaQueryWrapperX<JobAdvertisedDO> query = new LambdaQueryWrapperX<>();
         LambdaQueryWrapperX<JobAdvertisedDO> query = new LambdaQueryWrapperX<>();
         query.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId);
         query.eq(JobAdvertisedDO::getEnterpriseId, enterpriseId);
@@ -94,7 +100,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         return selectList(query);
         return selectList(query);
     }
     }
 
 
-    /** 求职端 - 根据查询条件分页查询正常状态和没有过期的职位信息 **/
+    /**
+     * 求职端 - 根据查询条件分页查询正常状态和没有过期的职位信息
+     **/
     default PageResult<AppJobAdvertisedHomeRespVO> selectPage(AppJobAdvertisedPageReqVO reqVO) {
     default PageResult<AppJobAdvertisedHomeRespVO> selectPage(AppJobAdvertisedPageReqVO reqVO) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(JobAdvertisedDO.class);
         query.selectAll(JobAdvertisedDO.class);
@@ -144,6 +152,29 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         return selectJoinPage(reqVO, AppJobAdvertisedHomeRespVO.class, query);
         return selectJoinPage(reqVO, AppJobAdvertisedHomeRespVO.class, query);
     }
     }
 
 
+    /**
+     * 求职端 - 根据查询条件分页查询正常状态和没有过期的职位信息
+     **/
+    default PageResult<AppJobAdvertisedHomeRespVO> selectPage2(AppJobAdvertisedPageReqVO reqVO) {
+        MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
+        query.selectAll(JobAdvertisedDO.class);
+        query.selectAll(EnterpriseDO.class);
+        query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
+
+        query.eq(JobAdvertisedDO::getStatus, JobStatusEnum.ENABLE.getStatus());
+        query.eq(EnterpriseDO::getStatus, MendunerStatusEnum.ENABLE.getStatus());
+
+        notExpireTime(query);
+
+        query.inIfPresent(JobAdvertisedDO::getId, reqVO.getIds());
+        // 置顶
+        query.orderByDesc(JobAdvertisedDO::getTop);
+
+        query.orderByDesc(JobAdvertisedDO::getUpdateTime);
+
+        return selectJoinPage(reqVO, AppJobAdvertisedHomeRespVO.class, query);
+    }
+
 
 
     /**
     /**
      * 获取发布过职位的企业信息
      * 获取发布过职位的企业信息
@@ -164,13 +195,15 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
 
 
     }
     }
 
 
-    /** 根据用户id 查询收藏的职位信息 **/
-    default PageResult<AppJobAdvertisedRespVO> selectFavoriteJobPage(PageParam pageParam,Long userId) {
+    /**
+     * 根据用户id 查询收藏的职位信息
+     **/
+    default PageResult<AppJobAdvertisedRespVO> selectFavoriteJobPage(PageParam pageParam, Long userId) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAssociation(JobAdvertisedDO.class, AppJobAdvertisedRespVO::getJob);
         query.selectAssociation(JobAdvertisedDO.class, AppJobAdvertisedRespVO::getJob);
         query.selectAssociation(EnterpriseDO.class, AppJobAdvertisedRespVO::getEnterprise);
         query.selectAssociation(EnterpriseDO.class, AppJobAdvertisedRespVO::getEnterprise);
 
 
-        query.innerJoin(PersonJobFavoriteDO.class,PersonJobFavoriteDO::getJobId, JobAdvertisedDO::getId);
+        query.innerJoin(PersonJobFavoriteDO.class, PersonJobFavoriteDO::getJobId, JobAdvertisedDO::getId);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         query.eq(PersonJobFavoriteDO::getUserId, userId);
         query.eq(PersonJobFavoriteDO::getUserId, userId);
 
 
@@ -178,13 +211,15 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         return selectJoinPage(pageParam, AppJobAdvertisedRespVO.class, query);
         return selectJoinPage(pageParam, AppJobAdvertisedRespVO.class, query);
     }
     }
 
 
-    /** 根据用户id 查询投递的职位信息 **/
-    default PageResult<AppJobAdvertisedRespVO> selectCvRelJobPage(PageParam pageParam,Long userId) {
+    /**
+     * 根据用户id 查询投递的职位信息
+     **/
+    default PageResult<AppJobAdvertisedRespVO> selectCvRelJobPage(PageParam pageParam, Long userId) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAssociation(JobAdvertisedDO.class, AppJobAdvertisedRespVO::getJob);
         query.selectAssociation(JobAdvertisedDO.class, AppJobAdvertisedRespVO::getJob);
         query.selectAssociation(EnterpriseDO.class, AppJobAdvertisedRespVO::getEnterprise);
         query.selectAssociation(EnterpriseDO.class, AppJobAdvertisedRespVO::getEnterprise);
 
 
-        query.innerJoin(JobCvRelDO.class,JobCvRelDO::getJobId, JobAdvertisedDO::getId);
+        query.innerJoin(JobCvRelDO.class, JobCvRelDO::getJobId, JobAdvertisedDO::getId);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         query.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId);
         query.eq(JobCvRelDO::getUserId, userId);
         query.eq(JobCvRelDO::getUserId, userId);
 
 
@@ -193,7 +228,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
     }
     }
 
 
 
 
-    /** 根据企业id集合查询企业数据 **/
+    /**
+     * 根据企业id集合查询企业数据
+     **/
     default List<JobAdvertisedDO> selectByEnterpriseIdList(List<Long> ids) {
     default List<JobAdvertisedDO> selectByEnterpriseIdList(List<Long> ids) {
         LambdaQueryWrapper<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>();
         LambdaQueryWrapper<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>();
         query.in(JobAdvertisedDO::getEnterpriseId, ids);
         query.in(JobAdvertisedDO::getEnterpriseId, ids);
@@ -203,7 +240,9 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
     }
     }
 
 
 
 
-    /** 根据查询条件、企业id、用户id 分页查询职位信息 **/
+    /**
+     * 根据查询条件、企业id、用户id 分页查询职位信息
+     **/
     default PageResult<JobAdvertisedDO> selectPage(AppRecruitJobPageReqVO reqVO, Long enterpriseId, Long userId) {
     default PageResult<JobAdvertisedDO> selectPage(AppRecruitJobPageReqVO reqVO, Long enterpriseId, Long userId) {
         LambdaQueryWrapper<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>()
         LambdaQueryWrapper<JobAdvertisedDO> query = new LambdaQueryWrapperX<JobAdvertisedDO>()
                 .eqIfPresent(JobAdvertisedDO::getAreaId, reqVO.getAreaId())
                 .eqIfPresent(JobAdvertisedDO::getAreaId, reqVO.getAreaId())
@@ -266,7 +305,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                         .eq(MdeVisitsDO::getType, MdeVisitsEnum.POSITION_PUBLISH_CLICK.getType())
                         .eq(MdeVisitsDO::getType, MdeVisitsEnum.POSITION_PUBLISH_CLICK.getType())
         );
         );
 
 
-        query.between(null != startTime && null != endTime,MdeVisitsDO::getUpdateTime, startTime, endTime);
+        query.between(null != startTime && null != endTime, MdeVisitsDO::getUpdateTime, startTime, endTime);
 
 
         query.groupBy(JobAdvertisedDO::getId);
         query.groupBy(JobAdvertisedDO::getId);
         query.orderByDesc(MdeVisitsDO::getUpdateTime);
         query.orderByDesc(MdeVisitsDO::getUpdateTime);
@@ -295,7 +334,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
                         .eq(MdeVisitsDO::getType, MdeVisitsEnum.POSITION_PUBLISH_CLICK.getType())
                         .eq(MdeVisitsDO::getType, MdeVisitsEnum.POSITION_PUBLISH_CLICK.getType())
         );
         );
 
 
-        query.between(null != startTime && null != endTime,MdeVisitsDO::getUpdateTime, startTime, endTime);
+        query.between(null != startTime && null != endTime, MdeVisitsDO::getUpdateTime, startTime, endTime);
 
 
         Map<String, Object> result = selectJoinMap(query);
         Map<String, Object> result = selectJoinMap(query);
         if (null == result) {
         if (null == result) {
@@ -311,26 +350,28 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param startTime 开始时间
      * @param startTime 开始时间
      * @param endTime   结束时间
      * @param endTime   结束时间
      **/
      **/
-   default PageResult<RecruitJobAnalysisRespVO> getJobNum(
-           RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
-       MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
-       query.selectAll(JobAdvertisedDO.class);
+    default PageResult<RecruitJobAnalysisRespVO> getJobNum(
+            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+        MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
+        query.selectAll(JobAdvertisedDO.class);
 
 
-       query.eqIfPresent(JobAdvertisedDO::getEnterpriseId, reqVO.getEnterpriseId());
-       query.inIfPresent(JobAdvertisedDO::getUserId, reqVO.getUserId());
-       query.eqIfPresent(JobAdvertisedDO::getId, reqVO.getJobId());
-       query.eqIfPresent(JobAdvertisedDO::getStatus, reqVO.getJobStatus());
+        query.eqIfPresent(JobAdvertisedDO::getEnterpriseId, reqVO.getEnterpriseId());
+        query.inIfPresent(JobAdvertisedDO::getUserId, reqVO.getUserId());
+        query.eqIfPresent(JobAdvertisedDO::getId, reqVO.getJobId());
+        query.eqIfPresent(JobAdvertisedDO::getStatus, reqVO.getJobStatus());
 
 
-       query.betweenIfPresent(JobAdvertisedDO::getCreateTime, startTime, endTime);
+        query.betweenIfPresent(JobAdvertisedDO::getCreateTime, startTime, endTime);
 
 
-       query.orderByDesc(JobAdvertisedDO::getUpdateTime);
+        query.orderByDesc(JobAdvertisedDO::getUpdateTime);
 
 
-       return selectJoinPage(reqVO, RecruitJobAnalysisRespVO.class, query);
+        return selectJoinPage(reqVO, RecruitJobAnalysisRespVO.class, query);
 
 
     }
     }
 
 
 
 
-    /** 根据查询条件、企业id、用户id 查询excel导出的数据结果 **/
+    /**
+     * 根据查询条件、企业id、用户id 查询excel导出的数据结果
+     **/
     default PageResult<AppRecruitJobExportRespVO> page(AppRecruitJobPageReqVO reqVO, Long enterpriseId, Long userId) {
     default PageResult<AppRecruitJobExportRespVO> page(AppRecruitJobPageReqVO reqVO, Long enterpriseId, Long userId) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
 
 
@@ -359,15 +400,17 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         query.innerJoin(EnterpriseDO.class, on -> on.eq(EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId));
         query.innerJoin(EnterpriseDO.class, on -> on.eq(EnterpriseDO::getId, JobAdvertisedDO::getEnterpriseId));
         query.leftJoin(PositionDO.class, on -> on.eq(PositionDO::getId, JobAdvertisedDO::getPositionId));
         query.leftJoin(PositionDO.class, on -> on.eq(PositionDO::getId, JobAdvertisedDO::getPositionId));
         query.leftJoin(AreaDO.class, on -> on.eq(AreaDO::getId, JobAdvertisedDO::getAreaId));
         query.leftJoin(AreaDO.class, on -> on.eq(AreaDO::getId, JobAdvertisedDO::getAreaId));
-        query.innerJoin(EnterpriseUserBindDO.class,on->on
-                .eq(EnterpriseUserBindDO::getEnterpriseId,JobAdvertisedDO::getEnterpriseId)
-                .eq(EnterpriseUserBindDO::getUserId,JobAdvertisedDO::getUserId)
+        query.innerJoin(EnterpriseUserBindDO.class, on -> on
+                .eq(EnterpriseUserBindDO::getEnterpriseId, JobAdvertisedDO::getEnterpriseId)
+                .eq(EnterpriseUserBindDO::getUserId, JobAdvertisedDO::getUserId)
         );
         );
 
 
         return selectJoinPage(reqVO, AppRecruitJobExportRespVO.class, query);
         return selectJoinPage(reqVO, AppRecruitJobExportRespVO.class, query);
     }
     }
 
 
-    /** 过滤过期的职位 **/
+    /**
+     * 过滤过期的职位
+     **/
     default void notExpireTime(MPJLambdaWrapperX<JobAdvertisedDO> query) {
     default void notExpireTime(MPJLambdaWrapperX<JobAdvertisedDO> query) {
         query.and(wrapper -> wrapper
         query.and(wrapper -> wrapper
                 .ge(JobAdvertisedDO::getExpireTime, LocalDateTime.now())
                 .ge(JobAdvertisedDO::getExpireTime, LocalDateTime.now())

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

@@ -224,4 +224,7 @@ public interface EnterpriseUserBindService {
      * @return
      * @return
      **/
      **/
     AppRecruitEnterpriseUserRespVO getEnterpriseUser(Long enterpriseId, Long userId);
     AppRecruitEnterpriseUserRespVO getEnterpriseUser(Long enterpriseId, Long userId);
+
+    /** 效验当前登录企业用户是否需要更改密码 **/
+    boolean checkNeedUpdatePassword();
 }
 }

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

@@ -27,6 +27,7 @@ import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
 import com.citu.module.menduner.system.service.enterprise.post.EnterprisePostService;
 import com.citu.module.menduner.system.service.enterprise.post.EnterprisePostService;
 import com.citu.module.menduner.system.service.permission.MdePermissionService;
 import com.citu.module.menduner.system.service.permission.MdePermissionService;
 import com.citu.module.menduner.system.service.user.MdeUserService;
 import com.citu.module.menduner.system.service.user.MdeUserService;
+import com.citu.module.system.enums.logger.LoginResultEnum;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
@@ -411,4 +412,19 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     public AppRecruitEnterpriseUserRespVO getEnterpriseUser(Long enterpriseId, Long userId) {
     public AppRecruitEnterpriseUserRespVO getEnterpriseUser(Long enterpriseId, Long userId) {
         return mapper.selectEnterpriseUser(enterpriseId, userId);
         return mapper.selectEnterpriseUser(enterpriseId, userId);
     }
     }
+
+    @Override
+    public boolean checkNeedUpdatePassword() {
+        Long enterpriseId = LoginUserContext.getEnterpriseId();
+        Long userId = LoginUserContext.getUserId();
+        EnterpriseUserBindDO userBindDO = mapper.selectByEnterpriseIdAndUserId(enterpriseId, userId);
+
+        String password = userBindDO.getEmail();
+        // 邮箱和密码一样则提示要改了
+        if (!isPasswordMatch(password, userBindDO.getPassword())) {
+            // 要改密码
+            return true;
+        }
+        return false;
+    }
 }
 }

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

@@ -149,19 +149,21 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
                 enterpriseRegister.getPhone(), enterpriseRegister.getPrepare());
                 enterpriseRegister.getPhone(), enterpriseRegister.getPrepare());
 
 
         // 增加企业工商信息
         // 增加企业工商信息
-        if (StringUtils.hasText(enterpriseRegister.getCode())) {
-            // 不为空时添加工商信息
-            BusinessLicenseOcr businessLicenseOcr = aipOcrClient
-                    .businessLicense(enterpriseRegister.getBusinessLicenseUrl());
-            if (null == businessLicenseOcr) {
-                // 默认信息
-                businessService
-                        .createSimpleBusiness(enterpriseId, enterpriseRegister.getCode(), enterpriseRegister.getName());
+        if (StringUtils.hasText(enterpriseRegister.getBusinessLicenseUrl())) {
+            // 获取营业执照OCR识别结果
+            BusinessLicenseOcr businessLicenseOcr = getBusinessLicenseOcr(enterpriseRegister);
+
+            // 如果没有获取到有效的OCR识别结果,则使用默认信息创建企业业务记录
+            if (businessLicenseOcr == null) {
+                businessService.createSimpleBusiness(
+                        enterpriseId,
+                        enterpriseRegister.getCode(),
+                        enterpriseRegister.getName()
+                );
             } else {
             } else {
-                // 基于ocr识别创建
+                // 如果有有效的OCR识别结果,则基于OCR识别结果创建企业业务记录
                 businessService.createBussiness(enterpriseId, businessLicenseOcr);
                 businessService.createBussiness(enterpriseId, businessLicenseOcr);
             }
             }
-
         }
         }
 
 
         // 增加企业用户
         // 增加企业用户
@@ -178,6 +180,23 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
         userBindService.createUser(userBindDO);
         userBindService.createUser(userBindDO);
     }
     }
 
 
+    /**
+     * 获取营业执照OCR识别结果。
+     * 首先检查企业注册信息中是否已有OCR识别结果,如果没有则调用OCR服务进行识别。
+     *
+     * @param enterpriseRegister 企业注册信息对象
+     * @return 营业执照OCR识别结果,如果无法获取则返回null
+     */
+    private BusinessLicenseOcr getBusinessLicenseOcr(EnterpriseRegisterDO enterpriseRegister) {
+        // 如果企业注册信息中已有OCR识别结果,则直接返回
+        if (enterpriseRegister.getOcr() != null) {
+            return enterpriseRegister.getOcr();
+        }
+
+        // 否则调用OCR服务获取营业执照OCR识别结果
+        return aipOcrClient.businessLicense(enterpriseRegister.getBusinessLicenseUrl());
+    }
+
     @Override
     @Override
     @DSTransactional
     @DSTransactional
     public void reject(EnterpriseRegisterAuditReqVO reqVO) {
     public void reject(EnterpriseRegisterAuditReqVO reqVO) {

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

@@ -1,7 +1,6 @@
 package com.citu.module.menduner.system.service.job;
 package com.citu.module.menduner.system.service.job;
 
 
 
 
-import cn.hutool.core.collection.CollUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.pojo.PageResult;
@@ -9,6 +8,8 @@ import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.dict.core.DictFrameworkUtils;
 import com.citu.framework.dict.core.DictFrameworkUtils;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.api.python.GraphApi;
+import com.citu.module.menduner.system.api.python.GraphQueryPageDTO;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobHomeRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppEnterpriseJobHomeRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdvertisedDetailRespVO;
@@ -27,7 +28,6 @@ import com.citu.module.menduner.system.controller.base.job.JobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 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.JobAdvertisedDO;
-import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
 import com.citu.module.menduner.system.enums.job.JobStatusEnum;
 import com.citu.module.menduner.system.enums.job.JobStatusEnum;
@@ -44,7 +44,6 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -84,6 +83,9 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     @Resource
     @Resource
     private GraphProducer producer;
     private GraphProducer producer;
 
 
+    @Resource
+    private GraphApi graphApi;
+
 
 
     @Override
     @Override
     public Long createJobAdvertised(JobAdvertisedSaveReqVO createReqVO) {
     public Long createJobAdvertised(JobAdvertisedSaveReqVO createReqVO) {
@@ -138,61 +140,71 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
 
         AppJobAdvertisedPageReqVO pageReqVO =
         AppJobAdvertisedPageReqVO pageReqVO =
                 new AppJobAdvertisedPageReqVO(pageParam, AppJobAdvertisedPageReqVO.RECOMMEND);
                 new AppJobAdvertisedPageReqVO(pageParam, AppJobAdvertisedPageReqVO.RECOMMEND);
-        pageReqVO.setTop(true);
-        pageReqVO.setHire(false);
-        Long userId = LoginUserContext.getUserId2();
-        if (null == userId) {
-            // 未登录
-            PageResult<AppJobAdvertisedHomeRespVO> result = mapper.selectPage(pageReqVO);
-            if (CollUtil.isEmpty(result.getList())) {
-                // 没有数据, 再算一遍
-                pageReqVO.setTop(null);
-                return mapper.selectPage(pageReqVO);
-            }
-        }
-
-        // 基于求职意向计算
-        List<JobInterestedDO> interestList = jobInterestedMapper.selectByUserIdList(userId);
-        if (CollUtil.isEmpty(interestList)) {
-            return mapper.selectPage(pageReqVO);
-        }
-        // 感兴趣的职位
-        List<Long> positionIds = interestList.stream()
-                .map(JobInterestedDO::getPositionId).collect(Collectors.toList());
-        // 希望工作的城市
-        List<Long> workAreaIds = interestList.stream()
-                .map(JobInterestedDO::getWorkAreaId).collect(Collectors.toList());
-        // 感兴趣的城市
-        List<Long> interestedAreaIds = interestList.stream()
-                .map(JobInterestedDO::getInterestedAreaIdList)
-                .filter(CollUtil::isNotEmpty)
-                .flatMap(Collection::stream) // 将嵌套列表展平为一个流
-                .map(Long::valueOf)
-                .distinct()
-                .collect(Collectors.toList());
-        // 感兴趣的行业
-        List<Long> inductionIds = interestList.stream()
-                .map(JobInterestedDO::getIndustryIdList)
-                .filter(CollUtil::isNotEmpty)
-                .flatMap(Collection::stream) // 将嵌套列表展平为一个流
-                .map(Long::valueOf)
-                .distinct()
-                .collect(Collectors.toList());
-
-        pageReqVO.setJobTypes(interestList
-                .stream()
-                .map(JobInterestedDO::getJobType)
-                .collect(Collectors.toList())
-        );
-        pageReqVO.setPositionIds(positionIds);
-        pageReqVO.setIndustryIds(inductionIds);
-        pageReqVO.setAreaIds(
-                CollUtil.union(workAreaIds, interestedAreaIds)
-                        .stream().distinct()
-                        .collect(Collectors.toList())
-        );
-        pageReqVO.setAcquainted(true);
-        pageReqVO.setTop(false);
+//        pageReqVO.setTop(true);
+//        pageReqVO.setHire(false);
+//        Long userId = LoginUserContext.getUserId2();
+//        if (null == userId) {
+//            // 未登录
+//            PageResult<AppJobAdvertisedHomeRespVO> result = mapper.selectPage(pageReqVO);
+//            if (CollUtil.isEmpty(result.getList())) {
+//                // 没有数据, 再算一遍
+//                pageReqVO.setTop(null);
+//                return mapper.selectPage(pageReqVO);
+//            }
+//        }
+//
+//        // 基于求职意向计算
+//        List<JobInterestedDO> interestList = jobInterestedMapper.selectByUserIdList(userId);
+//        if (CollUtil.isEmpty(interestList)) {
+//            return mapper.selectPage(pageReqVO);
+//        }
+//        // 感兴趣的职位
+//        List<Long> positionIds = interestList.stream()
+//                .map(JobInterestedDO::getPositionId).collect(Collectors.toList());
+//        // 希望工作的城市
+//        List<Long> workAreaIds = interestList.stream()
+//                .map(JobInterestedDO::getWorkAreaId).collect(Collectors.toList());
+//        // 感兴趣的城市
+//        List<Long> interestedAreaIds = interestList.stream()
+//                .map(JobInterestedDO::getInterestedAreaIdList)
+//                .filter(CollUtil::isNotEmpty)
+//                .flatMap(Collection::stream) // 将嵌套列表展平为一个流
+//                .map(Long::valueOf)
+//                .distinct()
+//                .collect(Collectors.toList());
+//        // 感兴趣的行业
+//        List<Long> inductionIds = interestList.stream()
+//                .map(JobInterestedDO::getIndustryIdList)
+//                .filter(CollUtil::isNotEmpty)
+//                .flatMap(Collection::stream) // 将嵌套列表展平为一个流
+//                .map(Long::valueOf)
+//                .distinct()
+//                .collect(Collectors.toList());
+//
+//        pageReqVO.setJobTypes(interestList
+//                .stream()
+//                .map(JobInterestedDO::getJobType)
+//                .collect(Collectors.toList())
+//        );
+//        pageReqVO.setPositionIds(positionIds);
+//        pageReqVO.setIndustryIds(inductionIds);
+//        pageReqVO.setAreaIds(
+//                CollUtil.union(workAreaIds, interestedAreaIds)
+//                        .stream().distinct()
+//                        .collect(Collectors.toList())
+//        );
+//        pageReqVO.setAcquainted(true);
+//        pageReqVO.setTop(false);
+        Long[] ids = graphApi.queryRecommendJob(GraphQueryPageDTO
+                .builder()
+                .id(pageReqVO.getId())
+                .type(GraphQueryPageDTO.JOB)
+                .current(pageReqVO.getPageNo())
+                .size(pageReqVO.getPageSize())
+                .userId(LoginUserContext.getUserId2())
+                .build()
+        ).getCheckedData();
+        pageReqVO.setIds(ids);
         return mapper.selectPage(pageReqVO);
         return mapper.selectPage(pageReqVO);
 
 
 
 
@@ -209,8 +221,19 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
 
     @Override
     @Override
     public PageResult<AppJobAdvertisedHomeRespVO> getAcquaintedPage(AppJobAdvertisedPageReqVO pageReqVO) {
     public PageResult<AppJobAdvertisedHomeRespVO> getAcquaintedPage(AppJobAdvertisedPageReqVO pageReqVO) {
-        pageReqVO.setMark(AppJobAdvertisedPageReqVO.ACQUAINTED);
-        return mapper.selectPage(pageReqVO);
+        if (null != pageReqVO.getId()) {
+            Long[] ids = graphApi.queryMatchJob(GraphQueryPageDTO
+                    .builder()
+                    .id(pageReqVO.getId())
+                    .type(GraphQueryPageDTO.JOB)
+                    .current(pageReqVO.getPageNo())
+                    .size(pageReqVO.getPageSize())
+                    .userId(LoginUserContext.getUserId2())
+                    .build()
+            ).getCheckedData();
+            pageReqVO.setIds(ids);
+        }
+        return mapper.selectPage2(pageReqVO);
     }
     }
 
 
     @Override
     @Override
@@ -333,10 +356,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
 
         producer.send(
         producer.send(
                 new GraphSendDTO(
                 new GraphSendDTO(
-                                SyncConstants.SYNC_ALL,
-                                SyncConstants.JOB,
-                                respList
-                        )
+                        SyncConstants.SYNC_ALL,
+                        SyncConstants.JOB,
+                        respList
+                )
         );
         );
 
 
     }
     }

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

@@ -166,6 +166,7 @@
 1_100_020_001=Enterprise business information does not exist
 1_100_020_001=Enterprise business information does not exist
 1_100_020_002=No company name filled in
 1_100_020_002=No company name filled in
 1_100_020_003=Unified social credit code not filled in
 1_100_020_003=Unified social credit code not filled in
+1_100_020_004=Business license image recognition failed, please upload clear and legal images again
 # ========== 企业注册申请 1_100_021_000 ==========
 # ========== 企业注册申请 1_100_021_000 ==========
 1_100_021_001=The enterprise registration application does not exist
 1_100_021_001=The enterprise registration application does not exist
 1_100_021_002=Enterprise registration application has been approved
 1_100_021_002=Enterprise registration application has been approved

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

@@ -166,6 +166,7 @@
 1_100_020_001=企业工商信息不存在
 1_100_020_001=企业工商信息不存在
 1_100_020_002=未填写企业名称
 1_100_020_002=未填写企业名称
 1_100_020_003=未填写统一社会信用代码
 1_100_020_003=未填写统一社会信用代码
+1_100_020_004=营业执照图片识别失败,请重新上传清晰合法图片
 # ========== 企业注册申请 1_100_021_000 ==========
 # ========== 企业注册申请 1_100_021_000 ==========
 1_100_021_001=企业注册申请不存在
 1_100_021_001=企业注册申请不存在
 1_100_021_002=企业注册申请已审批
 1_100_021_002=企业注册申请已审批