购物车的实现
有两种购物车,一种是必须要登陆才能添加购物车,一种是未登陆下也可以添加购物车。这次主要讲未登陆下实现购物车。
未登录购物车的service层实现
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private TProductMapper productMapper;
/**
* 添加购物车
*
* @param id 用户id
* @param productId 商品id
* @param count 商品数量
*/
@Override
public ResultBean addProduct(String id, Long productId, int count) {
String redisKey = StringUtil.getRedisKey(RedisConstant.USER_CART_PRE, id);
Object o = redisTemplate.opsForValue().get(redisKey);
if (o == null) {
/*
当前用户没有购物车
封装购物车商品对象
* */
CartItem cartItem = new CartItem();
cartItem.setUpdateTime(new Date());
cartItem.setCount(count);
cartItem.setProductId(productId);
/*添加购物车中*/
List<CartItem> carts = new ArrayList<>();
carts.add(cartItem);
/*放到redis里*/
redisTemplate.opsForValue().set(redisKey, carts);
return ResultBean.success(carts, "添加购物车成功!");
}
/*有购物车有商品*/
List<CartItem> carts = (List<CartItem>) o;
for (CartItem cartItem : carts) {
if (cartItem.getProductId().longValue() == productId.longValue()) {
cartItem.setCount(cartItem.getCount() + count);
cartItem.setUpdateTime(new Date());