提交代码

dev_xds
姜玉琦 2024-04-09 23:12:55 +08:00
parent 2c67e41fee
commit ed1d3cfb75
4 changed files with 47 additions and 25 deletions

View File

@ -48,17 +48,18 @@ export default {
methods: {
wechatLogin() {
//
let rd = this.getQueryString("rd") || "";
let openId = this.getQueryString("openId") || "";
//let rd = this.getQueryString("rd") || "";
let code = this.getQueryString("code") || "";
// token === '' && openId != ''
if (openId != "" && rd != "") {
if (code != "") {
//
console.log("接口返回===>", openId, this.uId, rd);
this.saveBinding(uId, openId);
console.log("接口返回===>", code, this.uId);
this.saveBinding(uId, code);
} else {
const hrefUrl = window.location.href;
//
console.log("我要去登录了===>");
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe6fd9ad863ac09bf&redirect_uri=https://szgc.jhncidg.com/jhapi/wxAuth/userInfo&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
window.location = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe6fd9ad863ac09bf&response_type=code&scope=snsapi_base&redirect_uri="+encodeURIComponent(hrefUrl)+"&state=STATE#wechat_redirect";
}
},
saveBinding(uId, openId) {
@ -66,7 +67,7 @@ export default {
* uId 小程序openId
* openId 公众号openId
*/
wxBinding({ openId: uId, msgOpenId: openId }).then((response) => {
wxBinding({ openId: uId, code: code }).then((response) => {
if (response.code == 200) {
this.successVisible = true;
} else {

View File

@ -133,7 +133,7 @@ public class WechatUserLoginServiceImpl implements IWechatUserLoginService {
map.put("openId",openId);
//验证手机号码是否绑定
List<Map<String,Object>> checkList = wechatUserLoginMapper.checkBindByOpenId(openId);
if(StringUtils.isNotNull(checkList)){
if(StringUtils.isNotEmpty(checkList)){
//将公众号openid传入到个人信息中...
userInfo.put("msgOpenId",checkList.get(0).get("msgOpenId"));
wechatUserLoginMapper.updateUserOpenId(map);

View File

@ -52,19 +52,19 @@ public class WxAuthController extends BaseController {
*/
@Anonymous
@GetMapping("/authorize")
public void authorize(HttpServletResponse response) throws Exception {
log.info("【微信网页授权】进来了,参数={}");
public void authorize(@RequestParam(value = "returnUrl", defaultValue = "https://szgc.jhncidg.com") String returnUrl, HttpServletResponse response) throws Exception {
log.info("【微信网页授权】进来了,参数={}", returnUrl);
//1. 配置
//2. 调用方法
String url = RuoYiConfig.getProjectUrl() + "/jhapi/wxAuth/userInfo";
String url = RuoYiConfig.getProjectUrl() + "wxAuth/userInfo";
/*
*
* URLEncoder.decode(returnUrl,"UTF-8"
* https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
*/
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, "/");
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, returnUrl);
log.info("【微信网页授权】获取code,result={}", redirectUrl);
response.sendRedirect(URLEncoder.encode(redirectUrl, "UTF-8"));
response.sendRedirect(redirectUrl);
}
/**
@ -75,7 +75,8 @@ public class WxAuthController extends BaseController {
*/
@Anonymous
@GetMapping("/userInfo")
public void userInfo(@RequestParam("code") String code,@RequestParam("state") String state,HttpServletResponse response) throws Exception {
public void userInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl,HttpServletResponse response) throws Exception {
/*urlauthorization code
codeaccess tokenopenid*/
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
@ -89,16 +90,15 @@ public class WxAuthController extends BaseController {
// 拿到openid
String openId = wxMpOAuth2AccessToken.getOpenId();
String returnUrl = RuoYiConfig.getProjectUrl() + "/#/wxAuth?rd="+System.currentTimeMillis()+"&openid=" + openId;
returnUrl = URLEncoder.encode(returnUrl, "UTF-8");
log.info("【openid】{}", openId);
log.info("【我是前端要回调的地址:】{}", returnUrl);
log.info("【我是前端要回调的地址:】{}", returnUrl + "&openid=" + openId);
// 顺便获取一下用户信息
WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, "zh_CN");
log.info("【用户信息:】{}", wxMpUser.toString());
//注意拼接参数,第一个参数需要加问号,之后参数使用&拼接的问题
//return "redirect:" + returnUrl + "/#/?openid=" + openId;
response.sendRedirect(returnUrl);
response.sendRedirect(returnUrl + "&rd="+System.currentTimeMillis()+"&openid=" + openId);
}
/**
@ -108,13 +108,31 @@ public class WxAuthController extends BaseController {
* url
*/
@Anonymous
@ResponseBody
@PostMapping("/binding")
public AjaxResult binding(@Validated @RequestBody WxBindingVo vo) throws Exception {
/*当用户同意授权后将小程序openId和公众号OpenId进行绑定*/
SysUserOpenid sysUserOpenid = sysUserOpenidService.selectSysUserOpenidByOpenId(vo.getOpenId());
if(sysUserOpenid!=null){
sysUserOpenid.setMsgOpenId(vo.getMsgOpenId());
return toAjax(sysUserOpenidService.updateSysUserOpenid(sysUserOpenid));
/*urlauthorization code
codeaccess tokenopenid*/
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
//获取access token
wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(vo.getCode());
//log.info("【AccessToken】{}", wxMpOAuth2AccessToken.getAccessToken());
// 拿到openid
String openId = wxMpOAuth2AccessToken.getOpenId();
log.info("【openid】{}", openId);
// 顺便获取一下用户信息
//WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, "zh_CN");
//log.info("【用户信息:】{}", wxMpUser.toString());
/*当用户同意授权后将小程序openId和公众号OpenId进行绑定*/
SysUserOpenid sysUserOpenid = sysUserOpenidService.selectSysUserOpenidByOpenId(vo.getOpenId());
if(sysUserOpenid!=null){
sysUserOpenid.setMsgOpenId(openId);
return toAjax(sysUserOpenidService.updateSysUserOpenid(sysUserOpenid));
}
} catch (WxErrorException e) {
log.error("【微信网页授权】{}", e);
return error();
}
return error();
}

View File

@ -20,8 +20,11 @@ public class WxBindingVo {
private String openId;
/** 公众号openId */
@NotBlank(message = "公众号openId不能为空")
@Size(max = 128, message = "小程序openId最大128位")
private String msgOpenId;
/** 小程序openId */
@NotBlank(message = "公众号授权不能为空")
@Size(max = 128, message = "公众号授权最大128位")
private String code;
}