ApiCartService.java 6.8 KB

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