Bläddra i källkod

1、增加旧平台区域同步
2、优化企业注册申请的bug

rayson 9 månader sedan
förälder
incheckning
3f12642fdb

+ 1 - 1
citu-framework/citu-spring-boot-starter-baidu-aip/src/main/java/com/citu/framework/baiduaip/core/AipOcrClient.java

@@ -59,7 +59,7 @@ public class AipOcrClient {
             businessLicenseOcr.setAddress(getWordsResultAttribute("地址", wordsResult));
             businessLicenseOcr.setRepresentative(getWordsResultAttribute("法人", wordsResult));
             LocalDate date = DateUtils.of(getWordsResultAttribute("成立日期", wordsResult), DateUtils.FORMAT_YEAR_MONTH_DAY_CHINESE);
-            businessLicenseOcr.setEstablishmentTime(date.atStartOfDay());
+            businessLicenseOcr.setEstablishmentTime(DateUtils.of(date.atStartOfDay()));
             businessLicenseOcr.setRegisteredCapital(getWordsResultAttribute("注册资本", wordsResult));
             businessLicenseOcr.setApprovalTime(getWordsResultAttribute("核准日期", wordsResult));
 

+ 6 - 1
citu-framework/citu-spring-boot-starter-baidu-aip/src/main/java/com/citu/framework/baiduaip/core/ocr/BusinessLicenseOcr.java

@@ -1,8 +1,12 @@
 package com.citu.framework.baiduaip.core.ocr;
 
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
+import java.util.Date;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 
 /**
  * 营业执照信息
@@ -37,7 +41,8 @@ public class BusinessLicenseOcr {
     /**
      * 成立时间
      */
-    private LocalDateTime establishmentTime;
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private Date establishmentTime;
     /**
      * 注册资金
      */

+ 1 - 1
citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/api/sms/dto/code/SmsCodeSendReqDTO.java

@@ -21,8 +21,8 @@ public class SmsCodeSendReqDTO {
     @Schema(description = "发送场景", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "发送场景不能为空")
     @InEnum(SmsSceneEnum.class)
-
     private Integer scene;
+
     @Schema(description = "发送 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "10.20.30.40")
     @NotEmpty(message = "发送 IP 不能为空")
     private String createIp;

+ 151 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -4,22 +4,28 @@ import com.citu.framework.common.util.date.DateUtils;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.tenant.core.aop.TenantIgnore;
 import com.citu.framework.tenant.core.db.TenantBaseDO;
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 import com.citu.module.menduner.system.dal.dataobject.cvattachment.CvAttachmentDO;
 import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseAddressDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 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.dataobject.job.JobInterestedDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.mysql.cvattachment.CvAttachmentMapper;
 import com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseAddressMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseUserBindMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
+import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
 import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
 import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
 import com.citu.module.menduner.system.dal.mysql.user.MdeUserMapper;
@@ -40,9 +46,7 @@ import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@@ -95,6 +99,8 @@ public class MdeOldSyncService {
     @Resource
     private EnterpriseMapper enterpriseMapper;
     @Resource
+    private EnterpriseAddressMapper enterpriseAddressMapper;
+    @Resource
     private OldMdeJobAdvertisedMapper oldJobAdvertisedMapper;
     @Resource
     private JobAdvertisedMapper jobAdvertisedMapper;
@@ -114,11 +120,24 @@ public class MdeOldSyncService {
     private OldPositionCvRelDOMapper oldPositionCvRelDOMapper;
     @Resource
     private JobCvRelMapper jobCvRelMapper;
+    @Resource
+    private OldSysAreaMapper oldSysAreaMapper;
+    @Resource
+    private AreaMapper areaMapper;
+    @Resource
+    private JobInterestedMapper jobInterestedMapper;
+    @Resource
+    private OldInterestedAddsMapper oldInterestedAddsMapper;
+
     private String url = "https://www.mendunerhr.com/";
 
     @Async
     @TenantIgnore
     public void run() {
+        // 同步区域
+        syncArea();
+        // 同步感兴趣城市
+        syncInterested();
         // 同步职位信息
         syncPosition();
         // 同步用户信息
@@ -131,6 +150,77 @@ public class MdeOldSyncService {
         syncCv();
     }
 
+    public void syncArea() {
+        List<OldSysArea> oldSysAreaList = oldSysAreaMapper.selectList(new LambdaQueryWrapperX<OldSysArea>()
+                .eq(OldSysArea::getDelFlag, 0)
+                .orderByAsc(OldSysArea::getCode)
+        );
+        oldSysAreaList.forEach(oldSysArea -> {
+            AreaDO areaDO = areaMapper.selectOne(AreaDO::getId, oldSysArea.getCode());
+            OldSysArea parent = null;
+            if (!"0".equals(oldSysArea.getParentId())) {
+                parent = oldSysAreaList.stream().filter(o -> o.getId().equals(oldSysArea.getParentId()))
+                        .findFirst().orElse(null);
+                if (null == parent) {
+                    return;
+                }
+            }
+            areaDO = AreaDO.builder()
+                    .id(null == areaDO ? Long.valueOf(oldSysArea.getCode()) : areaDO.getId())
+                    .name(oldSysArea.getName())
+                    .type(String.valueOf(oldSysArea.getType()))
+                    .parentId(null == parent ? 0L : Long.valueOf(parent.getCode()))
+                    .build();
+
+            setCommon(areaDO);
+            areaMapper.insertOrUpdate(areaDO);
+
+
+        });
+    }
+
+    public void syncInterested() {
+        // 意向工作地信息
+        List<OldInterestedAdds> oldInterestedAddsList = oldInterestedAddsMapper
+                .selectList(new LambdaQueryWrapperX<OldInterestedAdds>()
+                        .eq(OldInterestedAdds::getDelFlag, 0)
+                );
+
+        Map<Long, List<OldInterestedAdds>> groupByUser = oldInterestedAddsList.stream()
+                .collect(Collectors.groupingBy(OldInterestedAdds::getUserCode));
+
+        groupByUser.entrySet().forEach(user -> {
+
+
+            JobInterestedDO jobInterested = jobInterestedMapper
+                    .selectOne(new LambdaQueryWrapperX<JobInterestedDO>()
+                            .eq(JobInterestedDO::getUserId, user.getKey())
+                    );
+
+            Set<String> interestedAreaIdList = new HashSet<>();
+
+            for (OldInterestedAdds oldInterestedAdds : user.getValue()) {
+                interestedAreaIdList.add(oldInterestedAdds.getIntdCity());
+            }
+
+            if (null != jobInterested) {
+                interestedAreaIdList.addAll(jobInterested.getIndustryIdList());
+            }
+
+            JobInterestedDO insert = JobInterestedDO.builder()
+                    .id(null == jobInterested ? user.getKey() : jobInterested.getId())
+                    .userId(user.getKey())
+                    .jobType(JobTypeEnum.FULL_TIME.getType())
+                    .interestedAreaIdList(new ArrayList<>(interestedAreaIdList))
+                    .build();
+
+            setCommon(insert);
+
+            jobInterestedMapper.insertOrUpdate(insert);
+
+        });
+    }
+
     @Async
     public void syncPosition() {
 
@@ -223,6 +313,7 @@ public class MdeOldSyncService {
         userList.stream().forEach(oldMdeUser -> {
             MdeUserDO userDO = mdeUserMapper.selectOne(MdeUserDO::getId, oldMdeUser.getUserCode());
 
+            // 账户信息
             MdeUserDO insertionDO = MdeUserDO.builder()
                     .id(null == userDO ? oldMdeUser.getUserCode() : userDO.getId())
                     .username(oldMdeUser.getIdentityFlag().equals("0") ? oldMdeUser.getUserName() : oldMdeUser.getEntPhone())
@@ -237,6 +328,7 @@ public class MdeOldSyncService {
                     .build();
 
 
+            // 人才基本信息
             PersonInfoDO personInfoDO = personInfoMapper.getByUserId(oldMdeUser.getUserCode());
             personInfoDO = PersonInfoDO.builder()
                     .id(personInfoDO != null ? personInfoDO.getId() : null)
@@ -245,6 +337,7 @@ public class MdeOldSyncService {
                     .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())
@@ -280,6 +373,7 @@ public class MdeOldSyncService {
             // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
             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())
@@ -309,6 +403,36 @@ public class MdeOldSyncService {
                     .userType(EnterpriseUserTypeEnum.ADMIN.getType())
                     .build();
 
+            EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
+                    .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
+                    .enterpriseId(oldMdeUser.getUserCode())
+                    .address(oldMdeUser.getAddDetail())
+                    .build();
+
+            // 优先级:区 > 市 > 省
+            String area = oldMdeUser.getAddrArea();
+            String city = oldMdeUser.getAddrCity();
+            String province = oldMdeUser.getAddrProvince();
+
+            if (StringUtils.hasText(area)) {
+                // 如果有区,则设置区ID
+                addressInsertionDO.setAreaId(Long.valueOf(area));
+            } else if (StringUtils.hasText(city)) {
+                // 如果没有区但有市,则设置市ID
+                addressInsertionDO.setAreaId(Long.valueOf(city));
+            } else if (StringUtils.hasText(province)) {
+                // 如果没有区和市但有省,则设置省ID
+                addressInsertionDO.setAreaId(Long.valueOf(province));
+            } else {
+                // 如果都没有,则设置为null
+                addressInsertionDO.setAreaId(null);
+            }
+
+            if (0 != oldMdeUser.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
+                addressInsertionDO.setLongitude(String.valueOf(oldMdeUser.getAddLongitude()));
+                addressInsertionDO.setLatitude(String.valueOf(oldMdeUser.getAddLatitude()));
+            }
+
             setCommon(enterpriseInsertionDO);
             // 插入企业信息
             enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
@@ -317,6 +441,11 @@ public class MdeOldSyncService {
             // 插入企业用户绑定信息
             enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
 
+
+            setCommon(addressInsertionDO);
+            // 插入企业地址信息
+            enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);
+
         });
 
 
@@ -356,6 +485,25 @@ public class MdeOldSyncService {
                 insertionDO.setLongitude(String.valueOf(oldMdeJobAdvertised.getAddLongitude()));
                 insertionDO.setLatitude(String.valueOf(oldMdeJobAdvertised.getAddLatitude()));
             }
+            // 优先级:区 > 市 > 省
+            String area = oldMdeJobAdvertised.getAddArea();
+            String city = oldMdeJobAdvertised.getAddCity();
+            String province = oldMdeJobAdvertised.getAddProvince();
+
+            if (StringUtils.hasText(area)) {
+                // 如果有区,则设置区ID
+                insertionDO.setAreaId(Long.valueOf(area));
+            } else if (StringUtils.hasText(city)) {
+                // 如果没有区但有市,则设置市ID
+                insertionDO.setAreaId(Long.valueOf(city));
+            } else if (StringUtils.hasText(province)) {
+                // 如果没有区和市但有省,则设置省ID
+                insertionDO.setAreaId(Long.valueOf(province));
+            } else {
+                // 如果都没有,则设置为null
+                insertionDO.setAreaId(null);
+            }
+
             setCommon(insertionDO);
 
             jobAdvertisedMapper.insertOrUpdate(insertionDO);

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldInterestedAdds.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.old.dataobject;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("mde_interested_adds")
+public class OldInterestedAdds extends OldBaseEntity {
+
+    /**
+     * 用户code
+     */
+    @TableId
+    private Long userCode;
+    /**
+     * 地址-市
+     */
+    private String intdCity;
+    /**
+     * 地址-省
+     */
+    private String intdProvince;
+    /**
+     * 地址-市 名称
+     */
+    private String intdCityName;
+    /**
+     * 地址-省 名称
+     */
+    private String intdProvinceName;
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+}

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/dataobject/OldSysArea.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.old.dataobject;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@TableName("sys_area")
+public class OldSysArea  {
+    @TableId
+    private String id;
+    private String parentId;
+    private String parentIds;
+    private String name;
+    private String nameEn;
+    private BigDecimal sort;
+    private String code;
+    private Integer type;
+    private String remarks;
+
+    private String createBy;
+
+    private Integer delFlag;
+
+    private Date createDate;
+
+    private String updateBy;
+
+    private Date updateDate;
+
+}

+ 12 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/mysql/OldInterestedAddsMapper.java

@@ -0,0 +1,12 @@
+package com.citu.module.menduner.system.old.mysql;
+
+import com.baomidou.dynamic.datasource.annotation.Slave;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.menduner.system.old.dataobject.OldInterestedAdds;
+import org.apache.ibatis.annotations.Mapper;
+
+@Slave
+@Mapper
+public interface OldInterestedAddsMapper extends BaseMapperX<OldInterestedAdds> {
+
+}

+ 11 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/mysql/OldSysAreaMapper.java

@@ -0,0 +1,11 @@
+package com.citu.module.menduner.system.old.mysql;
+
+import com.baomidou.dynamic.datasource.annotation.Slave;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.menduner.system.old.dataobject.OldSysArea;
+import org.apache.ibatis.annotations.Mapper;
+
+@Slave
+@Mapper
+public interface OldSysAreaMapper extends BaseMapperX<OldSysArea> {
+}

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

@@ -3,6 +3,7 @@ package com.citu.module.menduner.system.service.enterprise.business;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.baiduaip.core.ocr.BusinessLicenseOcr;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.date.DateUtils;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.controller.app.recruit.enterprise.vo.AppRecruitEnterpriseBusinessRespVO;
@@ -100,7 +101,7 @@ public class EnterpriseBusinessServiceImpl implements EnterpriseBusinessService
                 .area(businessLicense.getArea())
                 .address(businessLicense.getAddress())
                 .representative(businessLicense.getRepresentative())
-                .establishmentTime(businessLicense.getEstablishmentTime())
+                .establishmentTime(DateUtils.of(businessLicense.getEstablishmentTime()))
                 .registeredCapital(businessLicense.getRegisteredCapital())
                 .approvalTime(businessLicense.getApprovalTime())
                 .formerName(businessLicense.getFormerName())

+ 13 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -195,16 +195,18 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 //        );
 //        pageReqVO.setAcquainted(true);
 //        pageReqVO.setTop(false);
-        Long[] ids = graphApi.queryRecommendJob(GraphQueryPageDTO
-                .builder()
-                .id(pageReqVO.getId())
-                .type(GraphQueryPageDTO.JOB)
-                .current(pageReqVO.getPageNo())
-                .size(pageReqVO.getPageSize())
-                .userId(LoginUserContext.getUserId2())
-                .build()
-        ).getCheckedData();
-        pageReqVO.setIds(ids);
+        if (null != LoginUserContext.getUserId2()) {
+            Long[] ids = graphApi.queryRecommendJob(GraphQueryPageDTO
+                    .builder()
+                    .id(pageReqVO.getId())
+                    .type(GraphQueryPageDTO.JOB)
+                    .current(pageReqVO.getPageNo())
+                    .size(pageReqVO.getPageSize())
+                    .userId(LoginUserContext.getUserId2())
+                    .build()
+            ).getCheckedData();
+            pageReqVO.setIds(ids);
+        }
         return mapper.selectPage(pageReqVO);
 
 
@@ -222,13 +224,13 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     @Override
     public PageResult<AppJobAdvertisedHomeRespVO> getAcquaintedPage(AppJobAdvertisedPageReqVO pageReqVO) {
         if (null != pageReqVO.getId()) {
+            // 相识职位
             Long[] ids = graphApi.queryMatchJob(GraphQueryPageDTO
                     .builder()
                     .id(pageReqVO.getId())
                     .type(GraphQueryPageDTO.JOB)
                     .current(pageReqVO.getPageNo())
                     .size(pageReqVO.getPageSize())
-                    .userId(LoginUserContext.getUserId2())
                     .build()
             ).getCheckedData();
             pageReqVO.setIds(ids);

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/user/UserAuthServiceImpl.java

@@ -131,7 +131,7 @@ public class UserAuthServiceImpl implements UserAuthService {
             auth.setIssueDate(cardInfo.getIssueDate().atStartOfDay());
             auth.setExpiryDate(cardInfo.getExpiryDate().atStartOfDay());
             auth.setStatus(EnterpriseAuthStatusEnum.APPROVED.getStatus());
-            auth.setReason(EnterpriseAuthStatusEnum.APPROVED.name());
+            auth.setReason(EnterpriseAuthStatusEnum.APPROVED.getName());
         }else {
             auth.setName(null);
             auth.setGender(null);