Bladeren bron

1、优化人员基本信息的参数效验
2、优化面试邀约逻辑

rayson 9 maanden geleden
bovenliggende
commit
bd16549024

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

@@ -42,6 +42,9 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_PERSON_EMAIL_NOT_EXISTS = new ErrorCode(1_100_001_010, "常用邮箱不能为空");
     ErrorCode MDE_PERSON_INFO_NOT_EXISTS = new ErrorCode(1_100_001_011, "请先填写个人基本信息");
 
+    ErrorCode MDE_PERSON_EMAIL_ERROR = new ErrorCode(1_100_001_012, "邮箱号不合法,请输入正确邮箱");
+    ErrorCode MDE_PERSON_PHONE_ERROR = new ErrorCode(1_100_001_013, "手机号不合法,请输入正确手机号");
+
 
     // ========== 行业信息 1_100_002_000 ==========
     ErrorCode MDE_INDUSTRY_NOT_EXISTS = new ErrorCode(1_100_002_001, "行业信息不存在");
@@ -329,6 +332,8 @@ public interface ErrorCodeConstants {
 
     ErrorCode INTERVIEW_INVITE_STATUS_NOT_SETTLEMENT = new ErrorCode(1_100_033_013, "结算功能维护中");
 
+    ErrorCode INTERVIEW_INVITE_TIME_OVERLAP = new ErrorCode(1_100_033_014, "该时间段已有其他面试者预约");
+
 
     // ========== 企业用户申请 1_100_034_000 ==========
     ErrorCode ENTERPRISE_USER_APPLY_NOT_EXISTS = new ErrorCode(1_100_034_001, "企业用户申请不存在");

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/person/resume/AppPersonInfoSaveReqVO.java

@@ -25,23 +25,23 @@ public class AppPersonInfoSaveReqVO {
     @Schema(description = "头像地址")
     private String avatar;
 
-    @NotBlank(message = "{1_100_001_004}")
+//    @NotBlank(message = "{1_100_001_004}")
     @Schema(description = "联系手机号")
     private String phone;
 
-    @NotBlank(message = "{1_100_001_010}")
+//    @NotBlank(message = "{1_100_001_010}")
     @Schema(description = "常用邮箱")
     private String email;
 
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
-    @NotNull(message = "{1_100_001_005}")
+//    @NotNull(message = "{1_100_001_005}")
     @Schema(description = "出生日期")
     private LocalDateTime birthday;
 
     @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
     private String maritalStatus;
 
-    @NotNull(message = "{1_100_001_009}")
+//    @NotNull(message = "{1_100_001_009}")
     @Schema(description = "所在城市", example = "8366")
     private Long areaId;
 

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

@@ -96,6 +96,7 @@ public class PersonInfoDO extends TenantBaseDO {
     /**
      * 人才优势
      */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
     private String advantage;
     /**
      * 工作经验

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

@@ -64,6 +64,7 @@ public interface EnterpriseRegisterMapper extends BaseMapperX<EnterpriseRegister
         return selectOne(new LambdaQueryWrapperX<EnterpriseRegisterDO>()
                 .eq(EnterpriseRegisterDO::getEmail, email)
                 .eqIfPresent(EnterpriseRegisterDO::getStatus, status)
+                .orderByDesc(EnterpriseRegisterDO::getUpdateTime).last("LIMIT 1")
         );
     }
 }

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

@@ -246,4 +246,15 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
         return selectJoinPage(reqVO, RecruitInterviewInviteAnalysisRespVO.class, query);
     }
 
+    /** 效验该时间段是否其他用户预约 **/
+    default boolean checkExistsTime(Long id,Long enterpriseId,Long userId,Long jobId,LocalDateTime time) {
+        return selectCount(new LambdaQueryWrapperX<InterviewInviteDO>()
+                .eqIfPresent(InterviewInviteDO::getId, id)
+                .eq(InterviewInviteDO::getEnterpriseId, enterpriseId)
+                .eq(InterviewInviteDO::getInviteUserId, userId)
+                .eq(InterviewInviteDO::getJobId, jobId)
+                .eq(InterviewInviteDO::getTime, time)
+        ) > 0;
+    }
+
 }

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

@@ -68,9 +68,6 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
     @Resource
     private JobCvRelService jobCvRelService;
 
-    @Resource
-    private UserAccountRecordService userAccountRecordService;
-
     @Resource
     private JobAdvertisedMapper jobAdvertisedMapper;
 
@@ -217,6 +214,10 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
         Long enterpriseId = LoginUserContext.getEnterpriseId(loginUser);
         Long userId = LoginUserContext.getUserId(loginUser);
         InterviewInviteDO interviewInvite = BeanUtils.toBean(reqVO, InterviewInviteDO.class);
+        if(mapper.checkExistsTime(reqVO.getId(),enterpriseId, userId, reqVO.getJobId(),reqVO.getTime())) {
+            // 该时间段已有其他面试者预约
+            throw exception(INTERVIEW_INVITE_TIME_OVERLAP);
+        }
         // 默认
         setStatus(interviewInvite, InterviewInviteStatusEnum.PENDING_ACCEPTANCE);
         interviewInvite.setEnterpriseId(enterpriseId);

+ 12 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoServiceImpl.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.system.service.person.info;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.common.util.validation.ValidationUtils;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
 import com.citu.module.menduner.system.controller.app.jobhunt.person.resume.AppPersonAdvantageSaveReqVO;
@@ -16,13 +17,13 @@ import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
 import com.citu.module.menduner.system.enums.sync.SyncConstants;
 import com.citu.module.menduner.system.mq.producer.GraphProducer;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_PERSON_INFO_NOT_EXISTS;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_USER_INFO_NOT_EXISTS;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
 /**
  * 人才信息-人才档案 Service 实现类
@@ -93,6 +94,15 @@ public class PersonInfoServiceImpl implements PersonInfoService {
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
     public boolean saveInfo(AppPersonInfoSaveReqVO reqVO) {
+        if (StringUtils.hasText(reqVO.getEmail()) && !ValidationUtils.isEmail(reqVO.getEmail())) {
+            // 邮箱不合法
+            throw exception(MDE_PERSON_EMAIL_ERROR);
+        }
+        if(StringUtils.hasText(reqVO.getPhone())&& !ValidationUtils.isMobile(reqVO.getPhone())) {
+            // 手机号不合法
+            throw exception(MDE_PERSON_PHONE_ERROR);
+        }
+
         Long userId = LoginUserContext.getUserId();
         PersonInfoDO info = personInfoMapper.selectOne(PersonInfoDO::getUserId, userId);
         PersonInfoDO userInfo = BeanUtils.toBean(reqVO, PersonInfoDO.class);

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

@@ -38,6 +38,8 @@
 1_100_001_009=City cannot be empty
 1_100_001_010=Frequently used email cannot be empty
 1_100_001_011=Please fill in your personal basic information first
+1_100_001_012=Email number is invalid, please enter the correct email address
+1_100_001_013=Invalid phone number, please enter the correct phone number
 # ========== 行业信息 1_100_002_000 ==========
 1_100_002_001=Industry information does not exist
 # ========== 职位信息 1_100_003_000 ==========
@@ -247,6 +249,7 @@
 1_100_033_011=The current interview has not been completed
 1_100_033_012=The current employee has not yet joined and cannot be settled
 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_034_000 ==========
 1_100_034_001=Enterprise user application does not exist
 1_100_034_002=User application has been approved

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

@@ -38,6 +38,8 @@
 1_100_001_009=所在城市不能为空
 1_100_001_010=常用邮箱不能为空
 1_100_001_011=请先填写人才基本信息
+1_100_001_012=邮箱号不合法,请输入正确邮箱
+1_100_001_013=手机号不合法,请输入正确手机号
 # ========== 行业信息 1_100_002_000 ==========
 1_100_002_001=行业信息不存在
 # ========== 职位信息 1_100_003_000 ==========
@@ -247,6 +249,7 @@
 1_100_033_011=当前面试未完成
 1_100_033_012=当前员工还未入职,无法结算
 1_100_033_013=结算功能维护中
+1_100_033_014=该时间段已有其他面试者预约
 # ========== 企业用户申请 1_100_034_000 ==========
 1_100_034_001=企业用户申请不存在
 1_100_034_002=用户申请已审批