ApiCartService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package com.kmall.api.service;
  2. import com.kmall.api.dao.ApiCartMapper;
  3. import com.kmall.api.dao.ApiGoodsCrashMapper;
  4. import com.kmall.api.dao.ApiGoodsMapper;
  5. import com.kmall.api.dao.ApiProductMapper;
  6. import com.kmall.api.entity.CartVo;
  7. import com.kmall.api.entity.GoodsCrashVo;
  8. import com.kmall.api.entity.GoodsVo;
  9. import com.kmall.api.entity.ProductVo;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.util.ArrayList;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16. @Service
  17. public class ApiCartService {
  18. @Autowired
  19. private ApiCartMapper cartDao;
  20. @Autowired
  21. private ApiGoodsCrashMapper apiGoodsCrashMapper;
  22. @Autowired
  23. private ApiProductMapper apiProductMapper;
  24. @Autowired
  25. private ApiGoodsMapper apiGoodsMapper;
  26. @Autowired
  27. private ApiGoodsSpecificationService apiGoodsSpecificationService;
  28. public CartVo queryObject(Integer id) {
  29. return cartDao.queryObject(id);
  30. }
  31. public List<CartVo> queryList(Map<String, Object> map) {
  32. return cartDao.queryList(map);
  33. }
  34. public List<CartVo> queryValidCartList(Map<String, Object> map) {
  35. return cartDao.queryValidCartList(map);
  36. }
  37. public int queryTotal(Map<String, Object> map) {
  38. return cartDao.queryTotal(map);
  39. }
  40. public void save(CartVo cart) {
  41. cartDao.save(cart);
  42. // 更新购物车搭配减价
  43. // 判断购物车中是否存在此规格商品
  44. Map cartParam = new HashMap();
  45. cartParam.put("user_id", cart.getUser_id());
  46. List<CartVo> cartInfoList = cartDao.queryList(cartParam);
  47. // 是否有搭配减价
  48. Map crashParam = new HashMap();
  49. List<Long> goods_ids = new ArrayList();
  50. List<CartVo> cartUpdateList = new ArrayList();
  51. if(cartInfoList != null && cartInfoList.size() > 0) {
  52. for (CartVo cartItem : cartInfoList) {
  53. if (null != cartItem.getChecked() && 1 == cartItem.getChecked()) {
  54. goods_ids.add(cartItem.getGoods_id());
  55. }
  56. if (!cartItem.getRetail_price().equals(cartItem.getRetail_product_price())) {
  57. cartItem.setRetail_price(cartItem.getRetail_product_price());
  58. cartUpdateList.add(cartItem);
  59. }
  60. }
  61. }else{
  62. goods_ids.add(cart.getGoods_id());
  63. }
  64. crashParam.put("store_id", cart.getStore_id());
  65. crashParam.put("goods_ids", goods_ids);
  66. List<GoodsCrashVo> goodsCrashList = apiGoodsCrashMapper.queryList(crashParam);
  67. if (null != goodsCrashList) {
  68. for (GoodsCrashVo crashVo : goodsCrashList) {
  69. for (CartVo cartItem : cartInfoList) {
  70. // 存在原始的
  71. if (null != cartItem.getChecked() && 1 == cartItem.getChecked()
  72. && cartItem.getGoods_id().equals(crashVo.getGoods_id())) {
  73. for (CartVo cartCrash : cartInfoList) { // 搭配上了商品
  74. if (!cartCrash.getId().equals(cartItem.getId())
  75. && cartCrash.getGoods_id().equals(crashVo.getGoods_crash_id())
  76. && cartCrash.getProduct_id().equals(crashVo.getProduct_crash_id())) {
  77. cartItem.setRetail_price(crashVo.getRetail_crash_price());
  78. cartUpdateList.add(cartItem);
  79. }
  80. }
  81. }
  82. }
  83. }
  84. }
  85. if (null != cartUpdateList && cartUpdateList.size() > 0) {
  86. for (CartVo cartItem : cartUpdateList) {
  87. cartDao.update(cartItem);
  88. }
  89. }
  90. }
  91. public void update(CartVo cart) {
  92. cartDao.update(cart);
  93. }
  94. public void delete(Long id) {
  95. cartDao.delete(id);
  96. }
  97. public void deleteBatch(Integer[] ids) {
  98. cartDao.deleteBatch(ids);
  99. }
  100. public void updateCheck(String[] productIds, Integer isChecked, Long userId, Long storeId) {
  101. cartDao.updateCheck(productIds, isChecked, userId, storeId);
  102. }
  103. public void deleteByProductIds(String[] productIds, Long storeId) {
  104. cartDao.deleteByProductIds(productIds, storeId);
  105. }
  106. /**
  107. * 只根据商品Id添加到购物车
  108. *
  109. * @param user_id
  110. * @param goods_id
  111. */
  112. public Map addByGoodsId(Long user_id, Long goods_id, Long store_id) {
  113. Map<String, Object> resultObj = new HashMap();
  114. resultObj.put("errno", 0);
  115. resultObj.put("errmsg", "添加成功");
  116. // 判断购物车中是否存在此规格商品
  117. Map cartParam = new HashMap();
  118. cartParam.put("user_id", user_id);
  119. cartParam.put("goods_id", goods_id);
  120. List<CartVo> cartInfoList = cartDao.queryList(cartParam);
  121. if (null != cartInfoList && cartInfoList.size() > 0) {
  122. CartVo cartVo = cartInfoList.get(0);
  123. cartVo.setNumber(cartVo.getNumber() + 1);
  124. update(cartVo);
  125. return resultObj;
  126. }
  127. ProductVo productVo = apiProductMapper.queryOneByGoodsId(goods_id, store_id);
  128. if (null == productVo || productVo.getStock_num() < 1) {
  129. resultObj.put("errno", 1);
  130. resultObj.put("errmsg", "库存不足,仅剩余" + productVo.getStock_num());
  131. return resultObj;
  132. }
  133. GoodsVo goodsVo = apiGoodsMapper.queryObject(goods_id);
  134. CartVo cartInfo = new CartVo();
  135. cartInfo.setGoods_id(productVo.getGoods_id());
  136. cartInfo.setProduct_id(productVo.getId());
  137. cartInfo.setGoods_sn(productVo.getGoods_sn());
  138. cartInfo.setGoods_name(goodsVo.getName());
  139. cartInfo.setList_pic_url(goodsVo.getList_pic_url());
  140. cartInfo.setNumber(1);
  141. cartInfo.setStore_id(store_id);
  142. cartInfo.setUser_id(user_id);
  143. cartInfo.setRetail_price(productVo.getRetail_price());
  144. cartInfo.setMarket_price(productVo.getMarket_price());
  145. //添加规格名和值
  146. cartInfo.setGoods_specification_name_value(productVo.getGoods_specification_name_value());
  147. cartInfo.setGoods_specification_ids(productVo.getGoods_specification_ids());
  148. cartInfo.setChecked(1);
  149. cartInfo.setGoodsBizType(goodsVo.getGoodsBizType());
  150. save(cartInfo);
  151. return resultObj;
  152. }
  153. public List<CartVo> queryCartByGoodsBizType(String goodsBizType) {
  154. return cartDao.queryCartByGoodsBizType(goodsBizType);
  155. }
  156. }