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 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 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 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 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 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); } }