Parcourir la source

1、优化数据同步bug

rayson il y a 9 mois
Parent
commit
4d5e44c490

+ 95 - 90
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -1,7 +1,6 @@
 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;
@@ -53,8 +52,6 @@ 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;
-
 /**
  * 门墩儿 老平台的数据同步
  **/
@@ -146,10 +143,10 @@ public class MdeOldSyncService {
 //        syncArea();
 //        // 同步职位信息
 //        syncPosition();
-        // 同步用户信息
-        syncUser();
-        // 同步vip企业信息
-        syncVipEnterprise();
+//        // 同步用户信息
+//        syncUser();
+//        // 同步vip企业信息
+//        syncVipEnterprise();
         // 同步发布职位
         syncJob();
         // 同步人才工作经历、教育经历
@@ -386,93 +383,101 @@ 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 (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);
+//        });
 
 
         // 企业用户
         List<OldMdeUser> enterpriseUserList = userList.stream().filter(c -> c.getIdentityFlag().equals("1")).collect(Collectors.toList());
         enterpriseUserList.forEach(oldMdeUser -> {
-            // 根据手机号获取用户信息
-            MdeUserDO enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
-            if (null == enterpriseUser) {
-                return;
+            MdeUserDO enterpriseUser = null;
+            if (StringUtils.hasText(oldMdeUser.getEntPhone())) {
+                // 根据手机号获取用户信息
+                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+                if (null == enterpriseUser) {
+                    return;
+                }
+            }else {
+                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+                if(null == enterpriseUser) {
+                    return;
+                }
             }
 
             // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
@@ -502,7 +507,7 @@ public class MdeOldSyncService {
             EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
                     .id(null == userDO ? null : userDO.getId())
                     .enterpriseId(oldMdeUser.getUserCode())
-                    .userId(oldMdeUser.getUserCode())
+                    .userId(enterpriseUser.getId())
                     .name(oldMdeUser.getEntContacts())
                     .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
                     .email(oldMdeUser.getUserName())