| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- package se.cloud.analysis.service;
- import jdk.nashorn.internal.objects.Global;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.util.StringUtils;
- import se.cloud.analysis.dao.UserDao;
- import se.cloud.analysis.domain.User;
- import se.cloud.analysis.exception.GlobalException;
- import se.cloud.analysis.redis.RedisService;
- import se.cloud.analysis.redis.UserKey;
- import se.cloud.analysis.result.CodeMsg;
- import se.cloud.analysis.utils.MD5Util;
- import se.cloud.analysis.utils.SaltUtil;
- import se.cloud.analysis.utils.UUIDUtil;
- import se.cloud.analysis.vo.InformationVO;
- import se.cloud.analysis.vo.LoginVO;
- import se.cloud.analysis.vo.RegisterVO;
- import sun.security.provider.MD5;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletResponse;
- @Service
- public class UserService {
- @Autowired
- private UserDao userDao;
- @Autowired
- private RedisService redisService;
- public static final String COOKIE_NAME_TOKEN = "se_education_cloud_data_analysis_token";
- public User getUserByEmail(String email) {
- return userDao.getUserByEmail(email);
- }
- public User getUserByToken(String token) {
- return redisService.get(UserKey.getKeyByTokenAndDefaultExpireTime(token).getKey(), User.class);
- }
- public int updateUser(User user) {
- return userDao.updateUser(user);
- }
- public int delete(String email) {
- return userDao.deleteUser(email);
- }
- public InformationVO getInformationByEmail(String email) {
- User user = getUserByEmail(email);
- if (user == null) {
- throw new GlobalException(CodeMsg.EMAIL_NOT_EXIST);
- } else {
- return InformationVO.userToInformationVO(user);
- }
- }
- public InformationVO getInformationByToken(String token) {
- if (StringUtils.isEmpty(token)) {
- throw new GlobalException(CodeMsg.TOKEN_EMPTY);
- }
- User user = getUserByToken(token);
- if (user == null) {
- throw new GlobalException(CodeMsg.TOKEN_HAS_EXPIRED);
- }
- return InformationVO.userToInformationVO(user);
- }
- public boolean register(RegisterVO registerVO) {
- if (registerVO == null) {
- throw new GlobalException(CodeMsg.SERVER_ERROR);
- }
- String email = registerVO.getEmail();
- String formPassword = registerVO.getPassword();
- String name = registerVO.getName();
- if (getUserByEmail(email) != null) {
- throw new GlobalException(CodeMsg.USER_ALREADY_EXISTS);
- }
- User user = new User();
- String randomSalt = SaltUtil.generateRandomSalt();
- user.setEmail(email);
- user.setPassword(MD5Util.formPassToDbPass(formPassword, randomSalt));
- user.setName(name);
- user.setSalt(randomSalt);
- if (userDao.insertUser(user) == 1) {
- return true;
- } else {
- throw new GlobalException(CodeMsg.SERVER_ERROR);
- }
- }
- public boolean login(HttpServletResponse response, LoginVO loginVO) {
- if (loginVO == null) {
- throw new GlobalException(CodeMsg.SERVER_ERROR);
- }
- String email = loginVO.getEmail();
- String formPass = loginVO.getPassword();
- //判断邮箱是否存在
- User user = getUserByEmail(email);
- if (user == null) {
- throw new GlobalException(CodeMsg.EMAIL_NOT_EXIST);
- }
- //验证密码
- String dbPass = user.getPassword();
- String dbSalt = user.getSalt();
- String calculatePass = MD5Util.formPassToDbPass(formPass, dbSalt);
- if (!calculatePass.equals(dbPass)) {
- throw new GlobalException(CodeMsg.PASSWORD_ERROR);
- }
- //生成Cookie
- String token = UUIDUtil.uuid();
- UserKey redisKey = UserKey.getKeyByTokenAndDefaultExpireTime(token);
- redisService.set(redisKey, user);
- Cookie cookie = new Cookie(COOKIE_NAME_TOKEN, token);
- cookie.setMaxAge(redisKey.getExpireSeconds());
- cookie.setPath("/");
- response.addCookie(cookie);
- return true;
- }
- }
|