From 0b597ea4500b3463ac9f0983dbabaca52417226c Mon Sep 17 00:00:00 2001 From: liyj <1003249715@qq.com> Date: Sat, 14 Sep 2024 12:21:37 +0800 Subject: [PATCH] 回退上报流程bug修复2 --- dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 97 insertions(+), 7 deletions(-) diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java index 86a6a72..15b4a2d 100644 --- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java +++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java @@ -3,6 +3,7 @@ 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.CtAccount; @@ -13,6 +14,8 @@ import cn.huge.module.ctuser.dto.CtUserAddrDTO; import cn.huge.module.ctuser.dto.UserLoginDTO; 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.utils.JwtUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -21,14 +24,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; -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.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; -import javax.annotation.PostConstruct; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -56,6 +57,8 @@ private CtUserService ctUserService; @Autowired private CtUseroleService ctUseroleService; + @Autowired + private SysClientImpl sysClient; /** * 更新对象 @@ -153,9 +156,23 @@ * @param accType 账号类型 * @return */ - public CtAccount getByAccAndType(String acc, String accType){ + public CtAccount getByAccAndType(String acc, int accType){ QueryWrapper<CtAccount> 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<CtAccount> accountWrapper = new QueryWrapper<>(); + accountWrapper.eq("user_id", userId) .eq("acc_type", accType); CtAccount ctAccount = this.getOne(accountWrapper); return ctAccount; @@ -197,7 +214,7 @@ try{ // 判断账号密码是否为空 if (StringUtils.isBlank(ctAccountLoginDTO.getAcc()) || StringUtils.isBlank(ctAccountLoginDTO.getCipher())) { - return ReturnSucUtils.getRepInfo("账号或密码不能为空", null); + return ReturnFailUtils.getRepInfo("账号或密码不能为空"); } // 判断账号是否存在 CtAccount ctAccount = this.getByAccAndType(ctAccountLoginDTO.getAcc(), UserBaseConsts.ACC_TYPE_1); @@ -214,11 +231,11 @@ if (checkCredential(ctAccountLoginDTO.getCipher(), ctAccount)) { //返回结果 UserLoginDTO userLoginDTO = new UserLoginDTO(); - CtUser ctUser = ctUserService.getByIdFromRedis(ctAccount.getUserId()); + CtUser ctUser = ctUserService.getById(ctAccount.getUserId()); if (ObjectUtils.isEmpty(ctUser)){ return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } - if (UserBaseConsts.USER_STATUS_2.equals(ctUser.getStatus()) || UserBaseConsts.USER_STATUS_3.equals(ctUser.getStatus())){ + if (ctUser.getStatus() != UserBaseConsts.USER_STATUS_1){ return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!"); } // 封装用户信息 @@ -275,7 +292,12 @@ */ public ReturnBO webChangeCipher(String userId, CtCipherDTO ctCipherDTO){ try{ - CtAccount ctAccount = this.getByAccAndType(userId, UserBaseConsts.ACC_TYPE_1); + CtUser loginUser = ctUserService.getById(userId); + CtAccount ctAccount = this.getByAccAndType(loginUser.getAcc(), UserBaseConsts.ACC_TYPE_1); +// QueryWrapper<CtAccount> 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("输入账号或密码不正确,请确认后重试!"); } @@ -298,4 +320,72 @@ } } + /** + * 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 = 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)){ + //返回结果 + UserLoginDTO userLoginDTO = new UserLoginDTO(); + CtUser ctUser = ctUserService.getById(ctAccount.getUserId()); + if (ObjectUtils.isEmpty(ctUser)){ + return ReturnFailUtils.getRepInfo("用户不存在!"); + } + // 封装用户信息 + userLoginDTO.setToken(JwtUtils.buildJWT(ctUser.getId())); + userLoginDTO.setUserId(ctUser.getId()); + userLoginDTO.setTrueName(ctUser.getTrueName()); + userLoginDTO.setUnit(ctUser.getUnitName()); + userLoginDTO.setDept(ctUser.getDeptName()); + userLoginDTO.setCustId(ctUser.getCustId()); + // 登录用户角色 + List<CtUserole> 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<CtAccount> accountUpdateWrapper = new UpdateWrapper<>(); + accountUpdateWrapper.set("login_time", loginTime).eq("id", ctAccount.getId()); + this.update(accountUpdateWrapper); + return ReturnSucUtils.getRepInfo(userLoginDTO); + }else{ + return ReturnFailUtils.getRepInfo("用户不存在!,请确认后重试!"); + } + }catch (Exception e){ + log.error("service方法[AccountService.webGridLogin]调用失败,异常信息:"+e, e); + throw new ServiceException("CtAccountService.webGridLogin", e); + } + } + } -- Gitblit v1.8.0