dev:app入职相关接口

main
SondonYong 2025-12-04 08:43:47 +08:00
parent f6b859b5d9
commit 8515519038
7 changed files with 82 additions and 59 deletions

View File

@ -25,7 +25,6 @@ import org.springframework.web.bind.annotation.*;
@AllArgsConstructor
public class AppUserController {
private final UserServiceI userService;
private final TranslateField translateField;
@ApiOperation("验证手机号是否已注册")
@PostMapping("/verifyPhone")
@ -51,7 +50,6 @@ public class AppUserController {
return userService.perfectUserInfo(cmd);
}
@ApiOperation("上传人脸识别图片")
@PostMapping("/updateUserFaceUrl")
public Response updateUserFaceUrl(@Validated @RequestBody UserUpdateFaceUrlCmd cmd){
@ -73,7 +71,5 @@ public class AppUserController {
return SingleResponse.buildSuccess();
}
}

View File

@ -2,27 +2,38 @@ package com.zcloud.basic.info.command;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.cola.dto.SingleResponse;
import com.alibaba.cola.exception.BizException;
import com.jjb.saas.config.client.dicttree.facade.ConfDictTreeFacade;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.message.client.message.facede.MessageFacade;
import com.jjb.saas.message.client.message.request.MessageSendCmd;
import com.jjb.saas.message.client.message.request.MessageTargetCmd;
import com.zcloud.basic.info.command.convertor.UserCoConvertor;
import com.zcloud.basic.info.command.query.CorpInfoQueryExe;
import com.zcloud.basic.info.constant.RedisConstant;
import com.zcloud.basic.info.domain.enums.UserFlowFlagEnum;
import com.zcloud.basic.info.domain.gateway.*;
import com.zcloud.basic.info.domain.model.*;
import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.persistence.dataobject.*;
import com.zcloud.basic.info.persistence.repository.*;
import com.zcloud.gbscommon.utils.DateUtil;
import com.zcloud.gbscommon.utils.UuidUtil;
import com.zcloud.gbscommon.utils.ZcloudRedisUtil;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -42,11 +53,14 @@ public class UserAddExe {
private final UserRepository userRepository;
@DubboReference
private ConfDictTreeFacade confDictTreeFacade;
@DubboReference
private final MessageFacade messageFacade;
private final CorpInfoQueryExe corpInfoQueryExe;
private final UserCorpGateway userCorpGateway;
private final UserCorpRepository userCorpRepository;
private final UserChangeRecordGateway userChangeRecordGateway;
private final UserCorpRecordGateway userCorpRecordGateway;
private ZcloudRedisUtil zcloudRedisUtil;
@Transactional(rollbackFor = Exception.class)
@ -94,8 +108,11 @@ public class UserAddExe {
UserE userE = new UserE();
userE.checkPassword(cmd.getPassword(), cmd.getConfirmPassword());
// 获取redis所有有效验证码
// 如果不能对上, 提示验证码已过期或错误
// 获取redis验证码
Object phoneCodeObj = zcloudRedisUtil.get(RedisConstant.PHONE_CODE_KEY + cmd.getPhone());
if(phoneCodeObj == null || !phoneCodeObj.toString().equals(cmd.getPhoneCode())){
throw new BizException("验证码已过期或错误");
}
CorpInfoDO corpInfoDO = corpInfoRepository.getCorpInfoByCorpName("相关方通用租户");
if(corpInfoDO == null){
@ -113,6 +130,8 @@ public class UserAddExe {
UserE userE = new UserE();
BeanUtils.copyProperties(cmd, userE);
// 3-相关方
userE.setUserType(3);
userGateway.update(userE);
@ -135,11 +154,13 @@ public class UserAddExe {
// 查询用户信息, 获取是否流动人员
UserDO userDO = userRepository.getById(cmd.getId());
if(userDO == null){
throw new BizException("用户不存在");
}
if(userDO.getEmploymentFlag() == 1){
// 插入user_corp表
UserCorpE userCorpE = new UserCorpE();
userCorpE.setUserId(userE.getId());
userCorpE.setEmploymentFlag(11);
userCorpE.setCorpinfoId(userE.getCorpinfoId());
userCorpE.setDepartmentId(userE.getDepartmentId());
userCorpE.setPostName(userE.getPostName());
@ -159,34 +180,47 @@ public class UserAddExe {
}
@DubboReference
private final MessageFacade messageFacade;
// private ZcloudRedisUtil zcloudRedisUtil;
@Transactional(rollbackFor = Exception.class)
public boolean executeSendPhoneCode(UserVerifyPhoneCmd cmd) {
// 生成6位验证码
String s = RandomUtil.randomString(6);
String phoneCode = RandomUtil.randomNumbers(6);
Object phoneCodeCountObj = zcloudRedisUtil.get(RedisConstant.PHONE_CODE_COUNT + DateUtil.getDays() + ":" + cmd.getPhone());
if(phoneCodeCountObj != null){
Integer phoneCodeCount = (Integer) phoneCodeCountObj;
if(phoneCodeCount >= 20){
throw new BizException("今天验证码已发送次数已超过20次");
}
}
boolean sendFlag = sendMessage(cmd.getPhone(), phoneCode);
if(sendFlag){
// 发送成功
// 放入到redis里
// 每天每个手机号只能发20次
// MessageSendCmd messageSendCmd = new MessageSendCmd();
// messageSendCmd.setBusinessId(UuidUtil.get32UUID());
// MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
// messageTargetCmd.setMobile("18603366337");
// messageSendCmd.setTargetCmd(messageTargetCmd);
// messageSendCmd.setSourceCode("MS000070");
// Map<String, Object> sendParams = new HashMap<String, Object>();
// sendParams.put("code", "77777");
// messageSendCmd.setParams(sendParams);
// SingleResponse<Boolean> d = messageFacade.send(messageSendCmd);
zcloudRedisUtil.set(RedisConstant.PHONE_CODE_KEY + cmd.getPhone(), phoneCode, 60 * 15);
// 设置新的验证码发送次数
zcloudRedisUtil.set(RedisConstant.PHONE_CODE_COUNT + DateUtil.getDays() + ":" + cmd.getPhone(),
phoneCodeCountObj == null ? 1 : (Integer)phoneCodeCountObj + 1,
60 * 60 * 24);
return true;
}
return false;
}
// 组装发送短信
public boolean sendMessage(String phone, String phoneCode){
MessageSendCmd messageSendCmd = new MessageSendCmd();
messageSendCmd.setBusinessId(UuidUtil.get32UUID());
MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
messageTargetCmd.setMobile(phone);
messageSendCmd.setTargetCmd(messageTargetCmd);
messageSendCmd.setSourceCode("MS000070");
Map<String, Object> sendParams = new HashMap<String, Object>();
sendParams.put("code", phoneCode);
messageSendCmd.setParams(sendParams);
SingleResponse<Boolean> d = messageFacade.send(messageSendCmd);
return d == null ? false : d.getData();
}

View File

@ -74,9 +74,8 @@ public class UserServiceImpl implements UserServiceI {
}
@Override
public SingleResponse<UserCO> sendPhoneCode(UserVerifyPhoneCmd cmd) {
userAddExe.executeSendPhoneCode(cmd);
return null;
public SingleResponse<Boolean> sendPhoneCode(UserVerifyPhoneCmd cmd) {
return SingleResponse.of(userAddExe.executeSendPhoneCode(cmd));
}

View File

@ -32,7 +32,7 @@ public interface UserServiceI {
SingleResponse<UserCO> verifyPhone(UserVerifyPhoneCmd cmd);
SingleResponse<UserCO> sendPhoneCode(UserVerifyPhoneCmd cmd);
SingleResponse<Boolean> sendPhoneCode(UserVerifyPhoneCmd cmd);
SingleResponse<UserCO> addXgf(UserXgfAddCmd cmd);

View File

@ -0,0 +1,13 @@
package com.zcloud.basic.info.constant;
/**
* @author SondonYong
* @description
* @date 2025/12/3/ 16:59
*/
public class RedisConstant {
public static final String PHONE_CODE_KEY = "PHONE_CODE_KEY:";
public static final String PHONE_CODE_COUNT = "PHONE_CODE_COUNT:";
}

View File

@ -26,10 +26,6 @@ public class AppUserInfoCmd extends Command {
@NotNull(message = "主键id不能为空")
private Long id;
@ApiModelProperty(value = "用户类型,1监管2企业3相关方", name = "userType", required = true)
@NotNull(message = "用户类型,1监管2企业3相关方不能为空")
private Integer userType;
@ApiModelProperty(value = "人脸照片url", name = "userAvatarUrl")
@NotEmpty(message = "人脸照片url不能为空")
private String userAvatarUrl;
@ -50,6 +46,14 @@ public class AppUserInfoCmd extends Command {
@NotEmpty(message = "民族名称不能为空")
private String nationName;
@ApiModelProperty(value = "现住址", name = "currentAddress", required = true)
@NotEmpty(message = "现住址不能为空")
private String currentAddress;
@ApiModelProperty(value = "户口所在地", name = "locationAddress", required = true)
@NotEmpty(message = "户口所在地不能为空")
private String locationAddress;
@ApiModelProperty(value = "文化程度 数据字典", name = "culturalLevel", required = true)
@NotEmpty(message = "文化程度 数据字典不能为空")
private String culturalLevel;
@ -81,29 +85,5 @@ public class AppUserInfoCmd extends Command {
@ApiModelProperty(value = "邮箱", name = "email")
private String email;
@ApiModelProperty(value = "人员类型编码(主要负责人等)", name = "personnelType", required = true)
private String personnelType;
@ApiModelProperty(value = "人员类型翻译", name = "personnelTypeName", required = true)
private String personnelTypeName;
@ApiModelProperty(value = "现住址", name = "currentAddress")
private String currentAddress;
@ApiModelProperty(value = "户口所在地", name = "locationAddress")
private String locationAddress;
}

View File

@ -83,5 +83,6 @@ public class UserCorpE extends BaseE {
this.setSort(userE.getSort());
this.setDepartmentLeaderFlag(userE.getDepartmentLeaderFlag());
}
}