Commit 679952c7 authored by 罗林杰's avatar 罗林杰

Merge remote-tracking branch 'origin/master'

parents 98929816 70288619
......@@ -152,6 +152,12 @@
<version>4.2</version>
</dependency>
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.14.0</version>
</dependency>
</dependencies>
......
......@@ -4,6 +4,9 @@ package org.rcisoft.app.appMemInfo.controller;
/*固定导入*/
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifIFD0Directory;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
......@@ -36,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.validation.Valid;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
......@@ -136,24 +140,28 @@ public class AppMemInfoController extends CyPaginationController<MemInfo> {
cyFileStorageService.filePath(file, temp, bucket));
}
//图片压缩
private static MultipartFile compressImage(MultipartFile file) {
BufferedImage image = null;
try {
image = ImageIO.read(file.getInputStream());
// 设置压缩质量
float quality = 1.0f;
// 获取图像的方向信息并进行旋转调整
image = fixImageOrientation(file, image);
// // 设置压缩质量
// float quality = 1.0f;
// 调整图片尺寸,设置目标宽度和高度
int targetWidth = 800; // 目标宽度(可以根据需求调整)
int targetHeight = 600; // 目标高度(可以根据需求调整)
// 使用Imgscalr进行图像压缩(缩放)
BufferedImage compressedImage = Scalr.resize(image, Scalr.Method.QUALITY, targetWidth, targetHeight);
// BufferedImage compressedImage = Scalr.resize(image,Scalr.Method.QUALITY, Scalr.Mode.AUTOMATIC,500);
// 将BufferedImage写入ByteArrayOutputStream
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
String originalFilename = file.getOriginalFilename();
String extension = originalFilename.substring(originalFilename.lastIndexOf('.') + 1).toLowerCase();
ImageIO.write(compressedImage, extension, outputStream); // 假设原始图片格式为jpg
ImageIO.write(image, extension, outputStream); // 假设原始图片格式为jpg
// 将压缩后的图片数据转换为byte数组
byte[] compressedImageData = outputStream.toByteArray();
......@@ -167,4 +175,72 @@ public class AppMemInfoController extends CyPaginationController<MemInfo> {
return file;
}
/**
* 获取图像的 EXIF 方向标签
*/
private static int getExifOrientation(MultipartFile file) {
try {
Metadata metadata = ImageMetadataReader.readMetadata(file.getInputStream());
ExifIFD0Directory directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
if (directory != null) {
Integer orientationTag = directory.getInteger(ExifIFD0Directory.TAG_ORIENTATION);
if (orientationTag != null) {
return orientationTag;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return 1; // 默认方向,无旋转
}
/**
* 旋转图像
*/
private static BufferedImage rotateImage(BufferedImage image, int angle) {
int width = image.getWidth();
int height = image.getHeight();
// 计算旋转后的新宽高
double radians = Math.toRadians(angle);
int newWidth = (int) Math.abs(width * Math.cos(radians)) + (int) Math.abs(height * Math.sin(radians));
int newHeight = (int) Math.abs(height * Math.cos(radians)) + (int) Math.abs(width * Math.sin(radians));
// 创建一个新的图像,背景色为白色或透明
BufferedImage rotatedImage = new BufferedImage(newWidth, newHeight, image.getType());
Graphics2D g2d = rotatedImage.createGraphics();
// g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
//
// // 设置旋转中心
g2d.translate((newWidth - width) / 2, (newHeight - height) / 2); // 居中
// g2d.rotate(radians, width / 2, height / 2); // 旋转
g2d.rotate(radians, width / 2, height / 2);
// 绘制原图像
g2d.drawImage(image, 0, 0, null);
g2d.dispose();
return rotatedImage;
}
/**
* 根据 EXIF 信息修正图像方向
*/
private static BufferedImage fixImageOrientation(MultipartFile file, BufferedImage image) throws IOException {
int orientation = getExifOrientation(file);
switch (orientation) {
case 3:
return rotateImage(image, 180);
case 6:
return rotateImage(image, 90);
case 8:
return rotateImage(image, 270);
default:
return image; // 无需旋转
}
}
}
package org.rcisoft.app.login.cons;
/**
* Created with family.
* author: cy
* Date: 2021/5/10
* Time: 4:15 PM
* description:
*/
public class WxMiniCons {
// 微信获取 openid
public static final String LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code";
// map - code码
public static final String CODE = "code";
// map - user对象
public static final String DATA = "data";
// map - token
public static final String TOKEN = "token";
// map - openId
public static final String OPEN_ID = "openId";
// 已登录,已授权 1
public static final Integer CODE_AUTHOR = 200;
// 已登录,未授权 0.5
public static final Integer CODE_LOGIN = 202;
// 异常 -1
public static final Integer CODE_ERROR = 500;
// 未登录 0
public static final Integer CODE_UNLOGIN = 204;
//微信接口
public static final String OPEN_ID_STR = "openid";
public static final String SESSION_KEY_STR = "session_key";
//redis openid
public static final String REDIS_OPENID_STR = "users:sk:";
// 解密phone str
public static final String PHONE_STR = "phoneNumber";
//操作提示
public static final String OPE_PHONE_ERROR = "获取手机号错误,请稍后重试";
public static final String OPE_PHONE_EXIST = "您的手机号被占用,请联系客服";
public static final String OPE_PHONE_NOT_EXIST = "您的手机号,系统不存在,请联系客服";
public static final String OPE_PROFILE_NOT_LOGIN = "用户未登录,请先登录";
}
package org.rcisoft.app.login.controller;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.rcisoft.app.login.service.WxMiniService;
import org.rcisoft.core.jwt.util.CyJwtUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author cy
* Created by cy on 21/5/10.
* @descript
*/
@RestController
@RequestMapping("/app/wxMiniApp")
@Slf4j
public class WxMiniAppController {
@Autowired
private WxMiniService wxMiniServiceImpl;
@Autowired
private CyJwtUtil cyJwtUtil;
/**
* wx login 第一步
* 1. 小程序刚进入的时候,可能会有token
* 2. 手机号登录,之前调用的
*
* @param code code
* @return
*/
@GetMapping("/validLogin")
public Map<String, Object> validLogin(@RequestParam("code") String code, HttpServletRequest request) {
// 1. 已经登录 ----> 延长登录过期时间 30分钟,返回token 和 基本信息(身份)
return wxMiniServiceImpl.validLogin(code, cyJwtUtil.getToken(request));
}
/**
* 手机号登录 第二步
*
* @return
*/
@GetMapping("/phoneLogin")
public Map<String, Object> phoneLogin(@RequestParam("encryptedData") String encryptedData,
@RequestParam("iv") String iv,
@RequestParam("openId") String openId) {
return wxMiniServiceImpl.phoneLogin(encryptedData, iv, openId);
}
/**
* 保存授权信息 第三步
*
* @return
*/
@PostMapping("/saveUserProfile")
public Map<String, Object> saveUserProfile(HttpServletRequest request,
@RequestParam("nickName") String nickName,
@RequestParam("avatarUrl") String avatarUrl,
@RequestParam("gender") String gender,
@RequestParam("address") String address) {
return wxMiniServiceImpl.saveUserProfile(nickName, avatarUrl, gender, address, cyJwtUtil.getToken(request));
}
}
package org.rcisoft.app.login.service;
import java.util.Map;
/**
* Created with family.
* author: cy
* Date: 2021/5/10
* Time: 3:41 PM
* description:
*/
public interface WxMiniService {
/**
* 验证登录
*
* @param code
* @return
*/
Map<String, Object> validLogin(String code, String token);
/**
* 手机登录
*
* @param encryptedData
* @param iv
* @param openId
* @return
*/
Map<String, Object> phoneLogin(String encryptedData, String iv, String openId);
/**
* 保存profile
*
* @param nickName
* @param avatarUrl
* @param gender
* @param address
* @return
*/
Map<String, Object> saveUserProfile(String nickName, String avatarUrl, String gender, String address, String token);
}
package org.rcisoft.app.login.service.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.codehaus.xfire.util.Base64;
import org.rcisoft.app.login.service.WxMiniService;
import org.rcisoft.core.jwt.bean.CyJwtBean;
import org.rcisoft.core.jwt.model.CyJwtUser;
import org.rcisoft.core.jwt.util.CyJwtUtil;
import org.rcisoft.core.service.CyRedisService;
import org.rcisoft.core.util.CyAESUtils;
import org.rcisoft.core.util.CyUserUtil;
import org.rcisoft.sys.rbac.menu.dao.SysMenuRbacRepository;
import org.rcisoft.sys.rbac.menu.dto.SysMenuRbacDTO;
import org.rcisoft.sys.rbac.menu.entity.SysMenuRbac;
import org.rcisoft.sys.rbac.user.dao.SysUserRbacRepository;
import org.rcisoft.sys.rbac.user.entity.SysUserRbac;
import org.rcisoft.tencent.cons.CyWxMiniCons;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.*;
import java.security.spec.InvalidParameterSpecException;
import java.util.*;
/**
* Created with family.
* author: cy
* Date: 2021/5/10
* Time: 4:10 PM
* description:
*/
@Service
@Slf4j
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public class WxMiniServiceImpl implements WxMiniService {
// appId
@Value("${wx.appId:}")
private String appId;
// secret
@Value("${wx.secret:}")
private String secret;
@Value("${wx.timeOut:3600}")
private Integer timeOut;
@Autowired(required = false)
private CyRedisService cyRedisServiceImpl;
@Autowired
private CyJwtBean cyJwtBean;
@Autowired
private CyJwtUtil cyJwtUtil;
@Autowired
private SysUserRbacRepository sysUserRbacRepository;
@Autowired(required = false)
private SysMenuRbacRepository sysMenuRbacRepository;
@Override
public Map<String, Object> validLogin(String code, String token) {
Map<String, Object> resultMap = new HashMap<>();
Map<String, String> res = this.getWxOpenId(code);
String wxOpenid = res.get(CyWxMiniCons.OPEN_ID_STR);
String sessionKey = res.get(CyWxMiniCons.SESSION_KEY_STR);
// open is null;
if (StringUtils.isEmpty(wxOpenid)) {
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_ERROR);
resultMap.put(CyWxMiniCons.DATA, "未获取到openid");
return resultMap;
}
// redis 存放sessionKey
cyRedisServiceImpl.set(CyWxMiniCons.REDIS_OPENID_STR + wxOpenid
, sessionKey, Long.parseLong(timeOut + ""));
// 1. 已经登录 ----> 返回token 和 基本信息
if (StringUtils.isNotEmpty(CyUserUtil.getAuthenUsername()) && !cyJwtBean.isTokenExpired(token)) {
return alreadyLogin(resultMap, token);
}
// 2. 未登录
//2.1.1 根据 open_id 数据库数据查询
List<SysUserRbac> sysUsers = sysUserRbacRepository.selectByOpenid(wxOpenid);
if (CollectionUtils.isNotEmpty(sysUsers))
// 2.1.2 微信登录,数据库已绑定 openId --->
return wxLogin(resultMap, sysUsers.get(0));
else {
// 2.1.3 未登录,数据库未绑定 openId 新用户
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_UNLOGIN);
resultMap.put(CyWxMiniCons.OPEN_ID, wxOpenid);
return resultMap;
}
}
@Transactional(propagation = Propagation.REQUIRED)
@Override
public Map<String, Object> phoneLogin(String encryptedData, String iv, String openId) {
Map<String, Object> resultMap = new HashMap<>();
Object session_key = cyRedisServiceImpl.get(CyWxMiniCons.REDIS_OPENID_STR + openId);
if (null != session_key && StringUtils.isAnyEmpty(session_key.toString())) {
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_ERROR);
resultMap.put(CyWxMiniCons.DATA, CyWxMiniCons.OPE_PHONE_ERROR);
return resultMap;
}
//1.解析phone
JSONObject res = this.getPhoneNumber(session_key.toString(), encryptedData, iv);
if (res == null || null == res.get(CyWxMiniCons.PHONE_STR) || StringUtils.isAnyEmpty(res.get(CyWxMiniCons.PHONE_STR).toString())) {
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_ERROR);
resultMap.put(CyWxMiniCons.DATA, CyWxMiniCons.OPE_PHONE_ERROR);
return resultMap;
}
String phone = res.get(CyWxMiniCons.PHONE_STR).toString();
if (StringUtils.isNotBlank(phone))
phone = CyAESUtils.encrypt(phone);
log.error("phone---------------------" + phone);
List<SysUserRbac> sysUsers = sysUserRbacRepository.selectByPhone(phone);
//2.1 手机号已存在
if (CollectionUtils.isNotEmpty(sysUsers))
return this.wxPhoneLogin(resultMap, sysUsers.get(0), openId, phone);
//2.2 手机号不存在,客户第一次登录
return this.wxPhoneLogin(resultMap, null, openId, phone);
}
@Transactional(propagation = Propagation.REQUIRED)
@Override
public Map<String, Object> saveUserProfile(String nickName, String avatarUrl, String gender, String address, String token) {
Map<String, Object> resultMap = new HashMap<>();
String phone = CyUserUtil.getUserInfoStrProp(token, CyUserUtil.USER_PHONE);
//非法登录
if (StringUtils.isAnyEmpty(token) &&
StringUtils.isAnyEmpty(phone)) {
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_ERROR);
resultMap.put(CyWxMiniCons.DATA, CyWxMiniCons.OPE_PROFILE_NOT_LOGIN);
}
SysUserRbac sysUser = new SysUserRbac();
sysUser.setPhone(phone);
sysUser.setWxHead(avatarUrl);
sysUser.setWxSex(gender);
sysUser.setWxNickName(nickName);
sysUser.setWxAddress(address);
sysUserRbacRepository.updateUserWxByPhone(sysUser);
//重新生成token
List<SysUserRbac> users = sysUserRbacRepository.selectByPhone(phone);
if (CollectionUtils.isNotEmpty(users)) {
SysUserRbac sysUserRbac = users.get(0);
/*根据用户名查询用户权限*/
SysMenuRbacDTO sysMenu = new SysMenuRbacDTO();
sysMenu.setNotDeleted();
sysMenu.setUsername(sysUserRbac.getUsername());
List<SysMenuRbac> menus = sysMenuRbacRepository.queryIdByUsername(sysMenu);
if (CollectionUtils.isEmpty(menus))
menus = Collections.emptyList();
sysUserRbac.setMenuList(menus);
boolean notLocked = true;
CyJwtUser userDetails = CyJwtUtil.createRbacJwtUser(sysUserRbac, notLocked);
//创建token
resultMap.put(CyWxMiniCons.TOKEN, CyJwtUtil.generateToken(userDetails));
}
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_AUTHOR);
resultMap.put(CyWxMiniCons.DATA, sysUser);
return resultMap;
}
/**
* 解析phoneNumber
*
* @param session_key
* @param encryptedData
* @param iv
* @return
*/
private JSONObject getPhoneNumber(String session_key, String encryptedData, String iv) {
byte[] dataByte = Base64.decode(encryptedData);
byte[] keyByte = Base64.decode(session_key);
byte[] ivByte = Base64.decode(iv);
try {
int base = 16;
if (keyByte.length % base != 0) {
int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
byte[] temp = new byte[groups * base];
Arrays.fill(temp, (byte) 0);
System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
keyByte = temp;
}
// 初始化
Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
parameters.init(new IvParameterSpec(ivByte));
cipher.init(Cipher.DECRYPT_MODE, spec, parameters);
byte[] resultByte = cipher.doFinal(dataByte);
if (null != resultByte && resultByte.length > 0) {
String result = new String(resultByte, "UTF-8");
return JSONUtil.parseObj(result);
}
} catch (NoSuchAlgorithmException e) {
log.error(e.getMessage(), e);
} catch (NoSuchPaddingException e) {
log.error(e.getMessage(), e);
} catch (InvalidParameterSpecException e) {
log.error(e.getMessage(), e);
} catch (IllegalBlockSizeException e) {
log.error(e.getMessage(), e);
} catch (BadPaddingException e) {
log.error(e.getMessage(), e);
} catch (UnsupportedEncodingException e) {
log.error(e.getMessage(), e);
} catch (InvalidKeyException e) {
log.error(e.getMessage(), e);
} catch (InvalidAlgorithmParameterException e) {
log.error(e.getMessage(), e);
}catch (NoSuchProviderException e) {
e.printStackTrace();
}
return null;
}
/**
* 登录获取sessionKey
*
* @param code
* @return
*/
private Map<String, String> getWxOpenId(String code) {
Map<String, String> res = new HashMap<>();
String loginUrl = String.format(CyWxMiniCons.LOGIN_URL, appId, secret, code);
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
try {
// 创建http GET请求
HttpGet httpGet = new HttpGet(loginUrl);
client = HttpClients.createDefault();
// 执行请求
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();//得到返回数据
String result = EntityUtils.toString(entity);
log.error("微信返回---------------------" + result);
JSONObject json_test = JSONUtil.parseObj(result);
String wxOpenid = json_test.getStr(CyWxMiniCons.OPEN_ID_STR);
String sessionKey = json_test.getStr(CyWxMiniCons.SESSION_KEY_STR);
log.error("openId---------------------" + wxOpenid);
log.error("sessionKey---------------------" + sessionKey);
res.put(CyWxMiniCons.OPEN_ID_STR, wxOpenid);
res.put(CyWxMiniCons.SESSION_KEY_STR, sessionKey);
} catch (Exception e) {
log.error(e.getMessage());
} finally {
if (response != null) {
try {
response.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
if (client != null) {
try {
client.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
return res;
}
/**
* 手机登录
*
* @param resultMap
* @return
*/
private Map<String, Object> wxPhoneLogin(Map<String, Object> resultMap, SysUserRbac sysUserRbac, String openId, String phone) {
//2.1.1 第一次登录
if (null == sysUserRbac) {
// 手机号为帐号,验证重, username phone
List<SysUserRbac> list = sysUserRbacRepository.queryUserByUserName(phone);
if (CollectionUtils.isNotEmpty(list)) {
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_ERROR);
resultMap.put(CyWxMiniCons.DATA, CyWxMiniCons.OPE_PHONE_EXIST);
return resultMap;
}
sysUserRbac = new SysUserRbac();
sysUserRbac.setWxOpenid(openId);
sysUserRbac.setPhone(phone);
sysUserRbac.setUsername(CyAESUtils.decrypt(phone));
sysUserRbac.setCreateDate(new Date());
sysUserRbac.setUpdateDate(new Date());
sysUserRbac.setNotDeleted();
sysUserRbac.setStart();
sysUserRbacRepository.insert(sysUserRbac);
}
//2.1.2 openId 是否绑定 情况:用户旧的微信注销了,更换了微信,但是绑定的手机号都是相同的
else if (StringUtils.isNotEmpty(sysUserRbac.getWxOpenid()) && !sysUserRbac.getWxOpenid().equals(openId)) {
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_ERROR);
resultMap.put(CyWxMiniCons.DATA, CyWxMiniCons.OPE_PHONE_EXIST);
return resultMap;
}
//2.1.3 openId 未绑定
else if (StringUtils.isAnyBlank(sysUserRbac.getWxOpenid())) {
SysUserRbac sysUser = new SysUserRbac();
sysUser.setPhone(phone);
sysUser.setWxOpenid(openId);
sysUserRbacRepository.updateUserWxByPhone(sysUser);
}
return this.wxLogin(resultMap, sysUserRbac);
}
/**
* wx登录
*
* @param resultMap
* @return
*/
private Map<String, Object> wxLogin(Map<String, Object> resultMap, SysUserRbac sysUserRbac) {
if (null != sysUserRbac.getWxNickName())
// 1.1 已授权
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_AUTHOR);
else {
// 1.2 已登录,未授权
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_LOGIN);
//resultMap.put(WxMiniCons.OPEN_ID, sysUserRbac.getWxOpenid());
}
/*根据用户名查询用户权限*/
SysMenuRbacDTO sysMenu = new SysMenuRbacDTO();
sysMenu.setNotDeleted();
sysMenu.setUsername(sysUserRbac.getUsername());
List<SysMenuRbac> menus = sysMenuRbacRepository.queryIdByUsername(sysMenu);
if (CollectionUtils.isEmpty(menus))
menus = Collections.emptyList();
sysUserRbac.setMenuList(menus);
boolean notLocked = true;
CyJwtUser userDetails = CyJwtUtil.createRbacJwtUser(sysUserRbac, notLocked);
//创建token
resultMap.put(CyWxMiniCons.TOKEN, CyJwtUtil.generateToken(userDetails));
sysUserRbac.setPassword(null);
resultMap.put(CyWxMiniCons.DATA, sysUserRbac);
return resultMap;
}
/**
* 已经登录
*
* @param resultMap
* @return
*/
private Map<String, Object> alreadyLogin(Map<String, Object> resultMap, String token) {
cyJwtUtil.refreshToken(token);
if (null != CyUserUtil.getUserInfoStrProp(token, CyUserUtil.USER_WX_NICKNAME))
// 1.1 已授权
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_AUTHOR);
else {
// 1.2 已登录,未授权
resultMap.put(CyWxMiniCons.CODE, CyWxMiniCons.CODE_LOGIN);
}
resultMap.put(CyWxMiniCons.TOKEN, token);
List<SysUserRbac> users = sysUserRbacRepository.queryUserByUserName(CyUserUtil.getAuthenUsername());
SysUserRbac sysUserRbac = new SysUserRbac();
if (CollectionUtils.isNotEmpty(users)) {
sysUserRbac = users.get(0);
sysUserRbac.setPassword(null);
}
//resultMap.put(WxMiniCons.DATA, CyUserUtil.getUserInfoStrProp(token, CyUserUtil.USER_PHONE));
resultMap.put(CyWxMiniCons.DATA, sysUserRbac);
return resultMap;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment