Browse Source

1、优化任务查询接口
2、优化long序列化

rayson 9 months ago
parent
commit
052e0a1317
27 changed files with 279 additions and 155 deletions
  1. 4 4
      citu-framework/citu-spring-boot-starter-web/src/main/java/com/citu/framework/jackson/config/CituJacksonAutoConfiguration.java
  2. 4 4
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/dto/TimeRangeBasePageReqVO.java
  3. 33 0
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/dto/TimeRangeBaseReqVO.java
  4. 86 0
      menduner/menduner-common/src/main/java/com/citu/module/menduner/common/util/TimeUtils.java
  5. 5 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/event/EventTrackController.java
  6. 3 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/PointRuleConfigSaveReqVO.java
  7. 18 0
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/TaskReqVO.java
  8. 1 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/config/TaskRespVO.java
  9. 5 3
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/dal/mysql/config/PointRuleConfigMapper.java
  10. 3 1
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/config/PointRuleConfigService.java
  11. 3 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/config/PointRuleConfigServiceImpl.java
  12. 3 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackService.java
  13. 25 2
      menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/event/EventTrackServiceImpl.java
  14. 13 15
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/analysis/AnalysisController.java
  15. 14 16
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/recruit/analysis/AppRecruitAnalysisController.java
  16. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitAnalysisPageReqVO.java
  17. 1 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseDO.java
  18. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java
  19. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  20. 6 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobCvRelMapper.java
  21. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java
  22. 16 21
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java
  23. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  24. 5 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  25. 7 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelService.java
  26. 8 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java
  27. 1 38
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/RecruitAnalysisUtils.java

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

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

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

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

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

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

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

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

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

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

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

@@ -1,12 +1,12 @@
 package com.citu.module.menduner.reward.controller.base.config;
 
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.citu.module.menduner.reward.dal.dataobject.config.Condition;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
+import lombok.Data;
 
-import javax.validation.constraints.*;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 
 @Schema(description = "管理后台 - 积分规则配置新增/修改 Request VO")
 @Data

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

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

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

@@ -4,7 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-@Schema(description = "推荐任务 Response VO")
+@Schema(description = "任务 Response VO")
 @Data
 @ExcelIgnoreUnannotated
 public class TaskRespVO {

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

@@ -11,6 +11,7 @@ import com.citu.module.menduner.reward.dal.dataobject.event.EventRecordDO;
 import com.citu.module.menduner.reward.enums.config.PointRuleConfigStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -67,10 +68,10 @@ public interface PointRuleConfigMapper extends BaseMapperX<PointRuleConfigDO> {
      * 查询任务
      *
      * @param userId 用户id
-     * @param type 事件类型
-     * @param mark 标记
+     * @param type   事件类型
+     * @param mark   标记
      */
-    default List<TaskRespVO> selectTask(Long userId, String type,String mark) {
+    default List<TaskRespVO> selectTask(Long userId, String type, String mark, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<PointRuleConfigDO> query = new MPJLambdaWrapperX<>();
         query.selectAs(PointRuleConfigDO::getTitle, TaskRespVO::getTitle);
         query.selectAs(PointRuleConfigDO::getUrl, TaskRespVO::getUrl);
@@ -85,6 +86,7 @@ public interface PointRuleConfigMapper extends BaseMapperX<PointRuleConfigDO> {
         query.leftJoin(EventRecordDO.class, on -> on
                 .eq(EventRecordDO::getUrl, PointRuleConfigDO::getUrl)
                 .eq(EventRecordDO::getUserId, userId)
+                .between(null != startTime && null != endTime,EventRecordDO::getCreateTime, startTime, endTime)
         );
 
         // 增加条件

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

@@ -7,6 +7,7 @@ import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.dal.dataobject.config.PointRuleConfigDO;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -64,6 +65,7 @@ public interface PointRuleConfigService {
 
     /**
      * 获取已上线的积分规则配置
+     *
      * @return 积分规则配置集合
      */
     List<PointRuleConfigDO> selectDistinctUrlList();
@@ -81,5 +83,5 @@ public interface PointRuleConfigService {
     /**
      * 获取任务
      **/
-    List<TaskRespVO> selectTask(Long userId, String type, String mark);
+    List<TaskRespVO> selectTask(Long userId, String type, String mark, LocalDateTime startTime, LocalDateTime endTime);
 }

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

@@ -20,6 +20,7 @@ import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -178,7 +179,7 @@ public class PointRuleConfigServiceImpl implements PointRuleConfigService {
     }
 
     @Override
-    public List<TaskRespVO> selectTask(Long userId, String type, String mark) {
-        return mapper.selectTask(userId, type, mark);
+    public List<TaskRespVO> selectTask(Long userId, String type, String mark, LocalDateTime startTime, LocalDateTime endTime) {
+        return mapper.selectTask(userId, type, mark,  startTime,  endTime);
     }
 }

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

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.reward.service.event;
 
 import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskReqVO;
 import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
@@ -32,7 +33,7 @@ public interface EventTrackService {
 
     /**
      * 根据标记值获取标记事件的任务
-     * @param mark 标记值
+     * @param reqVO 查询条件
      **/
-    List<TaskRespVO> getMarkTask(String mark);
+    List<TaskRespVO> getMarkTask(TaskReqVO reqVO);
 }

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

@@ -3,8 +3,10 @@ package com.citu.module.menduner.reward.service.event;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.security.core.LoginUser;
+import com.citu.module.menduner.common.dto.TimeRangeBaseReqVO;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
+import com.citu.module.menduner.reward.controller.base.config.TaskReqVO;
 import com.citu.module.menduner.reward.controller.base.config.TaskRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
@@ -30,9 +32,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
 import static com.citu.module.menduner.reward.enums.EasyRulesConstants.*;
 
 /**
@@ -103,8 +108,26 @@ public class EventTrackServiceImpl implements EventTrackService {
     }
 
     @Override
-    public List<TaskRespVO> getMarkTask(String mark) {
-        return ruleConfigService.selectTask(LoginUserContext.getUserId(), PointRuleConfigTypeEnum.MARK.getType(), mark);
+    public List<TaskRespVO> getMarkTask(TaskReqVO reqVO) {
+        LocalDateTime[] timeRange = null;
+        if(TaskReqVO.TYPE_RECOMMEND.equals(reqVO.getType())) {
+            timeRange =generateDateTimeRange(TimeRangeBaseReqVO.builder().type(TimeRangeBaseReqVO.ALL).build());
+        }else {
+            LocalDate today = LocalDate.now();
+            LocalDateTime startOfDay = today.atStartOfDay();  // 当天的开始时间
+            LocalDateTime endOfDay = today.atTime(23, 59, 59);  // 当天的结束时间
+            timeRange =generateDateTimeRange(TimeRangeBaseReqVO.builder()
+                    .type(TimeRangeBaseReqVO.TYPE_CUSTOM)
+                    // time 是数组,第一个元素是开始时间,第二个元素是结束时间,改为当天的起始和结束
+                    .time(new LocalDateTime[]{startOfDay, endOfDay})
+                    .build());
+        }
+        return ruleConfigService.selectTask(LoginUserContext.getUserId(),
+                PointRuleConfigTypeEnum.MARK.getType(),
+                reqVO.getMark(),
+                timeRange[0],
+                timeRange[1]
+        );
     }
 
     @Override

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

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

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

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

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

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

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

@@ -116,6 +116,7 @@ public class EnterpriseDO extends TenantBaseDO {
     /**
      * 开业时间
      */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
     private LocalDateTime openTime;
     /**
      * 是否筹备

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

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

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

@@ -15,7 +15,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdver
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobExportRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedReqVO;
@@ -303,7 +303,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param endTime   结束时间
      **/
     default PageResult<RecruitJobAnalysisRespVO> getAnalysisDetail(
-            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+            RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(JobAdvertisedDO.class);
         query.selectSum(MdeVisitsDO::getCount, RecruitJobAnalysisRespVO::getNum);
@@ -332,7 +332,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param startTime 开始时间
      * @param endTime   结束时间
      **/
-    default Long getBrowseNumCount(RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+    default Long getBrowseNumCount(RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
 
         query.selectSum(MdeVisitsDO::getCount, "num");
@@ -363,7 +363,7 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
      * @param endTime   结束时间
      **/
     default PageResult<RecruitJobAnalysisRespVO> getJobNum(
-            RecruitAnalysisReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
+            RecruitAnalysisPageReqVO reqVO, LocalDateTime startTime, LocalDateTime endTime) {
         MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(JobAdvertisedDO.class);
 

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

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

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java

@@ -6,7 +6,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.interview.vo.AppIn
 import com.citu.module.menduner.system.controller.app.jobhunt.interview.vo.AppInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.interview.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInvitePageReqVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInviteSaveReqVO;
@@ -166,9 +166,9 @@ public interface InterviewInviteService {
     // ========== 统计分析 ==========
 
     /** 获取待面试明细 */
-    PageResult<RecruitInterviewInviteAnalysisRespVO> getWaitInterview(RecruitAnalysisReqVO reqVO);
+    PageResult<RecruitInterviewInviteAnalysisRespVO> getWaitInterview(RecruitAnalysisPageReqVO reqVO);
 
     /** 获取完成面试明细 */
-    PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisReqVO reqVO);
+    PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisPageReqVO reqVO);
 
 }

+ 16 - 21
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java

@@ -10,7 +10,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.interview.vo.AppIn
 import com.citu.module.menduner.system.controller.app.jobhunt.interview.vo.AppInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.app.recruit.interview.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInvitePageReqVO;
@@ -43,7 +43,7 @@ import java.util.List;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.util.validation.ValidationUtils.isMobile;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
-import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.generateDateTimeRange;
+import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
 
 /**
  * 面试邀请 Service 实现类
@@ -55,27 +55,22 @@ import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.generate
 @Validated
 public class InterviewInviteServiceImpl implements InterviewInviteService {
 
+    /**
+     * 比例倍数 1:10 (点数转钱包的比例)
+     **/
+    private static final Integer RATIO_MULTIPLE = 10;
     @Resource
     private InterviewInviteMapper mapper;
-
     @Resource
     private EnterpriseUserBindService userBindService;
-
     @Resource
     private PayWalletApi walletApi;
-
     @Resource
     private HireCommissionRatioService ratioService;
-
     @Resource
     private JobCvRelService jobCvRelService;
-
     @Resource
     private JobAdvertisedService jobAdvertisedService;
-    /**
-     * 比例倍数 1:10 (点数转钱包的比例)
-     **/
-    private static final Integer RATIO_MULTIPLE = 10;
 
     /**
      * 计算佣金
@@ -310,14 +305,14 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
     }
 
     @Override
-    public PageResult<RecruitInterviewInviteAnalysisRespVO> getWaitInterview(RecruitAnalysisReqVO reqVO) {
+    public PageResult<RecruitInterviewInviteAnalysisRespVO> getWaitInterview(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getAnalysisDetail(
                 reqVO, timeRange[0], timeRange[1], InterviewInviteStatusEnum.PENDING_INTERVIEW.getStatus());
     }
 
     @Override
-    public PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisReqVO reqVO) {
+    public PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getAnalysisDetail(
                 reqVO, timeRange[0], timeRange[1], InterviewInviteStatusEnum.COMPLETED.getStatus());
@@ -374,21 +369,21 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
         // 总比例
         BigDecimal totalRate = BigDecimal.valueOf(100);
         // 猎头佣金 计算并转换为钱包货币
-        long headhuntPrice = calculateCommission(hirePrice, ratio.getHeadhuntRate(), totalRate)*RATIO_MULTIPLE;
+        long headhuntPrice = calculateCommission(hirePrice, ratio.getHeadhuntRate(), totalRate) * RATIO_MULTIPLE;
         // 推荐人佣金 计算并转换为钱包货币
-        long recommendPrice = calculateCommission(hirePrice, ratio.getRecommendRate(), totalRate)*RATIO_MULTIPLE;
+        long recommendPrice = calculateCommission(hirePrice, ratio.getRecommendRate(), totalRate) * RATIO_MULTIPLE;
         // 投递人佣金 计算并转换为钱包货币
-        long cvPrice = calculateCommission(hirePrice, ratio.getCvRate(), totalRate)*RATIO_MULTIPLE;
+        long cvPrice = calculateCommission(hirePrice, ratio.getCvRate(), totalRate) * RATIO_MULTIPLE;
 
         //  复制出现三者相加>hirePrice的情况
         log.info("职位ID:{},佣金分配情况,总金额:{},猎头佣金:{},推荐人佣金:{},投递人佣金:{}",
                 job.getId(),
-                hirePrice/100,
-                headhuntPrice/100,
-                recommendPrice/100,
-                cvPrice/100
+                hirePrice / 100,
+                headhuntPrice / 100,
+                recommendPrice / 100,
+                cvPrice / 100
         );
-        if((headhuntPrice+recommendPrice+cvPrice)>hirePrice) {
+        if ((headhuntPrice + recommendPrice + cvPrice) > hirePrice) {
             log.error("佣金比例计算错误,职位ID:{}", job.getId());
             throw exception(INTERVIEW_INVITE_STATUS_NOT_SETTLEMENT);
         }

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

@@ -9,7 +9,7 @@ import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJ
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedReqVO;
@@ -168,13 +168,13 @@ public interface JobAdvertisedService {
     // ========== 统计分析 ==========
 
     /** 获取发布职位浏览量明细 */
-    PageResult<RecruitJobAnalysisRespVO> getBrowseNum(RecruitAnalysisReqVO reqVO);
+    PageResult<RecruitJobAnalysisRespVO> getBrowseNum(RecruitAnalysisPageReqVO reqVO);
 
     /** 获取发布职位浏览量总数 */
-    Long getBrowseNumCount(RecruitAnalysisReqVO reqVO);
+    Long getBrowseNumCount(RecruitAnalysisPageReqVO reqVO);
 
     /** 获取发布职位明细 */
-    PageResult<RecruitJobAnalysisRespVO> getJobNum(RecruitAnalysisReqVO reqVO);
+    PageResult<RecruitJobAnalysisRespVO> getJobNum(RecruitAnalysisPageReqVO reqVO);
 
 
 }

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

@@ -18,7 +18,7 @@ import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJ
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSaveReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.job.vo.AppRecruitJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedReqVO;
@@ -47,7 +47,7 @@ import java.util.stream.Collectors;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.menduner.system.enums.DictTypeConstants.*;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
-import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.generateDateTimeRange;
+import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
 
 /**
  * 招聘职位 Service 实现类
@@ -534,19 +534,19 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
     @Override
-    public PageResult<RecruitJobAnalysisRespVO> getBrowseNum(RecruitAnalysisReqVO reqVO) {
+    public PageResult<RecruitJobAnalysisRespVO> getBrowseNum(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getAnalysisDetail(reqVO, timeRange[0], timeRange[1]);
     }
 
     @Override
-    public Long getBrowseNumCount(RecruitAnalysisReqVO reqVO) {
+    public Long getBrowseNumCount(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getBrowseNumCount(reqVO, timeRange[0], timeRange[1]);
     }
 
     @Override
-    public PageResult<RecruitJobAnalysisRespVO> getJobNum(RecruitAnalysisReqVO reqVO) {
+    public PageResult<RecruitJobAnalysisRespVO> getJobNum(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getJobNum(reqVO, timeRange[0], timeRange[1]);
     }

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

@@ -5,7 +5,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.hire.AppHireJo
 import com.citu.module.menduner.system.controller.app.jobhunt.job.hire.AppHireJobCvRelReqVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.hire.AppHireJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobCvRelReqVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.hire.AppRecruitHireJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.hire.AppRecruitHireJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
@@ -123,23 +123,23 @@ public interface JobCvRelService {
     /**
      * 投递简历的性别比例
      **/
-    List<CommonRespVO> getJobCvSexCount(RecruitAnalysisReqVO reqVO);
+    List<CommonRespVO> getJobCvSexCount(RecruitAnalysisPageReqVO reqVO);
     /**
      * 投递简历的年龄分布
      **/
-    Map<String, Object[]> getJobCvAgeCount(RecruitAnalysisReqVO reqVO);
+    Map<String, Object[]> getJobCvAgeCount(RecruitAnalysisPageReqVO reqVO);
     /**
      * 投递简历的工作经验分布
      **/
-    Map<String, Object[]> getJobCvEduCount(RecruitAnalysisReqVO reqVO);
+    Map<String, Object[]> getJobCvEduCount(RecruitAnalysisPageReqVO reqVO);
     /**
      * 投递简历的学历分布
      **/
-    Map<String, Object[]> getJobCvExpCount(RecruitAnalysisReqVO reqVO);
+    Map<String, Object[]> getJobCvExpCount(RecruitAnalysisPageReqVO reqVO);
 
     /** 获取新投递简历明细 */
-    PageResult<RecruitJobCvRelAnalysisRespVO> getNewCvRel(RecruitAnalysisReqVO reqVO);
+    PageResult<RecruitJobCvRelAnalysisRespVO> getNewCvRel(RecruitAnalysisPageReqVO reqVO);
 
     /** 获取已查看简历明细 */
-    PageResult<RecruitJobCvRelAnalysisRespVO> getLookCvRel(RecruitAnalysisReqVO reqVO);
+    PageResult<RecruitJobCvRelAnalysisRespVO> getLookCvRel(RecruitAnalysisPageReqVO reqVO);
 }

+ 8 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobCvRelServiceImpl.java

@@ -11,7 +11,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobCvRel
 import com.citu.module.menduner.system.controller.app.recruit.person.hire.AppRecruitHireJobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.app.recruit.person.hire.AppRecruitHireJobCvRelRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.cv.JobCvRelSaveReqVO;
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
-import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.generateDateTimeRange;
+import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
 import static com.citu.module.menduner.system.util.RecruitAnalysisUtils.packBarCount;
 
 /**
@@ -197,7 +197,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     }
 
     @Override
-    public List<CommonRespVO> getJobCvSexCount(RecruitAnalysisReqVO reqVO) {
+    public List<CommonRespVO> getJobCvSexCount(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = jobCvRelMapper.getJobCvSexCount(reqVO, timeRange[0], timeRange[1]);
         for (PersonSexEnum value : PersonSexEnum.values()) {
@@ -219,7 +219,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
 
 
     @Override
-    public Map<String, Object[]> getJobCvAgeCount(RecruitAnalysisReqVO reqVO) {
+    public Map<String, Object[]> getJobCvAgeCount(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = jobCvRelMapper.getJobCvAgeCount(reqVO, timeRange[0], timeRange[1]);
         // 填充
@@ -243,7 +243,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     }
 
     @Override
-    public Map<String, Object[]> getJobCvEduCount(RecruitAnalysisReqVO reqVO) {
+    public Map<String, Object[]> getJobCvEduCount(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = jobCvRelMapper.getJobCvEduCount(reqVO, timeRange[0], timeRange[1]);
         // 填充
@@ -272,7 +272,7 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     }
 
     @Override
-    public Map<String, Object[]> getJobCvExpCount(RecruitAnalysisReqVO reqVO) {
+    public Map<String, Object[]> getJobCvExpCount(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         List<CommonRespVO> result = jobCvRelMapper.getJobCvExpCount(reqVO, timeRange[0], timeRange[1]);
         // 填充
@@ -300,13 +300,13 @@ public class JobCvRelServiceImpl implements JobCvRelService {
     }
 
     @Override
-    public PageResult<RecruitJobCvRelAnalysisRespVO> getNewCvRel(RecruitAnalysisReqVO reqVO) {
+    public PageResult<RecruitJobCvRelAnalysisRespVO> getNewCvRel(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return jobCvRelMapper.getAnalysisDetail(reqVO, timeRange[0], timeRange[1], JobCvRelStatusEnum.NEW.getStatus());
     }
 
     @Override
-    public PageResult<RecruitJobCvRelAnalysisRespVO> getLookCvRel(RecruitAnalysisReqVO reqVO) {
+    public PageResult<RecruitJobCvRelAnalysisRespVO> getLookCvRel(RecruitAnalysisPageReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return jobCvRelMapper.getAnalysisDetail(reqVO, timeRange[0], timeRange[1], JobCvRelStatusEnum.LOOK.getStatus());
     }

+ 1 - 38
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/RecruitAnalysisUtils.java

@@ -2,9 +2,7 @@ package com.citu.module.menduner.system.util;
 
 import cn.hutool.core.collection.CollUtil;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
-import com.citu.module.menduner.system.controller.base.analysis.AnalysisBaseReqVO;
 
-import java.time.LocalDateTime;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -37,40 +35,5 @@ public class RecruitAnalysisUtils {
         return map;
     }
 
-    /**
-     * 生成时间范围
-     **/
-    public static LocalDateTime[] generateDateTimeRange(AnalysisBaseReqVO reqVO) {
-        if (AnalysisBaseReqVO.TYPE_CUSTOM.equals(reqVO.getType())) {
-            return reqVO.getTime();
-        }
-        LocalDateTime[] dateTimeRange = new LocalDateTime[2];
-        LocalDateTime now = LocalDateTime.now();
-        switch (reqVO.getType()) {
-            case AnalysisBaseReqVO.ALL:
-                dateTimeRange[0] = null;
-                dateTimeRange[1] = null;
-                break;
-            case AnalysisBaseReqVO.TYPE_RECENT_7_DAYS:
-                // 最新7天内
-                dateTimeRange[0] = now.minusDays(7);
-                dateTimeRange[1] = now;
-                break;
-            case AnalysisBaseReqVO.TYPE_LAST_MONTH:
-                // 上个月
-                dateTimeRange[0] = now.minusMonths(1).withDayOfMonth(1);
-                dateTimeRange[1] = now.withDayOfMonth(1).minusNanos(1);
-                break;
-            case AnalysisBaseReqVO.TYPE_LAST_QUARTER:
-                // 上季度
-                int currentMonth = now.getMonthValue();
-                // 计算上一季度的起始月份
-                int quarterStartMonth = ((currentMonth - 1) / 3) * 3 + 1;
-                int lastQuarterStartMonth = quarterStartMonth - 3;
-                dateTimeRange[0] = now.withMonth(lastQuarterStartMonth).withDayOfMonth(1);
-                dateTimeRange[1] = now.withMonth(quarterStartMonth).withDayOfMonth(1).minusNanos(1);
-                break;
-        }
-        return dateTimeRange;
-    }
+
 }