89 lines
2.9 KiB
Java
89 lines
2.9 KiB
Java
package com.bwie.service.impl;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.nacos.common.utils.UuidUtils;
|
|
import com.bwie.common.constants.Constants;
|
|
import com.bwie.common.constants.JwtConstants;
|
|
import com.bwie.common.constants.TokenConstants;
|
|
import com.bwie.common.domain.User;
|
|
import com.bwie.common.domain.request.UserRequest;
|
|
import com.bwie.common.domain.response.JwtResponse;
|
|
import com.bwie.common.exception.auth.AuthException;
|
|
import com.bwie.common.result.Result;
|
|
import com.bwie.common.utils.JwtUtils;
|
|
import com.bwie.user.feign.RemoteUserService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.util.HashMap;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
/**
|
|
* @author gxb
|
|
* @description TODO
|
|
* @date 2024-01-03 10:05
|
|
*/
|
|
@Service
|
|
public class AuthServicelmpl implements AuthService{
|
|
@Autowired
|
|
private RemoteUserService remoteUserService;
|
|
@Autowired
|
|
private StringRedisTemplate redisTemplate;
|
|
@Autowired
|
|
private HttpServletRequest request;
|
|
|
|
/**
|
|
* 登录
|
|
* @param userRequest
|
|
* @return
|
|
*/
|
|
@Override
|
|
public Result login(UserRequest userRequest) {
|
|
Result<User> userData = remoteUserService.findName(userRequest.getUsername());
|
|
if (userData.getCode()== Constants.ERROR){
|
|
throw new AuthException(userData.getMsg());
|
|
}
|
|
User user = userData.getData();
|
|
if (null==user){
|
|
throw new AuthException("用户名不存在,请重新登录!");
|
|
}
|
|
if (!user.getPassword().equals(userRequest.getPassword())){
|
|
throw new AuthException("密码错误,请重新检查输入!");
|
|
}
|
|
JwtResponse token = this.getToken(user);
|
|
if (1==user.getRole()){
|
|
return Result.success(token,"管理员登录成功");
|
|
}
|
|
if (2==user.getRole()){
|
|
return Result.success(token,"审核员登录成功");
|
|
}
|
|
|
|
return Result.success(token,"业务员登录成功");
|
|
}
|
|
|
|
@Override
|
|
public Result lout() {
|
|
String token = request.getHeader(TokenConstants.TOKEN);
|
|
String userKey = JwtUtils.getUserKey(token);
|
|
redisTemplate.delete(TokenConstants.LOGIN_TOKEN_KEY+userKey);
|
|
return Result.success("chenggg");
|
|
}
|
|
|
|
/**
|
|
* 生成token
|
|
* @param user
|
|
* @return
|
|
*/
|
|
private JwtResponse getToken(User user){
|
|
HashMap<String, Object> map = new HashMap<>();
|
|
String userKey = UuidUtils.generateUuid().replaceAll("-", "");
|
|
map.put(JwtConstants.USER_KEY,userKey);
|
|
String token = JwtUtils.createToken(map);
|
|
redisTemplate.opsForValue().set(TokenConstants.LOGIN_TOKEN_KEY+userKey,
|
|
JSON.toJSONString(user),15, TimeUnit.MINUTES);
|
|
return new JwtResponse(token);
|
|
}
|
|
}
|