Browse Source

resilogin-ding

dev
yinzuomei 3 years ago
parent
commit
6a2421ed45
  1. 10
      epmet-auth/pom.xml
  2. 2
      epmet-auth/src/main/java/com/epmet/AuthApplication.java
  3. 19
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  4. 25
      epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginFormDTO.java
  5. 20
      epmet-auth/src/main/java/com/epmet/dto/result/ResiDingAppLoginResDTO.java
  6. 8
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  7. 37
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

10
epmet-auth/pom.xml

@ -138,6 +138,16 @@
<artifactId>epmet-auth-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<artifactId>dingtalk-spring-boot-starter</artifactId>
<groupId>com.taobao</groupId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
</dependencies>
<build>

2
epmet-auth/src/main/java/com/epmet/AuthApplication.java

@ -8,6 +8,7 @@
package com.epmet;
import com.taobao.dingtalk.spring.annotations.EnableDingTalk;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@ -20,6 +21,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
@EnableDingTalk
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients

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

@ -3,6 +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.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.ThirdLoginService;
@ -116,4 +117,22 @@ public class ThirdLoginController {
return new Result();
}
/**
*接入流程https://open.dingtalk.com/document/isvapp-server/unified-authorization-suite-access-process
* 1获取个人用户tokenhttps://open.dingtalk.com/document/isvapp-server/obtain-user-token
* 2获取用户通讯录个人信息https://open.dingtalk.com/document/isvapp-server/dingtalk-retrieve-user-information
* 接口逻辑
* 1根据clientId去XXX表找到customerId
* 2通过12拿到手机号之后,根据mobile+customerId去user_base_info表找userId
* 是否注册居民register_relation
* 3没有则生成useruser_Base_info表记录
* @param formDTO
* @return
*/
@PostMapping("resilogin-ding")
public Result<ResiDingAppLoginResDTO> resiLoginDing(@RequestBody ResiDingAppLoginFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDing(formDTO));
}
}

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

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Description
* @Author yzm
* @Date 2022/9/14 17:11
*/
@Data
public class ResiDingAppLoginFormDTO {
/**
* 授权统一后的authCode
*/
@NotBlank(message = "authCode不能为空")
private String authCode;
/**
* 第三方企业应用传应用的SuiteSecret
*/
@NotBlank(message = "clientId不能为空")
private String clientId;
}

20
epmet-auth/src/main/java/com/epmet/dto/result/ResiDingAppLoginResDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2022/9/14 17:20
*/
@Data
public class ResiDingAppLoginResDTO {
private String authorization;
private String customerId;
private String gridId;
/**
*
*/
private String epmetUserId;
}

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

@ -1,6 +1,7 @@
package com.epmet.service;
import com.epmet.dto.form.*;
import com.epmet.dto.result.ResiDingAppLoginResDTO;
import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO;
@ -66,4 +67,11 @@ public interface ThirdLoginService {
* @description 单客户-工作端微信小程序登录-发送验证码
**/
void sendSmsCode(ThirdSendSmsCodeFormDTO formDTO);
/**
* 钉钉应用的登录-居民端
* @param formDTO
* @return
*/
ResiDingAppLoginResDTO resiLoginDing(ResiDingAppLoginFormDTO formDTO);
}

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

@ -32,6 +32,7 @@ import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis;
import com.epmet.service.ThirdLoginService;
import com.taobao.dingtalk.client.DingTalkClientToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -73,6 +74,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
private EpmetMessageOpenFeignClient messageOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@Autowired
private DingTalkClientToken dingTalkClientToken;
/**
* @param formDTO
@ -690,4 +693,38 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
//getResultDataOrThrowsException(result, ServiceConstant.EPMET_MESSAGE_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), "调用Message服务,发送登录事件到MQ失败");
}
// 接入流程:https://open.dingtalk.com/document/isvapp-server/unified-authorization-suite-access-process
// 1、获取个人用户token:https://open.dingtalk.com/document/isvapp-server/obtain-user-token
// 2、获取用户通讯录个人信息:https://open.dingtalk.com/document/isvapp-server/dingtalk-retrieve-user-information
// 接口逻辑:
// (1)根据clientId去XXX表找到customerId
// (2)通过1、2拿到手机号之后,根据mobile+customerId去user_base_info表找userId,
// 是否注册居民:register_relation
// (3)没有则生成user、user_Base_info表记录
/**
* 钉钉应用的登录-居民端
*
* @param formDTO
* @return
*/
@Override
public ResiDingAppLoginResDTO resiLoginDing(ResiDingAppLoginFormDTO formDTO) {
//获取用户手机号
log.info("authCode:"+formDTO.getAuthCode());
//todo 调用一下接口
ResiDingAppLoginResDTO resDTO=new ResiDingAppLoginResDTO();
resDTO.setCustomerId("45687aa479955f9d06204d415238f7cc");
resDTO.setGridId("763d6e09b9081d63195d53da84b3ae3a");
resDTO.setEpmetUserId("f838614e67cf8ae0edaefe562b6660e5");
//生成token串
Map<String, Object> map = new HashMap<>();
map.put("app", "resi");
map.put("client", "miniding");
map.put("userId", resDTO.getEpmetUserId());
String token = jwtTokenUtils.createToken(map);
resDTO.setAuthorization(token);
return resDTO;
}
}

Loading…
Cancel
Save