Переглянути джерело

1、增加职位推荐的接口和格式
2、增加职位搜索的接口和格式

rayson 1 рік тому
батько
коміт
8a93021be8
25 змінених файлів з 389 додано та 112 видалено
  1. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpPageReqVO.java
  2. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpRespVO.java
  3. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpSaveReqVO.java
  4. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/contact/AppEnterpriseUserContactRespVO.java
  5. 8 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseSimpleRespVO.java
  6. 21 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobAdvertisedController.java
  7. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppEnterpriseJobHomeRespVO.java
  8. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedDetailRespVO.java
  9. 62 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedPageReqVO.java
  10. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedRespVO.java
  11. 57 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSearchPageReqVO.java
  12. 20 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSearchRespVO.java
  13. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSimpleRespVO.java
  14. 0 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java
  15. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/visits/MdeVisitsDO.java
  16. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/workexp/WorkExpDO.java
  17. 9 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionMapper.java
  18. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/visits/MdeVisitsMapper.java
  19. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/workexp/WorkExpMapper.java
  20. 28 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  21. 101 53
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  22. 33 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java
  23. 9 13
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/visits/MdeVisitsServiceImpl.java
  24. 4 3
      menduner/menduner-system-biz/src/main/resources/application.yaml
  25. 4 4
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/workexp/WorkExpServiceImplTest.java

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

@@ -49,7 +49,7 @@ public class WorkExpPageReqVO extends PageParam {
     private LocalDateTime[] endTime;
 
     @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
-    private Integer payType;
+    private Integer payUnit;
 
     @Schema(description = "货币类型", example = "2")
     private Integer currencyType;

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

@@ -76,7 +76,7 @@ public class WorkExpRespVO {
     @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
     @ExcelProperty(value = "薪酬类型(0月薪 1年薪)", converter = DictConvert.class)
     @DictFormat(MENDUNER_PAY_TYPE)
-    private Integer payType;
+    private Integer payUnit;
 
     @Schema(description = "货币类型", example = "2")
     @ExcelProperty(value = "货币类型", converter = DictConvert.class)

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

@@ -53,7 +53,7 @@ public class WorkExpSaveReqVO {
     private BigDecimal pay;
 
     @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
-    private Integer payType;
+    private Integer payUnit;
 
     @Schema(description = "货币类型", example = "2")
     private Integer currencyType;

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/contact/AppEnterpriseUserContactRespVO.java

@@ -19,6 +19,9 @@ public class AppEnterpriseUserContactRespVO {
     @Schema(description = "联系人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "9592")
     private String name;
 
+    @Schema(description = "状态,是否在线", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
+    private Integer status;
+
     @Schema(description = "岗位中文名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "人事")
     private String postNameCn;
 

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

@@ -3,6 +3,8 @@ package com.citu.module.menduner.system.controller.app.enterprise.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @Schema(description = "menduner - 首页-企业简易 Response VO")
 public class AppEnterpriseSimpleRespVO {
@@ -26,5 +28,10 @@ public class AppEnterpriseSimpleRespVO {
     private Integer financingStatus;
 
     @Schema(description = "企业logo地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.menduner.com/static/img/loginlogo2.7924c12.png")
-    private String logo_url;
+    private String logoUrl;
+
+    @Schema(description = "公司福利", requiredMode = Schema.RequiredMode.REQUIRED, example = "[]")
+    private List<String> welfareList;
+
+
 }

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

@@ -3,9 +3,7 @@ package com.citu.module.menduner.system.controller.app.job;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.*;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -33,22 +31,22 @@ public class AppJobAdvertisedController {
 
     @GetMapping("/get/recommended")
     @Operation(summary = "获取推荐招聘职位分页")
-    public CommonResult<PageResult<AppJobHomeRespVO>> getRecommendedJobPage(@Valid PageParam pageParam) {
-        PageResult<AppJobHomeRespVO> result = jobAdvertisedService.getRecommendedJobPage(pageParam);
+    public CommonResult<PageResult<AppJobAdvertisedRespVO>> getRecommendedJobPage(@Valid PageParam pageParam) {
+        PageResult<AppJobAdvertisedRespVO> result = jobAdvertisedService.getRecommendedJobPage(pageParam);
         return success(result);
     }
 
     @GetMapping("/get/latest")
     @Operation(summary = "获取最新招聘职位分页")
-    public CommonResult<PageResult<AppJobHomeRespVO>> getLatestJobPage(@Valid PageParam pageParam) {
-        PageResult<AppJobHomeRespVO> result = jobAdvertisedService.getLatestJobPage(pageParam);
+    public CommonResult<PageResult<AppJobAdvertisedRespVO>> getLatestJobPage(@Valid PageParam pageParam) {
+        PageResult<AppJobAdvertisedRespVO> result = jobAdvertisedService.getLatestJobPage(pageParam);
         return success(result);
     }
 
     @GetMapping("/get/urgent")
     @Operation(summary = "获取急聘招聘职位分页")
-    public CommonResult<PageResult<AppJobHomeRespVO>> getUrgentJobPage(@Valid PageParam pageParam) {
-        PageResult<AppJobHomeRespVO> result = jobAdvertisedService.getUrgentJobPage(pageParam);
+    public CommonResult<PageResult<AppJobAdvertisedRespVO>> getUrgentJobPage(@Valid PageParam pageParam) {
+        PageResult<AppJobAdvertisedRespVO> result = jobAdvertisedService.getUrgentJobPage(pageParam);
         return success(result);
     }
 
@@ -66,4 +64,18 @@ public class AppJobAdvertisedController {
         return success(respVO);
     }
 
+    @GetMapping("/get/acquainted")
+    @Operation(summary = "获取推荐招聘职位信息")
+    public CommonResult<PageResult<AppJobAdvertisedRespVO>> getJobAdvertisedDetail(@Valid AppJobAdvertisedPageReqVO pageReqVO) {
+        PageResult<AppJobAdvertisedRespVO> respVO = jobAdvertisedService.getAcquaintedJobAdvertised(pageReqVO);
+        return success(respVO);
+    }
+
+    @GetMapping("/get/search")
+    @Operation(summary = "根据条件搜索职位")
+    public CommonResult<PageResult<AppJobAdvertisedSearchRespVO>> getAcquaintedJobAdvertised(@Valid AppJobAdvertisedSearchPageReqVO pageReqVO) {
+        PageResult<AppJobAdvertisedSearchRespVO> respVO = jobAdvertisedService.getAcquaintedJobAdvertised(pageReqVO);
+        return success(respVO);
+    }
+
 }

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

@@ -17,6 +17,6 @@ import java.util.List;
 public class AppEnterpriseJobHomeRespVO extends AppEnterpriseSimpleRespVO {
 
     @Schema(description = "企业发布职位", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
-    private List<AppJobSimpleRespVO> jobList;
+    private List<AppJobAdvertisedSimpleRespVO> jobList;
 
 }

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

@@ -86,6 +86,9 @@ public class AppJobAdvertisedDetailRespVO {
     @Schema(description = "企业信息")
     private AppEnterpriseSimpleRespVO enterprise;
 
+    @Schema(description = "企业在招职位数量")
+    private Integer jobAdvertisedNum;
+
     @Schema(description = "招聘联系人信息")
     private AppEnterpriseUserContactRespVO contact;
 

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

@@ -0,0 +1,62 @@
+package com.citu.module.menduner.system.controller.app.job.vo;
+
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "menduner - 招聘职位分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class AppJobAdvertisedPageReqVO extends PageParam {
+
+    @Schema(description = "企业id", example = "29465")
+    private Long enterpriseId;
+
+    @Schema(description = "发布用户id", example = "9592")
+    private Long userId;
+
+    @Schema(description = "工作地区", example = "25976")
+    private Long areaId;
+
+    @Schema(description = "职位名称", example = "张三")
+    private String name;
+
+    @Schema(description = "职位类型id", example = "31707")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", example = "2")
+    private Integer type;
+
+    @Schema(description = "工作经验", example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历要求", example = "1")
+    private Integer eduType;
+
+    @Schema(description = "职位标签")
+    private List<String> tagList;
+
+    @Schema(description = "职位内容")
+    private String content;
+
+    @Schema(description = "职位要求")
+    private String requirement;
+
+    @Schema(description = "职位状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobHomeRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedRespVO.java

@@ -5,7 +5,7 @@ import lombok.Data;
 
 @Schema(description = "menduner - 首页-招聘职位 Response VO")
 @Data
-public class AppJobHomeRespVO extends AppJobSimpleRespVO {
+public class AppJobAdvertisedRespVO extends AppJobAdvertisedSimpleRespVO {
 
 
     @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
@@ -17,11 +17,11 @@ public class AppJobHomeRespVO extends AppJobSimpleRespVO {
     @Schema(description = "所在行业", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
     private Long industryId;
 
-    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @Schema(description = "人员规模(menduner_scale)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer scale;
 
     @Schema(description = "企业logo地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.menduner.com/static/img/loginlogo2.7924c12.png")
-    private String logo_url;
+    private String logoUrl;
 
 
 }

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

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.system.controller.app.job.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.List;
+
+
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@Schema(description = "menduner - 职位-检索 Request VO")
+public class AppJobAdvertisedSearchPageReqVO extends PageParam {
+
+    // ========== 搜索条件 ==========
+    @Schema(description = "搜索内容", example = "xx科技/xx经理")
+    private String content;
+
+    // ========== 发布职位相关 ==========
+    @Schema(description = "工作地区id集合", example = "[]")
+    private List<Long> areaIds;
+
+    @Schema(description = "工作经验(menduner_exp_type)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历要求(menduner_education_type)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer eduType;
+
+    @Schema(description = "薪酬待遇范围(menduner_pay_scope)", requiredMode = Schema.RequiredMode.REQUIRED, example = "12")
+    private Integer payType;
+
+    @Schema(description = "求职类型(menduner_job_type)", example = "2")
+    private Integer jobType;
+
+    @Schema(description = "职位类型", example = "2")
+    private Long positionId;
+
+
+    // ========== 企业相关 ==========
+
+    @Schema(description = "企业类型(menduner_enterprise_type)", example = "[]")
+    private Integer enterpriseType;
+
+    @Schema(description = "行业信息id集合", example = "[]")
+    private List<Long> industryIds;
+
+    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer scale;
+
+    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer financingStatus;
+
+
+}

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

@@ -0,0 +1,20 @@
+package com.citu.module.menduner.system.controller.app.job.vo;
+
+import com.citu.module.menduner.system.controller.app.contact.AppEnterpriseUserContactRespVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 职位-检索 Response VO")
+@Data
+public class AppJobAdvertisedSearchRespVO {
+
+    @Schema(description = "招聘职位信息")
+    private AppJobAdvertisedSimpleRespVO job;
+
+    @Schema(description = "招聘企业信息")
+    private AppEnterpriseSimpleRespVO enterprise;
+
+    @Schema(description = "招聘联系人信息")
+    private AppEnterpriseUserContactRespVO contact;
+}

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

@@ -8,7 +8,7 @@ import java.util.List;
 
 @Schema(description = "menduner - 首页-职位简易 Response VO")
 @Data
-public class AppJobSimpleRespVO {
+public class AppJobAdvertisedSimpleRespVO {
 
     @Schema(description = "职位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
     private Long id;

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

@@ -55,7 +55,6 @@ public class AppPositionController {
 
     @GetMapping("/list")
     @Operation(summary = "获得职位列表")
-    @PreAuthenticated
     public CommonResult<List<AppPositionSimpleRespVO>> getPositionList(@Valid AppPositionListReqVO reqVO) {
         List<AppPositionSimpleRespVO> list = positionService.getPositionList(reqVO);
         return success(list);
@@ -63,7 +62,6 @@ public class AppPositionController {
 
     @GetMapping("/hot")
     @Operation(summary = "获取热门职位")
-    @PreAuthenticated
     public CommonResult<List<AppPositionSimpleRespVO>> getHotPosition() {
         List<AppPositionSimpleRespVO> list = positionService.getHotPosition();
         return success(list);

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

@@ -21,7 +21,7 @@ import java.time.LocalDateTime;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class MdeVisitsDO extends BaseDO {
+public class  MdeVisitsDO extends BaseDO {
 
     /**
      * ID

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

@@ -85,7 +85,7 @@ public class WorkExpDO extends BaseDO {
      * <p>
      * 枚举 {@link PayTypeEnum 对应的类}
      */
-    private Integer payType;
+    private Integer payUnit;
     /**
      * 货币类型 (0人民币 1美元 2欧元)
      * <p>

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

@@ -6,9 +6,9 @@ import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionListReqVO;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionPageReqVO;
 import com.citu.module.menduner.system.controller.app.position.vo.AppPositionListReqVO;
-import com.citu.module.menduner.system.dal.dataobject.industry.IndustryDO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.Collection;
 import java.util.List;
@@ -64,4 +64,12 @@ public interface PositionMapper extends BaseMapperX<PositionDO> {
      **/
     Integer truncate();
 
+    /**
+     * 根据层级随机获取十条数据
+     * @param level
+     * @return List<PositionDO>
+     **/
+    @Select("SELECT * FROM mde_position Where level =#{level}  ORDER BY RAND() LIMIT 10")
+    List<PositionDO> getRandomTenByLevel(Integer level);
+
 }

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

@@ -9,6 +9,9 @@ import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsPageR
 import com.citu.module.menduner.system.dal.dataobject.visits.MdeVisitsDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -42,4 +45,17 @@ public interface MdeVisitsMapper extends BaseMapperX<MdeVisitsDO> {
         );
 
     }
+
+    default MdeVisitsDO getMdeVisitsByUserIdAndTypeAndBizIdAndDate(Long userId, Integer type, Long bizId, LocalDateTime date) {
+        LambdaQueryWrapperX<MdeVisitsDO> wrapperX =  new LambdaQueryWrapperX<MdeVisitsDO>()
+                .eq(MdeVisitsDO::getType, type)
+                .eq(MdeVisitsDO::getBizId, bizId)
+                .eq(MdeVisitsDO::getDate, date.format(DateTimeFormatter.ofPattern(DateUtils.FORMAT_YEAR_MONTH_DAY)));
+        if(null == userId) {
+            wrapperX.isNull(MdeVisitsDO::getUserId);
+        }else{
+            wrapperX.eq(MdeVisitsDO::getUserId,userId);
+        }
+        return selectOne(wrapperX);
+    }
 }

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

@@ -26,7 +26,7 @@ public interface WorkExpMapper extends BaseMapperX<WorkExpDO> {
                 .likeRightIfPresent(WorkExpDO::getPositionName, reqVO.getPositionName())
                 .betweenIfPresent(WorkExpDO::getStartTime, reqVO.getStartTime())
                 .betweenIfPresent(WorkExpDO::getEndTime, reqVO.getEndTime())
-                .eqIfPresent(WorkExpDO::getPayType, reqVO.getPayType())
+                .eqIfPresent(WorkExpDO::getPayUnit, reqVO.getPayUnit())
                 .eqIfPresent(WorkExpDO::getCurrencyType, reqVO.getCurrencyType())
                 .betweenIfPresent(WorkExpDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(WorkExpDO::getId));

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

@@ -1,15 +1,14 @@
 package com.citu.module.menduner.system.service.job;
 
 
-import java.util.*;
-import javax.validation.*;
-import com.citu.module.menduner.system.controller.admin.job.vo.*;
-import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobHomeRespVO;
-import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
-import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedPageReqVO;
+import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedSaveReqVO;
+import com.citu.module.menduner.system.controller.app.job.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
+
+import javax.validation.Valid;
 
 /**
  * 门墩儿-招聘职位 Service 接口
@@ -58,27 +57,31 @@ public interface JobAdvertisedService {
 
     /**
      * 获取推荐招聘职位分页
+     *
      * @param pageParam 分页
      * @return 门墩儿-招聘职位分页
      **/
-    PageResult<AppJobHomeRespVO> getRecommendedJobPage(PageParam pageParam);
+    PageResult<AppJobAdvertisedRespVO> getRecommendedJobPage(PageParam pageParam);
 
     /**
      * 获取最新招聘职位分页
+     *
      * @param pageParam 分页
      * @return 门墩儿-招聘职位分页
      **/
-    PageResult<AppJobHomeRespVO> getLatestJobPage(PageParam pageParam);
+    PageResult<AppJobAdvertisedRespVO> getLatestJobPage(PageParam pageParam);
 
     /**
      * 获取急聘招聘职位分页
+     *
      * @param pageParam 分页
      * @return 门墩儿-招聘职位分页
      **/
-    PageResult<AppJobHomeRespVO> getUrgentJobPage(PageParam pageParam);
+    PageResult<AppJobAdvertisedRespVO> getUrgentJobPage(PageParam pageParam);
 
     /**
      * 获取热门企业的职位分页
+     *
      * @param pageParam 分页
      * @return 门墩儿-招聘职位分页
      **/
@@ -86,8 +89,22 @@ public interface JobAdvertisedService {
 
     /**
      * 获取职位详情
+     *
      * @param id 职位id
      * @return 门墩儿-招聘职位详情
      **/
     AppJobAdvertisedDetailRespVO getJobAdvertisedDetail(Long id);
+
+    /**
+     * 获取相识职位信息
+     *
+     * @return 门墩儿-招聘职位简易列表
+     **/
+    PageResult<AppJobAdvertisedRespVO> getAcquaintedJobAdvertised(AppJobAdvertisedPageReqVO pageReqVO);
+
+    /**
+     * 根据条件搜索职位
+     * @return 门墩儿-招聘职位列表
+     **/
+    PageResult<AppJobAdvertisedSearchRespVO> getAcquaintedJobAdvertised(AppJobAdvertisedSearchPageReqVO reqVO);
 }

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

@@ -9,14 +9,12 @@ import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedPage
 import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedSaveReqVO;
 import com.citu.module.menduner.system.controller.app.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobHomeRespVO;
-import com.citu.module.menduner.system.controller.app.job.vo.AppJobSimpleRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.*;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.service.visits.MdeVisitsService;
+import io.swagger.v3.oas.annotations.media.Schema;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -41,10 +39,6 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     @Resource
     private JobAdvertisedMapper jobAdvertisedMapper;
 
-
-    @Resource
-    private MdeVisitsService visitsService;
-
     @Override
     public Long createJobAdvertised(JobAdvertisedSaveReqVO createReqVO) {
         // 插入
@@ -87,17 +81,17 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         return jobAdvertisedMapper.selectPage(pageReqVO);
     }
 
-    public PageResult<AppJobHomeRespVO> generate() {
-        PageResult<AppJobHomeRespVO> result = new PageResult<>();
-        List<AppJobHomeRespVO> list = new ArrayList<>();
+    public PageResult<AppJobAdvertisedRespVO> generate() {
+        PageResult<AppJobAdvertisedRespVO> result = new PageResult<>();
+        List<AppJobAdvertisedRespVO> list = new ArrayList<>();
 
-        AppJobHomeRespVO respVO1 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO1 = new AppJobAdvertisedRespVO();
         respVO1.setId(1L);
         respVO1.setAreaId(110000L);
         respVO1.setPositionId(1L);
         respVO1.setPayFrom(BigDecimal.valueOf(5));
         respVO1.setPayTo(BigDecimal.valueOf(12));
-        respVO1.setPayUnit(0);
+        respVO1.setPayUnit(2);
         respVO1.setName("项目经理");
         respVO1.setExpType(0);
         respVO1.setEduType(0);
@@ -106,10 +100,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO1.setAnotherName("门墩儿科技");
         respVO1.setIndustryId(1L);
         respVO1.setScale(0);
-        respVO1.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO1.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO1);
 
-        AppJobHomeRespVO respVO2 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO2 = new AppJobAdvertisedRespVO();
         respVO2.setId(2L);
         respVO2.setAreaId(440100L);
         respVO2.setPositionId(2L);
@@ -124,17 +118,17 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO2.setAnotherName("门墩儿科技");
         respVO2.setIndustryId(2L);
         respVO2.setScale(1);
-        respVO2.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO2.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO2);
 
 
-        AppJobHomeRespVO respVO3 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO3 = new AppJobAdvertisedRespVO();
         respVO3.setId(3L);
         respVO3.setAreaId(440300L);
         respVO3.setPositionId(3L);
         respVO3.setPayFrom(BigDecimal.valueOf(18));
         respVO3.setPayTo(BigDecimal.valueOf(22));
-        respVO3.setPayUnit(0);
+        respVO3.setPayUnit(3);
         respVO3.setName("网管");
         respVO3.setExpType(2);
         respVO3.setEduType(2);
@@ -143,10 +137,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO3.setAnotherName("门墩儿科技");
         respVO3.setIndustryId(3L);
         respVO3.setScale(2);
-        respVO3.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO3.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO3);
 
-        AppJobHomeRespVO respVO4 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO4 = new AppJobAdvertisedRespVO();
         respVO4.setId(4L);
         respVO4.setAreaId(440600L);
         respVO4.setPositionId(4L);
@@ -161,10 +155,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO4.setAnotherName("门墩儿科技");
         respVO4.setIndustryId(4L);
         respVO4.setScale(3);
-        respVO4.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO4.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO4);
 
-        AppJobHomeRespVO respVO5 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO5 = new AppJobAdvertisedRespVO();
         respVO5.setId(5L);
         respVO5.setAreaId(441200L);
         respVO5.setPositionId(5L);
@@ -179,16 +173,16 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO5.setAnotherName("门墩儿科技");
         respVO5.setIndustryId(5L);
         respVO5.setScale(4);
-        respVO5.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO5.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO5);
 
-        AppJobHomeRespVO respVO6 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO6 = new AppJobAdvertisedRespVO();
         respVO6.setId(6L);
         respVO6.setAreaId(440800L);
         respVO6.setPositionId(6L);
         respVO6.setPayFrom(BigDecimal.valueOf(100));
         respVO6.setPayTo(BigDecimal.valueOf(200));
-        respVO6.setPayUnit(0);
+        respVO6.setPayUnit(3);
         respVO6.setName("软件开发工程师");
         respVO6.setExpType(5);
         respVO6.setEduType(5);
@@ -197,11 +191,11 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO6.setAnotherName("门墩儿科技");
         respVO6.setIndustryId(6L);
         respVO6.setScale(5);
-        respVO6.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO6.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO6);
 
 
-        AppJobHomeRespVO respVO7 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO7 = new AppJobAdvertisedRespVO();
         respVO7.setId(7L);
         respVO7.setAreaId(441900L);
         respVO7.setPositionId(7L);
@@ -216,11 +210,11 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO7.setAnotherName("门墩儿科技");
         respVO7.setIndustryId(6L);
         respVO7.setScale(5);
-        respVO7.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO7.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO7);
 
 
-        AppJobHomeRespVO respVO8 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO8 = new AppJobAdvertisedRespVO();
         respVO8.setId(8L);
         respVO8.setAreaId(441700L);
         respVO8.setPositionId(8L);
@@ -235,10 +229,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO8.setAnotherName("门墩儿科技");
         respVO8.setIndustryId(8L);
         respVO8.setScale(5);
-        respVO8.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO8.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO8);
 
-        AppJobHomeRespVO respVO9 = new AppJobHomeRespVO();
+        AppJobAdvertisedRespVO respVO9 = new AppJobAdvertisedRespVO();
         respVO9.setId(9L);
         respVO9.setAreaId(445300L);
         respVO9.setPositionId(9L);
@@ -253,7 +247,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO9.setAnotherName("门墩儿科技");
         respVO9.setIndustryId(9L);
         respVO9.setScale(5);
-        respVO8.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        respVO8.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO9);
 
         result.setList(list);
@@ -263,17 +257,17 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
     @Override
-    public PageResult<AppJobHomeRespVO> getRecommendedJobPage(PageParam pageParam) {
+    public PageResult<AppJobAdvertisedRespVO> getRecommendedJobPage(PageParam pageParam) {
         return generate();
     }
 
     @Override
-    public PageResult<AppJobHomeRespVO> getLatestJobPage(PageParam pageParam) {
+    public PageResult<AppJobAdvertisedRespVO> getLatestJobPage(PageParam pageParam) {
         return generate();
     }
 
     @Override
-    public PageResult<AppJobHomeRespVO> getUrgentJobPage(PageParam pageParam) {
+    public PageResult<AppJobAdvertisedRespVO> getUrgentJobPage(PageParam pageParam) {
         return generate();
     }
 
@@ -288,35 +282,35 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO1.setIndustryId(1L);
         respVO1.setScale(0);
         respVO1.setFinancingStatus(0);
-        respVO1.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-        List<AppJobSimpleRespVO> list1 = new ArrayList<>();
-        AppJobSimpleRespVO job1 = new AppJobHomeRespVO();
+        respVO1.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        List<AppJobAdvertisedSimpleRespVO> list1 = new ArrayList<>();
+        AppJobAdvertisedSimpleRespVO job1 = new AppJobAdvertisedRespVO();
         job1.setId(1L);
         job1.setAreaId(110000L);
         job1.setPositionId(1L);
-        job1.setPayFrom(BigDecimal.valueOf(5));
-        job1.setPayTo(BigDecimal.valueOf(12));
-        job1.setPayUnit(0);
+        job1.setPayFrom(BigDecimal.valueOf(5000));
+        job1.setPayTo(BigDecimal.valueOf(12000));
+        job1.setPayUnit(1);
         job1.setName("项目经理");
         job1.setExpType(0);
         job1.setEduType(0);
         job1.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
         list1.add(job1);
 
-        AppJobSimpleRespVO job2 = new AppJobHomeRespVO();
+        AppJobAdvertisedSimpleRespVO job2 = new AppJobAdvertisedRespVO();
         job2.setId(2L);
         job2.setAreaId(440100L);
         job2.setPositionId(2L);
-        job2.setPayFrom(BigDecimal.valueOf(18));
-        job2.setPayTo(BigDecimal.valueOf(22));
-        job2.setPayUnit(1);
+        job2.setPayFrom(BigDecimal.valueOf(900));
+        job2.setPayTo(BigDecimal.valueOf(2200));
+        job2.setPayUnit(2);
         job2.setName("车间主任");
         job2.setExpType(1);
         job2.setEduType(1);
         job2.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
         list1.add(job1);
 
-        AppJobSimpleRespVO job3 = new AppJobHomeRespVO();
+        AppJobAdvertisedSimpleRespVO job3 = new AppJobAdvertisedRespVO();
         job3.setId(8L);
         job3.setAreaId(441700L);
         job3.setPositionId(8L);
@@ -339,22 +333,22 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO2.setIndustryId(33L);
         respVO2.setScale(0);
         respVO2.setFinancingStatus(6);
-        respVO2.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-        List<AppJobSimpleRespVO> list2 = new ArrayList<>();
-        AppJobSimpleRespVO job4 = new AppJobHomeRespVO();
+        respVO2.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        List<AppJobAdvertisedSimpleRespVO> list2 = new ArrayList<>();
+        AppJobAdvertisedSimpleRespVO job4 = new AppJobAdvertisedRespVO();
         job4.setId(1L);
         job4.setAreaId(110000L);
         job4.setPositionId(1L);
         job4.setPayFrom(BigDecimal.valueOf(5));
         job4.setPayTo(BigDecimal.valueOf(12));
-        job4.setPayUnit(0);
+        job4.setPayUnit(2);
         job4.setName("项目经理");
         job4.setExpType(0);
         job4.setEduType(0);
         job4.setTagList(new ArrayList<>());
         list2.add(job4);
 
-        AppJobSimpleRespVO job5 = new AppJobHomeRespVO();
+        AppJobAdvertisedSimpleRespVO job5 = new AppJobAdvertisedRespVO();
         job5.setId(2L);
         job5.setAreaId(440100L);
         job5.setPositionId(2L);
@@ -388,7 +382,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO.setPositionId(1L);
         respVO.setPayFrom(BigDecimal.valueOf(5));
         respVO.setPayTo(BigDecimal.valueOf(12));
-        respVO.setPayUnit(0);
+        respVO.setPayUnit(2);
         respVO.setName("项目经理");
         respVO.setExpType(0);
         respVO.setEduType(0);
@@ -426,9 +420,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         enterpriseSimpleRespVO.setIndustryId(1L);
         enterpriseSimpleRespVO.setScale(0);
         enterpriseSimpleRespVO.setFinancingStatus(0);
-        enterpriseSimpleRespVO.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+        enterpriseSimpleRespVO.setLogoUrl("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
 
         respVO.setEnterprise(enterpriseSimpleRespVO);
+        respVO.setJobAdvertisedNum(9);
 
         AppEnterpriseUserContactRespVO contactRespVO = new AppEnterpriseUserContactRespVO();
         contactRespVO.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");
@@ -443,4 +438,57 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
         return respVO;
     }
+
+    @Override
+    public PageResult<AppJobAdvertisedRespVO> getAcquaintedJobAdvertised(AppJobAdvertisedPageReqVO pageReqVO) {
+        return generate();
+    }
+
+    @Override
+    public PageResult<AppJobAdvertisedSearchRespVO> getAcquaintedJobAdvertised(AppJobAdvertisedSearchPageReqVO reqVO) {
+
+        PageResult<AppJobAdvertisedSearchRespVO> result =new PageResult<>();
+        List<AppJobAdvertisedSearchRespVO> list =new ArrayList<>();
+        AppJobAdvertisedSearchRespVO respVO =new AppJobAdvertisedSearchRespVO();
+
+        AppJobAdvertisedSimpleRespVO job=new AppJobAdvertisedRespVO();
+        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);
+
+
+        list.add(respVO);
+        result.setList(list);
+        result.setTotal(1L);
+        return result;
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.service.position;
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionListReqVO;
@@ -30,6 +31,7 @@ import org.springframework.web.client.RestTemplate;
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.util.collection.CollectionUtils.convertSet;
@@ -235,11 +237,38 @@ public class PositionServiceImpl implements PositionService {
                         .build()
         );
 
-        if (CollUtil.isNotEmpty(idList)) {
-            List<PositionDO> positionDOList = positionMapper.selectListByIdList(idList);
-            return PositionConvert.INSTANCE.convertList2(positionDOList);
+        // 推荐数据的数量
+        Integer num = 10;
+        // 职位的层级深度
+        Integer level = 3;
+
+        // 该用户(包括访客)没有埋点
+        if (CollectionUtils.isNotEmpty(idList)) {
+            // 随机十条,深度为{level}的数据
+            return PositionConvert.INSTANCE.convertList2(positionMapper.getRandomTenByLevel(level));
+
         }
-        return Collections.emptyList();
+
+        // 埋点数据不够
+        if (idList.size() < num) {
+            // 随机十条,深度为{level}的数据
+            List<PositionDO> positionDOList1 = positionMapper.getRandomTenByLevel(level);
+            // 找出埋点的职位数据
+            List<PositionDO> positionDOList2 = positionMapper.selectListByIdList(idList);
+            // 合并数据
+            List<PositionDO> mergedList =  Stream.concat(
+                    // positionDOList1 取前 (idList.size() - positionDOList1.size())条数据
+                    positionDOList1.stream()
+                         .limit(idList.size() - positionDOList1.size()).collect(Collectors.toList()).stream(),
+                    // positionDOList2 数据
+                    positionDOList2.stream()
+            ).collect(Collectors.toList());
+            return PositionConvert.INSTANCE.convertList2(mergedList);
+        }
+
+        // 该用户(包括访客)有埋点数据的情况
+        List<PositionDO> positionDOList = positionMapper.selectListByIdList(idList);
+        return PositionConvert.INSTANCE.convertList2(positionDOList);
     }
 
     @Override

+ 9 - 13
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/visits/MdeVisitsServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -86,21 +87,16 @@ public class MdeVisitsServiceImpl implements MdeVisitsService {
 
         Long userId = getLoginUserId();
 
-        MdeVisitsDO visitsDO = mdeVisitsMapper.selectOne(new LambdaQueryWrapperX<MdeVisitsDO>()
-                .eq(MdeVisitsDO::getUserId, null == userId ? 0 : userId)
-                .eq(MdeVisitsDO::getType, reqVO.getType())
-                .eq(MdeVisitsDO::getBizId, reqVO.getBizId())
-                .eq(MdeVisitsDO::getDate, DateUtils.of(reqVO.getDate()))
-        );
+        MdeVisitsDO visitsDO = mdeVisitsMapper.
+                getMdeVisitsByUserIdAndTypeAndBizIdAndDate(userId, reqVO.getType(), reqVO.getBizId(), reqVO.getDate());
         if (null == visitsDO) {
             // 新增
-            MdeVisitsDO visits = MdeVisitsDO.builder()
-                    .userId(userId)
-                    .type(reqVO.getType())
-                    .bizId(reqVO.getBizId())
-                    .date(reqVO.getDate())
-                    .count(0)
-                    .build();
+            MdeVisitsDO visits = new MdeVisitsDO();
+            visits.setUserId(userId);
+            visits.setType(reqVO.getType());
+            visits.setBizId(reqVO.getBizId());
+            visits.setDate(reqVO.getDate());
+            visits.setCount(1);
             mdeVisitsMapper.insert(visits);
             return;
         }

+ 4 - 3
menduner/menduner-system-biz/src/main/resources/application.yaml

@@ -49,21 +49,22 @@ knife4j:
 mybatis-plus:
   configuration:
     map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志
   global-config:
     db-config:
-      id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
+      id-type: ASSIGN_ID # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
       #      id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
       #      id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
       #      id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
       logic-delete-value: 1 # 逻辑已删除值(默认为 1)
       logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
-    banner: false # 关闭控制台的 Banner 打印
+    banner: true # 关闭控制台的 Banner 打印
   type-aliases-package: ${citu.info.base-package}.dal.dataobject
   encryptor:
     password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成
 
 mybatis-plus-join:
-  banner: false # 关闭控制台的 Banner 打印
+  banner: true # 关闭控制台的 Banner 打印
 
 # Spring Data Redis 配置
 spring:

+ 4 - 4
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/workexp/WorkExpServiceImplTest.java

@@ -113,7 +113,7 @@ public class WorkExpServiceImplTest extends BaseDbUnitTest {
            o.setPositionName(null);
            o.setStartTime(null);
            o.setEndTime(null);
-           o.setPayType(null);
+           o.setPayUnit(null);
            o.setCurrencyType(null);
            o.setCreateTime(null);
        });
@@ -136,8 +136,8 @@ public class WorkExpServiceImplTest extends BaseDbUnitTest {
        workExpMapper.insert(cloneIgnoreId(dbWorkExp, o -> o.setStartTime(null)));
        // 测试 endTime 不匹配
        workExpMapper.insert(cloneIgnoreId(dbWorkExp, o -> o.setEndTime(null)));
-       // 测试 payType 不匹配
-       workExpMapper.insert(cloneIgnoreId(dbWorkExp, o -> o.setPayType(null)));
+       // 测试 payUnit 不匹配
+       workExpMapper.insert(cloneIgnoreId(dbWorkExp, o -> o.setPayUnit(null)));
        // 测试 currencyType 不匹配
        workExpMapper.insert(cloneIgnoreId(dbWorkExp, o -> o.setCurrencyType(null)));
        // 测试 createTime 不匹配
@@ -153,7 +153,7 @@ public class WorkExpServiceImplTest extends BaseDbUnitTest {
        reqVO.setPositionName(null);
        reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
        reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-       reqVO.setPayType(null);
+       reqVO.setPayUnit(null);
        reqVO.setCurrencyType(null);
        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));