瀏覽代碼

1、修复保存人才信息覆盖人才画像标签问题
2、优化职位搜索联系人查询

rayson 9 月之前
父節點
當前提交
5ac50734e1

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

@@ -248,6 +248,8 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ENTERPRISE_REGISTER_STATUS_APPLYING = new ErrorCode(1_100_021_016, "企业注册申请中");
 
 
+    ErrorCode MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE = new ErrorCode(1_100_021_017, "该邮箱已被其他企业注册");
+
     // ========== 企业地址 1_100_022_001 ==========
     ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_100_022_001, "企业地址不存在");
 

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

@@ -5,9 +5,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
-import java.util.List;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 
@@ -25,11 +23,11 @@ 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;
 
@@ -41,7 +39,7 @@ public class AppPersonInfoSaveReqVO {
     @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;
 
@@ -67,4 +65,5 @@ public class AppPersonInfoSaveReqVO {
     @Schema(description = "学历", example = "2")
     private String eduType;
 
+
 }

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

@@ -109,7 +109,7 @@ public class PersonInfoDO extends TenantBaseDO {
     /**
      * 人才标签
      */
-    @TableField(updateStrategy = FieldStrategy.ALWAYS, typeHandler = JacksonTypeHandler.class)
+    @TableField(typeHandler = JacksonTypeHandler.class)
     private List<String> tagList;
 
 }

+ 92 - 87
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.old;
 
 import cn.hutool.core.collection.CollUtil;
+import com.citu.framework.common.util.date.DateUtils;
 import com.citu.framework.common.util.object.ObjectUtils;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.tenant.core.aop.TenantIgnore;
@@ -52,6 +53,8 @@ import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
 /**
  * 门墩儿 老平台的数据同步
  **/
@@ -139,14 +142,14 @@ public class MdeOldSyncService {
     @Async
     @TenantIgnore
     public void run() {
-//        // 同步区域
-//        syncArea();
-//        // 同步职位信息
-//        syncPosition();
-//        // 同步用户信息
-//        syncUser();
-//        // 同步vip企业信息
-//        syncVipEnterprise();
+        // 同步区域
+        syncArea();
+        // 同步职位信息
+        syncPosition();
+        // 同步用户信息
+        syncUser();
+        // 同步vip企业信息
+        syncVipEnterprise();
         // 同步发布职位
         syncJob();
         // 同步人才工作经历、教育经历
@@ -393,84 +396,87 @@ public class MdeOldSyncService {
         );
         userMap.putAll(userList.stream().collect(Collectors.toMap(OldMdeUser::getUserCode, v -> v)));
         // 新增用户 or 人才基本信息
-//        userList.stream().forEach(oldMdeUser -> {
-//
-//            MdeUserDO userDO = null;
-//            if (oldMdeUser.getIdentityFlag().equals("1")) {
-//                // 企业用户,判断预留的手机号有没有注册过用户
-//                if(StringUtils.hasText(oldMdeUser.getEntPhone())) {
-//                    // 手机号不为空
-//                    MdeUserDO enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
-//                    if (null != enterpriseUser) {
-//                        // 存在了,不再创建用户
-//                        return;
-//                    }
-//                }else {
-//                    // 企业预留的手机号为空
-//                }
-//            } else {
-//                // 求职端用户
-//                userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
-//                if (null == userDO ) {
-//                    MdeUserDO userNameUserDO = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
-//                    if (null != userNameUserDO) {
-//                        // 根据账号名也匹配到数据,说明是同一个用户,直接使用账号名(手机号)匹配到的数据
-//                        userDO = userNameUserDO;
-//                    }
-//                }
-//
-//            }
-//
-//            // 账户信息
-//            MdeUserDO insertionDO = MdeUserDO.builder()
-//                    .id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
-//                    .username(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
-//                    // 重置密码手机号后6位
-//                    .password(passwordEncoder.encode("147258369"))
-//                    .email(oldMdeUser.getEmail())
-//                    // 有座机,大坑
-//                    // 个人用户getUserName是手机号,企业用户是邮箱,所以企业用户取getEntPhone
-//                    .phone(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
-//                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
-//                    .status(MendunerStatusEnum.ENABLE.getStatus())
-//                    .build();
-//
-//
-//            // 人才基本信息
-//            PersonInfoDO personInfoDO = personInfoMapper.getByUserId(oldMdeUser.getUserCode());
-//            personInfoDO = PersonInfoDO.builder()
-//                    .id(personInfoDO != null ? personInfoDO.getId() : null)
-//                    .userId(oldMdeUser.getUserCode())
-//                    .name(oldMdeUser.getName())
-//                    .foreignName(oldMdeUser.getForeignName())
-//                    .email(oldMdeUser.getEmail())
-//                    .firstWorkTime(null == oldMdeUser.getFirstWork() ? null : oldMdeUser.getFirstWork().atStartOfDay())
-//                    .jobType(JobTypeEnum.FULL_TIME.getType())
-//                    .jobStatus(oldMdeUser.getWorkStatus())
-//                    .advantage(oldMdeUser.getIntroduction())
-//                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
-//                    .build();
-//
-//
-//            if (oldMdeUser.getIdentityFlag().equals("0")) {
-//                // 个人
-//                insertionDO.setPhone(oldMdeUser.getUserName().contains("+") ? null : oldMdeUser.getUserName());
-//            } else {
-//                // 企业
-//                insertionDO.setPhone(oldMdeUser.getEntPhone());
-//            }
-//
-//            if (null != oldMdeUser.getBirthday()) {
-//                // 生日转换
-//                personInfoDO.setBirthday(DateUtils.of(oldMdeUser.getBirthday(), FORMAT_YEAR_MONTH_DAY).atStartOfDay());
-//            }
-//
-//            setCommon(personInfoDO);
-//            personInfoMapper.insertOrUpdate(personInfoDO);
-//
-//            setCommon(insertionDO);
-//            mdeUserMapper.insertOrUpdate(insertionDO);
-//        });
+        userList.stream().forEach(oldMdeUser -> {
+
+            MdeUserDO userDO = null;
+            if (oldMdeUser.getIdentityFlag().equals("1")) {
+                // 企业用户,判断预留的手机号有没有注册过用户
+                if(StringUtils.hasText(oldMdeUser.getEntPhone())) {
+                    // 手机号不为空
+                    MdeUserDO enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+                    if (null != enterpriseUser) {
+                        // 存在了,不再创建用户
+                        return;
+                    }
+                }else {
+                    // 企业预留的手机号为空
+                }
+            } else {
+                // 求职端用户
+                userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
+                if (null == userDO ) {
+                    MdeUserDO userNameUserDO = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+                    if (null != userNameUserDO) {
+                        // 根据账号名也匹配到数据,说明是同一个用户,直接使用账号名(手机号)匹配到的数据
+                        userDO = userNameUserDO;
+                    }
+                }
+
+            }
+
+            // 账户信息
+            MdeUserDO insertionDO = MdeUserDO.builder()
+                    .id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
+                    .username(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
+                    // 重置密码手机号后6位
+                    .password(passwordEncoder.encode("147258369"))
+                    .email(oldMdeUser.getEmail())
+                    // 有座机,大坑
+                    // 个人用户getUserName是手机号,企业用户是邮箱,所以企业用户取getEntPhone
+                    .phone(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
+                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
+                    .status(MendunerStatusEnum.ENABLE.getStatus())
+                    .build();
+
+
+            // 人才基本信息
+            PersonInfoDO personInfoDO = personInfoMapper.getByUserId(oldMdeUser.getUserCode());
+            personInfoDO = PersonInfoDO.builder()
+                    .id(personInfoDO != null ? personInfoDO.getId() : null)
+                    .userId(oldMdeUser.getUserCode())
+                    .name(oldMdeUser.getName())
+                    .foreignName(oldMdeUser.getForeignName())
+                    .email(oldMdeUser.getEmail())
+                    .firstWorkTime(null == oldMdeUser.getFirstWork() ? null : oldMdeUser.getFirstWork().atStartOfDay())
+                    .jobType(JobTypeEnum.FULL_TIME.getType())
+                    .jobStatus(oldMdeUser.getWorkStatus())
+                    .advantage(oldMdeUser.getIntroduction())
+                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
+                    .build();
+
+            if (null != oldMdeUser.getBirthday()) {
+                // 生日转换
+                personInfoDO.setBirthday(DateUtils.of(oldMdeUser.getBirthday(), FORMAT_YEAR_MONTH_DAY).atStartOfDay());
+            }
+
+            if (oldMdeUser.getIdentityFlag().equals("0")) {
+                // 企业基本信息 不新增人才信息,只有普通用户才新增
+                setCommon(personInfoDO);
+                personInfoMapper.insertOrUpdate(personInfoDO);
+            }
+
+            if (oldMdeUser.getIdentityFlag().equals("0")) {
+                // 个人
+                insertionDO.setPhone(oldMdeUser.getUserName().contains("+") ? null : oldMdeUser.getUserName());
+            } else {
+                // 企业
+                insertionDO.setPhone(oldMdeUser.getEntPhone());
+            }
+
+
+            setCommon(insertionDO);
+            mdeUserMapper.insertOrUpdate(insertionDO);
+        });
 
 
         // 企业用户
@@ -568,7 +574,6 @@ public class MdeOldSyncService {
             // 插入企业用户绑定信息
             enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
 
-
             setCommon(addressInsertionDO);
             // 插入企业地址信息
             enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);

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

@@ -2,11 +2,7 @@ package com.citu.module.menduner.system.service.enterprise.bind;
 
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.app.jobhunt.enterprise.vo.AppEnterpriseUserBindRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitEnterpriseUserUpdateEmailReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitEnterpriseUserRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitUserRespVO;
-import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitUserPageReqVO;
-import com.citu.module.menduner.system.controller.app.recruit.user.vo.AppRecruitUserSaveReqVO;
+import com.citu.module.menduner.system.controller.app.recruit.user.vo.*;
 import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserSummaryRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindDetailRespVO;
@@ -90,9 +86,10 @@ public interface EnterpriseUserBindService {
 
     /**
      * 更新用户邮箱
+     *
      * @param reqVO
      **/
-    void updateUserEmail( AppRecruitEnterpriseUserUpdateEmailReqVO reqVO);
+    void updateUserEmail(AppRecruitEnterpriseUserUpdateEmailReqVO reqVO);
 
     /**
      * 根据企业id和用户id查询用户绑定数据
@@ -112,6 +109,7 @@ public interface EnterpriseUserBindService {
 
     /**
      * 创建用户
+     *
      * @param userBindDO
      **/
     void createUser(EnterpriseUserBindDO userBindDO);
@@ -149,6 +147,7 @@ public interface EnterpriseUserBindService {
     void updatePassword(Long id, String password);
 
     // ========== 求职端 ==========
+
     /**
      * 根据联系人id,获取联系人基本信息
      *
@@ -185,24 +184,28 @@ public interface EnterpriseUserBindService {
 
     /**
      * 保存企业用户信息
+     *
      * @return reqVO 保存对象
      **/
     boolean save(AppRecruitUserSaveReqVO reqVO);
 
     /**
      * 禁用账号
+     *
      * @return ids
      **/
     boolean disable(List<Long> ids);
 
     /**
      * 启用账户
+     *
      * @return ids
      **/
     boolean enable(List<Long> ids);
 
     /**
      * 获取用户列表分页数据
+     *
      * @return 分页数据
      **/
     PageResult<AppRecruitUserRespVO> selectPage(AppRecruitUserPageReqVO reqVO);
@@ -210,7 +213,7 @@ public interface EnterpriseUserBindService {
     /**
      * 绑定用户的岗位
      **/
-    Boolean bindPost(Long id,Long postId);
+    Boolean bindPost(Long id, Long postId);
 
     /**
      * 效验是否有该岗位的用户
@@ -219,12 +222,15 @@ public interface EnterpriseUserBindService {
 
     /**
      * 根据企业id和用户id查询用户信息
+     *
      * @param enterpriseId 企业用户id
-     * @param userId 用户id
+     * @param userId       用户id
      * @return
      **/
     AppRecruitEnterpriseUserRespVO getEnterpriseUser(Long enterpriseId, Long userId);
 
-    /** 效验当前登录企业用户是否需要更改密码 **/
+    /**
+     * 效验当前登录企业用户是否需要更改密码
+     **/
     boolean checkNeedUpdatePassword();
 }

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

@@ -216,7 +216,8 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     public EnterpriseUserContactRespVO getContact(Long enterpriseId, Long userId) {
         EnterpriseUserBindDO userBindDO = mapper.selectByEnterpriseIdAndUserId(enterpriseId, userId);
         if (null == userBindDO) {
-            throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
+//            throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
+            return null;
         }
         EnterpriseUserContactRespVO resp = EnterpriseConvert.INSTANCE.convert2(userBindDO);
 

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

@@ -287,6 +287,11 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
         if (null != enterpriseBusinessDO) {
             throw exception(MDE_ENTERPRISE_REGISTER_DUPLICATE);
         }
+        // 判断邮箱是否注册
+        EnterpriseUserBindDO userBindDO = userBindService.getByEmail(reqVO.getEmail());
+        if (null != userBindDO) {
+            throw exception(MDE_ENTERPRISE_REGISTER_EMAIL_DUPLICATE);
+        }
     }
 
     @Override

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

@@ -20,11 +20,11 @@ import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteD
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 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.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.JobAdvertisedService;
 import com.citu.module.menduner.system.service.job.JobCvRelService;
 import com.citu.module.pay.api.wallet.PayWalletApi;
 import com.citu.module.pay.api.wallet.dto.PayWalletAddBalanceDTO;
@@ -36,6 +36,7 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.util.Collections;
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -68,7 +69,7 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
     private JobCvRelService jobCvRelService;
 
     @Resource
-    private JobAdvertisedMapper jobAdvertisedMapper;
+    private JobAdvertisedService jobAdvertisedService;
 
     /**
      * 计算佣金
@@ -222,7 +223,7 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
             throw exception(INTERVIEW_INVITE_TIME_OVERLAP);
         }
 
-        if (isMobile(reqVO.getInvitePhone())) {
+        if (!isMobile(reqVO.getInvitePhone())) {
             throw exception(INTERVIEW_INVITE_INVITE_PHONE_FORMAT_ERROR);
         }
 
@@ -338,13 +339,16 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
         // 获取比例配置
         HireCommissionRatioDO ratio = ratioService.get();
 
-        JobAdvertisedDO job = jobAdvertisedMapper.selectById(cv.getJobId());
+        JobAdvertisedDO job = jobAdvertisedService.getJobAdvertised(cv.getJobId());
 
         if (null != job.getHirePrice()) {
             // 余额结算
             priceSettlement(job, ratio, cv);
         }
 
+        // 关闭职位
+        jobAdvertisedService.disable(Collections.singletonList(job.getId()));
+
         //TODO 发送推送消息
     }
 
@@ -374,7 +378,7 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
                     .price(Math.toIntExact(headhuntPrice))
                     .bizType(PayWalletBizTypeEnum.PLATFORM_COMMISSION.getType())
                     .build()
-            );
+            ).getCheckedData();
         }
 
         // 如果推荐人ID为空,则将推荐人的佣金也给到猎头
@@ -385,7 +389,7 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
                     .price(Math.toIntExact(recommendPrice))
                     .bizType(PayWalletBizTypeEnum.NOT_RECOMMENDED.getType())
                     .build()
-            );
+            ).getCheckedData();
         }
 
         // 推荐人
@@ -397,7 +401,7 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
                     .price(Math.toIntExact(recommendPrice))
                     .bizType(PayWalletBizTypeEnum.RECOMMENDED_POSITIONS.getType())
                     .build()
-            );
+            ).getCheckedData();
         }
 
         // 投递人
@@ -409,7 +413,7 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
                     .price(Math.toIntExact(cvPrice))
                     .bizType(PayWalletBizTypeEnum.DELIVERY_PERSON.getType())
                     .build()
-            );
+            ).getCheckedData();
         }
     }
 

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

@@ -183,6 +183,8 @@
 1_100_021_013=Contact name cannot be empty
 1_100_021_014=Password cannot be empty
 1_100_021_015=Password length is 8-16 digits
+1_100_021_016=Enterprise registration application in progress
+1_100_021_017=This email has been registered by another company
 # ========== 企业地址 1_100_022_001 ==========
 1_100_022_001=The company address does not exist
 # ========== 企业登录用户 1_100_023_000 ==========

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

@@ -183,6 +183,8 @@
 1_100_021_013=联系人名称不能为空
 1_100_021_014=密码不能为空
 1_100_021_015=密码长度为 8-16 位
+1_100_021_016=企业注册申请中
+1_100_021_017=该邮箱已被其他企业注册
 # ========== 企业地址 1_100_022_001 ==========
 1_100_022_001=企业地址不存在
 # ========== 企业登录用户 1_100_023_000 ==========