package com.ruoyi.auth.controller;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.auth.service.QywxInnerService;
|
import com.ruoyi.auth.service.SysLoginService;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.security.service.TokenService;
|
import com.ruoyi.system.api.model.*;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.io.IOException;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLEncoder;
|
|
/**
|
* 企业微信H5应用专用
|
*/
|
@RestController
|
@Api(value = "企业微信授权信息获取", tags = "企业微信授权信息获取")
|
public class QwH5Controller {
|
|
@Autowired
|
private QywxInnerService qywxInnerService;
|
|
@Autowired
|
private SysLoginService sysLoginService;
|
|
@Autowired
|
private TokenService tokenService;
|
|
@Value("${h5.redirectMerchantUriBase}")
|
private String redirectMerchantUriBase;
|
|
@Value("${h5.redirectEmployeeUriBase}")
|
private String redirectEmployeeUriBase;
|
|
|
/**
|
* 构造网页授权链接
|
* @param redirectUri
|
* @return
|
* @throws UnsupportedEncodingException
|
*/
|
@GetMapping({"/h5/oauthUrl"})
|
@ApiOperation("构造网页授权链接")
|
public R<OauthUrlVo> oauthUrl(@ApiParam(value = "授权重定向地址", required = true) @RequestParam("redirectUri") String redirectUri) throws UnsupportedEncodingException {
|
// 普通应用
|
redirectUri = redirectMerchantUriBase + redirectUri;
|
String oauthRedirectUrl = URLEncoder.encode(redirectUri,"utf-8");
|
String oauthUrl = qywxInnerService.getOauthUrl(oauthRedirectUrl);
|
return R.ok(new OauthUrlVo(oauthUrl));
|
}
|
|
@GetMapping({"/h5/oauthStaffUrl"})
|
@ApiOperation("构造网页授权链接")
|
public R<OauthUrlVo> oauthStaffUrl(@ApiParam(value = "授权重定向地址", required = true) @RequestParam("redirectUri") String redirectUri) throws UnsupportedEncodingException {
|
// 普通应用
|
redirectUri = redirectEmployeeUriBase + redirectUri;
|
String oauthRedirectUrl = URLEncoder.encode(redirectUri,"utf-8");
|
String oauthUrl = qywxInnerService.getOauthUrl(oauthRedirectUrl);
|
return R.ok(new OauthUrlVo(oauthUrl));
|
}
|
|
|
@GetMapping("/h5/oauthStaff")
|
@ApiOperation("通过code获取员工端用户登录")
|
public R<OauthUserVo> oauthStaff(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException {
|
// 通过code获取访问用户敏感信息
|
JSONObject result = qywxInnerService.getOauthUser(code);
|
QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class);
|
//QwUserDetailDto qwUserDetail = new QwUserDetailDto();
|
//qwUserDetail.setMobile("17780704874");
|
if(StringUtils.isBlank(qwUserDetail.getMobile())){
|
throw new ServiceException("企业微信未授权手机号,无法登录");
|
}
|
// 1、查数据库获取人员
|
QwH5LoginVo qwH5LoginVo = sysLoginService.qwH5StaffLogin(qwUserDetail);
|
// 2、生成Token
|
return R.ok(tokenService.createQwH5Token(qwH5LoginVo));
|
}
|
|
@GetMapping("/h5/oauthUser")
|
@ApiOperation("通过code获取商户端用户登录")
|
public R<OauthUserVo> oauthUser(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException {
|
// 通过code获取访问用户敏感信息
|
JSONObject result = qywxInnerService.getOauthUser(code);
|
QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class);
|
if(StringUtils.isBlank(qwUserDetail.getMobile())){
|
throw new ServiceException("企业微信未授权手机号,无法登录");
|
}
|
//QwUserDetailDto qwUserDetail = new QwUserDetailDto();
|
//qwUserDetail.setMobile("13882237106");
|
// 1、查数据库获取人员
|
QwH5LoginVo qwH5LoginVo = sysLoginService.qwH5Login(qwUserDetail);
|
// 2、生成Token
|
return R.ok(tokenService.createQwH5Token(qwH5LoginVo));
|
}
|
|
@GetMapping("/h5/getAgentConfig")
|
@ApiOperation("通过code获取访问用户登录")
|
public R<AgentConfigVo> getAgentConfig(@ApiParam(value = "url", required = true) String url, @ApiParam(value = "type", required = false) String type) throws IOException {
|
AgentConfigVo agentConfigVo = qywxInnerService.getAgentConfig(url, type);
|
return R.ok(agentConfigVo);
|
}
|
|
|
}
|