Browse Source

用miniappId获取

dev
jianjun 3 years ago
parent
commit
7153f5b957
  1. 11
      epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginFormDTO.java
  2. 7
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  3. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/DingMiniInfoFormDTO.java
  4. 6
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerDingDingRedis.java
  5. 7
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingTalkServiceImpl.java

11
epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginFormDTO.java

@ -11,16 +11,23 @@ import javax.validation.constraints.NotBlank;
*/
@Data
public class ResiDingAppLoginFormDTO {
public interface InnerMiniApp {}
public interface ThirdMiniApp {}
/**
* 授权统一后的authCode
*/
@NotBlank(message = "authCode不能为空")
@NotBlank(message = "authCode不能为空",groups = InnerMiniApp.class)
private String authCode;
/**
* 第三方企业应用传应用的SuiteKey
*/
@NotBlank(message = "clientId不能为空")
private String clientId;
/**
* 第三方企业应用传应用的SuiteKey
*/
@NotBlank(message = "miniAppId不能为空",groups = InnerMiniApp.class)
private String miniAppId;
// @NotBlank(message = "当前访问用户的企业corpId不能为空")
// private String corpId;
@ -29,6 +36,6 @@ public class ResiDingAppLoginFormDTO {
* third第三方应用
* company_customize:企业定制应用
*/
private String appType="third";
private String appType="company_customize";
}

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

@ -18,6 +18,8 @@ import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.redis.common.CustomerDingDingRedis;
import com.epmet.commons.tools.redis.common.bean.DingMiniInfoCache;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
@ -737,8 +739,9 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
}
//1、获取用户手机号
String clientId = formDTO.getClientId();
DingTalkResult<AccessTokenResult> userAccessToken = dingTalkClientToken.getUserAccessToken(formDTO.getAuthCode(), clientId, DingMiniAppEnum.getEnum(clientId).getSuiteSecret());
String miniAppId = formDTO.getMiniAppId();
DingMiniInfoCache dingMiniInfo = CustomerDingDingRedis.getDingMiniInfo(miniAppId);
DingTalkResult<AccessTokenResult> userAccessToken = dingTalkClientToken.getUserAccessToken(formDTO.getAuthCode(), dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret());
log.info("2、resiLoginDing userAccessToken:{}",JSON.toJSONString(userAccessToken));
if (!userAccessToken.success() || null == userAccessToken.getData()) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "调用微信api异常:" + JSON.toJSONString(userAccessToken), EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg());

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/DingMiniInfoFormDTO.java

@ -21,6 +21,6 @@ public class DingMiniInfoFormDTO implements Serializable {
public interface DingMiniInfoForm{}
@NotBlank(message = "suiteKey不能为空",groups = DingMiniInfoForm.class)
private String suiteKey;
@NotBlank(message = "miniAppId不能为空",groups = DingMiniInfoForm.class)
private String miniAppId;
}

6
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerDingDingRedis.java

@ -39,13 +39,13 @@ public class CustomerDingDingRedis {
customerDingDingRedis.redisUtils = this.redisUtils;
}
public static DingMiniInfoCache getDingMiniInfo(String suiteKey){
String key = RedisKeys.getDingMiniInfoKey(suiteKey);
public static DingMiniInfoCache getDingMiniInfo(String miniAppId){
String key = RedisKeys.getDingMiniInfoKey(miniAppId);
Map<String, Object> miniInfoMap = customerDingDingRedis.redisUtils.hGetAll(key);
if (!CollectionUtils.isEmpty(miniInfoMap)){
return ConvertUtils.mapToEntity(miniInfoMap,DingMiniInfoCache.class);
}
Result<DingMiniInfoCache> dingMiniInfoResult = customerDingDingRedis.thirdFeignClient.getDingMiniInfo(new DingMiniInfoFormDTO(suiteKey));
Result<DingMiniInfoCache> dingMiniInfoResult = customerDingDingRedis.thirdFeignClient.getDingMiniInfo(new DingMiniInfoFormDTO(miniAppId));
if (!dingMiniInfoResult.success()){
throw new EpmetException("查询dingMiniInfo失败...");
}

7
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingTalkServiceImpl.java

@ -53,13 +53,12 @@ public class DingTalkServiceImpl implements DingTalkService {
*/
@Override
public DingMiniInfoCache getDingMiniInfo(DingMiniInfoFormDTO formDTO) {
String key = RedisKeys.getDingMiniInfoKey(formDTO.getSuiteKey());
String key = RedisKeys.getDingMiniInfoKey(formDTO.getMiniAppId());
Map<String, Object> dingMiniInfoMap = redisUtils.hGetAll(key);
if (!CollectionUtils.isEmpty(dingMiniInfoMap)) {
DingMiniInfoCache dingMiniInfoCache = ConvertUtils.mapToEntity(dingMiniInfoMap,DingMiniInfoCache.class);
return dingMiniInfoCache;
return ConvertUtils.mapToEntity(dingMiniInfoMap,DingMiniInfoCache.class);
}
DingMiniInfoDTO dingMiniInfo = openSyncBizDataDao.getDingMiniInfo(formDTO.getSuiteKey());
DingMiniInfoDTO dingMiniInfo = openSyncBizDataDao.getDingMiniInfoByAppId(formDTO.getMiniAppId());
if (null != dingMiniInfo){
redisUtils.hMSet(key, BeanUtil.beanToMap(dingMiniInfo));
return ConvertUtils.sourceToTarget(dingMiniInfo,DingMiniInfoCache.class);

Loading…
Cancel
Save