package cn.huge.module.ctuser.service; import cn.huge.base.common.bo.ReturnBO; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.*; import cn.huge.module.client.api.impl.SysClientImpl; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.ctuser.dao.mapper.CtAccountMapper; import cn.huge.module.ctuser.domain.po.*; import cn.huge.module.ctuser.dto.*; import cn.huge.module.cust.constant.UserBaseConsts; import cn.huge.module.sys.dto.GridTokenBaseDTO; import cn.huge.module.sys.dto.GridUserBaseDTO; import cn.huge.module.sys.dto.GridUserRoleDTO; import cn.huge.module.sys.vo.GridUserRoleVo; import cn.huge.module.utils.JwtUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * @author liyj * @version 1.0.0 * @title: 客户用户账号表业务逻辑处理 * @Description 客户用户账号表业务逻辑处理 * @company hugeinfo * @Time 2024-08-19 20:04:18 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CtAccountService extends ServiceImpl { @Autowired private CtAccountMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private CtUserService ctUserService; @Autowired private CtUseroleService ctUseroleService; @Autowired private SysClientImpl sysClient; @Autowired private CtUnitService ctUnitService; @Resource private GridUnitService gridUnitService; /** * 更新对象 * * @param entity 对象 */ public void updateCtAccount(CtAccount entity) { try { mapper.updateCtAccount(entity); } catch (Exception e) { log.error("[CtAccountService.updateCtAccount]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.updateCtAccount", e); } } /** * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updateCtAccountTerms(CtAccount entity, Map terms) { try { mapper.updateCtAccountTerms(entity, terms); } catch (Exception e) { log.error("[CtAccountService.updateCtAccountTerms]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.updateCtAccountTerms", e); } } /** * 根据编号物理删除 * * @param id 查询条件集合 */ public void deleteCtAccount(String id) { try { mapper.deleteCtAccount(id); } catch (Exception e) { log.error("[CtAccountService.deleteCtAccount]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.deleteCtAccount", e); } } /** * 按条件查询 * * @param terms 条件 * @return List */ public List listTerms(Map terms) { return mapper.listTerms(terms); } /** * 按条件统计 * * @param terms 条件 * @return long */ public long countTerms(Map terms) { return mapper.countTerms(terms); } /** * 按条件分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms) { long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * * @param ctAccount 实体对象 */ public void saveCtAccount(CtAccount ctAccount) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(ctAccount.getId())) { ctAccount.setId(utilsClient.getNewTimeId()); ctAccount.setCreateTime(nowDate); } ctAccount.setUpdateTime(nowDate); this.saveOrUpdate(ctAccount); } catch (Exception e) { log.error("[CtAccountService.saveCtAccount]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.saveCtAccount", e); } } /** * 根据账号和类型查询 * * @param acc 账号 * @param accType 账号类型 * @return */ public CtAccount getByAccAndType(String acc, int accType) { QueryWrapper accountWrapper = new QueryWrapper<>(); accountWrapper.eq("acc", acc) .eq("acc_type", accType); CtAccount ctAccount = this.getOne(accountWrapper); return ctAccount; } /** * 根据用户编号和类型查询 * * @param userId 用户编号 * @param accType 账号类型 * @return */ public CtAccount getByUserIdAndType(String userId, int accType) { QueryWrapper accountWrapper = new QueryWrapper<>(); accountWrapper.eq("user_id", userId) .eq("acc_type", accType); CtAccount ctAccount = this.getOne(accountWrapper); return ctAccount; } /** * 判断密码是否正确 * * @param cipher 密码 * @param ctAccount 账号信息 * @return Boolean */ public Boolean checkCredential(String cipher, CtAccount ctAccount) { String credentialMd5 = DigestUtils.md5DigestAsHex(cipher.getBytes()); log.info("xsd:{}", credentialMd5); if (StringUtils.equals(credentialMd5, ctAccount.getCipher())) { return true; } else { // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); // String createTime = sdf.format(ctAccount.getCreateTime()); // String credentialTime = sdf.format(ctAccount.getCreateTime()); // //是否修改过密码,未修改过可以用默认密码登录 // if (createTime.equals(credentialTime)) { // if (cipher.equals(UserBaseConsts.MR_CIPHER_BY) || cipher.equals(UserBaseConsts.MR_CIPHER_GZ)) { // return true; // } else { // return false; // } // } else { return false; // } } } /** * web端-工作人员用户登录 * * @param ctAccountLoginDTO 登录账号信息 * @return UserLoginDTO */ public ReturnBO webLogin(CtAccountLoginDTO ctAccountLoginDTO) { try { // 判断账号密码是否为空 if (StringUtils.isBlank(ctAccountLoginDTO.getAcc()) || StringUtils.isBlank(ctAccountLoginDTO.getCipher())) { return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } // 判断账号是否存在 CtAccount ctAccount = this.getByAccAndType(ctAccountLoginDTO.getAcc(), UserBaseConsts.ACC_TYPE_1); if (ObjectUtils.isNotEmpty(ctAccount)) { // 判断账号是否被锁定 if (ObjectUtils.isNotEmpty(ctAccount.getLimitTime())) { Date nowDate = new Date(); if (nowDate.before(ctAccount.getLimitTime())) { SimpleDateFormat sdf = new SimpleDateFormat("HH点mm分"); return ReturnFailUtils.getRepInfo("账号已锁定,请于" + sdf.format(ctAccount.getLimitTime()) + "后重试,或者请联系管理员解锁!"); } } // 判断密码是否正确 if (checkCredential(ctAccountLoginDTO.getCipher(), ctAccount)) { //返回结果 UserLoginDTO userLoginDTO = new UserLoginDTO(); CtUser ctUser = ctUserService.getById(ctAccount.getUserId()); if (ObjectUtils.isEmpty(ctUser)) { return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } if (ctUser.getStatus() != UserBaseConsts.USER_STATUS_1) { return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } // 封装用户信息 userLoginDTO.setToken(JwtUtils.buildJWT(ctUser.getId())); userLoginDTO.setUserId(ctUser.getId()); userLoginDTO.setTrueName(ctUser.getTrueName()); userLoginDTO.setPhone(ctUser.getMobile()); CtUnit ctUnit = ctUnitService.getById(ctUser.getUnitId()); if (ObjectUtils.isNotEmpty(ctUnit)) { if (ctUnit.getUnitGrade() == UserBaseConsts.UNIT_GRADE_3 && ctUnit.getUnitType() == UserBaseConsts.UNIT_TYPE_102) { userLoginDTO.setUnit(ctUnit.getUnitDes()); // CtUnit parentCtUnit = ctUnitService.getById(ctUnit.getParentId()); // if (ObjectUtils.isNotEmpty(parentCtUnit)) {1 // userLoginDTO.setUnit(parentCtUnit.getUnitName()); // }else { // userLoginDTO.setUnit(ctUnit.getUnitDes()); // } } else { userLoginDTO.setUnit(ctUnit.getUnitName()); } } else { userLoginDTO.setUnit(ctUser.getUnitName()); } userLoginDTO.setDept(ctUser.getDeptName()); userLoginDTO.setCustId(ctUser.getCustId()); // 登录用户角色 List ctUseroleList = ctUseroleService.listByUserId(ctUser.getId()); userLoginDTO.setCtUseroleList(ctUseroleList); // 登录用户地址信息 CtUserAddrDTO ctUserAddrDTO = new CtUserAddrDTO(); ctUserAddrDTO.setProv(ctUser.getProv()); ctUserAddrDTO.setProvName(ctUser.getProvName()); ctUserAddrDTO.setCity(ctUser.getCity()); ctUserAddrDTO.setCityName(ctUser.getCityName()); ctUserAddrDTO.setArea(ctUser.getArea()); ctUserAddrDTO.setAreaName(ctUser.getAreaName()); ctUserAddrDTO.setRoad(ctUser.getRoad()); ctUserAddrDTO.setRoadName(ctUser.getRoadName()); ctUserAddrDTO.setVillage(ctUser.getVillage()); ctUserAddrDTO.setVillageName(ctUser.getVillageName()); userLoginDTO.setCtUserAddrDTO(ctUserAddrDTO); // 最后登录时间 Date loginTime = ctAccount.getLoginTime(); if (ObjectUtils.isEmpty(ctAccount.getLoginTime())) { loginTime = DateUtils.getNowDate(); } userLoginDTO.setLastLoginTime(loginTime); // 更新最新登录时间 UpdateWrapper accountUpdateWrapper = new UpdateWrapper<>(); accountUpdateWrapper.set("login_time", DateUtils.getNowDate()).eq("id", ctAccount.getId()); this.update(accountUpdateWrapper); return ReturnSucUtils.getRepInfo(userLoginDTO); } else { return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } } else { return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } } catch (Exception e) { log.error("service方法[AccountService.webLogin]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.webLogin", e); } } /** * web端-工作人员-修改密码 * * @param userId 用户编号 * @param ctCipherDTO 修改密码信息 * @return */ public ReturnBO webChangeCipher(String userId, CtCipherDTO ctCipherDTO) { try { CtUser loginUser = ctUserService.getById(userId); CtAccount ctAccount = this.getByAccAndType(loginUser.getAcc(), UserBaseConsts.ACC_TYPE_1); // QueryWrapper ctAccountQueryWrapper = new QueryWrapper<>(); // ctAccountQueryWrapper.eq("user_id", loginUser.getId()). // eq("acc_type", UserBaseConsts.ACC_TYPE_1); // CtAccount ctAccount =mapper.selectOne(ctAccountQueryWrapper); if (ObjectUtils.isEmpty(ctAccount)) { return ReturnFailUtils.getRepInfo("输入账号或密码不正确,请确认后重试!"); } String oldCredentialMd5 = DigestUtils.md5DigestAsHex(ctCipherDTO.getOldCipher().getBytes()); if (!StringUtils.equals(oldCredentialMd5, ctAccount.getCipher())) { return ReturnFailUtils.getRepInfo("输入账号或密码不正确,请确认后重试!"); } String newCredentialMd5 = DigestUtils.md5DigestAsHex(ctCipherDTO.getNewCipher().getBytes()); if (StringUtils.equals(newCredentialMd5, ctAccount.getCipher())) { return ReturnFailUtils.getRepInfo("新密码不能和旧密码相同!"); } UpdateWrapper accountUpdateWrapper = new UpdateWrapper<>(); accountUpdateWrapper.set("cipher", newCredentialMd5).set("cipher_open", ctCipherDTO.getNewCipher()) .set("update_time", DateUtils.getNowDate()).eq("id", ctAccount.getId()); this.update(accountUpdateWrapper); return ReturnSucUtils.getRepInfo(); } catch (Exception e) { log.error("service方法[AccountService.webChangeCipher]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.webChangeCipher", e); } } /** * web端-网格系统单点登录 * * @param gridTokenBaseDTO 网格系统token * @return UserLoginDTO */ public ReturnBO webGridLogin(GridTokenBaseDTO gridTokenBaseDTO) { try { GridUserBaseDTO gridUserBaseDTO = sysClient.getUserInfo(gridTokenBaseDTO); // 判断账号密码是否为空 if (ObjectUtils.isEmpty(gridUserBaseDTO)) { return ReturnFailUtils.getRepInfo("gridToken已失效,请重新登录!"); } // 判断账号是否存在 CtAccount ctAccount = null; CtUser ctUser = null; ctAccount = this.getByAccAndType(gridUserBaseDTO.getAccount(), UserBaseConsts.ACC_TYPE_1); if (ObjectUtils.isEmpty(ctAccount)) { ctAccount = this.getByAccAndType(gridUserBaseDTO.getMobile(), UserBaseConsts.ACC_TYPE_1); } if (ObjectUtils.isNotEmpty(ctAccount)) { //返回结果 ctUser = ctUserService.getById(ctAccount.getUserId()); if (ObjectUtils.isEmpty(ctUser)) { return ReturnFailUtils.getRepInfo("用户不存在!"); } } else { //如果和亿迅系统的手机号对不上,在用身份证号去查询用户,如果查询得到,就对得上,如果查询不到,就说明用户不存在 ctUser = ctUserService.getByIdCard(gridUserBaseDTO.getIdNumber()); if (ObjectUtils.isNotEmpty(ctUser)) { ctAccount = this.getByUserIdAndType(ctUser.getId(), UserBaseConsts.ACC_TYPE_1); } } if (ObjectUtils.isNotEmpty(ctUser)) { //有对应用户,则模拟登录,返回对应信息 UserLoginDTO userLoginDTO = login(ctAccount, ctUser); //获取角色 GridUserRoleVo gridUserRoleVo = new GridUserRoleVo(); gridUserRoleVo.setUserId(gridUserBaseDTO.getId()); GridUserRoleDTO userRoleDTO = sysClient.getUserRoleList(gridUserRoleVo); if (userRoleDTO != null && StringUtils.isNotEmpty(userRoleDTO.getRoleName())) { List ctUseroleList = userLoginDTO.getCtUseroleList(); List ctUseroleList2 = new ArrayList<>(); if (userRoleDTO.getRoleName().contains("经办员")) { for (CtUserole userole : ctUseroleList) { if ("22_00024-4".equals(userole.getRoleCode())) { ctUseroleList2.add(userole); } } if (ctUseroleList2.size() > 0) { userLoginDTO.setCtUseroleList(ctUseroleList2); } else { Date nowDate = new Date(); CtUserole ctUserole = new CtUserole(); ctUserole.setId(utilsClient.getNewTimeId()); ctUserole.setUserId(ctUser.getId()); ctUserole.setRoleId("22_00024-4"); ctUserole.setRoleCode("22_00024-4"); ctUserole.setRoleName("纠纷化解人员"); ctUserole.setCustId(ctUser.getCustId()); ctUserole.setCreateTime(nowDate); ctUserole.setUpdateTime(nowDate); ctUseroleService.save(ctUserole); ctUseroleList2.add(ctUserole); userLoginDTO.setCtUseroleList(ctUseroleList2); } } else if (userRoleDTO.getRoleName().contains("管理员")) { for (CtUserole userole : ctUseroleList) { if ("22_00024-3".equals(userole.getRoleCode())) { ctUseroleList2.add(userole); } } if (ctUseroleList2.size() > 0) { userLoginDTO.setCtUseroleList(ctUseroleList2); } else { Date nowDate = new Date(); CtUserole ctUserole = new CtUserole(); ctUserole.setId(utilsClient.getNewTimeId()); ctUserole.setUserId(ctUser.getId()); ctUserole.setRoleId("22_00024-3"); ctUserole.setRoleCode("22_00024-3"); ctUserole.setRoleName("单位管理员"); ctUserole.setCustId(ctUser.getCustId()); ctUserole.setCreateTime(nowDate); ctUserole.setUpdateTime(nowDate); ctUseroleService.save(ctUserole); ctUseroleList2.add(ctUserole); userLoginDTO.setCtUseroleList(ctUseroleList2); } } else if (userRoleDTO.getRoleName().contains("管理员")) { for (CtUserole userole : ctUseroleList) { if ("22_00024-2".equals(userole.getRoleCode())) { ctUseroleList2.add(userole); } } if (ctUseroleList2.size() > 0) { userLoginDTO.setCtUseroleList(ctUseroleList2); } else { Date nowDate = new Date(); CtUserole ctUserole = new CtUserole(); ctUserole.setId(utilsClient.getNewTimeId()); ctUserole.setUserId(ctUser.getId()); ctUserole.setRoleId("22_00024-2"); ctUserole.setRoleCode("22_00024-2"); ctUserole.setRoleName("超级管理员"); ctUserole.setCustId(ctUser.getCustId()); ctUserole.setCreateTime(nowDate); ctUserole.setUpdateTime(nowDate); ctUseroleService.save(ctUserole); ctUseroleList2.add(ctUserole); userLoginDTO.setCtUseroleList(ctUseroleList2); } } else { for (CtUserole userole : ctUseroleList) { if ("22_00024-1".equals(userole.getRoleCode())) { ctUseroleList2.add(userole); } } if (ctUseroleList2.size() > 0) userLoginDTO.setCtUseroleList(ctUseroleList2); else { Date nowDate = new Date(); CtUserole ctUserole = new CtUserole(); ctUserole.setId(utilsClient.getNewTimeId()); ctUserole.setUserId(ctUser.getId()); ctUserole.setRoleId("22_00024-2"); ctUserole.setRoleCode("22_00024-2"); ctUserole.setRoleName("超级管理员"); ctUserole.setCustId(ctUser.getCustId()); ctUserole.setCreateTime(nowDate); ctUserole.setUpdateTime(nowDate); ctUseroleService.save(ctUserole); ctUseroleList2.add(ctUserole); userLoginDTO.setCtUseroleList(ctUseroleList2); } } } //获取机构 CtUnit ctUnit = ctUnitService.selectUnitByGridId(userRoleDTO.getOrgId()); if (ctUnit != null) { userLoginDTO.setUnit(ctUnit.getUnitName()); ctUser.setUnitName(ctUnit.getUnitName()); ctUser.setUnitId(ctUnit.getId()); ctUserService.updateCtUser(ctUser); } else { int grade = userRoleDTO.getGrade() - 1; String districtCode = userRoleDTO.getDistrictCode().replace("-", ""); String districtName = userRoleDTO.getDistrictName(); String street = formatCode(userRoleDTO.getStreetCode()); String streetName = userRoleDTO.getStreetName(); String village = formatCode(userRoleDTO.getCommunityCode()); String villageName = userRoleDTO.getCommunityName(); String unitName = userRoleDTO.getOrgName(); String unitId = userRoleDTO.getOrgId(); ctUnit = new CtUnit(); GridUnit thGridUnit = new GridUnit(); ctUnit.setCity("440100"); ctUnit.setCityName("广州市"); ctUnit.setUnitName(unitName); ctUnit.setUnitDes(unitName); ctUnit.setId(unitId); ctUnit.setArea(districtCode); ctUnit.setAreaName(districtName); ctUnit.setDeleteStatus(0); CtUnit unitByRoad = null; switch (grade) { case 1: //市级级 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102); ctUnit.setParentId("2024000000000001"); thGridUnit.setThirdGridCode(districtCode.replace("-", "")); break; case 2: //区级 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102); unitByRoad = ctUnitService.getUnitByArea(districtCode); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); thGridUnit.setThirdGridCode(districtCode.replace("-", "")); break; case 3: //镇街 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102); ctUnit.setRoad(street); ctUnit.setRoadName(streetName); unitByRoad = ctUnitService.getUnitByRoad(street); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); thGridUnit.setThirdGridCode(street); break; case 4: //村居 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_104); ctUnit.setRoad(street); ctUnit.setRoadName(streetName); ctUnit.setVillage(village); ctUnit.setVillageName(villageName); thGridUnit.setThirdGridCode(village); unitByRoad = ctUnitService.getUnitByRoad(street); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); break; case 5: //网格-村居 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_104); ctUnit.setRoad(street); ctUnit.setRoadName(streetName); ctUnit.setVillage(village); ctUnit.setVillageName(villageName); thGridUnit.setThirdGridCode(village); unitByRoad = ctUnitService.getUnitByRoad(street); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); break; } log.info("xsdctUnit:{}", ctUnit); ctUnitService.saveCtUnit(ctUnit); userLoginDTO.setUnit(ctUnit.getUnitName()); ctUser.setUnitName(ctUnit.getUnitName()); ctUser.setUnitId(ctUnit.getId()); ctUserService.updateCtUser(ctUser); thGridUnit.setDyhUnitId(ctUnit.getId()); thGridUnit.setThirdUnitId(ctUnit.getId()); thGridUnit.setThirdUnitCode(userRoleDTO.getOrgCode()); thGridUnit.setThirdUnitName(ctUnit.getUnitName()); thGridUnit.setCreateTime(new Date()); thGridUnit.setId(gridUnitService.getMaxId() + 1); log.info("xsdthGridUnit:{}", thGridUnit); gridUnitService.saveOrUpdate(thGridUnit); } return ReturnSucUtils.getRepInfo(userLoginDTO); } else { //没有对应用户,创建用户,根据用户id获取用户信息 ReturnBO repInfo = initNewUser2(gridUserBaseDTO); if (repInfo.getCode() == 0) { //创建用户成功,模拟登录 ctUser = ctUserService.getByIdCard(gridUserBaseDTO.getIdNumber()); if (ObjectUtils.isNotEmpty(ctUser)) { ctAccount = this.getByUserIdAndType(ctUser.getId(), UserBaseConsts.ACC_TYPE_1); } UserLoginDTO userLoginDTO = login(ctAccount, ctUser); return ReturnSucUtils.getRepInfo(userLoginDTO); } else { //创建用户失败,返回失败信息 return repInfo; } } } catch (Exception e) { log.error("service方法[AccountService.webGridLogin]调用失败,异常信息:" + e, e); throw new ServiceException("CtAccountService.webGridLogin", e); } } public String formatCode(String input) { if (input == null || input.isEmpty()) { return ""; } String[] parts = input.split("-"); if (parts.length == 3) { return parts[0] + parts[1] + parts[2]; } else if (parts.length >= 4) { return parts[0] + parts[1] + parts[2] + "-" + parts[3]; } else if (parts.length >= 5) { return parts[0] + parts[1] + parts[2] + "-" + parts[3]+"-" + parts[4]; } else { return input; // 或抛出异常 } } private UserLoginDTO login(CtAccount ctAccount, CtUser ctUser) { UserLoginDTO userLoginDTO = new UserLoginDTO(); // 封装用户信息 userLoginDTO.setToken(JwtUtils.buildJWT(ctUser.getId())); userLoginDTO.setUserId(ctUser.getId()); userLoginDTO.setTrueName(ctUser.getTrueName()); userLoginDTO.setUnit(ctUser.getUnitName()); userLoginDTO.setDept(ctUser.getDeptName()); userLoginDTO.setPhone(ctUser.getMobile()); userLoginDTO.setCustId(ctUser.getCustId()); // 登录用户角色 List ctUseroleList = ctUseroleService.listByUserId(ctUser.getId()); userLoginDTO.setCtUseroleList(ctUseroleList); // 登录用户地址信息 CtUserAddrDTO ctUserAddrDTO = new CtUserAddrDTO(); ctUserAddrDTO.setProv(ctUser.getProv()); ctUserAddrDTO.setProvName(ctUser.getProvName()); ctUserAddrDTO.setCity(ctUser.getCity()); ctUserAddrDTO.setCityName(ctUser.getCityName()); ctUserAddrDTO.setArea(ctUser.getArea()); ctUserAddrDTO.setAreaName(ctUser.getAreaName()); ctUserAddrDTO.setRoad(ctUser.getRoad()); ctUserAddrDTO.setRoadName(ctUser.getRoadName()); ctUserAddrDTO.setVillage(ctUser.getVillage()); ctUserAddrDTO.setVillageName(ctUser.getVillageName()); userLoginDTO.setCtUserAddrDTO(ctUserAddrDTO); // 最后登录时间 Date loginTime = new Date(); userLoginDTO.setLastLoginTime(loginTime); // 更新最新登录时间 UpdateWrapper accountUpdateWrapper = new UpdateWrapper<>(); accountUpdateWrapper.set("login_time", loginTime).eq("id", ctAccount.getId()); this.update(accountUpdateWrapper); return userLoginDTO; } private ReturnBO initNewUser2(GridUserBaseDTO gridUserBaseDTO) { String userId = gridUserBaseDTO.getId(); //拿到用户机构信息 GridUserRoleVo gridUserRoleVo = new GridUserRoleVo(); gridUserRoleVo.setUserId(userId); GridUserRoleDTO userRoleDTO = sysClient.getUserRoleList(gridUserRoleVo); if (StringUtils.isEmpty(userRoleDTO.getRoleName()) || !userRoleDTO.getRoleName().contains("(M)")) { return ReturnFailUtils.getRepInfo("该用户没有矛调系统的权限"); } CtUserole ctUserole = new CtUserole(); if (userRoleDTO.getRoleName().contains("经办员")) { ctUserole.setRoleId("22_00024-4"); ctUserole.setRoleName("纠纷化解人员"); } else { ctUserole.setRoleId("22_00024-3"); ctUserole.setRoleName("单位管理员"); } List ctUseroles = new ArrayList<>(); ctUseroles.add(ctUserole); log.info("xsd:CtUserole:{}", ctUserole); CtUnit ctUnit = ctUnitService.selectUnitByGridId(userRoleDTO.getOrgId()); log.info("xsd:ctUnit:{}", ctUnit); if (ctUnit != null && StringUtils.isNotEmpty(ctUnit.getId())) { CtUserSaveDTO ctUserSaveDTO = new CtUserSaveDTO(); ctUserSaveDTO.setUnitId(ctUnit.getId()); ctUserSaveDTO.setUnitName(ctUnit.getUnitName()); ctUserSaveDTO.setCipher("Byzfw2025!"); ctUserSaveDTO.setAcc(gridUserBaseDTO.getMobile()); ctUserSaveDTO.setTrueName(gridUserBaseDTO.getName()); ctUserSaveDTO.setMobile(gridUserBaseDTO.getMobile()); ctUserSaveDTO.setIdcard(gridUserBaseDTO.getIdNumber()); ctUserSaveDTO.setCtUseroleList(ctUseroles); ctUserService.webSaveCtUser(ctUserSaveDTO, "-1"); log.info("xsd:ctUserSaveDTO:{}", ctUserSaveDTO); } else { //创建机构 //id,level,parent_id,unit_grade,unit_name,unit_type, //prov,prov_name, city,city_name,area,area_name,road,road_name,village,village_name,addr,delete_status int grade = userRoleDTO.getGrade() - 1; String districtCode = userRoleDTO.getDistrictCode().replace("-", ""); String districtName = userRoleDTO.getDistrictName(); String street = formatCode(userRoleDTO.getStreetCode()); String streetName = userRoleDTO.getStreetName(); String village = userRoleDTO.getCommunityCode(); String villageName = userRoleDTO.getCommunityName(); String unitName = userRoleDTO.getOrgName(); String unitId = userRoleDTO.getOrgId(); ctUnit = new CtUnit(); GridUnit thGridUnit = new GridUnit(); ctUnit.setCity("440100"); ctUnit.setCityName("广州市"); ctUnit.setUnitName(unitName); ctUnit.setUnitDes(unitName); ctUnit.setId(unitId); ctUnit.setArea(districtCode); ctUnit.setAreaName(districtName); ctUnit.setDeleteStatus(0); CtUnit unitByRoad = null; switch (grade) { case 1: //市级级 ctUnit.setLevel(grade ); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102); ctUnit.setParentId("2024000000000001"); thGridUnit.setThirdGridCode(districtCode.replace("-", "")); break; case 2: //区级 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102); unitByRoad = ctUnitService.getUnitByArea(districtCode); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); thGridUnit.setThirdGridCode(districtCode.replace("-", "")); break; case 3: //镇街 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102); ctUnit.setRoad(street); ctUnit.setRoadName(streetName); unitByRoad = ctUnitService.getUnitByRoad(street); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); thGridUnit.setThirdGridCode(street); break; case 4: //村居 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_104); ctUnit.setRoad(street); ctUnit.setRoadName(streetName); ctUnit.setVillage(village); ctUnit.setVillageName(villageName); thGridUnit.setThirdGridCode(village); unitByRoad = ctUnitService.getUnitByRoad(street); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); break; case 5: //网格-村居 ctUnit.setLevel(grade); ctUnit.setUnitGrade(grade); ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_104); ctUnit.setRoad(street); ctUnit.setRoadName(streetName); ctUnit.setVillage(village); ctUnit.setVillageName(villageName); thGridUnit.setThirdGridCode(village); unitByRoad = ctUnitService.getUnitByRoad(street); ctUnit.setParentId(unitByRoad == null ? "100001" : unitByRoad.getId()); break; } log.info("xsdctUnit:{}", ctUnit); ctUnitService.saveCtUnit(ctUnit); thGridUnit.setDyhUnitId(ctUnit.getId()); thGridUnit.setThirdUnitId(ctUnit.getId()); thGridUnit.setThirdUnitCode(userRoleDTO.getOrgCode()); thGridUnit.setThirdUnitName(ctUnit.getUnitName()); thGridUnit.setCreateTime(new Date()); thGridUnit.setId(gridUnitService.getMaxId() + 1); log.info("xsdthGridUnit:{}", thGridUnit); gridUnitService.saveOrUpdate(thGridUnit); CtUserSaveDTO ctUserSaveDTO = new CtUserSaveDTO(); ctUserSaveDTO.setUnitId(ctUnit.getId()); ctUserSaveDTO.setUnitName(ctUnit.getUnitName()); ctUserSaveDTO.setCipher("Byzfw2025!"); ctUserSaveDTO.setAcc(gridUserBaseDTO.getMobile()); ctUserSaveDTO.setTrueName(gridUserBaseDTO.getName()); ctUserSaveDTO.setMobile(gridUserBaseDTO.getMobile()); ctUserSaveDTO.setIdcard(gridUserBaseDTO.getIdNumber()); ctUserSaveDTO.setCtUseroleList(ctUseroles); ctUserService.webSaveCtUser(ctUserSaveDTO, "-1"); } return ReturnSucUtils.getRepInfo("创建账号成功"); } }