Browse Source

修改:山东通登录流程调整

dev
wangxianzhang 3 years ago
parent
commit
a81e687f67
  1. 40
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  2. 19
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/ThirdOpenFeignClient.java
  3. 25
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SdtController.java
  4. 6
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SdtService.java
  5. 48
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SdtServiceImpl.java

40
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -1173,47 +1173,17 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
@Override
public UserTokenResultDTO sdtSSOLogin(String authCode, String customerId) {
String accessToken = getResultDataOrThrowsException(thirdOpenFeignClient.getSdtCachedAccessToken(customerId), ServiceConstant.EPMET_THIRD_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), "获取山东通access_token失败", null);
// 1.获取用户编码
HashMap<String, Object> params = new HashMap<>();
params.put("access_token", accessToken);
params.put("code", authCode);
Result<String> sdtResult = HttpClientManager.getInstance().sendGet("/cgi-bin/user/getuserinfo", params);
if (!sdtResult.success()) {
// http状态判断
log.error("【山东通登录】查询用户编码-http错误:{}", sdtResult.getMsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户编码失败", null);
}
SdtStaffInfoResult staffInfoResult = JSON.parseObject(sdtResult.getData(), SdtStaffInfoResult.class);
if (!staffInfoResult.success()) {
// 山东通业务返回状态判断
log.error("【山东通登录】查询用户编码失败,错误信息:{}", staffInfoResult.getErrmsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户编码失败", null);
}
SdtStaffInfoResult staffInfo = getResultDataOrThrowsException(thirdOpenFeignClient.getUserInfoByAuthCode(authCode, customerId), ServiceConstant.EPMET_THIRD_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), "获取山东通用户基础信息失败", null);
// 2.获取用户详细信息
HashMap<String, Object> userDetailParams = new HashMap<>();
userDetailParams.put("access_token", accessToken);
userDetailParams.put("userid", staffInfoResult.getUserId());
Result<String> userDetailResult = HttpClientManager.getInstance().sendGet("/cgi-bin/user/get", userDetailParams);
if (!userDetailResult.success()) {
// http状态判断
log.error("【山东通登录】查询用户详细信息-http错误:{}", sdtResult.getMsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户详细信息失败", null);
}
SdtStaffDetailResult staffDetailResult = JSON.parseObject(userDetailResult.getData(), SdtStaffDetailResult.class);
if (!staffDetailResult.success()) {
// 山东通业务返回状态判断
log.error("【山东通登录】查询用户详细信息失败,错误信息:{}", staffInfoResult.getErrmsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户详细信息失败", null);
}
SdtStaffDetailResult staffDetail = getResultDataOrThrowsException(thirdOpenFeignClient.getUserDetailByUserId(authCode, customerId), ServiceConstant.EPMET_THIRD_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), "获取山东通用户详细信息失败", null);
// 3.有了手机号,可以做登录了
String mobile = staffDetailResult.getMobile();
String mobile = staffDetail.getMobile();
GovWebLoginFormDTO loginGovParam = new GovWebLoginFormDTO();
loginGovParam.setCustomerId(customerId);
loginGovParam.setPhone(mobile);

19
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/ThirdOpenFeignClient.java

@ -5,6 +5,8 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.*;
import com.epmet.dto.result.ThirdplatformResultDTO;
import com.epmet.feign.fallback.ThirdOpenFeignClientFallbackFactory;
import com.epmet.sdt.SdtStaffDetailResult;
import com.epmet.sdt.SdtStaffInfoResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -99,4 +101,21 @@ public interface ThirdOpenFeignClient {
*/
@GetMapping("/third/sdt/getCachedAccessToken")
Result<String> getSdtCachedAccessToken(@RequestParam("customerId") String customerId);
/**
* 通过authCode查询用户基础信息
* @param customerId
* @return
*/
@GetMapping("/third/sdt/getUserInfoByAuthCode")
Result<SdtStaffInfoResult> getUserInfoByAuthCode(@RequestParam("authCode") String authCode, @RequestParam("customerId") String customerId);
/**
* 使用用户id查询用户详情
* @param userId
* @param customerId
* @return
*/
@GetMapping("/third/sdt/getUserDetailByUserId")
Result<SdtStaffDetailResult> getUserDetailByUserId(@RequestParam("userId") String userId, @RequestParam("customerId") String customerId);
}

25
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/SdtController.java

@ -2,6 +2,8 @@ package com.epmet.controller;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.Result;
import com.epmet.sdt.SdtStaffDetailResult;
import com.epmet.sdt.SdtStaffInfoResult;
import com.epmet.service.SdtService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -44,4 +46,27 @@ public class SdtController {
return new Result<String>().ok(cachedAccessToken);
}
/**
* 通过authCode查询用户基础信息
* @param customerId
* @return
*/
@GetMapping("getUserInfoByAuthCode")
public Result<SdtStaffInfoResult> getUserInfoByAuthCode(@RequestParam("authCode") String authCode, @RequestParam("customerId") String customerId) {
SdtStaffInfoResult cachedAccessToken = sdtService.getUserInfoByCode(authCode, customerId);
return new Result<SdtStaffInfoResult>().ok(cachedAccessToken);
}
/**
* 使用用户id查询用户详情
* @param userId
* @param customerId
* @return
*/
@GetMapping("getUserDetailByUserId")
public Result<SdtStaffDetailResult> getUserDetailByUserId(@RequestParam("userId") String userId, @RequestParam("customerId") String customerId) {
SdtStaffDetailResult cachedAccessToken = sdtService.getUserDetailByUserId(userId, customerId);
return new Result<SdtStaffDetailResult>().ok(cachedAccessToken);
}
}

6
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/SdtService.java

@ -1,5 +1,7 @@
package com.epmet.service;
import com.epmet.sdt.SdtStaffDetailResult;
import com.epmet.sdt.SdtStaffInfoResult;
import com.zaxxer.hikari.util.FastList;
import lombok.Data;
@ -32,4 +34,8 @@ public interface SdtService {
* * @return String
*/
String getCachedAccessToken(String customerId);
SdtStaffInfoResult getUserInfoByCode(String authCode, String customerId);
SdtStaffDetailResult getUserDetailByUserId(String userId, String customerId);
}

48
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SdtServiceImpl.java

@ -3,6 +3,8 @@ package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.HttpClientManager;
@ -10,6 +12,8 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.SdtAppInfoDao;
import com.epmet.entity.SdtAppInfoEntity;
import com.epmet.sdt.SdtGetAccessTokenResult;
import com.epmet.sdt.SdtStaffDetailResult;
import com.epmet.sdt.SdtStaffInfoResult;
import com.epmet.service.SdtService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -153,4 +157,48 @@ public class SdtServiceImpl implements SdtService {
return redisUtils.getString(key);
}
}
@Override
public SdtStaffInfoResult getUserInfoByCode(String authCode, String customerId) {
HashMap<String, Object> params = new HashMap<>();
params.put("access_token", getCachedAccessToken(customerId));
params.put("code", authCode);
Result<String> sdtResult = HttpClientManager.getInstance().sendGet("/cgi-bin/user/getuserinfo", params);
if (!sdtResult.success()) {
// http状态判断
log.error("【山东通登录】查询用户编码-http错误:{}", sdtResult.getMsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户编码失败", null);
}
SdtStaffInfoResult staffInfoResult = JSON.parseObject(sdtResult.getData(), SdtStaffInfoResult.class);
if (!staffInfoResult.success()) {
// 山东通业务返回状态判断
log.error("【山东通登录】查询用户编码失败,错误信息:{}", staffInfoResult.getErrmsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户编码失败", null);
}
return staffInfoResult;
}
@Override
public SdtStaffDetailResult getUserDetailByUserId(String userId, String customerId) {
HashMap<String, Object> userDetailParams = new HashMap<>();
userDetailParams.put("access_token", getCachedAccessToken(customerId));
userDetailParams.put("userid", userId);
Result<String> userDetailResult = HttpClientManager.getInstance().sendGet("/cgi-bin/user/get", userDetailParams);
if (!userDetailResult.success()) {
// http状态判断
log.error("【山东通登录】查询用户详细信息-http错误:{}", userDetailResult.getMsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户详细信息失败", null);
}
SdtStaffDetailResult staffDetailResult = JSON.parseObject(userDetailResult.getData(), SdtStaffDetailResult.class);
if (!staffDetailResult.success()) {
// 山东通业务返回状态判断
log.error("【山东通登录】查询用户详细信息失败,错误信息:{}", staffDetailResult.getErrmsg());
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "调用山东通查询用户详细信息失败", null);
}
return staffDetailResult;
}
}

Loading…
Cancel
Save