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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号密码登录 微信
|
||||
* @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 请求参数
|
||||
|
@ -96,7 +110,7 @@ public class TokenController
|
|||
// 微信用户登录
|
||||
LoginUser userInfo = sysLoginService.maLogin(body);
|
||||
// 获取登录token
|
||||
return R.ok(tokenService.createToken(userInfo));
|
||||
return R.ok(tokenService.createMobileToken(userInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -197,7 +211,7 @@ public class TokenController
|
|||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("refresh")
|
||||
@GetMapping("refresh")
|
||||
public R<?> refresh(HttpServletRequest request)
|
||||
{
|
||||
LoginUser loginUser = tokenService.getLoginUser(request);
|
||||
|
@ -207,8 +221,21 @@ public class TokenController
|
|||
tokenService.refreshToken(loginUser);
|
||||
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.fail();
|
||||
}
|
||||
|
||||
@PostMapping("register")
|
||||
public R<?> register(@RequestBody RegisterBody registerBody)
|
||||
|
|
|
@ -142,6 +142,54 @@ public class SysLoginService
|
|||
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.concurrent.TimeUnit;
|
||||
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.stereotype.Component;
|
||||
import com.yanzhu.common.core.constant.CacheConstants;
|
||||
|
@ -65,6 +69,33 @@ public class TokenService
|
|||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动端主动刷新令牌有效期 && 长期
|
||||
*
|
||||
* @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)
|
||||
{
|
||||
return ACCESS_TOKEN + token;
|
||||
|
|
|
@ -134,7 +134,7 @@ public class SysUserUniopenController extends BaseController
|
|||
* 小程序授权
|
||||
*/
|
||||
@InnerAuth
|
||||
@GetMapping("/getMaPhoneNumber")
|
||||
@PostMapping("/getMaPhoneNumber")
|
||||
public R<Map<String, Object>> getMaPhoneNumber(@RequestBody WxMaLoginBody body) {
|
||||
try {
|
||||
// 调用解密方法获取手机号
|
||||
|
|
|
@ -9,9 +9,9 @@ export function getCodeImg() {
|
|||
}
|
||||
|
||||
// 登录方法
|
||||
export function login(data) {
|
||||
export function wxLogin(data) {
|
||||
return request({
|
||||
url: '/wxApi/login',
|
||||
url: '/auth/wxLogin',
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
|
@ -29,7 +29,7 @@ export function getMaOpenId(data) {
|
|||
// 登录方法
|
||||
export function maLogin(data) {
|
||||
return request({
|
||||
url: '/maLogin',
|
||||
url: '/auth/maLogin',
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
|
@ -47,15 +47,15 @@ export function updatePwd(data) {
|
|||
// 用户退出方法
|
||||
export function loginOut() {
|
||||
return request({
|
||||
'url': '/wxApi/loginOut',
|
||||
'url': '/auth/logout',
|
||||
'method': 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 刷线用户信息
|
||||
export function refreshUser() {
|
||||
export function refreshMobileToken() {
|
||||
return request({
|
||||
'url': '/wxApi/refreshUserInfo',
|
||||
'url': '/auth/refreshMobile',
|
||||
'method': 'get'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -3,5 +3,5 @@ module.exports = {
|
|||
timeout: 60000,
|
||||
appId: "wx2350a5efb3f28e66",
|
||||
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,
|
||||
} from '../../utils/auth'
|
||||
import {
|
||||
login,
|
||||
wxLogin,
|
||||
maLogin,
|
||||
getCodeImg,
|
||||
getMaOpenId,
|
||||
refreshUser,
|
||||
refreshMobileToken,
|
||||
} from '../../api/login'
|
||||
|
||||
const app = getApp();
|
||||
|
@ -53,7 +53,7 @@ Page({
|
|||
if (getToken()) {
|
||||
console.log("Authorization...{}", getToken());
|
||||
//刷新权限信息
|
||||
refreshUser().then(res => {
|
||||
refreshMobileToken().then(res => {
|
||||
if (res.code == '200') {
|
||||
wx.redirectTo({
|
||||
url: '../index/index',
|
||||
|
@ -114,7 +114,7 @@ Page({
|
|||
//启动蒙版
|
||||
let that = this;
|
||||
//发送请求
|
||||
login({
|
||||
wxLogin({
|
||||
"username": username,
|
||||
"password": password,
|
||||
"code": code,
|
||||
|
@ -140,11 +140,6 @@ Page({
|
|||
iv: e.detail.iv,
|
||||
encryptedData: e.detail.encryptedData
|
||||
}
|
||||
maLogin({})
|
||||
}else{
|
||||
//用户决绝授权
|
||||
app.toast("请允许微信手机号一键登录");
|
||||
}
|
||||
maLogin(data).then(res =>{
|
||||
setToken(res.access_token)
|
||||
//跳转页面
|
||||
|
@ -152,6 +147,10 @@ Page({
|
|||
url: '../index/index',
|
||||
})
|
||||
})
|
||||
}else{
|
||||
//用户决绝授权
|
||||
app.toast("请允许微信手机号一键登录");
|
||||
}
|
||||
},
|
||||
|
||||
})
|
|
@ -28,7 +28,7 @@ export function register(data) {
|
|||
export function refreshToken() {
|
||||
return request({
|
||||
url: '/auth/refresh',
|
||||
method: 'post'
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue