From 76c373993d579b37ca30640a82dcbe77664806e8 Mon Sep 17 00:00:00 2001 From: songyunpeng Date: Tue, 23 Jun 2020 13:43:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=AB=AF=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=AB=AF=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/dto/SysUserDTO.java | 4 ++ .../epdc/form/EpdcScripUserInfoFormDTO.java | 26 ++++++++ .../epdc/controller/SysUserController.java | 30 +++++++++ .../com/elink/esua/epdc/dao/SysUserDao.java | 20 +++++- .../elink/esua/epdc/entity/SysUserEntity.java | 4 ++ .../esua/epdc/service/SysUserService.java | 17 +++++ .../epdc/service/impl/SysUserServiceImpl.java | 34 ++++++++++ .../src/main/resources/mapper/SysUserDao.xml | 50 ++++++++++++++ .../esua/epdc/controller/AuthController.java | 22 +++++++ .../esua/epdc/feign/UserFeignClient.java | 9 +++ .../fallback/UserFeignClientFallback.java | 5 ++ .../elink/esua/epdc/service/AuthService.java | 8 +++ .../epdc/service/impl/AuthServiceImpl.java | 65 +++++++++++++++++++ .../token/dto/WorkUserScripLoginDTO.java | 30 +++++++++ .../src/main/resources/application.yml | 1 + .../epdc/controller/ApiAdminController.java | 15 +++++ .../controller/ApiAnalysisUserController.java | 17 ++++- .../esua/epdc/feign/AdminFeignClient.java | 15 +++++ .../esua/epdc/feign/ResourceFeignClient.java | 10 +++ .../fallback/AdminFeignClientFallback.java | 7 ++ .../fallback/ResourceFeignClientFallback.java | 6 ++ .../elink/esua/epdc/service/AdminService.java | 9 +++ .../epdc/service/AnalysisUserService.java | 12 +++- .../epdc/service/impl/AdminServiceImpl.java | 13 ++++ .../service/impl/AnalysisUserServiceImpl.java | 10 ++- 25 files changed, 430 insertions(+), 9 deletions(-) create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcScripUserInfoFormDTO.java create mode 100644 esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/WorkUserScripLoginDTO.java diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysUserDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysUserDTO.java index d8a35022..80b3e526 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysUserDTO.java +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysUserDTO.java @@ -104,5 +104,9 @@ public class SysUserDTO implements Serializable { * 微信openId */ private String openId; + /** + * 临时凭证 + */ + private String scrip; } diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcScripUserInfoFormDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcScripUserInfoFormDTO.java new file mode 100644 index 00000000..f633b79e --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcScripUserInfoFormDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Auther: songyunpeng + * @Date: 2020/06/22 16:37 + * @Description: 临时凭证参数 + */ +@Data +public class EpdcScripUserInfoFormDTO implements Serializable { + private static final long serialVersionUID = 6035055052382466281L; + + @NotNull(message = "网格ID不能为空") + private Long gridId; + /** + * 用户ID + */ + @NotBlank(message = "手机号不能为空") + private String mobile; + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index abb9fa49..d19bf6d6 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -26,6 +26,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.excel.SysUserExcel; import com.elink.esua.epdc.service.*; import io.swagger.annotations.Api; @@ -374,4 +375,33 @@ public class SysUserController { return sysUserService.getSysGridLeaderPhone(deptId); } + /** + * @Description 根据手机号和网格信息获取临时凭证 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [epdcScripUserInfoFormDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @PostMapping("getUserInfoByGridAndMobile") + public Result getUserInfoByGridAndMobile(@RequestBody EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO){ + ValidatorUtils.validateEntity(epdcScripUserInfoFormDTO); + return new Result().ok(sysUserService.getUserInfoByGridAndMobile(epdcScripUserInfoFormDTO)); + } + + /** + * @Description 根据临时凭证获取用户信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [username] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("getByScrip/{scrip}") + public Result getByScrip(@PathVariable("scrip") String scrip) { + SysUserDTO user = sysUserService.getByScrip(scrip); + UserDetail userDetail = ConvertUtils.sourceToTarget(user, UserDetail.class); + //初始化用户数据 + initUserData(userDetail); + return new Result().ok(userDetail); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java index d7902e7d..c6802721 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java @@ -8,10 +8,11 @@ package com.elink.esua.epdc.dao; +import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.entity.SysUserEntity; -import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -105,4 +106,21 @@ public interface SysUserDao extends BaseDao { * @Date: 2020-01-09 */ List getSysGridLeaderPhone(Long deptId); + + /** + * @Description 根据手机号和网格获取用户信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [epdcScripUserInfoFormDTO] + * @return com.elink.esua.epdc.dto.SysUserDTO + **/ + SysUserDTO selectOneUserInfoByGridAndMobile(EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO); + /** + * @Description 根据临时凭证获取用户信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [scrip] + * @return com.elink.esua.epdc.dto.SysUserDTO + **/ + SysUserDTO selectOneUserInfoByScrip(String scrip); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysUserEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysUserEntity.java index b034042d..335098d2 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysUserEntity.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysUserEntity.java @@ -104,5 +104,9 @@ public class SysUserEntity extends BaseEntity { * 用户微信openId */ private String openId; + /** + * 临时凭证 + */ + private String scrip; } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java index 1a3635e2..e1ec23ab 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java @@ -14,6 +14,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.entity.SysUserEntity; import java.util.List; @@ -118,4 +119,20 @@ public interface SysUserService extends BaseService { * @Date: 2020-01-09 */ Result> getSysGridLeaderPhone(Long deptId); + /** + * @Description 根据网格ID和手机号获取用户信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [epdcScripUserInfoFormDTO] + * @return java.lang.String + **/ + String getUserInfoByGridAndMobile(EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO); + /** + * @Description 根据临时凭证获取用户信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [scrip] + * @return com.elink.esua.epdc.dto.SysUserDTO + **/ + SysUserDTO getByScrip(String scrip); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index 51b1c6a0..23eb3462 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -29,6 +29,7 @@ import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.entity.SysUserEntity; import com.elink.esua.epdc.service.SysDeptService; import com.elink.esua.epdc.service.SysRoleUserService; @@ -262,5 +263,38 @@ public class SysUserServiceImpl extends BaseServiceImpl>().ok(baseDao.getSysGridLeaderPhone(deptId)); } + @Override + @Transactional(rollbackFor = Exception.class) + public String getUserInfoByGridAndMobile(EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO) { + SysUserDTO userDTO = baseDao.selectOneUserInfoByGridAndMobile(epdcScripUserInfoFormDTO); + if(userDTO==null){ + throw new RenException("根据信息无法获取到pc端用户"); + } + String randomValue = String.valueOf((int)(Math.random()*(1000000-100000)+100000)); + SysUserEntity userEntity = new SysUserEntity(); + userEntity.setScrip(randomValue); + userEntity.setId(userDTO.getId()); + updateById(userEntity); + return randomValue; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public SysUserDTO getByScrip(String scrip) { + if(StringUtils.isBlank(scrip)){ + throw new RenException("临时凭证不能为空"); + } + SysUserDTO sysUserDTO = baseDao.selectOneUserInfoByScrip(scrip); + if(sysUserDTO == null){ + throw new RenException("根据临时凭证无法获取到用户"); + } + //获取后清除临时凭证 + SysUserEntity userEntity = new SysUserEntity(); + userEntity.setScrip(""); + userEntity.setId(sysUserDTO.getId()); + updateById(userEntity); + return sysUserDTO; + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml index 873cb620..337041f3 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml @@ -152,4 +152,54 @@ AND d.dept_id = #{deptId} ) c + + diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java index ef2fd2e0..15e584b9 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java @@ -126,6 +126,28 @@ public class AuthController { return result; } + /** + * + * 数据端-用户凭证登录 + * + * @params [workUserLoginDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @since 2020/06/22 20:21 + */ + @PostMapping(value = "workScripLogin") + public Result workScripLogin(@RequestBody WorkUserScripLoginDTO workUserLoginDto) { + //效验数据 + ValidatorUtils.validateEntity(workUserLoginDto); + Result result = authService.workScripLogin(workUserLoginDto.getScrip()); + if (result.success()) { + // 解绑上一次登录账户并绑定当前账户 + SysUserOpenIdFormDTO sysUserOpenIdFormDto = ConvertUtils.sourceToTarget(workUserLoginDto, SysUserOpenIdFormDTO.class); + authService.modifyOpenId(sysUserOpenIdFormDto); + } + + return result; + } @PostMapping(value = "logout") @ApiOperation(value = "退出") diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 9b3557e1..91661331 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -88,4 +88,13 @@ public interface UserFeignClient { @GetMapping("sys/user/updateUserOpenId/{userId}") Result updateUserOpenId(@PathVariable("userId") Long userId); + /** + * @Description 根据临时凭证获取用户信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [scrip] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("sys/user/getByScrip/{scrip}") + Result getByScrip(@PathVariable("scrip") String scrip); } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index 893db7ec..c3742777 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -55,4 +55,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result updateUserOpenId(Long userId) { return new Result<>(); } + + @Override + public Result getByScrip(String scrip) { + return new Result<>(); + } } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java index 57ae4a10..d5985dd4 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java @@ -75,4 +75,12 @@ public interface AuthService { * 退出 */ Result logoutUser(Long userId); + /** + * @Description 用户凭证登录 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [scrip] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result workScripLogin(String scrip); } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java index 20fed9ad..835d95c8 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java @@ -297,4 +297,69 @@ public class AuthServiceImpl implements AuthService { } + + @Override + public Result workScripLogin(String scrip) { + HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); + + //获取用户信息 + Result result = userFeignClient.getByScrip(scrip); + UserDetail user = result.getData(); + + //授权信息 + WorkUserAuthorizationDTO authorization = new WorkUserAuthorizationDTO(); + + //登录日志 + SysLogLogin log = new SysLogLogin(); + log.setType(LogTypeEnum.LOGIN.value()); + log.setOperation(LoginOperationEnum.LOGIN.value()); + log.setCreateDate(new Date()); + log.setIp(IpUtils.getIpAddr(request)); + log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT)); + log.setIp(IpUtils.getIpAddr(request)); + + //账号不存在 + if (user == null) { + log.setStatus(LoginStatusEnum.FAIL.value()); + log.setCreatorName(scrip); + logProducer.saveLog(log); + authorization.setRegisterState(NumConstant.ZERO_STR); + return new Result().error("未根据凭证获取到用户"); + } + + //账号停用 + if (user.getStatus() == UserStatusEnum.DISABLE.value()) { + log.setStatus(LoginStatusEnum.LOCK.value()); + log.setCreator(user.getId()); + log.setCreatorName(user.getUsername()); + logProducer.saveLog(log); + return new Result().error("账号已停用"); + } + + //保存到Redis + userDetailRedis.set(user, jwtProperties.getExpire()); + + //登录成功,生成token + String token = jwtUtils.generateToken(user.getId()); + + authorization.setToken(token); + authorization.setExpire(jwtProperties.getExpire()); + + //登录用户信息 + log.setCreator(user.getId()); + log.setCreatorName(user.getUsername()); + log.setStatus(LoginStatusEnum.SUCCESS.value()); + logProducer.saveLog(log); + + // 获取用户所有角色权限信息 + List dataScopeDeptList = this.getDataScopeDetailList(user.getId()); + authorization.setDeptDataScopeList(ConvertUtils.sourceToTarget(dataScopeDeptList, DeptDataScopeDTO.class)); + + authorization.setDeptName(user.getDeptName()); + authorization.setUserTagKey(user.getTypeKey()); + authorization.setRegisterState(NumConstant.ONE_STR); + + userDeptTask.packageUserDeptOptions(user.getId()); + + return new Result().ok(authorization); } } diff --git a/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/WorkUserScripLoginDTO.java b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/WorkUserScripLoginDTO.java new file mode 100644 index 00000000..0825e7d9 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/WorkUserScripLoginDTO.java @@ -0,0 +1,30 @@ +package com.elink.esua.epdc.common.token.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * + * 工作端用户凭证登录信息 + * + * @Author:songyunpeng + * @Date:2020/06/22 20:19 + */ +@Data +public class WorkUserScripLoginDTO implements Serializable { + private static final long serialVersionUID = 1905641243346550379L; + + @NotBlank(message="用户名不能为空") + private String scrip; + + + @NotBlank(message="微信code不能为空") + private String wxCode; + + private String openId; + + private String username; + +} diff --git a/esua-epdc/epdc-gateway/src/main/resources/application.yml b/esua-epdc/epdc-gateway/src/main/resources/application.yml index bf3dcee4..5c3c15cc 100644 --- a/esua-epdc/epdc-gateway/src/main/resources/application.yml +++ b/esua-epdc/epdc-gateway/src/main/resources/application.yml @@ -250,6 +250,7 @@ renren: - /api/work/user/login #工作端-登录 - /api/analysis/user/getToken #数据分析端-获取token - /api/analysis/user/login #数据分析端-登录 + - /api/analysis/user/scripLogin #工作端-用户凭证登录 - /api/work/*/swagger/** workUrls: - /api/work/** #工作端接口 diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java index 8f181538..500c7c4a 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAdminController.java @@ -1,9 +1,12 @@ package com.elink.esua.epdc.controller; +import com.elink.esua.epdc.common.token.dto.TokenDto; +import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.service.AdminService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -33,4 +36,16 @@ public class ApiAdminController { public Result getCompleteDeptName(Long gridId) { return adminService.getCompleteDeptName(gridId); } + + /** + * @Description 获取用户凭证 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [userDetail] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @PostMapping("getScrip") + public Result getScrip(@LoginUser TokenDto userDetail){ + return adminService.getScrip(userDetail); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java index b2f04e8c..620011c7 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserScripLoginDTO; import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; @@ -11,8 +12,6 @@ import com.elink.esua.epdc.service.AnalysisUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.List; - /** * 移动端接口-数据分析模块(项目) * @Author LPF @@ -52,7 +51,19 @@ public class ApiAnalysisUserController { ValidatorUtils.validateEntity(formDto); return analysisUserService.login(formDto); } - + /** + * 数据分析端-用户凭证登录 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [formDto] + * @author songyunpeng + * @since 2020/06/22 23:03 + */ + @PostMapping("scripLogin") + public Result scripLogin(@RequestBody WorkUserScripLoginDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return analysisUserService.scripLogin(formDto); + } /** * * 数据分析端-获取token diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index bdcc6693..418ef534 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -4,11 +4,15 @@ import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; import com.elink.esua.epdc.feign.fallback.AdminFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -109,4 +113,15 @@ public interface AdminFeignClient { */ @GetMapping("/sys/dict/listSimple/{dictType}") Result> getDefaultGridInfoByDicType(@PathVariable("dictType") String dictType); + + + /** + * @Description 根据手机号和网格信息获取临时凭证 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [epdcScripUserInfoFormDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @PostMapping(value = "sys/user/getUserInfoByGridAndMobile", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getUserInfoByGridAndMobile(@RequestBody EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java index 379644e0..f2cb2712 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java @@ -2,6 +2,7 @@ package com.elink.esua.epdc.feign; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserScripLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -53,4 +54,13 @@ public interface ResourceFeignClient { */ @GetMapping("auth/logoutUser/{userId}") Result logoutUser(@PathVariable("userId") String userId); + /** + * @Description 工作端用户凭证登录并获取授权信息 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @PostMapping("auth/workScripLogin") + Result workScripLogin(WorkUserScripLoginDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 8601787d..1c7f98b6 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -5,6 +5,7 @@ import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; import com.elink.esua.epdc.feign.AdminFeignClient; import org.springframework.stereotype.Component; @@ -58,4 +59,10 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result> getDefaultGridInfoByDicType(String dictType) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDefaultGridInfoByDicType", dictType); } + + + @Override + public Result getUserInfoByGridAndMobile(EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserInfoByGridAndMobile", epdcScripUserInfoFormDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java index 74849e24..db5da4b1 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java @@ -2,6 +2,7 @@ package com.elink.esua.epdc.feign.fallback; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserScripLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; @@ -33,4 +34,9 @@ public class ResourceFeignClientFallback implements ResourceFeignClient { public Result logoutUser(String userId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "logoutUser", userId); } + + @Override + public Result workScripLogin(WorkUserScripLoginDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "workScripLogin", formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java index ef819781..c2e2e1d2 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java @@ -1,5 +1,6 @@ package com.elink.esua.epdc.service; +import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; /** @@ -29,4 +30,12 @@ public interface AdminService { * @Date 11:08 2020-06-02 **/ Result getDefaultGridInfo(String dicType); + /** + * @Description 获取临时凭证 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [userDetail] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getScrip(TokenDto userDetail); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java index e7ebd1b5..58c2c7cf 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java @@ -2,11 +2,10 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserScripLoginDTO; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; -import java.util.List; - /** * 项目模块-数据分析移动端 * @Author LPF @@ -44,5 +43,12 @@ public interface AnalysisUserService { * @since 2020/2/12 11:00 */ Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto); - + /** + * @Description 用户凭证登录 + * @Author songyunpeng + * @Date 2020/6/22 + * @Param [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result scripLogin(WorkUserScripLoginDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java index 4b9e7860..2e89a99d 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java @@ -1,8 +1,10 @@ package com.elink.esua.epdc.service.impl; +import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.service.AdminService; import org.springframework.beans.factory.annotation.Autowired; @@ -46,4 +48,15 @@ public class AdminServiceImpl implements AdminService { String defaultGrid = listResult.getData().get(0).getDictValue(); return new Result().ok(defaultGrid); } + + @Override + public Result getScrip(TokenDto userDetail) { + if(userDetail == null){ + return new Result().error("用户未登录"); + } + EpdcScripUserInfoFormDTO epdcScripUserInfoFormDTO = new EpdcScripUserInfoFormDTO(); + epdcScripUserInfoFormDTO.setGridId(userDetail.getGridId()); + epdcScripUserInfoFormDTO.setMobile(userDetail.getMobile()); + return adminFeignClient.getUserInfoByGridAndMobile(epdcScripUserInfoFormDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java index 4cf0b4f5..e4f54355 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java @@ -4,6 +4,7 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserScripLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.exception.RenException; @@ -21,8 +22,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; - /** * 项目模块-移动app端 * @Author LPF @@ -98,4 +97,11 @@ public class AnalysisUserServiceImpl implements AnalysisUserService { } return wxMaJscode2SessionResult; } + @Override + public Result scripLogin(WorkUserScripLoginDTO formDto) { + // 获取openId + String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); + formDto.setOpenId(openId); + return resourceFeignClient.workScripLogin(formDto); + } }