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; 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 resiLogin(@RequestBody LoginFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.resiLogin(formDTO)); } /** * @param formDTO * @return * @Author sun * @Description 单客户-政府端微信小程序登录 **/ @PostMapping("worklogin") public Result workLogin(@RequestBody LoginFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.workLogin(formDTO)); } /** * @param formDTO * @return * @Author sun * @Description 单客户-选择组织,进入首页 **/ @PostMapping(value = "enterorg") public Result enterOrg(@RequestBody ThirdWxmpEnteOrgFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO,ThirdWxmpEnteOrgFormDTO.AddUserShowGroup.class,ThirdWxmpEnteOrgFormDTO.AddUserInternalGroup.class); UserTokenResultDTO userTokenResultDTO=thirdLoginService.enterOrg(formDTO); return new Result().ok(userTokenResultDTO); } /** * @param formDTO * @return * @Author zhy * @Description 单客户-选择组织,进入首页 **/ @PostMapping(value = "enterorgbyaccount") public Result enterOrgByAccount(@RequestBody ThirdWxmpEnteOrgByAccountFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO,ThirdWxmpEnteOrgFormDTO.AddUserShowGroup.class,ThirdWxmpEnteOrgFormDTO.AddUserInternalGroup.class); UserTokenResultDTO userTokenResultDTO=thirdLoginService.enterOrgByAccount(formDTO); return new Result().ok(userTokenResultDTO); } /** * @param formDTO * @return * @Author sun * @Description 单客户-手机验证码获取组织 **/ @PostMapping(value = "/getmyorg") public Result> getmyorg(@RequestBody ThirdStaffOrgsFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByLoginWxmp.class); List staffOrgs = thirdLoginService.getMyOrg(formDTO); return new Result>().ok(staffOrgs); } /** * @param formDTO * @return * @author sun * @description 单客户-手机号密码获取组织 **/ @PostMapping(value = "/getmyorgbypassword") public Result> getMyOrgByPassword(@RequestBody ThirdStaffOrgsFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, StaffOrgsFormDTO.AddUserShowGroup.class, StaffOrgsFormDTO.GetMyOrgByPassWordGroup.class); List staffOrgs = thirdLoginService.getMyOrgByPassword(formDTO); return new Result>().ok(staffOrgs); } /** * @param formDTO * @return * @author zhy * @description 单客户-账号密码获取组织 **/ @PostMapping(value = "/getmyorgbyaccount") public Result> getMyOrgByAccount(@RequestBody ThirdStaffOrgByAccountFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, StaffOrgByAccountFormDTO.AddUserShowGroup.class, StaffOrgByAccountFormDTO.GetMyOrgByPassWordGroup.class); List staffOrgs = thirdLoginService.getMyOrgByAccount(formDTO); return new Result>().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 resiLoginDing(@RequestBody ResiDingAppLoginFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO,ResiDingAppLoginFormDTO.InnerMiniApp.class); return new Result().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 resiLoginDingMd(@RequestBody DingAppLoginMdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().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 resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.resiLoginInternalDing(formDTO)); } /** * @Description: h5-登陆 随手拍 议事厅 * @param formDTO: * @Return com.epmet.commons.tools.utils.Result * @Author: lichao * @Date: 2023/8/15 09:23 */ @PostMapping("resilogin-hfive") public Result resiLoginHfive(@RequestBody HfiveLoginMdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.resiLoginHfive(formDTO)); } /** * 根据免登授权码, 获取登录用户身份 * * @param formDTO 免登授权码 * @return */ @PostMapping("govlogin-internalding") public Result login(@RequestBody DingAppLoginMdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.govLoginInternalDing(formDTO)); } /** * 根据免登授权码, 获取登录用户身份 * * @param authCode 烟台认证中心 授权码 * @return */ @PostMapping("sso-govlogin-yantai/{authCode}") public Result yantaiSSOLogin(@PathVariable(value = "authCode") String authCode) { return new Result().ok(thirdLoginService.yanTaiSSOLogin(authCode)); } }