Search in sources :

Example 1 with TbUser

use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.

the class MainTest method test1.

@Test
public void test1() {
    TbUserService tbUserService = applicationContext.getBean(TbUserService.class);
    TbUser tbUser = tbUserService.findById((long) 1);
    System.out.println(tbUser);
}
Also used : TbUserService(cn.e3mall.sso.service.TbUserService) TbUser(cn.e3mall.manager.pojo.TbUser) Test(org.junit.Test)

Example 2 with TbUser

use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.

the class CartController method addCart.

/**
 * 添加商品到购物车, 返回购物车添加成功页面
 *
 * @param itemId
 *            商品id
 * @param num
 *            商品数量
 * @return 购物车页面
 */
@GetMapping("/add/{itemId}")
private String addCart(@PathVariable Long itemId, @RequestParam(defaultValue = "1") Integer num, HttpServletRequest request, HttpServletResponse response) {
    /*
		 * 	1. 判断用户是否登录
		 * 		登录状态: 把购物车写入redis, 保存到服务端, 返回逻辑视图
		 * 		未登录:
		 *         	从cookie中取得购物车列表
		 *         		判断商品是否存在:
		 *         			存在: 	数量相加
		 *         			不存在:	根据商品id查询商品信息, 得到tbItem对象
		 *         					把商品添加到商品列表, 写入cookie, 保存到客户端, 返回添加成功页面
		 */
    // 判断用户是否登录
    TbUser tbUser = (TbUser) request.getAttribute("user");
    if (tbUser != null) {
        // 登录状态, 把购物车写入redis, 保存到服务端
        cartService.addCart(tbUser.getId(), itemId, num);
        return "cartSuccess";
    }
    // 用户未登录, 把购物车写入cookie, 保存到客户端
    List<TbItem> cartList = this.getCartListFromCookie(request);
    // 标识是存在商品
    boolean flag = false;
    for (TbItem tbItem : cartList) {
        if (tbItem.getId() == itemId.longValue()) {
            // 包装类型互相比较, 必须转成基础类型, 有一方为基础类型,另一方会自动拆箱
            flag = true;
            // 存在商品, 数量相加
            tbItem.setNum(tbItem.getNum() + num);
            // 根据id找,只可能存在一个商品,跳出循环
            break;
        }
    }
    // 不存在
    if (!flag) {
        TbItem tbItem = tbItemService.getTbItemById(itemId);
        // 设置商品数量
        tbItem.setNum(num);
        // 取得第一张图片
        String image = tbItem.getImage();
        if (StringUtils.isNotBlank(image)) {
            tbItem.setImage(image.split(",")[0]);
        }
        // 把商品添加到购物车列表
        cartList.add(tbItem);
    }
    // 写入cookie
    CookieUtils.setCookie(request, response, COOKIE_CART, JSON.toJSONString(cartList), COOKIE_CART_EXPIRE, true);
    // 返回添加购物车成功页面
    return "cartSuccess";
}
Also used : TbUser(cn.e3mall.manager.pojo.TbUser) TbItem(cn.e3mall.manager.pojo.TbItem) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 3 with TbUser

use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.

the class CartController method updateCartNum.

/**
 * 更新购物车商品商品数量
 *
 * @param itemId
 *            商品id
 * @param num
 *            商品修改后的数量
 * @return
 */
@PostMapping("/update/num/{itemId}/{num}")
@ResponseBody
public E3Result updateCartNum(@PathVariable Long itemId, @PathVariable Integer num, HttpServletRequest request, HttpServletResponse response) {
    // 判断用户是否登录
    TbUser tbUser = (TbUser) request.getAttribute("user");
    if (tbUser != null) {
        cartService.updateCartNum(tbUser.getId(), itemId, num);
        return E3Result.ok();
    }
    // 从cookie取得购物车列表
    List<TbItem> cartList = this.getCartListFromCookie(request);
    // 遍历商品列表找到对应商品
    for (TbItem tbItem : cartList) {
        if (tbItem.getId() == itemId.longValue()) {
            // 更新数量
            tbItem.setNum(num);
            break;
        }
    }
    // 把购物车列表写回cookie
    CookieUtils.setCookie(request, response, COOKIE_CART, JSON.toJSONString(cartList), COOKIE_CART_EXPIRE, true);
    // 返回成功
    return E3Result.ok();
// 解决请求*.html后缀无法返回json数据的问题, 在web.xml里添加一个url-pattern的拦截格式
}
Also used : TbUser(cn.e3mall.manager.pojo.TbUser) TbItem(cn.e3mall.manager.pojo.TbItem) PostMapping(org.springframework.web.bind.annotation.PostMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 4 with TbUser

use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.

the class LoginInterceptor method preHandle.

/**
 * 拦截处理程序的执行。在HandlerMapping之后调用确定了合适的处理程序对象,但在HandlerAdapter调用处理程序之前调用。
 */
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    /*
		 * return true: 放行, false: 拦截
		 * 1. 从cookie中取token
		 * 		没有token:	未登录状态, 直接放行
		 * 		有token:	
		 * 				1). 调用sso系统的服务,根据token取用户信息
		 * 					没有用户信息:	登录过期, 直接放行
		 * 					有用户信息:		登录状态, 把用户信息放到request中, 只需要在controller中判断request中是否包含user信息.放行
		 */
    // 从cookie中取token
    String token = CookieUtils.getCookieValue(request, TOKEN_KEY);
    // 如果没有token,直接放行
    if (StringUtils.isBlank(token)) {
        return true;
    }
    // 取得token, 调用sso系统服务,根据token取用户信息
    E3Result e3Result = tokenService.getUserByToken(token);
    if (!e3Result.isSuccess()) {
        // 没有用户信息
        return true;
    }
    // 取得用户信息
    TbUser tbUser = (TbUser) e3Result.getData();
    request.setAttribute("user", tbUser);
    return true;
}
Also used : E3Result(cn.e3mall.common.pojo.E3Result) TbUser(cn.e3mall.manager.pojo.TbUser)

Example 5 with TbUser

use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.

the class TbUserServiceImpl method userLogin.

@Override
public E3Result userLogin(String username, String password) {
    // 校验数据
    if (StringUtils.isBlank(username)) {
        return E3Result.fail(400, "请输入用户名");
    }
    if (StringUtils.isBlank(password)) {
        return E3Result.fail(400, "请输入密码");
    }
    TbUser tbUser = tbUserMapper.findByUserNameAndPassword(username, DigestUtils.md5DigestAsHex(password.getBytes()));
    if (tbUser == null) {
        // 返回登录失败
        return E3Result.fail(400, "用户名或密码错误");
    }
    // 生成token
    // 密码不要存redis
    tbUser.setPassword(null);
    String token = UUID.randomUUID().toString().replace("-", "").toUpperCase();
    String key = TOKEN_KEY + ":" + token;
    jedisClient.set(key, JSON.toJSONString(tbUser));
    jedisClient.expire(key, TOKEN_EXPIRE);
    return E3Result.ok(token);
}
Also used : TbUser(cn.e3mall.manager.pojo.TbUser)

Aggregations

TbUser (cn.e3mall.manager.pojo.TbUser)8 TbItem (cn.e3mall.manager.pojo.TbItem)5 GetMapping (org.springframework.web.bind.annotation.GetMapping)3 E3Result (cn.e3mall.common.pojo.E3Result)2 TbUserService (cn.e3mall.sso.service.TbUserService)1 Test (org.junit.Test)1 PostMapping (org.springframework.web.bind.annotation.PostMapping)1 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)1