Merge branch 'dev_xd' of http://62.234.3.186:3000/jiangyq/YZProjectCloud into dev_xd
commit
c55ea4a88e
|
@ -85,6 +85,20 @@ public class TokenController
|
||||||
return R.ok(maOpenId);
|
return R.ok(maOpenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账号密码登录 微信
|
||||||
|
* @param form
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("wxLogin")
|
||||||
|
public R<?> wxLogin(@RequestBody LoginBody form)
|
||||||
|
{
|
||||||
|
// 用户登录
|
||||||
|
LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
|
||||||
|
// 获取登录token
|
||||||
|
return R.ok(tokenService.createMobileToken(userInfo));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信小程序一键登录
|
* 微信小程序一键登录
|
||||||
* @param body 请求参数
|
* @param body 请求参数
|
||||||
|
@ -96,7 +110,7 @@ public class TokenController
|
||||||
// 微信用户登录
|
// 微信用户登录
|
||||||
LoginUser userInfo = sysLoginService.maLogin(body);
|
LoginUser userInfo = sysLoginService.maLogin(body);
|
||||||
// 获取登录token
|
// 获取登录token
|
||||||
return R.ok(tokenService.createToken(userInfo));
|
return R.ok(tokenService.createMobileToken(userInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -197,7 +211,7 @@ public class TokenController
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("refresh")
|
@GetMapping("refresh")
|
||||||
public R<?> refresh(HttpServletRequest request)
|
public R<?> refresh(HttpServletRequest request)
|
||||||
{
|
{
|
||||||
LoginUser loginUser = tokenService.getLoginUser(request);
|
LoginUser loginUser = tokenService.getLoginUser(request);
|
||||||
|
@ -207,8 +221,21 @@ public class TokenController
|
||||||
tokenService.refreshToken(loginUser);
|
tokenService.refreshToken(loginUser);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
return R.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("refreshMobile")
|
||||||
|
public R<?> refreshMobile(HttpServletRequest request)
|
||||||
|
{
|
||||||
|
LoginUser loginUser = sysLoginService.wxLogin(SecurityUtils.getUsername());
|
||||||
|
if (StringUtils.isNotNull(loginUser))
|
||||||
|
{
|
||||||
|
// 刷新令牌有效期
|
||||||
|
tokenService.refreshToken(loginUser);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
return R.fail();
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("register")
|
@PostMapping("register")
|
||||||
public R<?> register(@RequestBody RegisterBody registerBody)
|
public R<?> register(@RequestBody RegisterBody registerBody)
|
||||||
|
|
|
@ -142,6 +142,54 @@ public class SysLoginService
|
||||||
return Convert.toStr(phoneResult.get("phoneNumber"));
|
return Convert.toStr(phoneResult.get("phoneNumber"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信小程序登录
|
||||||
|
*/
|
||||||
|
public LoginUser wxLogin(String username)
|
||||||
|
{
|
||||||
|
// 查询用户信息
|
||||||
|
R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
|
||||||
|
|
||||||
|
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
|
||||||
|
{
|
||||||
|
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
|
||||||
|
throw new ServiceException("登录用户:" + username + " 不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (R.FAIL == userResult.getCode())
|
||||||
|
{
|
||||||
|
throw new ServiceException(userResult.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginUser userInfo = userResult.getData();
|
||||||
|
SysUser user = userResult.getData().getSysUser();
|
||||||
|
if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
|
||||||
|
{
|
||||||
|
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
|
||||||
|
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
|
||||||
|
}
|
||||||
|
if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
|
||||||
|
{
|
||||||
|
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
|
||||||
|
throw new ServiceException("对不起,您的账号:" + username + " 已停用");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 补充用户项目信息
|
||||||
|
if(Objects.nonNull(user.getActiveComId())){
|
||||||
|
userInfo.setProjectDeptId(user.getActiveComId());
|
||||||
|
}
|
||||||
|
if(Objects.nonNull(user.getActiveComName())){
|
||||||
|
userInfo.setProjectDeptName(user.getActiveComName());
|
||||||
|
}
|
||||||
|
if(Objects.nonNull(user.getActiveProjectId())){
|
||||||
|
userInfo.setProjectId(user.getActiveProjectId());
|
||||||
|
}
|
||||||
|
if(Objects.nonNull(user.getActiveProjectName())){
|
||||||
|
userInfo.setProjectName(user.getActiveProjectName());
|
||||||
|
}
|
||||||
|
return userInfo;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信小程序登录
|
* 微信小程序登录
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,6 +4,10 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import com.yanzhu.common.core.constant.Constants;
|
||||||
|
import io.jsonwebtoken.Claims;
|
||||||
|
import io.jsonwebtoken.Jwts;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import com.yanzhu.common.core.constant.CacheConstants;
|
import com.yanzhu.common.core.constant.CacheConstants;
|
||||||
|
@ -65,6 +69,33 @@ public class TokenService
|
||||||
return rspMap;
|
return rspMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建令牌
|
||||||
|
*/
|
||||||
|
public Map<String, Object> createMobileToken(LoginUser loginUser)
|
||||||
|
{
|
||||||
|
String token = IdUtils.fastUUID();
|
||||||
|
Long userId = loginUser.getSysUser().getUserId();
|
||||||
|
String userName = loginUser.getSysUser().getUserName();
|
||||||
|
loginUser.setToken(token);
|
||||||
|
loginUser.setUserid(userId);
|
||||||
|
loginUser.setUsername(userName);
|
||||||
|
loginUser.setIpaddr(IpUtils.getIpAddr());
|
||||||
|
refreshMobileToken(loginUser);
|
||||||
|
|
||||||
|
// Jwt存储信息
|
||||||
|
Map<String, Object> claimsMap = new HashMap<String, Object>();
|
||||||
|
claimsMap.put(SecurityConstants.USER_KEY, token);
|
||||||
|
claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
|
||||||
|
claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
|
||||||
|
|
||||||
|
// 接口返回信息
|
||||||
|
Map<String, Object> rspMap = new HashMap<String, Object>();
|
||||||
|
rspMap.put("access_token", JwtUtils.createToken(claimsMap));
|
||||||
|
rspMap.put("expires_in", expireTime);
|
||||||
|
return rspMap;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户身份信息
|
* 获取用户身份信息
|
||||||
*
|
*
|
||||||
|
@ -162,6 +193,21 @@ public class TokenService
|
||||||
redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
|
redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移动端主动刷新令牌有效期 && 长期
|
||||||
|
*
|
||||||
|
* @param loginUser 登录信息
|
||||||
|
*/
|
||||||
|
public void refreshMobileToken(LoginUser loginUser)
|
||||||
|
{
|
||||||
|
loginUser.setLoginTime(System.currentTimeMillis());
|
||||||
|
long exTime = (expireTime * MILLIS_MINUTE) * 9999;
|
||||||
|
loginUser.setExpireTime(loginUser.getLoginTime() + exTime);
|
||||||
|
// 根据uuid将loginUser缓存
|
||||||
|
String userKey = getTokenKey(loginUser.getToken());
|
||||||
|
redisService.setCacheObject(userKey, loginUser, expireTime * 9999, TimeUnit.MINUTES);
|
||||||
|
}
|
||||||
|
|
||||||
private String getTokenKey(String token)
|
private String getTokenKey(String token)
|
||||||
{
|
{
|
||||||
return ACCESS_TOKEN + token;
|
return ACCESS_TOKEN + token;
|
||||||
|
|
|
@ -134,7 +134,7 @@ public class SysUserUniopenController extends BaseController
|
||||||
* 小程序授权
|
* 小程序授权
|
||||||
*/
|
*/
|
||||||
@InnerAuth
|
@InnerAuth
|
||||||
@GetMapping("/getMaPhoneNumber")
|
@PostMapping("/getMaPhoneNumber")
|
||||||
public R<Map<String, Object>> getMaPhoneNumber(@RequestBody WxMaLoginBody body) {
|
public R<Map<String, Object>> getMaPhoneNumber(@RequestBody WxMaLoginBody body) {
|
||||||
try {
|
try {
|
||||||
// 调用解密方法获取手机号
|
// 调用解密方法获取手机号
|
||||||
|
|
|
@ -9,9 +9,9 @@ export function getCodeImg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登录方法
|
// 登录方法
|
||||||
export function login(data) {
|
export function wxLogin(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/wxApi/login',
|
url: '/auth/wxLogin',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
})
|
})
|
||||||
|
@ -29,7 +29,7 @@ export function getMaOpenId(data) {
|
||||||
// 登录方法
|
// 登录方法
|
||||||
export function maLogin(data) {
|
export function maLogin(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/maLogin',
|
url: '/auth/maLogin',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
})
|
})
|
||||||
|
@ -47,15 +47,15 @@ export function updatePwd(data) {
|
||||||
// 用户退出方法
|
// 用户退出方法
|
||||||
export function loginOut() {
|
export function loginOut() {
|
||||||
return request({
|
return request({
|
||||||
'url': '/wxApi/loginOut',
|
'url': '/auth/logout',
|
||||||
'method': 'get'
|
'method': 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 刷线用户信息
|
// 刷线用户信息
|
||||||
export function refreshUser() {
|
export function refreshMobileToken() {
|
||||||
return request({
|
return request({
|
||||||
'url': '/wxApi/refreshUserInfo',
|
'url': '/auth/refreshMobile',
|
||||||
'method': 'get'
|
'method': 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,5 +3,5 @@ module.exports = {
|
||||||
timeout: 60000,
|
timeout: 60000,
|
||||||
appId: "wx2350a5efb3f28e66",
|
appId: "wx2350a5efb3f28e66",
|
||||||
baseUrl: 'http://127.0.0.1:8080',
|
baseUrl: 'http://127.0.0.1:8080',
|
||||||
noSecuritys:['/code','/auth/login','/auth/getMaOpenId','/auth/getMaPhoneNumber','/auth/maLogin']
|
noSecuritys:['/code','/auth/wxLogin','/auth/getMaOpenId','/auth/getMaPhoneNumber','/auth/maLogin']
|
||||||
};
|
};
|
|
@ -7,11 +7,11 @@ import {
|
||||||
setSessionKey,
|
setSessionKey,
|
||||||
} from '../../utils/auth'
|
} from '../../utils/auth'
|
||||||
import {
|
import {
|
||||||
login,
|
wxLogin,
|
||||||
maLogin,
|
maLogin,
|
||||||
getCodeImg,
|
getCodeImg,
|
||||||
getMaOpenId,
|
getMaOpenId,
|
||||||
refreshUser,
|
refreshMobileToken,
|
||||||
} from '../../api/login'
|
} from '../../api/login'
|
||||||
|
|
||||||
const app = getApp();
|
const app = getApp();
|
||||||
|
@ -53,7 +53,7 @@ Page({
|
||||||
if (getToken()) {
|
if (getToken()) {
|
||||||
console.log("Authorization...{}", getToken());
|
console.log("Authorization...{}", getToken());
|
||||||
//刷新权限信息
|
//刷新权限信息
|
||||||
refreshUser().then(res => {
|
refreshMobileToken().then(res => {
|
||||||
if (res.code == '200') {
|
if (res.code == '200') {
|
||||||
wx.redirectTo({
|
wx.redirectTo({
|
||||||
url: '../index/index',
|
url: '../index/index',
|
||||||
|
@ -114,7 +114,7 @@ Page({
|
||||||
//启动蒙版
|
//启动蒙版
|
||||||
let that = this;
|
let that = this;
|
||||||
//发送请求
|
//发送请求
|
||||||
login({
|
wxLogin({
|
||||||
"username": username,
|
"username": username,
|
||||||
"password": password,
|
"password": password,
|
||||||
"code": code,
|
"code": code,
|
||||||
|
@ -140,11 +140,6 @@ Page({
|
||||||
iv: e.detail.iv,
|
iv: e.detail.iv,
|
||||||
encryptedData: e.detail.encryptedData
|
encryptedData: e.detail.encryptedData
|
||||||
}
|
}
|
||||||
maLogin({})
|
|
||||||
}else{
|
|
||||||
//用户决绝授权
|
|
||||||
app.toast("请允许微信手机号一键登录");
|
|
||||||
}
|
|
||||||
maLogin(data).then(res =>{
|
maLogin(data).then(res =>{
|
||||||
setToken(res.access_token)
|
setToken(res.access_token)
|
||||||
//跳转页面
|
//跳转页面
|
||||||
|
@ -152,6 +147,10 @@ Page({
|
||||||
url: '../index/index',
|
url: '../index/index',
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
}else{
|
||||||
|
//用户决绝授权
|
||||||
|
app.toast("请允许微信手机号一键登录");
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
})
|
})
|
|
@ -28,7 +28,7 @@ export function register(data) {
|
||||||
export function refreshToken() {
|
export function refreshToken() {
|
||||||
return request({
|
return request({
|
||||||
url: '/auth/refresh',
|
url: '/auth/refresh',
|
||||||
method: 'post'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue