优化登录代码
This commit is contained in:
parent
3e97c2201b
commit
3b8e501a0b
|
|
@ -20,13 +20,13 @@ public interface ILoginService {
|
|||
void register(UserRegisterValidate userRegisterValidate);
|
||||
|
||||
/**
|
||||
* 微信登录
|
||||
* 账号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
LoginTokenVo mnpLogin(Map<String, String> params);
|
||||
LoginTokenVo accountLogin(Map<String, String> params);
|
||||
|
||||
/**
|
||||
* 手机登录
|
||||
|
|
@ -38,13 +38,13 @@ public interface ILoginService {
|
|||
LoginTokenVo mobileLogin(Map<String, String> params);
|
||||
|
||||
/**
|
||||
* 账号登录
|
||||
* 微信登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
LoginTokenVo accountLogin(Map<String, String> params);
|
||||
LoginTokenVo mnpLogin(Map<String, String> params);
|
||||
|
||||
/**
|
||||
* 公众号登录
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import com.mdd.front.config.FrontConfig;
|
|||
import com.mdd.front.service.ILoginService;
|
||||
import com.mdd.front.validate.UserRegisterValidate;
|
||||
import com.mdd.front.vo.LoginTokenVo;
|
||||
import jdk.nashorn.internal.runtime.regexp.joni.Config;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
||||
|
|
@ -79,6 +78,81 @@ public class LoginServiceImpl implements ILoginService {
|
|||
userMapper.insert(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo accountLogin(Map<String, String> params) {
|
||||
Assert.notNull(params.get("username"), "username参数缺失!");
|
||||
Assert.notNull(params.get("password"), "password参数缺失!");
|
||||
String username = params.get("username");
|
||||
String password = params.get("password");
|
||||
|
||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,username,password,salt,mobile,is_disable")
|
||||
.eq("username", username)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(user, "账号不存在!");
|
||||
String pwd = ToolsUtils.makeMd5(password+user.getSalt());
|
||||
Assert.isFalse(!pwd.equals(user.getPassword()), "账号或密码错误!");
|
||||
Assert.isFalse(user.getIsDisable() != 0, "账号已被禁用!");
|
||||
|
||||
// 更新登录信息
|
||||
user.setLastLoginIp(IpUtils.getHostIp());
|
||||
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.updateById(user);
|
||||
|
||||
return this.makeLoginToken(user.getId(), user.getMobile());
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo mobileLogin(Map<String, String> params) {
|
||||
Assert.notNull(params.get("mobile"), "mobile参数缺失!");
|
||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
||||
String mobile = params.get("mobile");
|
||||
String code = params.get("code").toLowerCase();
|
||||
|
||||
// 校验验证码
|
||||
int typeCode = NoticeEnum.SMS_LOGIN_CODE.getCode();
|
||||
Object smsCode = RedisUtils.get(GlobalConfig.redisSmsCode+typeCode+":"+mobile);
|
||||
if (StringUtils.isNull(smsCode) || !smsCode.toString().equals(code)) {
|
||||
throw new OperateException("验证码错误!");
|
||||
}
|
||||
|
||||
// 删除验证码
|
||||
RedisUtils.del(GlobalConfig.redisSmsCode+typeCode+":"+mobile);
|
||||
|
||||
// 查询手机号
|
||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,username,mobile,is_disable")
|
||||
.eq("mobile", mobile)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(user, "账号不存在!");
|
||||
Assert.isFalse(user.getIsDisable() != 0, "账号已禁用!");
|
||||
|
||||
// 更新登录信息
|
||||
user.setLastLoginIp(IpUtils.getHostIp());
|
||||
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.updateById(user);
|
||||
|
||||
return this.makeLoginToken(user.getId(), user.getMobile());
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信小程序登录
|
||||
*
|
||||
|
|
@ -166,111 +240,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
userMapper.updateById(user);
|
||||
}
|
||||
|
||||
String token = ToolsUtils.makeToken();
|
||||
int tokenValidTime = Integer.parseInt(YmlUtils.get("like.token-valid-time"));
|
||||
RedisUtils.set(FrontConfig.frontendTokenKey+token, userId, tokenValidTime);
|
||||
|
||||
LoginTokenVo vo = new LoginTokenVo();
|
||||
vo.setId(userId);
|
||||
vo.setIsBindMobile(!user.getMobile().equals(""));
|
||||
vo.setToken(token);
|
||||
return vo;
|
||||
return this.makeLoginToken(userId, user.getMobile());
|
||||
} catch (WxErrorException e) {
|
||||
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo mobileLogin(Map<String, String> params) {
|
||||
Assert.notNull(params.get("mobile"), "mobile参数缺失!");
|
||||
Assert.notNull(params.get("code"), "code参数缺失!");
|
||||
String mobile = params.get("mobile");
|
||||
String code = params.get("code").toLowerCase();
|
||||
|
||||
// 校验验证码
|
||||
int typeCode = NoticeEnum.SMS_LOGIN_CODE.getCode();
|
||||
Object smsCode = RedisUtils.get(GlobalConfig.redisSmsCode+typeCode+":"+mobile);
|
||||
if (StringUtils.isNull(smsCode) || !smsCode.toString().equals(code)) {
|
||||
throw new OperateException("验证码错误!");
|
||||
}
|
||||
|
||||
// 删除验证码
|
||||
RedisUtils.del(GlobalConfig.redisSmsCode+typeCode+":"+mobile);
|
||||
|
||||
// 查询手机号
|
||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,username,mobile,is_disable")
|
||||
.eq("mobile", mobile)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(user, "账号不存在!");
|
||||
Assert.isFalse(user.getIsDisable() != 0, "账号已禁用!");
|
||||
|
||||
// 更新登录信息
|
||||
user.setLastLoginIp(IpUtils.getHostIp());
|
||||
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.updateById(user);
|
||||
|
||||
String token = ToolsUtils.makeToken();
|
||||
int tokenValidTime = Integer.parseInt(YmlUtils.get("like.token-valid-time"));
|
||||
RedisUtils.set(FrontConfig.frontendTokenKey+token, user.getId(), tokenValidTime);
|
||||
|
||||
LoginTokenVo vo = new LoginTokenVo();
|
||||
vo.setId(user.getId());
|
||||
vo.setIsBindMobile(!user.getMobile().equals(""));
|
||||
vo.setToken(token);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号登录
|
||||
*
|
||||
* @author fzr
|
||||
* @param params 参数
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
@Override
|
||||
public LoginTokenVo accountLogin(Map<String, String> params) {
|
||||
Assert.notNull(params.get("username"), "username参数缺失!");
|
||||
Assert.notNull(params.get("password"), "password参数缺失!");
|
||||
String username = params.get("username");
|
||||
String password = params.get("password");
|
||||
|
||||
User user = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.select("id,username,password,salt,mobile,is_disable")
|
||||
.eq("username", username)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(user, "账号不存在!");
|
||||
String pwd = ToolsUtils.makeMd5(password+user.getSalt());
|
||||
Assert.isFalse(!pwd.equals(user.getPassword()), "账号或密码错误!");
|
||||
Assert.isFalse(user.getIsDisable() != 0, "账号已被禁用!");
|
||||
|
||||
// 更新登录信息
|
||||
user.setLastLoginIp(IpUtils.getHostIp());
|
||||
user.setLastLoginTime(System.currentTimeMillis() / 1000);
|
||||
userMapper.updateById(user);
|
||||
|
||||
String token = ToolsUtils.makeToken();
|
||||
int tokenValidTime = Integer.parseInt(YmlUtils.get("like.token-valid-time"))+1;
|
||||
RedisUtils.set(FrontConfig.frontendTokenKey+token, user.getId(), tokenValidTime-1);
|
||||
|
||||
LoginTokenVo vo = new LoginTokenVo();
|
||||
vo.setId(user.getId());
|
||||
vo.setIsBindMobile(!user.getMobile().equals(""));
|
||||
vo.setToken(token);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 公众号登录
|
||||
*
|
||||
|
|
@ -345,15 +321,7 @@ public class LoginServiceImpl implements ILoginService {
|
|||
userMapper.updateById(user);
|
||||
}
|
||||
|
||||
String token = ToolsUtils.makeToken();
|
||||
int tokenValidTime = Integer.parseInt(YmlUtils.get("like.token-valid-time"))+1;
|
||||
RedisUtils.set(FrontConfig.frontendTokenKey+token, userId, tokenValidTime-1);
|
||||
|
||||
LoginTokenVo vo = new LoginTokenVo();
|
||||
vo.setId(user.getId());
|
||||
vo.setIsBindMobile(!user.getMobile().equals(""));
|
||||
vo.setToken(token);
|
||||
return vo;
|
||||
return this.makeLoginToken(userId, user.getMobile());
|
||||
} catch (WxErrorException e) {
|
||||
throw new OperateException(e.getError().getErrorCode() + ", " + e.getError().getErrorMsg());
|
||||
}
|
||||
|
|
@ -418,6 +386,13 @@ public class LoginServiceImpl implements ILoginService {
|
|||
userMapper.updateById(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫码链接
|
||||
*
|
||||
* @author fzr
|
||||
* @param session session
|
||||
* @return String
|
||||
*/
|
||||
@Override
|
||||
public String getScanCode(HttpSession session) {
|
||||
// 获取AppId
|
||||
|
|
@ -448,6 +423,26 @@ public class LoginServiceImpl implements ILoginService {
|
|||
return String.format(baseUrl, appId, redirectUrl, state);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成登录Token
|
||||
*
|
||||
* @author fzr
|
||||
* @param userId 用户ID
|
||||
* @param mobile 用户手机
|
||||
* @return LoginTokenVo
|
||||
*/
|
||||
private LoginTokenVo makeLoginToken(Integer userId, String mobile) {
|
||||
String token = ToolsUtils.makeToken();
|
||||
int tokenValidTime = Integer.parseInt(YmlUtils.get("like.token-valid-time"));
|
||||
RedisUtils.set(FrontConfig.frontendTokenKey+token, userId, tokenValidTime);
|
||||
|
||||
LoginTokenVo vo = new LoginTokenVo();
|
||||
vo.setId(userId);
|
||||
vo.setIsBindMobile(!mobile.equals(""));
|
||||
vo.setToken(token);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成用户编号
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue