Browse Source

随手拍h5获取token

master
lichao 2 years ago
parent
commit
4ec8bb45a2
  1. 9
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  2. 3
      epmet-auth/src/main/java/com/epmet/dto/form/HfiveLoginMdFormDTO.java
  3. 14
      epmet-auth/src/main/java/com/epmet/dto/result/ResiHfiveAppLoginResDTO.java
  4. 7
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  5. 23
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  6. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/HfiveLoginResiFormDTO.java
  7. 81
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java

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

@ -3,10 +3,7 @@ package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.*;
import com.epmet.dto.result.ResiDingAppLoginResDTO;
import com.epmet.dto.result.ResiRegisterLantuResultDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.dto.result.*;
import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -215,9 +212,9 @@ public class ThirdLoginController {
* @Date: 2023/8/15 09:23
*/
@PostMapping("resilogin-hfive")
public Result<ResiDingAppLoginResDTO> resiLoginHfive(@RequestBody HfiveLoginMdFormDTO formDTO) {
public Result<ResiHfiveAppLoginResDTO> resiLoginHfive(@RequestBody HfiveLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginHfive(formDTO));
return new Result<ResiHfiveAppLoginResDTO>().ok(thirdLoginService.resiLoginHfive(formDTO));
}
/**

3
epmet-auth/src/main/java/com/epmet/dto/form/HfiveLoginMdFormDTO.java

@ -12,8 +12,9 @@ import javax.validation.constraints.NotBlank;
@Data
public class HfiveLoginMdFormDTO {
@NotBlank(message = "userBaseInfoId不能为空")
private String userBaseInfoId;
@NotBlank(message = "phone不能为空")
private String phone;

14
epmet-auth/src/main/java/com/epmet/dto/result/ResiHfiveAppLoginResDTO.java

@ -0,0 +1,14 @@
package com.epmet.dto.result;
import lombok.Data;
/**
* @Description: h5 token获取
* @Author: lichao
* @Date: 2023/8/17 15:01
*/
@Data
public class ResiHfiveAppLoginResDTO {
private String authorization;
}

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

@ -1,10 +1,7 @@
package com.epmet.service;
import com.epmet.dto.form.*;
import com.epmet.dto.result.ResiDingAppLoginResDTO;
import com.epmet.dto.result.ResiRegisterLantuResultDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.dto.result.*;
import java.util.List;
@ -117,7 +114,7 @@ public interface ThirdLoginService {
* @param formDTO
* @return
*/
ResiDingAppLoginResDTO resiLoginHfive(HfiveLoginMdFormDTO formDTO);
ResiHfiveAppLoginResDTO resiLoginHfive(HfiveLoginMdFormDTO formDTO);
/**
* 蓝图 居民端 注册

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

@ -1105,36 +1105,27 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
* @return
*/
@Override
public ResiDingAppLoginResDTO resiLoginHfive(HfiveLoginMdFormDTO formDTO) {
public ResiHfiveAppLoginResDTO resiLoginHfive(HfiveLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = new ResiDingAppLoginResDTO();
resDTO.setCustomerId(getCurrentCustomerId());
ResiHfiveAppLoginResDTO resDTO = new ResiHfiveAppLoginResDTO();
// 1、获取用户手机号
// DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode());
HfiveLoginResiFormDTO hfiveLoginResiFormDTO = new HfiveLoginResiFormDTO();
// todo 目前只有手机号以及customerId
hfiveLoginResiFormDTO.setCustomerId(resDTO.getCustomerId());
hfiveLoginResiFormDTO.setMobile(formDTO.getPhone());
// todo 暂时无信息获取 编写h5
resDTO.setRealName("h5");
hfiveLoginResiFormDTO.setUserBaseInfoId(formDTO.getUserBaseInfoId());
// 2、调用userfeign接口获取userId、注册网格相关信息
Result<DingLoginResiResDTO> loginResiResDTOResult = epmetUserOpenFeignClient.hFiveResiLogin(hfiveLoginResiFormDTO);
if (!loginResiResDTOResult.success() || null == loginResiResDTOResult.getData()) {
// 临时打个日志
log.error(String.format("resiLoginHfive获取epmetUserId异常,入参:%s", JSON.toJSONString(hfiveLoginResiFormDTO)));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取epmetUserId异常:"+ JSON.toJSONString(loginResiResDTOResult), "获取epmetUserId异常");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "提供的居民id获取居民信息失败:"+ formDTO.getUserBaseInfoId(), "获取token失败");
}
DingLoginResiResDTO resiResDTO = loginResiResDTOResult.getData();
resDTO.setGridId(resiResDTO.getGridId());
resDTO.setGridName(resiResDTO.getGridName());
resDTO.setAgencyId(resiResDTO.getAgencyId());
resDTO.setEpmetUserId(resiResDTO.getEpmetUserId());
resDTO.setRegFlag(resiResDTO.getRegFlag());
// 3.生成token,并且存放Redis
String token = this.saveTokenDtoHfive(AppClientConstant.APP_RESI, AppClientConstant.H_FIVE, resDTO.getEpmetUserId(), resDTO.getCustomerId());
String token = this.saveTokenDtoHfive(AppClientConstant.APP_RESI, AppClientConstant.LAN_TU, resiResDTO.getEpmetUserId(), getCurrentCustomerId());
resDTO.setAuthorization(token);
return resDTO;

8
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/HfiveLoginResiFormDTO.java

@ -12,13 +12,8 @@ import javax.validation.constraints.NotBlank;
*/
@Data
public class HfiveLoginResiFormDTO {
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
@NotBlank(message = "customerId不能为空", groups = AddUserShowGroup.class)
private String customerId;
// 以下参数是微信返回的
@ -34,8 +29,9 @@ public class HfiveLoginResiFormDTO {
* 用户的手机号
* 说明 如果要获取用户手机号需要在开发者后台申请个人手机号信息权限如下图
*/
@NotBlank(message = "手机号不能为空", groups = AddUserShowGroup.class)
public String mobile;
public String userBaseInfoId;
/**
* 用户的钉钉昵称
*/

81
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java

@ -639,81 +639,12 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl<UserBaseInfoDao, Us
@Transactional(rollbackFor = Exception.class)
public DingLoginResiResDTO hFiveResiLogin(HfiveLoginResiFormDTO formDTO) {
DingLoginResiResDTO result = new DingLoginResiResDTO();
result.setCustomerId(formDTO.getCustomerId());
result.setRegFlag(false);
result.setGridId(StrConstant.EPMETY_STR);
result.setGridName(StrConstant.EPMETY_STR);
result.setAgencyId(StrConstant.EPMETY_STR);
RLock lock = null;
try {
lock = distributedLock.getLock(String.format("epmet:lock:dingResiLogin:%s",formDTO.getMobile()), 120L, 3L, TimeUnit.SECONDS);
//根据手机号从baseinfo查对应的信息,如果有则返回,没有则注册
UserBaseInfoEntity baseInfo = baseDao.selectUserByMobile(formDTO.getCustomerId(),formDTO.getMobile());
if (null == baseInfo) {
//注册
UserEntity userEntity = new UserEntity();
userEntity.setFromApp(AppClientConstant.APP_RESI);
userEntity.setFromClient(AppClientConstant.MINI_DING);
userEntity.setCustomerId(formDTO.getCustomerId());
userDao.insert(userEntity);
//信息存入baseinfo
baseInfo = new UserBaseInfoEntity();
baseInfo.setCustomerId(formDTO.getCustomerId());
baseInfo.setUserId(userEntity.getId());
baseInfo.setMobile(formDTO.getMobile());
// todo 没有值 假的
baseInfo.setRealName("h5");
baseInfo.setSurname("h5");
baseInfo.setName("h5");
baseInfo.setNickname("h5");
baseInfo.setHeadImgUrl("");
// todo--------- 以上都是假的
baseInfo.setGender(NumConstant.ZERO_STR);
baseDao.insert(baseInfo);
result.setEpmetUserId(userEntity.getId());
result.setRegFlag(false);
} else {
// 更新下user_Base_info信息
// todo h5那边没有传过来信息 所以不需要更新
/*if (StringUtils.isNotBlank(formDTO.getNick()) && StringUtils.isBlank(baseInfo.getRealName())) {
baseInfo.setRealName(formDTO.getNick());
}
if (StringUtils.isNotBlank(formDTO.getNick()) && StringUtils.isBlank(baseInfo.getSurname())) {
baseInfo.setSurname(NameUtils.getSurNameComplex(formDTO.getNick()));
}
if (StringUtils.isNotBlank(formDTO.getNick()) && StringUtils.isBlank(baseInfo.getName())) {
baseInfo.setName(NameUtils.getNameComplex(formDTO.getNick()));
}
if (StringUtils.isNotBlank(formDTO.getNick()) && StringUtils.isBlank(baseInfo.getNickname())) {
baseInfo.setNickname(formDTO.getNick());
}
if (StringUtils.isNotBlank(formDTO.getAvatarUrl()) && StringUtils.isBlank(baseInfo.getHeadImgUrl())) {
baseInfo.setHeadImgUrl(formDTO.getAvatarUrl());
}
baseDao.updateById(baseInfo);
*/
result.setEpmetUserId(baseInfo.getUserId());
LambdaQueryWrapper<RegisterRelationEntity> registerWrapper = new LambdaQueryWrapper<>();
registerWrapper.eq(RegisterRelationEntity::getCustomerId, formDTO.getCustomerId());
registerWrapper.eq(RegisterRelationEntity::getUserId, baseInfo.getUserId());
registerWrapper.eq(RegisterRelationEntity::getFirstRegister, NumConstant.ONE_STR);
RegisterRelationEntity registerRelation = registerRelationDao.selectOne(registerWrapper);
if (null != registerRelation) {
result.setAgencyId(registerRelation.getAgencyId());
result.setGridId(registerRelation.getGridId());
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(registerRelation.getGridId());
if (null == gridInfo) {
logger.error(String.format("获取用户注册网格信息为空,userId:%s,gridId:%s", baseInfo.getUserId(), registerRelation.getGridId()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格信息为空", "获取小程序注册网格信息失败");
}
result.setGridName(gridInfo.getGridNamePath());
result.setRegFlag(true);
}
}
} finally {
distributedLock.unLock(lock);
// 用id获取userbaseInfo信息
UserBaseInfoEntity baseInfo = baseDao.selectById(formDTO.getUserBaseInfoId());
if (null == baseInfo) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取居民信息失败", "获取居民信息失败");
}else {
result.setEpmetUserId(baseInfo.getUserId());
}
return result;
}

Loading…
Cancel
Save