gxb-yuekao/bwie-auth/src/main/java/com/bwie/service/impl/AuthServicelmpl.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);
}
}