Explorar o código

1、优化数据同步逻辑

rayson hai 9 meses
pai
achega
b2854a4da8

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

@@ -42,5 +42,10 @@ public interface EnterpriseBusinessMapper extends BaseMapperX<EnterpriseBusiness
                 .eqIfPresent(EnterpriseBusinessDO::getCode, code));
     }
 
+    default EnterpriseBusinessDO selectByName(String name) {
+        return selectOne(new LambdaQueryWrapperX<EnterpriseBusinessDO>()
+                .eqIfPresent(EnterpriseBusinessDO::getName, name));
+    }
+
 
 }

+ 75 - 24
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -137,27 +137,29 @@ public class MdeOldSyncService {
 
     private String url = "https://www.mendunerhr.com/";
 
+    private Map<Long, OldMdeUser> userMap = new HashMap<>();
+
     @Async
     @TenantIgnore
     public void run() {
 //        // 同步区域
 //        syncArea();
-//        // 同步感兴趣城市 or 订阅的职位类型
-//        syncInterested();
 //        // 同步职位信息
 //        syncPosition();
-//        // 同步用户信息
-//        syncUser();
+        // 同步用户信息
+        syncUser();
         // 同步vip企业信息
         syncVipEnterprise();
-//        // 同步发布职位
-//        syncJob();
-//        // 同步人才工作经历、教育经历
-//        syncPersonExtend();
-//        // 同步人才简历附件、投递简历
-//        syncCv();
-//        // 计算工作年限和最高学历
-//        syncEduAndWork();
+        // 同步发布职位
+        syncJob();
+        // 同步人才工作经历、教育经历
+        syncPersonExtend();
+        // 同步感兴趣城市 or 订阅的职位类型
+        syncInterested();
+        // 同步人才简历附件、投递简历
+        syncCv();
+        // 计算工作年限和最高学历
+        syncEduAndWork();
     }
 
     public void syncArea() {
@@ -276,16 +278,16 @@ public class MdeOldSyncService {
         // 企业vip用户
         List<OldMdeUser> userList = oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
                 .eq(OldMdeUser::getDelFlag, 0)
-                .eq(OldMdeUser::getIdentityFlag,"1")
-                .gt(OldMdeUser::getVipFlag,"0")
+                .eq(OldMdeUser::getIdentityFlag, "1")
+                .gt(OldMdeUser::getVipFlag, "0")
         );
 
         userList.forEach(oldMdeUser -> {
             EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
             if (null != enterpriseDO) {
-              enterpriseDO.setVipFlag(oldMdeUser.getVipFlag());
-              enterpriseDO.setVipExpireDate(oldMdeUser.getDueDate().atStartOfDay());
-              enterpriseMapper.updateById(enterpriseDO);
+                enterpriseDO.setVipFlag(oldMdeUser.getVipFlag());
+                enterpriseDO.setVipExpireDate(oldMdeUser.getDueDate().atStartOfDay());
+                enterpriseMapper.updateById(enterpriseDO);
             }
         });
 
@@ -379,11 +381,33 @@ public class MdeOldSyncService {
         // 所有用户
         List<OldMdeUser> userList = oldUserMapper.selectList(new LambdaQueryWrapperX<OldMdeUser>()
                 .eq(OldMdeUser::getDelFlag, 0)
+                // 求职用户在前面,招聘用户在后面
+                .orderByAsc(OldMdeUser::getIdentityFlag)
         );
-
+        userMap.putAll(userList.stream().collect(Collectors.toMap(OldMdeUser::getUserCode, v -> v)));
         // 新增用户 or 人才基本信息
         userList.stream().forEach(oldMdeUser -> {
-            MdeUserDO userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
+
+            MdeUserDO userDO = null;
+            if (oldMdeUser.getIdentityFlag().equals("1")) {
+                // 企业用户,判断预留的手机号有没有注册过用户
+                MdeUserDO enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+                if (null != enterpriseUser) {
+                    // 存在了,不再创建用户
+                    return;
+                }
+            } else {
+                // 求职端用户
+                userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
+                if (null != userDO) {
+                    MdeUserDO userNameUserDO = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+                    if (null != userNameUserDO) {
+                        // 根据id可以匹配到数据,并且账号名也匹配到数据,说明是同一个用户,直接使用账号名(手机号)匹配到的数据
+                        userDO = userNameUserDO;
+                    }
+                }
+
+            }
 
             // 账户信息
             MdeUserDO insertionDO = MdeUserDO.builder()
@@ -440,13 +464,14 @@ public class MdeOldSyncService {
         // 企业用户
         List<OldMdeUser> enterpriseUserList = userList.stream().filter(c -> c.getIdentityFlag().equals("1")).collect(Collectors.toList());
         enterpriseUserList.forEach(oldMdeUser -> {
-            EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(EnterpriseUserBindDO::getUserId, oldMdeUser.getUserCode());
+            // 根据手机号获取用户信息
+            MdeUserDO enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+            if (null == enterpriseUser) {
+                return;
+            }
 
             // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
             EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
-
-            EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
-
             EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
                     .id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
                     .parentId(0L)
@@ -463,8 +488,14 @@ public class MdeOldSyncService {
                     .build();
 
 
+            // 该企业下的用户信息
+            EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(
+                    EnterpriseUserBindDO::getUserId, enterpriseUser.getId(),
+                    EnterpriseUserBindDO::getEnterpriseId, oldMdeUser.getUserCode()
+            );
+
             EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
-                    .id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
+                    .id(null == userDO ? null : userDO.getId())
                     .enterpriseId(oldMdeUser.getUserCode())
                     .userId(oldMdeUser.getUserCode())
                     .name(oldMdeUser.getEntContacts())
@@ -475,6 +506,10 @@ public class MdeOldSyncService {
                     .userType(EnterpriseUserTypeEnum.ADMIN.getType())
                     .build();
 
+
+            // 企业的地址
+            EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
+
             EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
                     .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
                     .enterpriseId(oldMdeUser.getUserCode())
@@ -527,6 +562,9 @@ public class MdeOldSyncService {
         // 职位信息
         List<OldMdeJobAdvertised> jobList = oldJobAdvertisedMapper.selectList();
         jobList.forEach(oldMdeJobAdvertised -> {
+            if (!userMap.containsKey(oldMdeJobAdvertised.getPublisher())) {
+                return;
+            }
             JobAdvertisedDO jobAdvertisedDO = jobAdvertisedMapper.selectOne(JobAdvertisedDO::getId, oldMdeJobAdvertised.getJobId());
 
 
@@ -588,6 +626,9 @@ public class MdeOldSyncService {
         List<OldMdeEducationExperience> eduList =
                 oldEducationExperienceMapper.selectList(OldMdeEducationExperience::getDelFlag, 0);
         eduList.forEach(e -> {
+            if (!userMap.containsKey(e.getUserCode())) {
+                return;
+            }
             EduExpDO eduExpDO = eduExpMapper.selectOne(EduExpDO::getId, e.getEduId());
             EduExpDO insertionDO = EduExpDO.builder()
                     .id(null == eduExpDO ? e.getEduId() : eduExpDO.getId())
@@ -607,6 +648,9 @@ public class MdeOldSyncService {
 
         List<OldMdeWorkExperience> workList = oldWorkExperienceMapper.selectList(OldMdeWorkExperience::getDelFlag, 0);
         workList.forEach(e -> {
+            if (!userMap.containsKey(e.getUserCode())) {
+                return;
+            }
             WorkExpDO workExpDO = workExpMapper.selectOne(WorkExpDO::getId, e.getWorkId());
             WorkExpDO insertionDO = WorkExpDO.builder()
                     .id(null == workExpDO ? e.getWorkId() : workExpDO.getId())
@@ -633,6 +677,9 @@ public class MdeOldSyncService {
         // 人才投递的简历、附件
         List<OldMdeUserCv> cvList = oldUserCvMapper.selectList(OldMdeUserCv::getDelFlag, 0);
         cvList.forEach(e -> {
+            if (!userMap.containsKey(e.getUserCode())) {
+                return;
+            }
             CvAttachmentDO cvDO = cvAttachmentMapper.selectOne(CvAttachmentDO::getId, e.getCvId());
             CvAttachmentDO insertionDO = CvAttachmentDO.builder()
                     .id(null == cvDO ? e.getCvId() : cvDO.getId())
@@ -651,6 +698,9 @@ public class MdeOldSyncService {
             if (!StringUtils.hasText(e.getCvUrl())) {
                 return;
             }
+            if (!userMap.containsKey(Long.valueOf(e.getPublisher()))) {
+                return;
+            }
             JobCvRelDO cvDO = jobCvRelMapper.selectOne(JobCvRelDO::getId, e.getIntvId());
             // 根据职位查询企业ID
             JobAdvertisedDO advertisedDO = jobAdvertisedMapper.selectOne(JobAdvertisedDO::getId, e.getPosId());
@@ -680,6 +730,7 @@ public class MdeOldSyncService {
     public void syncEduAndWork() {
         List<PersonInfoDO> personList = personInfoMapper.selectList();
         personList.forEach(person -> {
+
             boolean isUpdate = false;
             EduExpDO eduMax = eduExpMapper.selectMaxEducationByUserId(person.getUserId());
             if (null != eduMax) {

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java

@@ -122,7 +122,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
             // 企业邮箱登录
             return enterpriseAuthService.login(reqVO.getAccount(), reqVO.getPassword());
         }
-        return null;
+        throw exception(MDE_USER_NOT_EXISTS);
     }
 
     protected MdeUserDO check(LoginLogTypeEnum logTypeEnum, String account, String password) {

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/business/EnterpriseBusinessService.java

@@ -63,6 +63,14 @@ public interface EnterpriseBusinessService {
      */
     EnterpriseBusinessDO getByCode(String code);
 
+    /**
+     * 根据企业名称获取工商信息
+     *
+     * @param name 企业名称
+     * @return 企业工商信息
+     */
+    EnterpriseBusinessDO getByName(String name);
+
     /**
      * 新增简易的工商信息
      *

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

@@ -80,6 +80,11 @@ public class EnterpriseBusinessServiceImpl implements EnterpriseBusinessService
         return enterpriseBusinessMapper.selectByCode(code);
     }
 
+    @Override
+    public EnterpriseBusinessDO getByName(String name) {
+        return enterpriseBusinessMapper.selectByName(name);
+    }
+
     @Override
     public Long createSimpleBusiness(Long enterpriseId, String code, String name) {
         EnterpriseBusinessDO business = EnterpriseBusinessDO.builder()

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

@@ -131,13 +131,6 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
             // 已审批
             throw exception(MDE_ENTERPRISE_REGISTER_AUDITING_APPROVED);
         }
-        if (StringUtils.hasText(enterpriseRegister.getCode())) {
-            // 查询社会统一信用代码是否存在
-            EnterpriseBusinessDO enterpriseBusinessDO = businessService.getByCode(enterpriseRegister.getCode());
-            if (null != enterpriseBusinessDO) {
-                throw exception(MDE_ENTERPRISE_REGISTER_DUPLICATE);
-            }
-        }
 
         enterpriseRegister.setStatus(EnterpriseRegisterAuditStatusEnum.APPROVED.getStatus());
         enterpriseRegister.setReason(reqVO.getReason());
@@ -282,6 +275,17 @@ public class EnterpriseRegisterServiceImpl implements EnterpriseRegisterService
                 // 重复
                 throw exception(MDE_ENTERPRISE_REGISTER_CREDIT_CODE_DUPLICATE);
             }
+
+            // 查询社会统一信用代码是否存在
+            EnterpriseBusinessDO enterpriseBusinessDO = businessService.getByCode(reqVO.getCode());
+            if (null != enterpriseBusinessDO) {
+                throw exception(MDE_ENTERPRISE_REGISTER_DUPLICATE);
+            }
+        }
+        // 查询企业名称是否重复注册
+        EnterpriseBusinessDO enterpriseBusinessDO = businessService.getByName(reqVO.getName());
+        if (null != enterpriseBusinessDO) {
+            throw exception(MDE_ENTERPRISE_REGISTER_DUPLICATE);
         }
     }
 

+ 1 - 1
pom.xml

@@ -32,7 +32,7 @@
     <properties>
         <revision>2.2.0-snapshot</revision>
         <!-- Maven 相关 -->
-        <java.version>1.8</java.version>
+        <java.version>11</java.version>
         <maven.compiler.source>${java.version}</maven.compiler.source>
         <maven.compiler.target>${java.version}</maven.compiler.target>
         <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>