ApiCartService.java 6.6 KB

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