|
@@ -0,0 +1,100 @@
|
|
|
+package cn.rankin.apiweb.service.shopcart;
|
|
|
+
|
|
|
+import cn.rankin.apiweb.code.ApiWebCode;
|
|
|
+import cn.rankin.apiweb.service.product.ProductClient;
|
|
|
+import cn.rankin.common.utils.api.model.APIResult;
|
|
|
+import cn.rankin.common.utils.api.model.BaseCode;
|
|
|
+import cn.rankin.common.utils.api.page.Page;
|
|
|
+import cn.rankin.data.api.app.vo.GoodsVo;
|
|
|
+import cn.rankin.data.api.app.vo.ItemGoodsVo;
|
|
|
+import cn.rankin.data.api.product.entity.Goods;
|
|
|
+import cn.rankin.data.api.user.dto.ShopCartDTO;
|
|
|
+import cn.rankin.data.api.user.entity.ShopCart;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class ShopCartService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ShopCartClient shopCartClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProductClient productClient;
|
|
|
+
|
|
|
+ public APIResult<Page<GoodsVo>> getPage(String userId, String merchantId, Integer pageNo, Integer pageSize) {
|
|
|
+ APIResult<Page<ShopCart>> shopCartApiResult = shopCartClient.getPage(userId, pageNo, pageSize);
|
|
|
+ if (!shopCartApiResult.getSuccess()) {
|
|
|
+ return APIResult.error(new BaseCode(shopCartApiResult.getCode(), shopCartApiResult.getMessage()));
|
|
|
+ }
|
|
|
+ Page<ShopCart> shopCartPage = shopCartApiResult.getData();
|
|
|
+ Page<GoodsVo> goodsPage = new Page(shopCartPage.getTotalSize(), shopCartPage.getPageNo(), shopCartPage.getPageSize());
|
|
|
+ List<ShopCart> shopCartList = shopCartPage.getList();
|
|
|
+ if (CollectionUtils.isEmpty(shopCartList)) {
|
|
|
+ return APIResult.ok(goodsPage);
|
|
|
+ }
|
|
|
+ List<String> goodsIdList = new ArrayList<>();
|
|
|
+ shopCartList.forEach(shopCart -> goodsIdList.add(shopCart.getGoodsId()));
|
|
|
+
|
|
|
+ APIResult<List<GoodsVo>> goodsApiResult = productClient.findGoodsByIds(goodsIdList, merchantId);
|
|
|
+ if (!goodsApiResult.getSuccess()) {
|
|
|
+ return APIResult.error(new BaseCode(goodsApiResult.getCode(), goodsApiResult.getMessage()));
|
|
|
+ }
|
|
|
+ List<GoodsVo> goodsVoList = goodsApiResult.getData();
|
|
|
+ goodsPage.setList(goodsVoList);
|
|
|
+ return APIResult.ok(goodsPage);
|
|
|
+ }
|
|
|
+
|
|
|
+ public APIResult<Boolean> add(String userId, String goodsId) {
|
|
|
+ APIResult<Goods> apiResult = productClient.findGoods(goodsId);
|
|
|
+ if (!apiResult.getSuccess()) {
|
|
|
+ return APIResult.error(new BaseCode(apiResult.getCode(), apiResult.getMessage()));
|
|
|
+ }
|
|
|
+ Goods goods = apiResult.getData();
|
|
|
+ ShopCartDTO shopCartDTO = new ShopCartDTO();
|
|
|
+ shopCartDTO.setUserId(userId);
|
|
|
+ shopCartDTO.setGoodsId(goodsId);
|
|
|
+ shopCartDTO.setPid(goods.getPid());
|
|
|
+ return shopCartClient.add(shopCartDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ public APIResult<Boolean> delete(String userId, String goodsId) {
|
|
|
+ return shopCartClient.delete(userId, goodsId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public APIResult getTotalNum(String userId) {
|
|
|
+ return shopCartClient.getToatlNum(userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public APIResult<Boolean> push(String userId) {
|
|
|
+ return shopCartClient.push(userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void isInCart(String userId, List<ItemGoodsVo> itemGoodsVoList) {
|
|
|
+ if (CollectionUtils.isEmpty(itemGoodsVoList)) return;
|
|
|
+ List<String> goodsIdList = new ArrayList<>();
|
|
|
+ itemGoodsVoList.forEach(itemGoodsVo -> goodsIdList.add(itemGoodsVo.getId()));
|
|
|
+ APIResult<List<ShopCart>> apiResult = shopCartClient.findByIds(goodsIdList, userId);
|
|
|
+ if (!apiResult.getSuccess()) return;
|
|
|
+ List<ShopCart> shopCartList = apiResult.getData();
|
|
|
+ Map<String, ShopCart> shopCartMap = new HashMap<>();
|
|
|
+ for (ShopCart shopCart : shopCartList) {
|
|
|
+ String goodsId = shopCart.getGoodsId();
|
|
|
+ shopCartMap.put(goodsId, shopCart);
|
|
|
+ }
|
|
|
+ for (ItemGoodsVo itemGoodsVo : itemGoodsVoList) {
|
|
|
+ String goodsId = itemGoodsVo.getId();
|
|
|
+ if (shopCartMap.containsKey(goodsId)) {
|
|
|
+ itemGoodsVo.setIsInCart(Boolean.TRUE);
|
|
|
+ }else {
|
|
|
+ itemGoodsVo.setIsInCart(Boolean.FALSE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|