修改小程序注册方法-已测试改为调用新方法
This commit is contained in:
@@ -62,6 +62,8 @@ public interface IAppUserService
|
||||
|
||||
public AppUser registerAppUser(RegisterBody registerBody);
|
||||
|
||||
public AppUser registerAppUserNew(RegisterBody registerBody);
|
||||
|
||||
public AppUser selectAppuserByIdcard(String idCard);
|
||||
|
||||
public AppUserLky selectAppUserInfo(AppUser appUser);
|
||||
|
||||
@@ -199,7 +199,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
|
||||
}
|
||||
}
|
||||
//角色集合
|
||||
Map mapUserRole=new HashMap<>();
|
||||
Map<String,Object> mapUserRole=new HashMap<>();
|
||||
switch (appUser.getIsCompanyUser()){
|
||||
case StringUtil.IS_COMPANY_USER://企业
|
||||
if(registerBody.getCompany()!=null){
|
||||
@@ -238,20 +238,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
|
||||
//保存sys_user
|
||||
SysUser parmUser=appUserMapper.selectSysUserIdcard(appUser.getIdCard());
|
||||
if(parmUser==null){
|
||||
SysUser sysUser=new SysUser();
|
||||
sysUser.setUserName(StringUtil.USER_KEY+appUser.getIdCard());
|
||||
sysUser.setNickName(StringUtils.isEmpty(appUser.getName())?appUser.getPhone():appUser.getName());
|
||||
sysUser.setPassword(SiteSecurityUtils.encryptPassword("123456"));
|
||||
sysUser.setPhonenumber(appUser.getPhone());
|
||||
sysUser.setSex(appUser.getSex());
|
||||
sysUser.setStatus("0");
|
||||
sysUser.setLoginIp(appUser.getLoginIp());
|
||||
sysUser.setLoginDate(appUser.getLoginDate());
|
||||
sysUser.setIdCard(appUser.getIdCard());
|
||||
appUserMapper.insertSysUser(sysUser);
|
||||
//保存sys_user_role
|
||||
mapUserRole.put("userId",sysUser.getUserId());
|
||||
appUserMapper.insertSysUserRole(mapUserRole);
|
||||
registerInsertSysUser(appUser,mapUserRole);
|
||||
}
|
||||
//一体机密码
|
||||
if(StringUtils.isNotEmpty(appUser.getYtjPassword())){
|
||||
@@ -261,6 +248,232 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper,AppUser> imple
|
||||
return appUser;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AppUser registerAppUserNew(RegisterBody registerBody) {
|
||||
// 1. 参数校验
|
||||
validateRegisterParam(registerBody);
|
||||
|
||||
// 2. 获取基础数据
|
||||
AppUser appUser = registerBody.getAppUser();
|
||||
Long loginUserId = SiteSecurityUtils.getUserId();
|
||||
|
||||
// 3. 登录态处理:关联已有用户信息
|
||||
AppUser existingUser = handleLoginUserAssociation(appUser, loginUserId);
|
||||
|
||||
// 4. 差异化业务处理(企业用户/求职者)
|
||||
handleUserTypeSpecificLogic(existingUser, registerBody);
|
||||
|
||||
// 5. 系统用户同步(不存在则创建)
|
||||
syncSysUserIfNecessary(existingUser);
|
||||
|
||||
// 6. 一体机密码加密处理
|
||||
encryptYtjPassword(existingUser);
|
||||
|
||||
// 7. 更新App用户信息
|
||||
appUserMapper.updateById(existingUser);
|
||||
|
||||
return existingUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册参数校验
|
||||
* @param registerBody 注册请求体
|
||||
*/
|
||||
private void validateRegisterParam(RegisterBody registerBody) {
|
||||
if (registerBody == null) {
|
||||
throw new IllegalArgumentException("注册请求参数不能为空");
|
||||
}
|
||||
AppUser appUser = registerBody.getAppUser();
|
||||
if (appUser == null) {
|
||||
throw new IllegalArgumentException("用户基础信息不能为空");
|
||||
}
|
||||
if (StringUtils.isEmpty(appUser.getIsCompanyUser())) {
|
||||
throw new IllegalArgumentException("用户类型(isCompanyUser)不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理登录用户关联逻辑
|
||||
* @param appUser 注册传入的用户信息
|
||||
* @param loginUserId 登录用户ID
|
||||
* @return 关联后的用户信息
|
||||
*/
|
||||
private AppUser handleLoginUserAssociation(AppUser appUser, Long loginUserId) {
|
||||
if (SiteSecurityUtils.isLogin() && loginUserId != null) {
|
||||
AppUser dbUser = appUserMapper.selectById(loginUserId);
|
||||
if (dbUser != null) {
|
||||
if (appUser == null) {
|
||||
return dbUser;
|
||||
} else {
|
||||
appUser.setPhone(dbUser.getPhone());
|
||||
appUser.setUserId(dbUser.getUserId());
|
||||
return appUser;
|
||||
}
|
||||
}
|
||||
}
|
||||
return appUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理不同用户类型的差异化业务逻辑
|
||||
* @param appUser 用户信息
|
||||
* @param registerBody 注册请求体
|
||||
*/
|
||||
private void handleUserTypeSpecificLogic(AppUser appUser, RegisterBody registerBody) {
|
||||
String userType = appUser.getIsCompanyUser();
|
||||
switch (userType) {
|
||||
case StringUtil.IS_COMPANY_USER:
|
||||
handleCompanyUserLogic(appUser, registerBody.getCompany());
|
||||
break;
|
||||
default:
|
||||
handleJobSeekerUserLogic(appUser, registerBody);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理企业用户注册逻辑
|
||||
* @param appUser 企业用户信息
|
||||
* @param company 企业信息
|
||||
*/
|
||||
private void handleCompanyUserLogic(AppUser appUser, Company company) {
|
||||
if (company != null) {
|
||||
// 保存企业信息(新增场景)
|
||||
if (company.getCompanyId() == null) {
|
||||
companyMapper.insert(company);
|
||||
// 批量保存企业联系人
|
||||
saveCompanyContacts(company.getCompanyId(), company.getCompanyContactList());
|
||||
}
|
||||
// 关联企业信息到用户
|
||||
appUser.setIdCard(company.getCode());
|
||||
appUser.setName(company.getName());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存企业联系人
|
||||
* @param companyId 企业ID
|
||||
* @param contactList 联系人列表
|
||||
*/
|
||||
private void saveCompanyContacts(Long companyId, List<CompanyContact> contactList) {
|
||||
if (contactList != null && !contactList.isEmpty()) {
|
||||
contactList.forEach(contact -> contact.setCompanyId(companyId));
|
||||
companyContactMapper.batchInsert(contactList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理求职者用户注册逻辑
|
||||
* @param appUser 求职者用户信息
|
||||
* @param registerBody 注册请求体
|
||||
*/
|
||||
private void handleJobSeekerUserLogic(AppUser appUser, RegisterBody registerBody) {
|
||||
Long userId = appUser.getUserId();
|
||||
// 保存工作经历
|
||||
saveUserWorkExperiences(userId, registerBody.getExperiencesList());
|
||||
// 保存技能信息
|
||||
saveUserAppSkills(userId, registerBody.getAppSkillsList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存用户工作经历
|
||||
* @param userId 用户ID
|
||||
* @param experiencesList 工作经历列表
|
||||
*/
|
||||
private void saveUserWorkExperiences(Long userId, List<UserWorkExperiences> experiencesList) {
|
||||
if (experiencesList != null && !experiencesList.isEmpty()) {
|
||||
experiencesList.forEach(experience -> experience.setUserId(userId));
|
||||
userWorkExperiencesMapper.batchInsert(experiencesList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存用户技能信息
|
||||
* @param userId 用户ID
|
||||
* @param skillsList 技能列表
|
||||
*/
|
||||
private void saveUserAppSkills(Long userId, List<AppSkill> skillsList) {
|
||||
if (skillsList != null && !skillsList.isEmpty()) {
|
||||
skillsList.forEach(skill -> skill.setUserId(userId));
|
||||
appSkillMapper.batchInsert(skillsList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步系统用户(不存在则创建)
|
||||
* @param appUser App用户信息
|
||||
*/
|
||||
private void syncSysUserIfNecessary(AppUser appUser) {
|
||||
SysUser sysUser = appUserMapper.selectSysUserIdcard(appUser.getIdCard());
|
||||
if (sysUser == null) {
|
||||
// 构建角色映射
|
||||
Map<String, Object> roleMap = buildUserRoleMap(appUser.getIsCompanyUser());
|
||||
// 创建系统用户及角色关联
|
||||
registerInsertSysUser(appUser, roleMap);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建用户角色映射
|
||||
* @param userType 用户类型
|
||||
* @return 角色ID映射
|
||||
*/
|
||||
private Map<String, Object> buildUserRoleMap(String userType) {
|
||||
Map<String, Object> roleMap = new HashMap<>();
|
||||
if (StringUtil.IS_COMPANY_USER.equals(userType)) {
|
||||
roleMap.put("roleId", StringUtil.SYS_QY);
|
||||
} else {
|
||||
roleMap.put("roleId", StringUtil.SYS_QZZ);
|
||||
}
|
||||
return roleMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密一体机密码
|
||||
* @param appUser 用户信息
|
||||
*/
|
||||
private void encryptYtjPassword(AppUser appUser) {
|
||||
if (StringUtils.hasText(appUser.getYtjPassword())) {
|
||||
appUser.setYtjPassword(SiteSecurityUtils.encryptPassword(appUser.getYtjPassword()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存系统用户及角色关联
|
||||
* @param appUser App用户信息
|
||||
* @param roleMap 角色映射(包含roleId)
|
||||
*/
|
||||
private void registerInsertSysUser(AppUser appUser, Map<String, Object> roleMap) {
|
||||
// 构建系统用户
|
||||
SysUser sysUser = buildSysUser(appUser);
|
||||
// 插入系统用户
|
||||
appUserMapper.insertSysUser(sysUser);
|
||||
// 关联用户角色
|
||||
roleMap.put("userId", sysUser.getUserId());
|
||||
appUserMapper.insertSysUserRole(roleMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建系统用户对象
|
||||
* @param appUser App用户信息
|
||||
* @return 系统用户对象
|
||||
*/
|
||||
private SysUser buildSysUser(AppUser appUser) {
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserName(StringUtil.USER_KEY + appUser.getIdCard());
|
||||
sysUser.setNickName(StringUtils.isEmpty(appUser.getName()) ? appUser.getPhone() : appUser.getName());
|
||||
sysUser.setPassword(SiteSecurityUtils.encryptPassword("123456"));
|
||||
sysUser.setPhonenumber(appUser.getPhone());
|
||||
sysUser.setSex(appUser.getSex());
|
||||
sysUser.setStatus("0");
|
||||
sysUser.setLoginIp(appUser.getLoginIp());
|
||||
sysUser.setLoginDate(appUser.getLoginDate());
|
||||
sysUser.setIdCard(appUser.getIdCard());
|
||||
return sysUser;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AppUser selectAppuserByIdcard(String idCard) {
|
||||
return appUserMapper.selectOne(Wrappers.<AppUser>lambdaQuery().eq(AppUser::getIdCard, idCard).eq(AppUser::getDelFlag,"0").orderByDesc(AppUser::getUpdateTime).last("LIMIT 1"));
|
||||
|
||||
@@ -485,7 +485,8 @@ public class SysLoginService
|
||||
* @return
|
||||
*/
|
||||
public String registerAppUser(RegisterBody registerBody) {
|
||||
AppUser appUser=appUserService.registerAppUser(registerBody);
|
||||
//AppUser appUser=appUserService.registerAppUser(registerBody);
|
||||
AppUser appUser=appUserService.registerAppUserNew(registerBody);
|
||||
return loginUserIdApp(appUser);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user