parent
ee0f575485
commit
556a77ede4
|
|
@ -19,6 +19,7 @@ import org.jeecg.common.util.*;
|
|||
import org.jeecg.modules.mini.douyin.vo.DyLoginVo;
|
||||
import org.jeecg.modules.mini.dto.VipDTO;
|
||||
import org.jeecg.modules.mini.service.MiniUserService;
|
||||
import org.jeecg.modules.mini.wx.constant.WeiXinConstant;
|
||||
import org.jeecg.modules.mini.wx.model.WxModel;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.jeecg.modules.system.model.SysLoginModel;
|
||||
|
|
@ -251,8 +252,8 @@ public class MiniUserController {
|
|||
obj.put("loginState", "not");
|
||||
//判断是不是 二维码登录
|
||||
if (StringUtils.isNotBlank(wxModel.getUuid())) {
|
||||
//更改二维码登录状态
|
||||
redisUtil.set("WX_QRCODE_SCENE_"+ wxModel.getUuid(),"");
|
||||
//更改二维码登录状态 通过,180s
|
||||
redisUtil.set(WeiXinConstant.QR_CODE_KEY + wxModel.getUuid(),WeiXinConstant.WX_QRCODE_SUCCESS_STATUS+"-"+user.getId()+"-"+token,180);
|
||||
}
|
||||
return Result.OK(obj);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,5 +19,9 @@ public class WeiXinConstant {
|
|||
* 微信二维码被扫描
|
||||
*/
|
||||
public static final String WX_QRCODE_SCAN_STATUS = "WX_QRCODE_SCAN";
|
||||
/**
|
||||
* 微信二维码扫描验证成功
|
||||
*/
|
||||
public static final String WX_QRCODE_SUCCESS_STATUS = "WX_QRCODE_SUCCESS";
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class WeXinUtil {
|
|||
* @param path 跳转小程序后的路径
|
||||
* @param width 二维码的宽度
|
||||
*/
|
||||
public static String getWxACode(String accessToken, String path, String width){
|
||||
public static String getWxACode(String accessToken, String path, String width,String scene){
|
||||
byte[] release=null;
|
||||
if (StringUtils.isBlank(path)) {
|
||||
return null;
|
||||
|
|
@ -71,7 +71,7 @@ public class WeXinUtil {
|
|||
//拼接路径
|
||||
String url = GET_WXACODE_URL + "?access_token=" + accessToken;
|
||||
JSONObject jsonParam = new JSONObject();
|
||||
jsonParam.put("scene", "id=1");
|
||||
jsonParam.put("scene", scene);
|
||||
jsonParam.put("page", path);
|
||||
jsonParam.put("width", Integer.parseInt(width));
|
||||
jsonParam.put("auto_color", false);
|
||||
|
|
@ -105,7 +105,7 @@ public class WeXinUtil {
|
|||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
getWxACode("80_WOwnMgHpt70AdOLDjhrpOengYBT_nozQ_rIcgc4FmbtI64swoBxj19_7iOO7wm-vM9-lDEThsv934LodtsvVuaB2CxbWaX9oFdeAElSvBV6rbCWljXh29zG6EAwZCMiAAACFP",
|
||||
"pages/zyb/login","430");
|
||||
// getWxACode("80_WOwnMgHpt70AdOLDjhrpOengYBT_nozQ_rIcgc4FmbtI64swoBxj19_7iOO7wm-vM9-lDEThsv934LodtsvVuaB2CxbWaX9oFdeAElSvBV6rbCWljXh29zG6EAwZCMiAAACFP",
|
||||
// "pages/zyb/login","430");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package org.jeecg.modules.web.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
|
@ -8,6 +9,9 @@ import org.jeecg.common.util.RedisUtil;
|
|||
import org.jeecg.modules.mini.wx.constant.WeiXinConstant;
|
||||
import org.jeecg.modules.mini.wx.model.WeXinConfig;
|
||||
import org.jeecg.modules.mini.wx.util.WeXinUtil;
|
||||
import org.jeecg.modules.system.entity.SysUser;
|
||||
import org.jeecg.modules.system.service.ISysUserService;
|
||||
import org.jeecg.modules.web.service.WebUserService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
|
@ -26,6 +30,10 @@ public class WeiXinController {
|
|||
@Resource
|
||||
private WeXinConfig weXinConfig;
|
||||
@Resource
|
||||
private WebUserService webUserService;
|
||||
@Resource
|
||||
private ISysUserService sysUserService;
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
|
||||
|
|
@ -40,10 +48,10 @@ public class WeiXinController {
|
|||
//先获取accessToken
|
||||
String accessToken = WeXinUtil.getAccessToken(weXinConfig.getAppId(), weXinConfig.getAppSecret(), null);
|
||||
//生成一个uuid,用于标识是否扫描成功 存入redis
|
||||
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
|
||||
String uuid = UUID.randomUUID().toString().replaceAll("-", "").substring(0,8);
|
||||
String key = WeiXinConstant.QR_CODE_KEY + uuid;
|
||||
redisUtil.set(key,WeiXinConstant.WX_QRCODE_NOT_SCAN_STATUS, 180);//3分钟
|
||||
String qrCodeImg = WeXinUtil.getWxACode(accessToken, "pages/zyb/qrcodeLogin", "64");
|
||||
String qrCodeImg = WeXinUtil.getWxACode(accessToken, "pages/zyb/qrcodeLogin", "64",uuid);
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("scene", uuid);
|
||||
map.put("img", "data:image/jpeg;base64," + qrCodeImg);
|
||||
|
|
@ -60,14 +68,15 @@ public class WeiXinController {
|
|||
public Result<?> getQrCodeStatus(@PathVariable String uuid) {
|
||||
String key = WeiXinConstant.QR_CODE_KEY + uuid;
|
||||
String value = (String) redisUtil.get(key);
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
if (StringUtils.isNotEmpty(value) && value.startsWith("WX_QRCODE_SUCCESS")) {
|
||||
//二维码已经扫描通过,获取登录信息
|
||||
String openId = value.split("-")[1];
|
||||
//String token = tokenService.createToken(openId);
|
||||
String userId = value.split("-")[1];
|
||||
String token = value.split("-")[2];
|
||||
map = webUserService.getByWxUserId(userId);
|
||||
map.put("token",token);
|
||||
//map.put("qr_state", WxConstant.QR_STATUS_SUCCESS);
|
||||
map.put("qr_state", "SUCCESS");
|
||||
map.put("token", "1");
|
||||
} else if (StringUtils.isNotEmpty(value) && value.startsWith("WX_QRCODE_SCAN")) {
|
||||
//二维码被扫描但未验证
|
||||
map.put("qr_state", "SCAN");
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import org.springframework.beans.BeanUtils;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* 前台用户service
|
||||
|
|
@ -74,4 +76,27 @@ public class WebUserService {
|
|||
return Result.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
public HashMap<String, Object> getByWxUserId(String userId){
|
||||
try {
|
||||
SysUser sysUser = sysUserService.getById(userId);
|
||||
AssertUtils.notNull(sysUser,"获取用户信息错误");
|
||||
//用户登录信息
|
||||
HashMap<String, Object> obj = new LinkedHashMap<>();
|
||||
LoginUser loginUser = new LoginUser();
|
||||
BeanUtils.copyProperties(sysUser, loginUser);
|
||||
//获取vip信息
|
||||
VipDTO vipDTO = miniUserService.getUserVip(sysUser.getId());
|
||||
if (vipDTO != null) {
|
||||
obj.put("vipInfo", vipDTO);
|
||||
} else {
|
||||
obj.put("vipInfo", null);
|
||||
}
|
||||
obj.put("userInfo", loginUser);
|
||||
return obj;
|
||||
} catch (Exception e) {
|
||||
log.error("WebUserService.getByWxUserId错误:");
|
||||
log.error(e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue