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;
}
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";
}
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();
}
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";
}
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的拦截格式
}
Aggregations