修改小程序注册方法-已测试改为调用新方法

This commit is contained in:
sh
2025-12-06 16:25:47 +08:00
parent c2a8b4013b
commit 7d8a15bcdc
3 changed files with 232 additions and 16 deletions

View File

@@ -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);

View File

@@ -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"));

View File

@@ -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);
}