Browse Source

增加小程序通过openID登陆

master
luyan 2 years ago
parent
commit
b51a254cdd
  1. 24
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  2. 7
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  3. 56
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

24
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
/** /**
* @Description 第三方-居民端政府端登陆服务
* @author sun * @author sun
* @Description 第三方-居民端政府端登陆服务
*/ */
@RestController @RestController
@RequestMapping("thirdlogin") @RequestMapping("thirdlogin")
@ -36,6 +36,16 @@ public class ThirdLoginController {
return new Result<UserTokenResultDTO>().ok(thirdLoginService.resiLogin(formDTO)); return new Result<UserTokenResultDTO>().ok(thirdLoginService.resiLogin(formDTO));
} }
/**
* 根据OpenID登陆
* @param openId
* @return
*/
@PostMapping("resiLoginByOpenId/{openId}")
public Result<UserTokenResultDTO> resiLoginByOpenId(@PathVariable String openId) {
return new Result<UserTokenResultDTO>().ok(thirdLoginService.resiLoginByOpenId(openId));
}
/** /**
* @param formDTO * @param formDTO
* @return * @return
@ -156,6 +166,7 @@ public class ThirdLoginController {
* 2通过12拿到手机号之后,根据mobile+customerId去user_base_info表找userId * 2通过12拿到手机号之后,根据mobile+customerId去user_base_info表找userId
* 是否注册居民register_relation * 是否注册居民register_relation
* 3没有则生成useruser_Base_info表记录 * 3没有则生成useruser_Base_info表记录
*
* @param formDTO * @param formDTO
* @return * @return
*/ */
@ -170,6 +181,7 @@ public class ThirdLoginController {
* 企业简历内部应用授权给第三方 * 企业简历内部应用授权给第三方
* 可参考文档 获取第三方应用授权企业的accessToken https://open.dingtalk.com/document/orgapp-server/obtain-the-access_token-of-the-authorized-enterprise * 可参考文档 获取第三方应用授权企业的accessToken https://open.dingtalk.com/document/orgapp-server/obtain-the-access_token-of-the-authorized-enterprise
* https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free * https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
*
* @param formDTO * @param formDTO
* @return * @return
*/ */
@ -183,22 +195,21 @@ public class ThirdLoginController {
* 企业内部应用开发不授权了 文档地址https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free * 企业内部应用开发不授权了 文档地址https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
* https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free * https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
* 建议用户信息保存在前端缓存中dd.setStorage或者cookie中避免每次进入应用都调用钉钉接口进行免登 * 建议用户信息保存在前端缓存中dd.setStorage或者cookie中避免每次进入应用都调用钉钉接口进行免登
* * <p>
* 获取免登授权码 * 获取免登授权码
* 小程序免登 * 小程序免登
* 微应用免登 * 微应用免登
* 获取AccessToken * 获取AccessToken
* 调用接口获取access_token详情请参考获取企业内部应用的access_token * 调用接口获取access_token详情请参考获取企业内部应用的access_token
* * <p>
* 获取userid * 获取userid
* 调用接口获取用户的userid详情请参考通过免登码获取用户信息 * 调用接口获取用户的userid详情请参考通过免登码获取用户信息
* * <p>
* 获取用户详情 * 获取用户详情
* 调用接口获取用户详细信息详情请参考根据userId获取用户详情 * 调用接口获取用户详细信息详情请参考根据userId获取用户详情
* *
* @param formDTO * @param formDTO
* @return * @return 目前烟台用的这个
* 目前烟台用的这个
*/ */
@PostMapping("resilogin-internalding") @PostMapping("resilogin-internalding")
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) { public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) {
@ -231,6 +242,7 @@ public class ThirdLoginController {
/** /**
* 山东通sso登录 * 山东通sso登录
*
* @author wxz * @author wxz
* @date 2022/11/3 10:19 * @date 2022/11/3 10:19
* * @param authCode * * @param authCode

7
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -135,4 +135,11 @@ public interface ThirdLoginService {
UserTokenResultDTO sdtSSOLogin(String authCode, String customerId); UserTokenResultDTO sdtSSOLogin(String authCode, String customerId);
void sendLoginEvent(String userId, String appId, String fromApp, String fromClient,String messageType); void sendLoginEvent(String userId, String appId, String fromApp, String fromClient,String messageType);
/**
* 小程序根据用户的openID登陆
* @param openId
* @return
*/
UserTokenResultDTO resiLoginByOpenId(String openId);
} }

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

@ -53,8 +53,6 @@ import com.taobao.dingtalk.vo.result.AccessTokenResult;
import com.taobao.dingtalk.vo.result.UserBaseInfo; import com.taobao.dingtalk.vo.result.UserBaseInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -73,7 +71,6 @@ import java.util.stream.Collectors;
@Service @Service
public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResolver { public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResolver {
private static final Logger logger = LoggerFactory.getLogger(ThirdLoginServiceImpl.class);
@Autowired @Autowired
private JwtTokenUtils jwtTokenUtils; private JwtTokenUtils jwtTokenUtils;
@Autowired @Autowired
@ -99,6 +96,17 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
@Autowired @Autowired
private ThirdOpenFeignClient thirdOpenFeignClient; private ThirdOpenFeignClient thirdOpenFeignClient;
/**
* 工作端:gov居民端:resi运营端:oper
*/
private static final String APP = "resi";
private static final String APP_ID = "wx07674c23af51b521";
private static final String SESSION_KEY = "a2fd0d29b007cbbcf8c8dda8c693d99b";
private static final String CLIENT = "wxmp";
/** /**
* @param formDTO * @param formDTO
* @return * @return
@ -137,6 +145,33 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return userTokenResultDTO; return userTokenResultDTO;
} }
@Override
public UserTokenResultDTO resiLoginByOpenId(String openId) {
// 1、确定用户是否注册,如果没有,直接注册
WxUserFormDTO wxUser = new WxUserFormDTO();
wxUser.setApp(APP);
UserWechatDTO wechatDTO = new UserWechatDTO();
wechatDTO.setWxOpenId(openId);
wxUser.setWechatDTO(wechatDTO);
UserDTO userDTO = epmetUserOpenFeignClient.saveWxUser(wxUser).getData();
// 2、封装数据
wechatDTO.setSessionKey(SESSION_KEY);
wechatDTO.setUserId(userDTO.getId());
wechatDTO.setCustomerId(userDTO.getCustomerId());
LoginFormDTO loginDto = new LoginFormDTO();
loginDto.setClient(CLIENT);
loginDto.setApp(APP);
//3.生成业务token
String token = generateToken(loginDto, userDTO.getId());
//4.存放Redis
saveTokenDto(loginDto, userDTO.getId(), wechatDTO, token, userDTO.getCustomerId());
//5.接口返参
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
}
/** /**
* @Description 居民端登陆生成业务token的key * @Description 居民端登陆生成业务token的key
**/ **/
@ -709,8 +744,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
} }
/** /**
* @Description 获取客户信息
* @param appId * @param appId
* @Description 获取客户信息
* @author zxc * @author zxc
*/ */
public PaCustomerDTO getCustomerInfo(String appId) { public PaCustomerDTO getCustomerInfo(String appId) {
@ -735,8 +770,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
} }
/** /**
* @Description 获取UserWechatDTO
* @param resiLoginFormDTO * @param resiLoginFormDTO
* @Description 获取UserWechatDTO
* @author zxc * @author zxc
*/ */
public UserWechatDTO getUserWeChat(WxLoginFormDTO resiLoginFormDTO) { public UserWechatDTO getUserWeChat(WxLoginFormDTO resiLoginFormDTO) {
@ -837,8 +872,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
/** /**
* @Description 发送登录事件
* @return * @return
* @Description 发送登录事件
* @author wxz * @author wxz
* @date 2021.06.08 15:27 * @date 2021.06.08 15:27
*/ */
@ -869,6 +904,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
// (2)通过1、2拿到手机号之后,根据mobile+customerId去user_base_info表找userId, // (2)通过1、2拿到手机号之后,根据mobile+customerId去user_base_info表找userId,
// 是否注册居民:register_relation // 是否注册居民:register_relation
// (3)没有则生成user、user_Base_info表记录 // (3)没有则生成user、user_Base_info表记录
/** /**
* 钉钉应用的登录-居民端 * 钉钉应用的登录-居民端
* *
@ -1032,16 +1068,16 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
* 企业内部应用开发不授权了 * 企业内部应用开发不授权了
* https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free * https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
* 建议用户信息保存在前端缓存中dd.setStorage或者cookie中避免每次进入应用都调用钉钉接口进行免登 * 建议用户信息保存在前端缓存中dd.setStorage或者cookie中避免每次进入应用都调用钉钉接口进行免登
* * <p>
* 获取免登授权码 * 获取免登授权码
* 小程序免登 * 小程序免登
* 微应用免登 * 微应用免登
* 获取AccessToken * 获取AccessToken
* 调用接口获取access_token详情请参考获取企业内部应用的access_token * 调用接口获取access_token详情请参考获取企业内部应用的access_token
* * <p>
* 获取userid * 获取userid
* 调用接口获取用户的userid详情请参考通过免登码获取用户信息 * 调用接口获取用户的userid详情请参考通过免登码获取用户信息
* * <p>
* 获取用户详情 * 获取用户详情
* 调用接口获取用户详细信息详情请参考根据userId获取用户详情 * 调用接口获取用户详细信息详情请参考根据userId获取用户详情
* *
@ -1116,6 +1152,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
/** /**
* 最原始的企业内部应用开发不授权给产品服务商 * 最原始的企业内部应用开发不授权给产品服务商
*
* @param miniAppId * @param miniAppId
* @param authCode * @param authCode
* @return * @return
@ -1172,6 +1209,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
/** /**
* 客户写死吧 * 客户写死吧
*
* @return * @return
*/ */
private String getCurrentCustomerId() { private String getCurrentCustomerId() {

Loading…
Cancel
Save