dyh-gateway/src/main/resources/config/application.yml | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/GridTokenBaseDTO.java | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/GridUserBaseDTO.java | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-cust/src/main/java/cn/huge/module/client/api/SysClient.java | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-cust/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java | ●●●●● patch | view | raw | blame | history | |
dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridUserInfoController.java | ●●●●● patch | view | raw | blame | history |
dyh-gateway/src/main/resources/config/application.yml
@@ -54,5 +54,5 @@ #refreshToken过期时间:13小时,比token时间长一点 expire-time: 46800000 #不进行token拦截 auth-skip-urls: /dyh-cust/api/web/ctAccount/login,/dyh-sys/api/v1/sync/universalSync,/dyh-utils/api/web/caseUtils/getNewTimeId,/dyh-utils/api/web/caseUtils/getNewTimeCaseId,/dyh-sys/api/web/fileInfo/show,/dyh-sys/api/web/fileInfo/down,/dyh-sys/api/wechat/fileInfo/show,/dyh-sys/api/wechat/fileInfo/down,/dyh-cust/api/wechat/paAccount/empower auth-skip-urls: /dyh-cust/api/web/ctAccount/login,/dyh-sys/api/v1/sync/universalSync,/dyh-utils/api/web/caseUtils/getNewTimeId,/dyh-utils/api/web/caseUtils/getNewTimeCaseId,/dyh-sys/api/web/fileInfo/show,/dyh-sys/api/web/fileInfo/down,/dyh-sys/api/wechat/fileInfo/show,/dyh-sys/api/wechat/fileInfo/down,/dyh-cust/api/wechat/paAccount/empower,/dyh-cust/api/web/ctAccount/gridLogin dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/GridTokenBaseDTO.java
New file @@ -0,0 +1,8 @@ package cn.huge.module.sys.dto; import lombok.Data; @Data public class GridTokenBaseDTO { private String token; } dyh-service/dyh-base/src/main/java/cn/huge/module/sys/dto/GridUserBaseDTO.java
New file @@ -0,0 +1,29 @@ package cn.huge.module.sys.dto; import lombok.Data; @Data public class GridUserBaseDTO { private String id; /** * 所属网格 */ private String gridCode; /** * 登录账号 */ private String account; /** * 登录账号 */ private String name; /** * 电话 */ private String mobile; /** * 身份证 */ private String idNumber; } dyh-service/dyh-cust/src/main/java/cn/huge/module/client/api/SysClient.java
New file @@ -0,0 +1,37 @@ package cn.huge.module.client.api; import cn.huge.base.common.bo.R; import cn.huge.base.common.bo.ReturnBO; import cn.huge.module.sys.dto.GridTokenBaseDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; /** * @title: 系统服务微服务调用接口 * @description: 系统服务微服务调用接口 * @company: hugeinfo * @author: liyj * @time: 2021-11-05 16:51:48 * @version: 1.0.0 */ @FeignClient(name = "dyh-sys") public interface SysClient { /** * 公共id-获取时间Id,后四位常量 * @url {ctx}/api/client/custUtils/getNewTimeId * @return Object */ /** * 根据用户token获取用户信息 * @url {ctx}/api/thrid/grid/user/get-userinfo * @param gridTokenBaseDTO * @return */ @PostMapping("/api/thrid/grid/user/get-userinfo") ReturnBO getUserInfo(@RequestBody GridTokenBaseDTO gridTokenBaseDTO); } dyh-service/dyh-cust/src/main/java/cn/huge/module/client/api/impl/SysClientImpl.java
New file @@ -0,0 +1,64 @@ package cn.huge.module.client.api.impl; import cn.huge.base.common.bo.ReturnBO; import cn.huge.base.common.constant.ReturnConsts; import cn.huge.base.common.exception.ClientException; import cn.huge.base.common.exception.ServiceException; import cn.huge.module.client.api.SysClient; import cn.huge.module.client.api.UtilsClient; import cn.huge.module.cust.dto.CtUnitDTO; import cn.huge.module.sys.dto.GridTokenBaseDTO; import cn.huge.module.sys.dto.GridUserBaseDTO; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @title: 系统服务微服务调用接口 * @description: 系统服务微服务调用接口 * @company: hugeinfo * @author: liyj * @time: 2021-11-05 16:51:48 * @version: 1.0.0 */ @Slf4j @Component public class SysClientImpl { private SysClient sysClient; /** * ObjectMapper工具类 */ private ObjectMapper objectMapper = new ObjectMapper(); @Autowired public SysClientImpl(SysClient sysClient) { this.sysClient = sysClient; } /** * 根据用户token获取用户信息 * @url {ctx}/api/thrid/grid/user/get-userinfo * @param gridTokenBaseDTO * @return */ public GridUserBaseDTO getUserInfo(GridTokenBaseDTO gridTokenBaseDTO){ GridUserBaseDTO gridUserBaseDTO = null; try{ ReturnBO returnBo = sysClient.getUserInfo(gridTokenBaseDTO); if (ReturnConsts.OK == returnBo.getCode()){ gridUserBaseDTO = objectMapper.convertValue(returnBo.getData(), GridUserBaseDTO.class); }else{ log.error("Client外服务接口[SysClientImpl.getUserInfo]请求异常:" + returnBo.getMsg(), returnBo.getMsg()); throw new ClientException("SysClientImpl.getUserInfo", returnBo.getMsg()); } }catch (Exception e){ log.error("service方法[SysClientImpl.getUserInfo]调用异常:"+e, e); } return gridUserBaseDTO; } } dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java
@@ -10,6 +10,7 @@ import cn.huge.module.ctuser.dto.CtAccountLoginDTO; import cn.huge.module.ctuser.dto.CtCipherDTO; import cn.huge.module.ctuser.service.CtAccountService; import cn.huge.module.sys.dto.GridTokenBaseDTO; import cn.huge.module.utils.JwtUtils; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; @@ -115,4 +116,20 @@ } } /** * web端-网格系统单点登录 * @url {ctx}/api/web/ctAccount/gridLogin * @param gridTokenBaseDTO 网格系统token * @return Object */ @PostMapping(value = "gridLogin") public Object gridLogin(@RequestBody GridTokenBaseDTO gridTokenBaseDTO) { try { ReturnBO returnBO = service.webGridLogin(gridTokenBaseDTO); return returnBO; } catch (Exception e) { return ReturnFailUtils.getRepInfo(e.getMessage()); } } } 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; @@ -54,6 +57,8 @@ private CtUserService ctUserService; @Autowired private CtUseroleService ctUseroleService; @Autowired private SysClientImpl sysClient; /** * 更新对象 @@ -209,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); @@ -315,4 +320,69 @@ } } /** * 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.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); } } } dyh-service/dyh-sys/src/main/java/cn/huge/module/grid/controller/GridUserInfoController.java
@@ -1,6 +1,7 @@ package cn.huge.module.grid.controller; import cn.huge.base.common.bo.R; import cn.huge.base.common.utils.ReturnSucUtils; import cn.huge.module.grid.domain.vo.GridTokenVo; import cn.huge.module.grid.domain.vo.GridUserRequestVo; import cn.huge.module.grid.domain.vo.GridUserVo; @@ -22,11 +23,12 @@ /** * 根据用户token获取用户信息 * @param token * @url {ctx}/api/thrid/grid/user/get-userinfo * @param gridTokenVo * @return */ @PostMapping("/get-userinfo") public R<GridUserVo> getUserInfo(@RequestBody GridTokenVo gridTokenVo) { return gridUserService.getUserInfo(gridTokenVo); public Object getUserInfo(@RequestBody GridTokenVo gridTokenVo) { return ReturnSucUtils.getRepInfo(gridUserService.getUserInfo(gridTokenVo)); } }