|
@@ -2,6 +2,7 @@ package com.ruoyi.web.service;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
import com.google.common.collect.Maps;
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
@@ -9,7 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.enums.AccessFromType;
|
|
import com.ruoyi.common.enums.AccessFromType;
|
|
|
import com.ruoyi.common.enums.ErrorCodes;
|
|
import com.ruoyi.common.enums.ErrorCodes;
|
|
|
import com.ruoyi.common.exception.ErrorException;
|
|
import com.ruoyi.common.exception.ErrorException;
|
|
|
-import com.ruoyi.common.utils.PhoneUtils;
|
|
|
|
|
|
|
+import com.ruoyi.common.utils.*;
|
|
|
import com.ruoyi.dz.domain.DzCards;
|
|
import com.ruoyi.dz.domain.DzCards;
|
|
|
import com.ruoyi.dz.service.IDzCardsService;
|
|
import com.ruoyi.dz.service.IDzCardsService;
|
|
|
import com.ruoyi.dz.service.impl.DzCardsServiceImpl;
|
|
import com.ruoyi.dz.service.impl.DzCardsServiceImpl;
|
|
@@ -37,9 +38,6 @@ import com.ruoyi.common.exception.user.CaptchaException;
|
|
|
import com.ruoyi.common.exception.user.CaptchaExpireException;
|
|
import com.ruoyi.common.exception.user.CaptchaExpireException;
|
|
|
import com.ruoyi.common.exception.user.UserNotExistsException;
|
|
import com.ruoyi.common.exception.user.UserNotExistsException;
|
|
|
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
|
|
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
|
|
|
-import com.ruoyi.common.utils.DateUtils;
|
|
|
|
|
-import com.ruoyi.common.utils.MessageUtils;
|
|
|
|
|
-import com.ruoyi.common.utils.StringUtils;
|
|
|
|
|
import com.ruoyi.common.utils.ip.IpUtils;
|
|
import com.ruoyi.common.utils.ip.IpUtils;
|
|
|
import com.ruoyi.framework.manager.AsyncManager;
|
|
import com.ruoyi.framework.manager.AsyncManager;
|
|
|
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
|
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
|
@@ -82,6 +80,28 @@ public class SysLoginService
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private IZuserTokenService zuserTokenService;
|
|
private IZuserTokenService zuserTokenService;
|
|
|
|
|
|
|
|
|
|
+ public AjaxResult bindOpenId(String openid, String phoneNumber) {
|
|
|
|
|
+ LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
|
|
|
|
|
+ if(StringUtils.isBlank(phoneNumber) || phoneNumber.equals(loginUser.getUser().getPhonenumber())) {
|
|
|
|
|
+ return AjaxResult.error("用户手机号不一致");
|
|
|
|
|
+ }
|
|
|
|
|
+ SysUser upUser = new SysUser();
|
|
|
|
|
+ upUser.setUserId(loginUser.getUserId());
|
|
|
|
|
+ upUser.setOpenId(openid);
|
|
|
|
|
+ if (userService.updateUserProfile(upUser) > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ // 更新缓存用户信息
|
|
|
|
|
+ loginUser.getUser().setOpenId(openid);
|
|
|
|
|
+ tokenService.setLoginUser(loginUser);
|
|
|
|
|
+ return AjaxResult.success(JSONObject.of("openId", openid));
|
|
|
|
|
+ }
|
|
|
|
|
+ return AjaxResult.success(JSONObject.of("openId", openid));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public AjaxResult loginByCode(String openId) {
|
|
|
|
|
+ SysUser u = userService.selectUserByOpenId(openId);
|
|
|
|
|
+ return loginByUserAndPass("front", u.getUserName(), u.getPassword2());
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 登录验证
|
|
* 登录验证
|
|
@@ -108,30 +128,33 @@ public class SysLoginService
|
|
|
validateCaptcha(username, code, uuid);
|
|
validateCaptcha(username, code, uuid);
|
|
|
// 登录前置校验
|
|
// 登录前置校验
|
|
|
loginPreCheck(username, password);
|
|
loginPreCheck(username, password);
|
|
|
- if(AccessFromType.isFrontApp(type)||AccessFromType.isH5(type)||AccessFromType.isWechat(type)){
|
|
|
|
|
|
|
+ if (AccessFromType.isFrontApp(type) || AccessFromType.isH5(type) || AccessFromType.isWechat(type)) {
|
|
|
//卡密登录时,要将卡的密码转换为用户的密码。手机号的密码与卡的密码分开
|
|
//卡密登录时,要将卡的密码转换为用户的密码。手机号的密码与卡的密码分开
|
|
|
DzCards card = cardsService.selectDzCardsByCardNo(username);
|
|
DzCards card = cardsService.selectDzCardsByCardNo(username);
|
|
|
- if (null==card){
|
|
|
|
|
- if(username.length()>6&&username.length()<8){
|
|
|
|
|
|
|
+ if (null == card) {
|
|
|
|
|
+ if (username.length() > 6 && username.length() < 8) {
|
|
|
//老师账号,直接跳过
|
|
//老师账号,直接跳过
|
|
|
|
|
|
|
|
- }else if(username.length()>=8){
|
|
|
|
|
|
|
+ } else if (username.length() >= 8) {
|
|
|
//卡用户
|
|
//卡用户
|
|
|
return AjaxResult.error("卡不存在");
|
|
return AjaxResult.error("卡不存在");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- if(null!=card&&username.length()>=8){
|
|
|
|
|
|
|
+ if (null != card && username.length() >= 8) {
|
|
|
//卡用户
|
|
//卡用户
|
|
|
- if (!password.trim().equalsIgnoreCase(card.getPassword())){
|
|
|
|
|
|
|
+ if (!password.trim().equalsIgnoreCase(card.getPassword())) {
|
|
|
return AjaxResult.error("密码错误");
|
|
return AjaxResult.error("密码错误");
|
|
|
}
|
|
}
|
|
|
String dbPwd = userService.selectPasswordByCardId(card.getCardId());
|
|
String dbPwd = userService.selectPasswordByCardId(card.getCardId());
|
|
|
- if (StringUtils.isNotEmpty(dbPwd)){
|
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(dbPwd)) {
|
|
|
password = dbPwd;
|
|
password = dbPwd;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ return loginByUserAndPass(type, username, password);
|
|
|
|
|
+ }
|
|
|
|
|
+ private AjaxResult loginByUserAndPass(String type, String username, String password) {
|
|
|
// 用户验证
|
|
// 用户验证
|
|
|
Authentication authentication = null;
|
|
Authentication authentication = null;
|
|
|
try
|
|
try
|