1
0
hyq 6 роки тому
батько
коміт
fe355ec85e

+ 4 - 5
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -420,15 +420,14 @@ public class OrderServiceImpl implements OrderService {
                 if (storeRelaEntity.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
                     //还原商户商品库存
                     stockNum = storeRelaEntity.getGoodsNumber();
-                    BigDecimal goodsSellVolume = new BigDecimal(storeRelaEntity.getGoodsSellVolume() - orderGoodsEntity.getNumber());//销售量
-                    if (goodsSellVolume.compareTo(Constant.ZERO) < 0) {
-                        goodsSellVolume = Constant.ZERO;
-                    }
                     GoodsEntity goodsEntity = goodsDao.queryObject(storeRelaEntity.getGoodsId());
                     if(goodsEntity!=null){
                         goodsEntity.setGoodsNumber(stockNum + orderGoodsEntity.getNumber());
-                        goodsEntity.setSellVolume(Integer.parseInt(goodsSellVolume.toString()));
+//                        goodsEntity.setSellVolume(Integer.parseInt(goodsSellVolume.toString()));
                         goodsDao.update(goodsEntity);
+
+                        storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
+                        productStoreRelaDao.update(storeRelaEntity);
                         
                         MngChangeEntity mngChangeEntity = new MngChangeEntity();
                         mngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(goodsEntity.getId())));

+ 8 - 1
kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java

@@ -245,7 +245,7 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
         ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
         builder.put("storeId", "门店");
         builder.put("goodsId", "商品");
-        builder.put("stockNum", "库存");
+//        builder.put("stockNum", "库存");
         builder.put("attributeCategory", "一级分类");
         builder.put("categoryId", "二级分类");
         builder.put("brandId", "品牌");
@@ -256,6 +256,13 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
             throw new RRException(r.get("msg").toString());
         } else {
             goodsEntity = goodsDao.queryObject(productStoreRela.getGoodsId());
+            if(Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goodsEntity.getGoodsBizType())){
+                if(Dict.isStockShare.item_0.getItem().equalsIgnoreCase(goodsEntity.getIsStockShare())){
+                    builder.put("stockNum", "库存");
+                }
+            }else{
+                builder.put("stockNum", "库存");
+            }
             if (Dict.orderBizType.item_11.getItem().equals(goodsEntity.getGoodsBizType())) {
                 // 普通商品校验商品规格
                 builder.put("specification", "规格");

+ 1 - 0
kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml

@@ -148,6 +148,7 @@
         a.`market_price`,
         a.`stock_price`,
         a.`sell_volume`,
+        b.sell_volume 'goodsSellVolume',
         b.sku,a.goods_biz_type, a.creater_sn, a.create_time, a.moder_sn, a.mod_time, a.tstm,
         b.goods_sn goodsSn,
         b.list_pic_url,

+ 18 - 18
kmall-api/src/main/java/com/kmall/api/api/ApiCartController.java

@@ -111,14 +111,14 @@ public class ApiCartController extends ApiBaseAction {
      * 获取购物车中的数据
      */
     @GetMapping("getCart")
-    public Object getCart(String checkCart) {
+    public Object getCart(String checkCart,Long storeId) {
         UserVo loginUser = new UserVo();
         loginUser.setId(getUserId());
         Map<String, Object> resultObj = Maps.newHashMap();
         //查询列表数据
         Map param = Maps.newHashMap();
         param.put("user_id", loginUser.getId());
-        Long storeId = getStoreId();
+        storeId = getStoreId();
         param.put("store_id", storeId);
         param.put("merchSn", getMerchSn());
         param.put("checkCart", checkCart);
@@ -243,9 +243,9 @@ public class ApiCartController extends ApiBaseAction {
     /**
      * 获取购物车信息,所有对购物车的增删改操作,都要重新返回购物车的信息
      */
-    @GetMapping("index")
-    public Object index(String checkCart) {
-        return toResponsSuccess(getCart(checkCart));
+    @GetMapping("indexs")
+    public Object indexs(String checkCart,Long storeId) {
+        return toResponsSuccess(getCart(checkCart,storeId));
     }
 
     /**
@@ -342,7 +342,7 @@ public class ApiCartController extends ApiBaseAction {
             cartInfo.setSku(goodsInfo.getSku());
             cartService.update(cartInfo);
         }
-        return toResponsSuccess(getCart(checkCart));
+        return toResponsSuccess(getCart(checkCart,storeId));
     }
 
     /**
@@ -363,7 +363,7 @@ public class ApiCartController extends ApiBaseAction {
         if (0 != MapUtils.getInteger("errno", resultObj)) {
             return toResponsObject(MapUtils.getInteger("errno", resultObj), MapUtils.getString("errmsg", resultObj), "");
         }
-        return toResponsSuccess(getCart(checkCart));
+        return toResponsSuccess(getCart(checkCart,storeId));
     }
 
     /**
@@ -515,7 +515,7 @@ public class ApiCartController extends ApiBaseAction {
         //取得规格的信息,判断规格库存
         ProductVo productInfo = productService.queryByStoreId(productId, storeId);
         if (null == productInfo) {
-            return this.toResponsObject(400, "商品已下架", getCart(checkCart));
+            return this.toResponsObject(400, "商品已下架", getCart(checkCart,storeId));
         }
         ThirdMerchantBizVo thirdMerchantBiz = apiThirdMerchantBizService.getThirdMerchangByCode(goodsInfo.getThirdPartyMerchCode());
         if(null == thirdMerchantBiz){
@@ -536,7 +536,7 @@ public class ApiCartController extends ApiBaseAction {
             }
         }
         if(stockNum == null || number > stockNum || stockNum <= 0){
-            return this.toResponsObject(400, "该商品库存不足", getCart(checkCart));
+            return this.toResponsObject(400, "该商品库存不足", getCart(checkCart,storeId));
         }
         String msg = "";
 //        if (productInfo.getStock_num() < number) {
@@ -551,7 +551,7 @@ public class ApiCartController extends ApiBaseAction {
             cartInfo.setNumber(number);
             cartInfo.setStockNum(stockNum);
             cartService.update(cartInfo);
-            return toResponsObject(0, msg, getCart(checkCart));
+            return toResponsObject(0, msg, getCart(checkCart,storeId));
         }
 
         Map cartParam = Maps.newHashMap();
@@ -583,7 +583,7 @@ public class ApiCartController extends ApiBaseAction {
             cartInfo.setGoods_specification_ids(productInfo.getGoods_specification_ids());
             cartService.update(cartInfo);
         }
-        return toResponsObject(0, msg, getCart(checkCart));
+        return toResponsObject(0, msg, getCart(checkCart,storeId));
     }
 
     /**
@@ -611,7 +611,7 @@ public class ApiCartController extends ApiBaseAction {
             }
         }
         cartService.updateCheck(goodsIdArray, isChecked, loginUser.getId(), getStoreId());
-        return toResponsSuccess(getCart(checkCart));
+        return toResponsSuccess(getCart(checkCart,getStoreId()));
     }
 
     //删除选中的购物车商品,批量删除
@@ -624,12 +624,12 @@ public class ApiCartController extends ApiBaseAction {
             return toResponsFail("删除出错");
         }
         cartService.delete(cartId);
-        return toResponsSuccess(getCart(checkCart));
+        return toResponsSuccess(getCart(checkCart,getStoreId()));
     }
 
     //  获取购物车商品的总件件数
-    @GetMapping("goodscount")
-    public Object goodscount(@LoginUser UserVo loginUser) {
+    @GetMapping("goodscounts")
+    public Object goodscounts(@LoginUser UserVo loginUser, Long storeId) {
         if (null == loginUser || null == loginUser.getId()) {
             return toResponsFail("未登录");
         }
@@ -637,8 +637,8 @@ public class ApiCartController extends ApiBaseAction {
         //查询列表数据
         Map param = Maps.newHashMap();
         param.put("user_id", loginUser.getId());
-        param.put("store_id", getStoreId());
-        param.putAll(setIsStockShare(getStoreId()));
+        param.put("store_id", storeId);
+        param.putAll(setIsStockShare(storeId));
         List<CartVo> cartList = cartService.queryList(param);
         //获取购物车统计信息
         Integer goodsCount = 0;
@@ -846,7 +846,7 @@ public class ApiCartController extends ApiBaseAction {
             for (CartVo cart: list) {
                 cartService.delete(cart.getId());
             }
-            return toResponsSuccess(getCart(checkCart));
+            return toResponsSuccess(getCart(checkCart,storeId));
         }catch (Exception e){
             return toResponsFail("清空失败");
         }

+ 5 - 7
kmall-api/src/main/java/com/kmall/api/api/ApiGoodsController.java

@@ -129,16 +129,14 @@ public class ApiGoodsController extends ApiBaseAction {
         List<GoodsGalleryVo> gallery = goodsGalleryService.queryList(param);
         return toResponsSuccess(gallery);
     }
-
     /**
      * 商品详情页数据
      * */
-    @GetMapping("detail")
-    public Object detail(Long id, Long referrer,String merchSn) {
+    @GetMapping("details")
+    public Object details(Long id, Long referrer,String merchSn,Long storeId) {
         Map<String, Object> resultObj = Maps.newHashMap();
         //
         Long userId = getUserId();
-        Long storeId = getStoreId();
         GoodsVo info = goodsService.queryObjectByStoreId(id, storeId);
         if(info == null){
             return toResponsFail("此商品不存在");
@@ -148,7 +146,7 @@ public class ApiGoodsController extends ApiBaseAction {
 
         Map param = Maps.newHashMap();
         param.put("goods_id", id);
-        param.put("store_id", getStoreId());
+        param.put("store_id", storeId);
         List<Map> specificationList = goodsSpecificationService.queryByGoodsIdGroupByNames(id);
         //
         List<ProductVo> productEntityList = productService.queryList(param);
@@ -218,13 +216,13 @@ public class ApiGoodsController extends ApiBaseAction {
         cartMap.put("isStockShare", info.getIsStockShare());
         List<CartVo> cartVoList = cartService.queryList(cartMap);
 
-        FreightEntity freightEntity = apiFreightService.queryObjectByGoodsId(info.getId(), getStoreId());
+        FreightEntity freightEntity = apiFreightService.queryObjectByGoodsId(info.getId(), storeId);
 
         Integer stockNum = 0;
         if(info.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
             if (info.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
                 stockNum = info.getGoods_number();
-                info.setSell_volume(info.getGoods_sell_volume());
+//                info.setSell_volume(info.getGoods_sell_volume());
             }
             if (info.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
                 stockNum = info.getStockNum();

+ 16 - 8
kmall-api/src/main/java/com/kmall/api/service/ApiOrderService.java

@@ -128,9 +128,13 @@ public class ApiOrderService {
                     stockNum = goodsInfo.getGoods_number();
                     stockNum = stockNum == null? 0 : stockNum;
                     goodsInfo.setGoods_number(stockNum + orderGoodsVo.getNumber());
-                    goodsInfo.minusSellVolume();
+//                    goodsInfo.setSell_volume(goodsInfo.getGoods_sell_volume() - orderGoodsVo.getNumber());
                     apiGoodsMapper.updateGoodsStock(goodsInfo);
 
+                    productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
+                    productInfo.setGoods_id(goodsInfo.getId());
+                    apiProductMapper.updateStockNum(productInfo);
+
                     MngChangeVo mngChangeVo = new MngChangeVo();
                     mngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsInfo.getId())));
                     mngChangeVo.setThirdPartyMerchCode(goodsInfo.getThirdPartyMerchCode());
@@ -152,7 +156,7 @@ public class ApiOrderService {
                     stockNum = productInfo.getStock_num();
                     stockNum = stockNum == null? 0 : stockNum;
                     productInfo.setStock_num(stockNum + orderGoodsVo.getNumber());
-                    productInfo.minusSellVolume();
+                    productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
                     productInfo.setGoods_id(goodsInfo.getId());
                     apiProductMapper.updateStockNum(productInfo);
 
@@ -178,7 +182,7 @@ public class ApiOrderService {
                 stockNum = stockNum == null? 0 : stockNum;
                 productInfo.setStock_num(stockNum + orderGoodsVo.getNumber());
                 productInfo.setGoods_id(goodsInfo.getId());
-                productInfo.minusSellVolume();
+                productInfo.setSell_volume(productInfo.getSell_volume() - orderGoodsVo.getNumber());
                 apiProductMapper.updateStockNum(productInfo);
 
                 StoreMngChangeVo storeMngChangeVo = new StoreMngChangeVo();
@@ -260,8 +264,8 @@ public class ApiOrderService {
         logger.info("param userId:"+ loginUser.getId());
         logger.info("param idNo:"+ idNo);
         logger.info("param userName:"+ userName);
-        logger.info("query userId:"+ user.getId());
         if(user != null){
+            logger.info("query userId:"+ user.getId());
             if(loginUser.getId().compareTo(user.getId()) != 0){
                 logger.info("该身份证信息已被绑定,登陆用户:"+ user.getId()+",查询用户:"+ user.getId());
                 resultObj.put("errno", 400);
@@ -329,7 +333,8 @@ public class ApiOrderService {
                     if(goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
                         if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
                             //扣减商户商品库存
-                            updateGoodsStock(goodsInfo,stockNum,goodsItem,userName);
+                            productInfo.setStore_id(storeId);
+                            updateGoodsStock(goodsInfo,productInfo,stockNum,goodsItem,userName);
                         }
                         if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
                             //扣减门店库存
@@ -507,11 +512,14 @@ public class ApiOrderService {
 
         return resultObj;
     }
-    private void updateGoodsStock(GoodsVo goodsVo,Integer stockNum,CartVo goodsItem,String userName){
+    private void updateGoodsStock(GoodsVo goodsVo,ProductVo productInfo,Integer stockNum,CartVo goodsItem,String userName){
         goodsVo.setGoods_number(stockNum - goodsItem.getNumber());
-        goodsVo.addSellVolume();
         goodsVo.setId(goodsVo.getId());
         apiGoodsMapper.updateGoodsStock(goodsVo);
+        //修改门店商品销量
+        productInfo.setSell_volume(productInfo.getSell_volume() + goodsItem.getNumber());
+        productInfo.setGoods_id(goodsVo.getId());
+        apiProductMapper.updateStockNum(productInfo);
 
         MngChangeVo mngChangeVo = new MngChangeVo();
         mngChangeVo.setGoodsId(Integer.parseInt(String.valueOf(goodsVo.getId())));
@@ -532,7 +540,7 @@ public class ApiOrderService {
     private void updateStock(ProductVo productInfo,GoodsVo goodsVo,Integer stockNum,CartVo goodsItem,Long storeId,String userName){
         productInfo.setStock_num(stockNum - goodsItem.getNumber());
         productInfo.setStore_id(storeId);
-        productInfo.addSellVolume();
+        productInfo.setSell_volume(productInfo.getSell_volume() + goodsItem.getNumber());
         productInfo.setGoods_id(goodsVo.getId());
 //        productVos.add(productInfo);
         apiProductMapper.updateStockNum(productInfo);

+ 8 - 0
kmall-api/src/main/resources/mybatis/mapper/ApiCartMapper.xml

@@ -171,6 +171,14 @@
         left join mall_product c on c.goods_id = a.goods_id and c.id = a.product_id
         left join mall_product_store_rela psr on psr.product_id = c.id and psr.store_id = #{store_id}
         where 1 = 1  and b.is_delete = 0 and b.is_on_sale = 1
+        <if test="checkCart == null">
+            <if test="isStockShare == 1">
+                and b.goods_number > 0
+            </if>
+            <if test="isStockShare == 0">
+                and psr.stock_num > 0
+            </if>
+        </if>
         <if test="isStockShare == 1 and checkCart != null and checkCart == '00'">
             and b.goods_number > 0
         </if>

+ 4 - 1
kmall-api/src/main/resources/mybatis/mapper/ApiGoodsMapper.xml

@@ -271,7 +271,10 @@
                 #{item}
             </foreach>
         </if>
-        <if test="category_parent_id != null and category_parent_id != null">
+        <if test="category_parent_id != null and category_parent_id != null and category_parent_id != 0">
+            and FIND_IN_SET(psr1.category_id, getCategoryChildLst(#{category_parent_id}))
+        </if>
+        <if test="category_parent_id != null and category_parent_id != null and category_parent_id == 0">
             and FIND_IN_SET(c.parent_id, getCategoryChildLst(#{category_parent_id}))
         </if>
         <if test="goods_ids != null">

+ 11 - 2
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -236,14 +236,19 @@ public class QzOrderService {
         String third_party_merch_code = MapUtils.getString("third_party_merch_code", map);
         if(goods_biz_type.equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
             if(goods_biz_type.equalsIgnoreCase(Dict.orderBizType.item_00.getItem()) && isStockShare.equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {//共享
-                Integer sell_volume = MapUtils.getInteger("goods_sell_volume", map);//销量
+//                Integer sell_volume = MapUtils.getInteger("goods_sell_volume", map);//销量
                 Map param = Maps.newHashMap();
                 param.put("id", goods_id);
                 param.put("goods_number", goods_number + number);
+                qzOrderMapper.updateGoodsStockNum(param);//商户商品库存还原
+
+                Integer sell_volume = MapUtils.getInteger("store_sell_volume", map);//销量
                 if(sell_volume >= number){
                     param.put("sell_volume", sell_volume - number);
                 }
-                qzOrderMapper.updateGoodsStockNum(param);//商户商品库存还原
+                param.put("id", storeRelaId);
+                qzOrderMapper.updateStockNum(param);//门店库存还原
+
                 MngChangeJobEntity mngChangeJobEntity = new MngChangeJobEntity();
                 mngChangeJobEntity.setGoodsId(Integer.parseInt(String.valueOf(goods_id)));
                 mngChangeJobEntity.setThirdPartyMerchCode(third_party_merch_code);
@@ -289,6 +294,10 @@ public class QzOrderService {
             Map param = Maps.newHashMap();
             param.put("id", storeRelaId);
             param.put("stock_num", stock_num + number);
+            Integer sell_volume = MapUtils.getInteger("store_sell_volume", map);//销量
+            if(sell_volume >= number){
+                param.put("sell_volume", sell_volume - number);
+            }
             qzOrderMapper.updateStockNum(param);//门店库存还原
             StoreMngChangeJobEntity storeMngChangeJobEntity = new StoreMngChangeJobEntity();
             storeMngChangeJobEntity.setChangeType(Dict.changeType.item_0.getItem());

+ 1 - 1
wx-mall/config/api.js

@@ -42,7 +42,7 @@ module.exports = {
     BrandList: NewApiRootUrl + 'brand/list',  //品牌列表
     BrandDetail: NewApiRootUrl + 'brand/detail',  //品牌详情
 
-    CartList: NewApiRootUrl + 'cart/index', //获取购物车的数据
+    CartList: NewApiRootUrl + 'cart/indexs', //获取购物车的数据
     CartAdd: NewApiRootUrl + 'cart/add', // 添加商品到购物车
     CartAddByOrder: NewApiRootUrl + 'cart/addByOrder', // 根据订单id添加商品到购物车
     CartMinus: NewApiRootUrl + 'cart/minus', // 删除购物车

+ 3 - 1
wx-mall/pages/cart/cart.js

@@ -189,8 +189,10 @@ Page({
     wx.showLoading({
       title: '加载中...',
     });
+    console.log('分享的storeId' + wx.getStorageSync('storeId'))
     util.request(api.CartList, {
-      checkCart: that.data.checkCart
+      checkCart: that.data.checkCart,
+      storeId: wx.getStorageSync('storeId')
     }).then(function(res) {
       if (res.errno === 0) {
         that.setCommonData(res);

+ 4 - 2
wx-mall/pages/search/search.js

@@ -21,7 +21,8 @@ Page({
     showNavList: false,
     footCart: {},
     page: 1,
-    size: 6
+    size: 6,
+    storeId: ''
   },
   toggleNav() {
     this.setData({
@@ -146,7 +147,8 @@ Page({
       keyword: keyword,
       categoryId: 0,
       page: 1,
-      goodsList: []
+      goodsList: [],
+      storeId: wx.getStorageSync("storeId")
     });
 
     this.getGoodsList();

+ 1 - 1
wx-mall/pages/search/search.wxml

@@ -99,7 +99,7 @@
     </view>
     <view class="cate-item">
       <view class="b">
-        <navigator class="item {{(iindex + 1) % 2 == 0 ? 'item-b' : ''}}" url="/pages/goods/goods?id={{iitem.id}}" wx:for="{{goodsList}}" wx:for-item="iitem" wx:for-index="iindex">
+        <navigator class="item {{(iindex + 1) % 2 == 0 ? 'item-b' : ''}}" url="/pages/goods/goods?id={{iitem.id}}&storeId={{storeId}}" wx:for="{{goodsList}}" wx:for-item="iitem" wx:for-index="iindex">
           <image class="img" src="{{iitem.list_pic_url}}" background-size="cover"></image>
           <text class="name">{{iitem.name}}</text>
           <text class="goods-do">