فهرست منبع

1、增加邀约面试的手机号效验
2、优化刷新面试状态的逻辑(过了的时间,但是处于待面试也会切换成即将面试)

rayson 9 ماه پیش
والد
کامیت
b6d3bda05b

+ 2 - 0
citu-framework/citu-common/src/main/java/com/citu/framework/common/util/validation/ValidationUtils.java

@@ -29,6 +29,8 @@ public class ValidationUtils {
             "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@"
                     + "[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"
     );
+
+
     public static boolean isMobile(String mobile) {
         return StringUtils.hasText(mobile)
                 && PATTERN_MOBILE.matcher(mobile).matches();

+ 3 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -336,6 +336,9 @@ public interface ErrorCodeConstants {
 
     ErrorCode INTERVIEW_INVITE_TIME_LESS_THAN_NOW = new ErrorCode(1_100_033_015, "面试时间不能小于当前时间");
 
+    ErrorCode INTERVIEW_INVITE_INVITE_PHONE_FORMAT_ERROR = new ErrorCode(1_100_033_016, "邀请方联系电话格式不正确");
+
+
     // ========== 企业用户申请 1_100_034_000 ==========
     ErrorCode ENTERPRISE_USER_APPLY_NOT_EXISTS = new ErrorCode(1_100_034_001, "企业用户申请不存在");
     ErrorCode ENTERPRISE_USER_APPLY_APPROVED = new ErrorCode(1_100_034_002, "用户申请已审批");

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

@@ -182,15 +182,16 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         // 获取当前时间
         LocalDateTime now = LocalDateTime.now();
 
-        // 计算三个小时的时间
-        LocalDateTime threeHoursAgo = now.minusHours(3);
+        // 计算三个小时的时间
+        LocalDateTime threeHoursLater = now.plusHours(3);
 
         MPJLambdaWrapperX<InterviewInviteDO> query = new MPJLambdaWrapperX<>();
-        // 设置查询条件,筛选time在threeHoursAgo和now之间的记录
-        query.ge(InterviewInviteDO::getTime, threeHoursAgo);
-        query.le(InterviewInviteDO::getTime, now);
+
+        // 设置查询条件,筛选time在当前时间到未来3个小时之间的记录
+        query.le(InterviewInviteDO::getTime, threeHoursLater);
         query.eq(InterviewInviteDO::getStatus, InterviewInviteStatusEnum.PENDING_INTERVIEW.getStatus());
 
+        // 执行查询
         return selectJoinList(InterviewInviteDO.class, query);
     }
 

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

@@ -22,12 +22,10 @@ import com.citu.module.menduner.system.dal.dataobject.job.JobCvRelDO;
 import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.enums.cv.ConversationStatusEnum;
-import com.citu.module.menduner.system.enums.cv.JobCvRelStatusEnum;
 import com.citu.module.menduner.system.enums.interview.InterviewInviteStatusEnum;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import com.citu.module.menduner.system.service.hire.HireCommissionRatioService;
 import com.citu.module.menduner.system.service.job.JobCvRelService;
-import com.citu.module.menduner.system.service.record.UserAccountRecordService;
 import com.citu.module.pay.api.wallet.PayWalletApi;
 import com.citu.module.pay.api.wallet.dto.PayWalletAddBalanceDTO;
 import com.citu.module.pay.enums.wallet.PayWalletBizTypeEnum;
@@ -41,6 +39,7 @@ import java.time.LocalDateTime;
 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;
 
@@ -215,13 +214,18 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
         Long userId = LoginUserContext.getUserId(loginUser);
         InterviewInviteDO interviewInvite = BeanUtils.toBean(reqVO, InterviewInviteDO.class);
         // 检查时间是否小于当前时间
-        if(LocalDateTime.now().isAfter(reqVO.getTime())) {
+        if (LocalDateTime.now().isAfter(reqVO.getTime())) {
             throw exception(INTERVIEW_INVITE_TIME_LESS_THAN_NOW);
         }
-        if(mapper.checkExistsTime(reqVO.getId(),enterpriseId, userId, reqVO.getJobId(),reqVO.getTime())) {
+        if (mapper.checkExistsTime(reqVO.getId(), enterpriseId, userId, reqVO.getJobId(), reqVO.getTime())) {
             // 该时间段已有其他面试者预约
             throw exception(INTERVIEW_INVITE_TIME_OVERLAP);
         }
+
+        if (isMobile(reqVO.getInvitePhone())) {
+            throw exception(INTERVIEW_INVITE_INVITE_PHONE_FORMAT_ERROR);
+        }
+
         // 默认
         setStatus(interviewInvite, InterviewInviteStatusEnum.PENDING_ACCEPTANCE);
         interviewInvite.setEnterpriseId(enterpriseId);
@@ -298,14 +302,14 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
     public PageResult<RecruitInterviewInviteAnalysisRespVO> getWaitInterview(RecruitAnalysisReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getAnalysisDetail(
-                reqVO,timeRange[0], timeRange[1], InterviewInviteStatusEnum.PENDING_INTERVIEW.getStatus());
+                reqVO, timeRange[0], timeRange[1], InterviewInviteStatusEnum.PENDING_INTERVIEW.getStatus());
     }
 
     @Override
     public PageResult<RecruitInterviewInviteAnalysisRespVO> getCompleteInterview(RecruitAnalysisReqVO reqVO) {
         LocalDateTime[] timeRange = generateDateTimeRange(reqVO);
         return mapper.getAnalysisDetail(
-                reqVO,timeRange[0], timeRange[1], InterviewInviteStatusEnum.COMPLETED.getStatus());
+                reqVO, timeRange[0], timeRange[1], InterviewInviteStatusEnum.COMPLETED.getStatus());
     }
 
     @Override
@@ -365,10 +369,10 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
         // 猎头 (平台自己)
         if (headhuntPrice > 0) {
             walletApi.addWalletBalance(PayWalletAddBalanceDTO.builder()
-                            .userId(0L)
-                            .bizId(job.getId().toString())
-                            .price(Math.toIntExact(headhuntPrice))
-                            .bizType(PayWalletBizTypeEnum.PLATFORM_COMMISSION.getType())
+                    .userId(0L)
+                    .bizId(job.getId().toString())
+                    .price(Math.toIntExact(headhuntPrice))
+                    .bizType(PayWalletBizTypeEnum.PLATFORM_COMMISSION.getType())
                     .build()
             );
         }

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

@@ -251,6 +251,7 @@
 1_100_033_013=Settlement function maintenance in progress
 1_100_033_014=Other interviewees have already made appointments during this time period
 1_100_033_015=The interview time cannot be less than the current time
+1_100_033_016=Invitation party's contact phone number format is incorrect
 # ========== 企业用户申请 1_100_034_000 ==========
 1_100_034_001=Enterprise user application does not exist
 1_100_034_002=User application has been approved

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

@@ -251,6 +251,7 @@
 1_100_033_013=结算功能维护中
 1_100_033_014=该时间段已有其他面试者预约
 1_100_033_015=面试时间不能小于当前时间
+1_100_033_016=邀请方联系电话格式不正确
 # ========== 企业用户申请 1_100_034_000 ==========
 1_100_034_001=企业用户申请不存在
 1_100_034_002=用户申请已审批