Java秒杀系统-2.8-分布式session

1.秒杀服务实现类

对传入的LoginVo 判断合法性,密码校验,保存查询出的MiaoShaUser,用户的UUID 保存在Cookie 和redis

package com.zengjx.miaosha.service.impl;

import com.zengjx.miaosha.controller.LoginController;
import com.zengjx.miaosha.dao.MiaoshaUserDao;
import com.zengjx.miaosha.domain.MiaoshaUser;
import com.zengjx.miaosha.exception.GlobalException;
import com.zengjx.miaosha.redis.MiaoshaUserKey;
import com.zengjx.miaosha.redis.RedisService;
import com.zengjx.miaosha.result.CodeMsg;
import com.zengjx.miaosha.result.Result;
import com.zengjx.miaosha.service.MiaoshaUserService;
import com.zengjx.miaosha.utils.MD5Util;
import com.zengjx.miaosha.utils.UUIDUtil;
import com.zengjx.miaosha.vo.LoginVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import sun.plugin.util.UIUtil;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

/**
 * @ClassName HelloController
 * @Description TODO
 * @Author zengjx
 * @Company zengjx
 * @Date 2020/1/15  10:43
 * @Version V1.0
 */
@Service
public class MiaoshaUserServiceImpl  implements MiaoshaUserService {
    public static final String COOKI_NAME_TOKEN = "token";
    private   static Logger logger= LoggerFactory.getLogger(MiaoshaUserServiceImpl.class) ;
    @Autowired
    private MiaoshaUserDao   miaoshaUserDao;
    @Autowired
    private RedisService   redisService;
    @Override
    public MiaoshaUser getMiaoshaUserById(Long id) {
        MiaoshaUser user = miaoshaUserDao.getById(id);
        return user;
    }


    @Override
    public Boolean login(HttpServletResponse response,LoginVo loginVo) {
    Result<CodeMsg>  result  =new Result<>();
    //按照手机号查找用户
        if(loginVo.getMobile()==null){
            CodeMsg  codeMsg  =CodeMsg.MOBILE_NOT_EXIST;
            throw   new GlobalException(codeMsg);
        }
        if(loginVo.getMobile()==null){
            CodeMsg  codeMsg  =CodeMsg.PASSWORD_EMPTY;
            throw   new GlobalException(codeMsg);
        }

        Long aLong = Long.parseLong(loginVo.getMobile());
        logger.info("phone "+aLong);
        MiaoshaUser    miaoshaUser=    miaoshaUserDao.getById(aLong) ;
    // 密码校验

      if(miaoshaUser==null){
       CodeMsg  codeMsg  =CodeMsg.MOBILE_NOT_EXIST;
          throw   new GlobalException(codeMsg);
      }

        String password =loginVo.getPassword();
        if(!password.equals(miaoshaUser.getPassword())){
        CodeMsg  codeMsg =CodeMsg.PASSWORD_ERROR;
          throw   new GlobalException(codeMsg);
        }
      //生成cookie
      String   token= UUIDUtil.uuid();
      addCookie(response,token,miaoshaUser);
        return true;
    }

    private void addCookie(HttpServletResponse response, String token, MiaoshaUser miaoshaUser) {

    //1.user保存在redisService.set
    //2. 保存UUID  token 在Cookie,
    //3.设置cookie的路径为“/”
    //4.response添加cookie
        boolean set = redisService.set(MiaoshaUserKey.token, token, miaoshaUser);
        Cookie  cookie  =new Cookie(COOKI_NAME_TOKEN,token);
        cookie.setPath("/");
        cookie.setMaxAge(MiaoshaUserKey.TOKEN_EXPIRE);
        response.addCookie(cookie);
    }


}

2.  用户登录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值