烟台政务云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

287 lines
11 KiB

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.*;
import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Description 第三方-居民端、政府端登陆服务
* @author sun
*/
@RestController
@RequestMapping("thirdlogin")
public class ThirdLoginController {
@Autowired
private ThirdLoginService thirdLoginService;
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-居民端微信小程序登录
**/
@PostMapping("resilogin")
public Result<UserTokenResultDTO> resiLogin(@RequestBody LoginFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.resiLogin(formDTO));
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-政府端微信小程序登录
**/
@PostMapping("worklogin")
public Result<UserTokenResultDTO> workLogin(@RequestBody LoginFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.workLogin(formDTO));
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-选择组织,进入首页
**/
@PostMapping(value = "enterorg")
public Result<UserTokenResultDTO> enterOrg(@RequestBody ThirdWxmpEnteOrgFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ThirdWxmpEnteOrgFormDTO.AddUserShowGroup.class,ThirdWxmpEnteOrgFormDTO.AddUserInternalGroup.class);
UserTokenResultDTO userTokenResultDTO=thirdLoginService.enterOrg(formDTO);
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
}
/**
* @param formDTO
* @return
* @Author zhy
* @Description 单客户-选择组织,进入首页
**/
@PostMapping(value = "enterorgbyaccount")
public Result<UserTokenResultDTO> enterOrgByAccount(@RequestBody ThirdWxmpEnteOrgByAccountFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ThirdWxmpEnteOrgFormDTO.AddUserShowGroup.class,ThirdWxmpEnteOrgFormDTO.AddUserInternalGroup.class);
UserTokenResultDTO userTokenResultDTO=thirdLoginService.enterOrgByAccount(formDTO);
return new Result<UserTokenResultDTO>().ok(userTokenResultDTO);
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 单客户-手机验证码获取组织
**/
@PostMapping(value = "/getmyorg")
public Result<List<StaffOrgsResultDTO>> getmyorg(@RequestBody ThirdStaffOrgsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByLoginWxmp.class);
List<StaffOrgsResultDTO> staffOrgs = thirdLoginService.getMyOrg(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
/**
* @param formDTO
* @return
* @author sun
* @description 单客户-手机号密码获取组织
**/
@PostMapping(value = "/getmyorgbypassword")
public Result<List<StaffOrgsResultDTO>> getMyOrgByPassword(@RequestBody ThirdStaffOrgsFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByPassWordGroup.class);
List<StaffOrgsResultDTO> staffOrgs = thirdLoginService.getMyOrgByPassword(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
/**
* @param formDTO
* @return
* @author zhy
* @description 单客户-账号密码获取组织
**/
@PostMapping(value = "/getmyorgbyaccount")
public Result<List<StaffOrgsResultDTO>> getMyOrgByAccount(@RequestBody ThirdStaffOrgByAccountFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StaffOrgByAccountFormDTO.AddUserShowGroup.class, StaffOrgByAccountFormDTO.GetMyOrgByPassWordGroup.class);
List<StaffOrgsResultDTO> staffOrgs = thirdLoginService.getMyOrgByAccount(formDTO);
return new Result<List<StaffOrgsResultDTO>>().ok(staffOrgs);
}
/**
* @param formDTO
* @return
* @author sun
* @description 单客户-获取微信用户手机号
**/
@PostMapping("getresiwxphone")
public Result getResiWxPhone(@RequestBody GetResiWxPhoneFormDTO formDTO) {
String phone = thirdLoginService.getResiWxPhone(formDTO);
if (StringUtils.isNotBlank(phone) && !"null".equals(phone)) {
return new Result().ok(phone);
}
return new Result().ok("");
}
/**
* @param formDTO
* @author sun
* @description 单客户-工作端微信小程序登录-发送验证码
**/
@PostMapping(value = "sendsmscode")
public Result sendSmsCode(@RequestBody ThirdSendSmsCodeFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ThirdSendSmsCodeFormDTO.AddUserShowGroup.class);
thirdLoginService.sendSmsCode(formDTO);
return new Result();
}
/**
* 钉钉应用的登录-居民端
* 产品服务商建立第三方企业应用
* 参考文档:https://open.dingtalk.com/document/isvapp-server/unified-authorization-suite-access-process
* @param formDTO
* @return
*/
/**
* 接入流程: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
*/
@PostMapping("resilogin-ding")
public Result<ResiDingAppLoginResDTO> resiLoginDing(@RequestBody ResiDingAppLoginFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ResiDingAppLoginFormDTO.InnerMiniApp.class);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDing(formDTO));
}
/**
* 烟台建立应用,授权给我们,走企业免登
* 企业简历内部应用授权给第三方
* 可参考文档: 获取第三方应用授权企业的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
* @param formDTO
* @return
*/
@PostMapping("resilogin-ding-md")
public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDingMd(formDTO));
}
/**
* 企业内部应用开发,不授权了 文档地址: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中,避免每次进入应用都调用钉钉接口进行免登。
*
* 获取免登授权码。
* 小程序免登
* 微应用免登
* 获取AccessToken。
* 调用接口获取access_token,详情请参考获取企业内部应用的access_token。
*
* 获取userid。
* 调用接口获取用户的userid,详情请参考通过免登码获取用户信息。
*
* 获取用户详情。
* 调用接口获取用户详细信息,详情请参考根据userId获取用户详情。
*
* @param formDTO
* @return
* 目前烟台用的这个!!!!!!
*/
@PostMapping("resilogin-internalding")
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginInternalDing(formDTO));
}
/**
* @Description: h5-登陆 随手拍 议事厅
* @param formDTO:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.resiLoginHfive>
* @Author: lichao
* @Date: 2023/8/15 09:23
*/
@PostMapping("resilogin-hfive")
public Result<ResiHfiveAppLoginResDTO> resiLoginHfive(@RequestBody HfiveLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiHfiveAppLoginResDTO>().ok(thirdLoginService.resiLoginHfive(formDTO));
}
/**
* @Description: 蓝图 居民注册
* @param formDTO:
* @Return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.ResiRegisterLantuResultDTO>
* @Author: lichao
* @Date: 2023/8/16 10:13
*/
@PostMapping("resiRegister-lantu")
public Result<ResiRegisterLantuResultDTO> resiRegisterLantu(@RequestBody ResiRegisterLantuFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiRegisterLantuResultDTO>().ok(thirdLoginService.resiRegisterLantu(formDTO));
}
/**
* 根据免登授权码, 获取登录用户身份
*
* @param formDTO 免登授权码
* @return
*/
@PostMapping("govlogin-internalding")
public Result<UserTokenResultDTO> login(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.govLoginInternalDing(formDTO));
}
/**
* 根据免登授权码, 获取登录用户身份
*
* @param authCode 烟台认证中心 授权码
* @return
*/
@PostMapping("sso-govlogin-yantai/{authCode}")
public Result<UserTokenResultDTO> yantaiSSOLogin(@PathVariable(value = "authCode") String authCode) {
return new Result<UserTokenResultDTO>().ok(thirdLoginService.yanTaiSSOLogin(authCode));
}
/**
* 山东通sso登录
* @author wxz
* @date 2022/11/3 10:19
* * @param authCode
* * @return Result<UserTokenResultDTO>
*/
@PostMapping("sso-govlogin-sdt/{authCode}")
public Result<UserTokenResultDTO> sdtSSOLogin(@PathVariable(value = "authCode") String authCode) {
// 烟台客户id,暂且写死。
String customerId = "1535072605621841922";
return new Result<UserTokenResultDTO>().ok(thirdLoginService.sdtSSOLogin(authCode, customerId));
}
/**
*
* @description: 三方视频播放登录
* @author qushutong
* @date 2023/10/18 9:48
* @param
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UserTokenResultDTO>
* @Version1.0
**/
@PostMapping("video/login")
public Result<UserTokenResultDTO> videoLogin() {
// 暂且写死。
String customerId = "1535072605621841922";
return new Result<UserTokenResultDTO>().ok(thirdLoginService.videoLogin(customerId));
}
}