Search in sources :

Example 1 with TbItem

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

the class TbItemServiceImpl method getTbItemById.

@Override
public TbItem getTbItemById(Long id) {
    // 查询缓存
    String key = ITEM_INFO_PRE + ":" + id + ":BASE";
    try {
        String jsonString = jedisClient.get(key);
        if (StringUtils.isNotBlank(jsonString)) {
            return JSON.parseObject(jsonString, TbItem.class);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    // 缓存中没有,查询数据库
    TbItem tbItem = tbItemMapper.selectByPrimaryKey(id);
    if (tbItem != null) {
        try {
            // 把结果添加到缓存
            jedisClient.set(key, JSON.toJSONString(tbItem));
            // 设置缓存的有效期
            jedisClient.expire(key, ITEM_INFO_EXPIRE);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return tbItem;
}
Also used : JMSException(javax.jms.JMSException) TbItem(cn.e3mall.manager.pojo.TbItem)

Example 2 with TbItem

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

the class TbItemController method showItemInfo.

/**
 * 根据商品id获取商品详情并返回页面
 */
@GetMapping("/{itemId}")
public String showItemInfo(@PathVariable Long itemId, Model model) {
    // 调用服务取商品基本信息
    TbItem tbItem = tbItemService.getTbItemById(itemId);
    // 把TbItem转换成Item对象
    // BeanUtils.copyProperties(tbItem, tbItemDto);// 性能较慢
    TbItemDto tbItemDto = new TbItemDto(tbItem);
    // 取商品描述信息
    TbItemDesc tbItemDesc = tbItemDescService.findById(itemId);
    // 把信息传递给页面
    model.addAttribute("item", tbItemDto);
    model.addAttribute("itemDesc", tbItemDesc);
    // 返回逻辑视图
    return "item";
}
Also used : TbItemDto(cn.e3mal.item.vo.TbItemDto) TbItemDesc(cn.e3mall.manager.pojo.TbItemDesc) TbItem(cn.e3mall.manager.pojo.TbItem) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 3 with TbItem

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

the class CartServiceImpl method updateCartNum.

@Override
public E3Result updateCartNum(Long userId, Long itemId, Integer num) {
    // 从redis中取商品信息
    String key = CART_LIST_PRE + ":" + userId;
    String field = itemId + "";
    String jsonString = jedisClient.hget(key, field);
    TbItem tbItem = JSON.parseObject(jsonString, TbItem.class);
    // 更新商品数量
    tbItem.setNum(num);
    // 写入redis
    jedisClient.hset(key, field, JSON.toJSONString(tbItem));
    return E3Result.ok();
}
Also used : TbItem(cn.e3mall.manager.pojo.TbItem)

Example 4 with TbItem

use of cn.e3mall.manager.pojo.TbItem 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 5 with TbItem

use of cn.e3mall.manager.pojo.TbItem 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)

Aggregations

TbItem (cn.e3mall.manager.pojo.TbItem)11 TbUser (cn.e3mall.manager.pojo.TbUser)4 GetMapping (org.springframework.web.bind.annotation.GetMapping)4 TbItemDesc (cn.e3mall.manager.pojo.TbItemDesc)3 JMSException (javax.jms.JMSException)3 TbItemDto (cn.e3mal.item.vo.TbItemDto)2 TextMessage (javax.jms.TextMessage)2 TbItemMapper (cn.e3mall.manager.dao.TbItemMapper)1 PageInfo (com.github.pagehelper.PageInfo)1 Configuration (freemarker.template.Configuration)1 Template (freemarker.template.Template)1 TemplateException (freemarker.template.TemplateException)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 Writer (java.io.Writer)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 Message (javax.jms.Message)1 Session (javax.jms.Session)1 Test (org.junit.Test)1