Эх сурвалжийг харах

暂时停止分单处理,推送市民请结合商品模块需要数据

fubojin 6 өдөр өмнө
parent
commit
7155d5181a
19 өөрчлөгдсөн 403 нэмэгдсэн , 178 устгасан
  1. 2 4
      yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java
  2. 1 1
      yami-shop-api/src/main/java/com/yami/shop/api/controller/SearchController.java
  3. 0 8
      yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java
  4. 13 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java
  5. 37 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/param/ConfirmSplitOrderParam.java
  6. 59 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/param/ManualSplitOrderParam.java
  7. 3 1
      yami-shop-common/src/main/java/com/yami/shop/common/util/HttpUtil.java
  8. 42 14
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java
  9. 13 0
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java
  10. 1 1
      yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java
  11. 1 1
      yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java
  12. 34 6
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBFrontCategoryService.java
  13. 118 2
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java
  14. 15 13
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java
  15. 1 58
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java
  16. 0 3
      yami-shop-service/src/main/resources/mapper/OrderMapper.xml
  17. 42 47
      yami-shop-service/src/main/resources/mapper/ProductMapper.xml
  18. 17 15
      yami-shop-service/src/main/resources/mapper/ShopCategoryMapper.xml
  19. 4 4
      yami-shop-service/src/main/resources/mapper/ShopSkuMapper.xml

+ 2 - 4
yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java

@@ -324,15 +324,13 @@ public class OrderController {
             basketService.removeShopCartItemsCacheByUserId(userId);
         }
         orderService.removeConfirmOrderCache(userId + submitOrderParam.getUuid());
-
-
         for (Order order : orders) {
             if (!order.getNextPay()) {
                 //不拆单和已拆单推到海博
-                if (order.getSplitStatus() == 1 || order.getOrderLevel() == 1) {
+//                if (order.getSplitStatus() == 1 || order.getOrderLevel() == 1) {
                     //推送海博订单
                     hbOrderService.createOrderAsync(order.getOrderNumber());
-                }
+//                }
             }
         }
 

+ 1 - 1
yami-shop-api/src/main/java/com/yami/shop/api/controller/SearchController.java

@@ -81,7 +81,7 @@ public class SearchController {
 
     @GetMapping("/searchProdPage")
     @ApiOperation(value = "搜索商品(首页商品列表)")
-    public ResponseEntity<IPage<SearchProdDto>> searchProdPage(PageParam page, SearchParam searchParam) {
+    public ResponseEntity<IPage<SearchProdDto>> searchProdPage(PageParam<SearchProdDto> page, SearchParam searchParam) {
         searchParam.setProdType(0);
         IPage<SearchProdDto> searchProdDtoPageByProdName = productService.getSearchProdDtoPageByProdName(page, searchParam);
         return ResponseEntity.ok(searchProdDtoPageByProdName);

+ 0 - 8
yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java

@@ -53,7 +53,6 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class SubmitOrderListener {
 
-
     private final MapperFacade mapperFacade;
 
     private final UserAddrOrderService userAddrOrderService;
@@ -65,13 +64,6 @@ public class SubmitOrderListener {
     private final Snowflake snowflake;
 
     private final PointsRecordMapper pointsRecordMapper;
-    private final OrderItemMapper orderItemMapper;
-
-    private final SkuMapper skuMapper;
-
-    private final ProductMapper productMapper;
-
-    private final OrderMapper orderMapper;
 
     private final OrderSettlementMapper orderSettlementMapper;
 

+ 13 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java

@@ -146,6 +146,14 @@ public class Order implements Serializable {
      * 订单等级(0-父订单,1-子订单)
      */
     private Integer orderLevel;
+    /**
+     * 拆单操作人ID
+     */
+    private Long splitUserId;
+    @TableField(exist = false)
+    @ApiModelProperty("拆单操作人名称")
+    private String splitUserName;
+
 
     /**
      * 订单商品总数
@@ -313,6 +321,11 @@ public class Order implements Serializable {
     private Integer goodsTotalCount;
 
 
+    /**
+     * 子订单信息
+     */
+    @TableField(exist = false)
+    private List<Order> subOrders;
 
 
 }

+ 37 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/param/ConfirmSplitOrderParam.java

@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
+ *
+ * https://www.gz-yami.com/
+ *
+ * 未经允许,不可做商业用途!
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.yami.shop.bean.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * 确认拆单请求参数
+ *
+ * @author
+ */
+@Data
+@ApiModel("确认拆单请求参数")
+public class ConfirmSplitOrderParam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "父订单号", required = true)
+    @NotBlank(message = "订单号不能为空")
+    private String orderNumber;
+    @ApiModelProperty(value = "拆单操作用户", required = true)
+    @NotBlank(message = "拆单操作用户不能为空")
+    private Long splitUserId;
+}

+ 59 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/param/ManualSplitOrderParam.java

@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
+ *
+ * https://www.gz-yami.com/
+ *
+ * 未经允许,不可做商业用途!
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.yami.shop.bean.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 手动拆单请求参数
+ *
+ * @author
+ */
+@Data
+@ApiModel("手动拆单请求参数")
+public class ManualSplitOrderParam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "父订单号", required = true)
+    @NotBlank(message = "订单号不能为空")
+    private String orderNumber;
+
+    @ApiModelProperty(value = "子订单项列表", required = true)
+    @NotEmpty(message = "子订单项列表不能为空")
+    private List<ManualSplitOrderItemParam> orderItems;
+
+    @ApiModelProperty(value = "拆单操作用户", required = true)
+    @NotBlank(message = "拆单操作用户不能为空")
+    private Long splitUserId;
+    /**
+     * 手动拆单订单项参数
+     */
+    @Data
+    @ApiModel("手动拆单订单项参数")
+    public static class ManualSplitOrderItemParam implements Serializable {
+
+        private static final long serialVersionUID = 1L;
+
+        @ApiModelProperty(value = "商品SKU ID", required = true)
+        private Long skuId;
+
+        @ApiModelProperty(value = "商品数量", required = true)
+        private Integer prodCount;
+    }
+}

+ 3 - 1
yami-shop-common/src/main/java/com/yami/shop/common/util/HttpUtil.java

@@ -106,7 +106,9 @@ public class HttpUtil {
      */
     public static String post(String url, Map<String, String> headers, Map<String, String> params) {
         HttpPost post = new HttpPost(url);
-        post.setEntity(getHttpEntity(params));
+        if (Objects.nonNull(params) && !params.isEmpty()) {
+            post.setEntity(getHttpEntity(params));
+        }
         return getRespString(post, headers);
     }
 

+ 42 - 14
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java

@@ -76,6 +76,7 @@ public class OrderController {
 
     @Autowired
     private ExportTaskService exportTaskService;
+
     /**
      * 分页获取
      */
@@ -113,7 +114,7 @@ public class OrderController {
     }
 
     /**
-     * 获取信息
+     * 获取订单信息
      */
     @GetMapping("/orderInfo/{orderNumber}")
 //    @PreAuthorize("@pms.hasPermission('platform:order:info')")
@@ -131,12 +132,36 @@ public class OrderController {
                 c.setRefundSuccessCount(orderItemService.refundSuccessCount(c.getOrderItemId()));
             });
         }
+        //操作人
+        if (order.getSplitUserId() != null) {
+            order.setSplitUserName(sysUserService.getById(order.getSplitUserId()).getUsername());
+        }
         order.setOrderItems(orderItems);
         User user = userService.getById(order.getUserId());
         if (user != null) {
             order.setNickName(user.getNickName());
             order.setUserMobile(user.getUserMobile());
         }
+
+        //子订单数据处理
+        List<Order> list = orderService.list(new LambdaUpdateWrapper<Order>().eq(Order::getParentOrderNumber, orderNumber)
+                .eq(Order::getDeleteStatus, 0));
+
+        if (ObjectUtil.isNotEmpty(list)) {
+            for (Order order1 : list) {
+
+                List<OrderItem> orderItems2 = orderItemService.getOrderItemsByOrderNumber(orderNumber);
+                if (!orderItems2.isEmpty()) {
+                    orderItems2.forEach(c -> {
+                        c.setRefundIngCount(orderItemService.refundIngCount(c.getOrderItemId()));
+                        c.setRefundSuccessCount(orderItemService.refundSuccessCount(c.getOrderItemId()));
+                    });
+                }
+                order1.setOrderItems(orderItems2);
+            }
+            order.setSubOrders(list);
+        }
+
         return R.SUCCESS(order);
     }
 
@@ -198,8 +223,8 @@ public class OrderController {
         UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
         AppConnect connect = appConnectMapper.getByUserId(order.getUserId(), 1);
         Delivery delivery = deliveryService.getById(deliveryOrderParam.getDvyId());
-        CullenUtils.validateDataThrowException(connect==null,"openid不存在..."+order.getUserId());
-        CullenUtils.validateDataThrowException(connect.getBizUserId()==null,"openid不存在..."+order.getUserId());
+        CullenUtils.validateDataThrowException(connect == null, "openid不存在..." + order.getUserId());
+        CullenUtils.validateDataThrowException(connect.getBizUserId() == null, "openid不存在..." + order.getUserId());
         WxProviderServiceImpl.uploadShippingInfo(
                 deliveryOrderParam.getDvyFlowId(),
                 settlement.getBizPayNo(),
@@ -221,8 +246,9 @@ public class OrderController {
         IPage<Order> orderIPage = orderService.deliveryOrder(page, orderParam);
         return R.SUCCESS(orderIPage);
     }
+
     /**
-     *配送订单模块(数据统计)
+     * 配送订单模块(数据统计)
      */
     @GetMapping("/selectOrderCount")
     @ApiOperation("配送订单模块(数据统计)")
@@ -242,6 +268,7 @@ public class OrderController {
 
     /**
      * 导出
+     *
      * @param orderParam
      */
     @GetMapping("/export")
@@ -254,21 +281,22 @@ public class OrderController {
         } catch (Exception e) {
             throw new GlobalException("导出获取当前登录用户失败");
         }
-        if (ObjectUtil.isEmpty(userId)){
+        if (ObjectUtil.isEmpty(userId)) {
             throw new GlobalException("导出获取当前登录用户信息失败,请登录");
         }
-        ExportTask exportTaskOne =  exportTaskService.findByUserIdAndStatusAndType(userId,0,1);//查询导出任务为正常订单并且在进行中的数据
+        ExportTask exportTaskOne = exportTaskService.findByUserIdAndStatusAndType(userId, 0, 1);//查询导出任务为正常订单并且在进行中的数据
         // 异步执行
-        if (exportTaskOne!=null){
+        if (exportTaskOne != null) {
             return R.FAIL("正常订单有导出任务正在执行中,请中断或者等待完成");
         }
 
-         return orderService.export(orderParam,userId);
+        return orderService.export(orderParam, userId);
     }
 
 
     /**
      * 订单订单统计数
+     *
      * @param orderParam
      */
     @GetMapping("/orderCount")
@@ -279,23 +307,23 @@ public class OrderController {
     }
 
 
-    private void getBackendOrderParam(BackendOrderParam orderParam){
-        if (orderParam.getChannelIdList()==null||orderParam.getChannelIdList().isEmpty()){
+    private void getBackendOrderParam(BackendOrderParam orderParam) {
+        if (orderParam.getChannelIdList() == null || orderParam.getChannelIdList().isEmpty()) {
             throw new GlobalException("请求参数-所属企业不允许为空");
         }
-        if (ObjectUtil.isEmpty(orderParam.getUserAttrType())){
+        if (ObjectUtil.isEmpty(orderParam.getUserAttrType())) {
             orderParam.setUserAttrType("1");//默认查询正常人员属性
         }
-        if (orderParam.getChannelIdList().contains(0L)){
+        if (orderParam.getChannelIdList().contains(0L)) {
             Long userId = null;
             try {
                 userId = SecurityUtils.getSysUser().getUserId();
             } catch (Exception e) {
                 throw new GlobalException("获取当前登录用户失败");
             }
-            List<Long> channelIdList =  sysUserService.findByUserIdListId(userId);
+            List<Long> channelIdList = sysUserService.findByUserIdListId(userId);
             orderParam.setChannelIdList(channelIdList);
-            if (userId != Constant.SUPER_ADMIN_ID&&(orderParam.getChannelIdList()==null||orderParam.getChannelIdList().isEmpty())){
+            if (userId != Constant.SUPER_ADMIN_ID && (orderParam.getChannelIdList() == null || orderParam.getChannelIdList().isEmpty())) {
                 List<Long> longs = new ArrayList<>();
                 longs.add(0L);
                 orderParam.setChannelIdList(longs);

+ 13 - 0
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java

@@ -163,6 +163,19 @@ public class ShopCategoryController {
             return R.FAIL("门店前台类目不存在");
         }
         shopCategoryService.updateById(shopCategory);
+
+
+//        ShopCategory dbShopCategory1 = shopCategoryService.getById(shopCategory.getId());
+//        // 将frontCategory数据推送到另一个服务器(POST请求,参数放在请求体)
+//        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncFrontCategoryDel/";
+//        try {
+//            // 将frontCategory对象作为JSON放入请求体
+//            String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, dbShopCategory1);
+//            log.info("推送frontCategory到同步服务器结果: {}", response);
+//        } catch (Exception e) {
+//            log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+//        }
+
         return R.SUCCESS();
     }
 

+ 1 - 1
yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java

@@ -61,7 +61,7 @@ public interface ProductMapper extends BaseMapper<Product> {
 
     IPage<ProductDto> moreBuyProdList(Page<ProductDto> page);
 
-    IPage<SearchProdDto> getSearchProdDtoPageByProdName(@Param("page") Page page, @Param("searchParam") SearchParam searchParam);
+    IPage<SearchProdDto> getSearchProdDtoPageByProdName(@Param("page") PageParam<SearchProdDto> page, @Param("searchParam") SearchParam searchParam);
 
     TagProductDto tagProdList(@Param("tagId") Long tagId);
 

+ 1 - 1
yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java

@@ -74,7 +74,7 @@ public interface ProductService extends IService<Product> {
 
     IPage<ProductDto> moreBuyProdList(Page<ProductDto> page);
 
-    IPage<SearchProdDto> getSearchProdDtoPageByProdName(Page page, SearchParam searchParam);
+    IPage<SearchProdDto> getSearchProdDtoPageByProdName(PageParam<SearchProdDto> page, SearchParam searchParam);
 
     List<TagProductDto> tagProdList();
 

+ 34 - 6
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBFrontCategoryService.java

@@ -85,9 +85,6 @@ public class HBFrontCategoryService implements IHBFrontCategoryService {
                         .eq(FrontCategory::getIsDelete, 0));
                 if (frontCategory1 == null) {
                     frontCategoryMapper.insert(frontCategory);
-
-                    //添加门店分类
-//                    addShopCategory(frontCategory, 1L, 5104238L);
                 } else {
                     frontCategory.setId(frontCategory1.getId());
                     frontCategoryMapper.updateById(frontCategory);
@@ -98,8 +95,18 @@ public class HBFrontCategoryService implements IHBFrontCategoryService {
                         shopCategory1.setName(frontCategory.getName());
                         shopCategory1.setNum(frontCategory.getNum());
                         shopCategoryMapper.updateById(shopCategory1);
+                        try {
+                            String syncUrl = "http://192.168.1.101:8080/smqjh-pms//api/v1/sync/syncShopCategoryData";
+                            // 将frontCategory对象作为JSON放入请求体
+                            String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopCategory1);
+                            log.info("推送frontCategory到同步服务器结果: {}", response);
+                        } catch (Exception e) {
+                            log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                        }
+
                     }
                 }
+
             }
             log.info("前台分类成功");
             // 4. 构建响应
@@ -162,7 +169,13 @@ public class HBFrontCategoryService implements IHBFrontCategoryService {
         shopCategory.setIsLeaves(frontCategory.getIsLeaves());
 
         shopCategoryMapper.insert(shopCategory);
-
+        try {
+            String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopCategoryData/";
+            String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopCategory);
+            log.info("推送门店分类到同步服务器结果: {}", response);
+        } catch (Exception e) {
+            log.error("推送门店分类到同步服务器失败: {}", e.getMessage(), e);
+        }
 
     }
 
@@ -197,13 +210,28 @@ public class HBFrontCategoryService implements IHBFrontCategoryService {
         for (Object codeObject : codeList) {
             String code = codeObject.toString();
             log.info("前台类目删除,body:{}", code);
-            FrontCategory frontCategory = frontCategoryMapper.selectOne(new LambdaQueryWrapper<FrontCategory>().eq(FrontCategory::getCode, Long.valueOf(code)));
-            if(frontCategory == null){
+            FrontCategory frontCategory = frontCategoryMapper.selectOne(new LambdaQueryWrapper<FrontCategory>()
+                    .eq(FrontCategory::getIsDelete, 0)
+                    .eq(FrontCategory::getCode, Long.valueOf(code)));
+            if (frontCategory == null) {
                 return;
             }
             frontCategory.setIsDelete(1);
             frontCategoryMapper.updateById(frontCategory);
             shopCategoryMapper.deleteByCode(code);
+
+            try {
+                List<ShopCategory> shopCategories = shopCategoryMapper.selectList(new LambdaQueryWrapper<ShopCategory>().eq(ShopCategory::getCode, code));
+                for (ShopCategory shopCategory : shopCategories) {
+                    String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopCategoryData/";
+                    String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopCategory);
+                    log.info("推送门店分类到同步服务器结果: {}", response);
+                }
+            } catch (Exception e) {
+                log.error("推送门店分类到同步服务器失败: {}", e.getMessage(), e);
+            }
+
         }
     }
+
 }

+ 118 - 2
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java

@@ -93,6 +93,14 @@ public class HBGoodsService implements IHBGoodsService {
                         log.info("SPU创建成功: prodId={}, hbSpuId={}, spuName={}", productAdd.getProdId(), productAdd.getProdId(), productAdd.getProdName());
                     }
 
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncProductData";
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, productAdd);
+                        log.info("推送商品到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送商品到同步服务器失败: {}", e.getMessage(), e);
+                    }
+
                     convertCategoryCodeToId(productInfo.getJSONArray("relationFrontCategories"), productAdd.getProdId()); // 一品多类目
 
 
@@ -110,6 +118,15 @@ public class HBGoodsService implements IHBGoodsService {
                         skuMapper.insert(sku);
                         log.info("SKU创建成功: skuId={}, skuName={}", sku.getSkuId(), sku.getSkuName());
                     }
+
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncSkuData";
+                        // 将frontCategory对象作为JSON放入请求体
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, sku);
+                        log.info("推送frontCategory到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                    }
                 }
             } else {
                 log.info("===================进入多规格商品操作===================");
@@ -139,6 +156,15 @@ public class HBGoodsService implements IHBGoodsService {
                         prodId = productAdd.getProdId();
                         log.info("生成的商品ID: {}", productAdd.getProdId());
                     }
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncProductData";
+                        // 将frontCategory对象作为JSON放入请求体
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, productAdd);
+                        log.info("推送frontCategory到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                    }
+
                     convertCategoryCodeToId(productInfo.getJSONArray("relationFrontCategories"), productAdd.getProdId()); // 一品多类目
 
                     JSONArray skuList = productInfo.getJSONArray("skuList");
@@ -156,6 +182,13 @@ public class HBGoodsService implements IHBGoodsService {
                         } else {
                             skuMapper.insert(sku);
                         }
+                        try {
+                            String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncSkuData";
+                            String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, sku);
+                            log.info("推送商品到同步服务器结果: {}", response);
+                        } catch (Exception e) {
+                            log.error("推送商品到同步服务器失败: {}", e.getMessage(), e);
+                        }
                     }
                 }
             }
@@ -191,6 +224,17 @@ public class HBGoodsService implements IHBGoodsService {
                         .eq(ShopSku::getSkuId, sku.getSkuId())
                         .eq(ShopSku::getShopId, shopDetail.getShopId()));
 
+                try {
+                    ShopSku shopSku = shopSkuMapper.selectOne(new LambdaUpdateWrapper<ShopSku>()
+                            .eq(ShopSku::getSkuId, sku.getSkuId())
+                            .eq(ShopSku::getShopId, shopDetail.getShopId()));
+                    String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopSkuData";
+                    String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopSku);
+                    log.info("推送商品到同步服务器结果: {}", response);
+                } catch (Exception e) {
+                    log.error("推送商品到同步服务器失败: {}", e.getMessage(), e);
+                }
+
                 //处理门店-分类管理
                 List<CategoryProdHb> categoryProds = categoryProdHbMapper.selectList(new LambdaQueryWrapper<CategoryProdHb>()
                         .eq(CategoryProdHb::getProdId, sku.getProdId())
@@ -267,6 +311,15 @@ public class HBGoodsService implements IHBGoodsService {
             shopCategory.setRecTime(new Date());
 
             shopCategoryMapper.insert(shopCategory);
+
+            try {
+                String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopCategoryData";
+                String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopCategory);
+                log.info("推送门店分类到同步服务器结果: {}", response);
+            } catch (Exception e) {
+                log.error("推送门店分类到同步服务器失败: {}", e.getMessage(), e);
+            }
+
             log.info("门店分类添加成功:{}", shopCategory);
             //二级添加门店-分类绑定商品管理
             addCategoryProd(prodId, shopCategory);
@@ -302,6 +355,15 @@ public class HBGoodsService implements IHBGoodsService {
                 categoryProd.setCreateTime(new Date());
 
                 categoryProdMapper.insert(categoryProd);
+
+                try {
+                    String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncCategoryProdData";
+                    // 将frontCategory对象作为JSON放入请求体
+                    String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, categoryProd);
+                    log.info("推送frontCategory到同步服务器结果: {}", response);
+                } catch (Exception e) {
+                    log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                }
             }
         }
     }
@@ -343,12 +405,28 @@ public class HBGoodsService implements IHBGoodsService {
                     shopSkuInfo.setRecTime(new Date());
                     shopSkuMapper.insert(shopSkuInfo);
                     log.info("门店对应商品系统不存在直接添加");
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopSkuData";
+                        // 将frontCategory对象作为JSON放入请求体
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopSkuInfo);
+                        log.info("推送frontCategory到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                    }
                 } else {
                     shopSku.setSpuId(sku.getProdId());
                     shopSku.setShopSkuPrice(currentPrice == null ? 0.0 : currentPrice);
                     shopSku.setUpdateTime(new Date());
                     shopSkuMapper.updateById(shopSku);
                     log.info("价格更改成功");
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopSkuData";
+                        // 将frontCategory对象作为JSON放入请求体
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopSku);
+                        log.info("推送frontCategory到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                    }
                 }
             }
         } catch (Exception e) {
@@ -396,14 +474,29 @@ public class HBGoodsService implements IHBGoodsService {
                     shopSkuInfo.setRecTime(new Date());
                     shopSkuInfo.setUpdateTime(new Date());
                     shopSkuMapper.insert(shopSkuInfo);
-
                     log.info("库存添加成功");
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopSkuData";
+                        // 将frontCategory对象作为JSON放入请求体
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopSkuInfo);
+                        log.info("推送frontCategory到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                    }
                 } else {
                     shopSku.setSpuId(sku.getProdId());
                     shopSku.setShopSkuStocks(currentStock);
                     shopSku.setUpdateTime(new Date());
                     shopSkuMapper.updateById(shopSku);
                     log.info("库存更改成功");
+                    try {
+                        String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncShopSkuData";
+                        // 将frontCategory对象作为JSON放入请求体
+                        String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, shopSku);
+                        log.info("推送frontCategory到同步服务器结果: {}", response);
+                    } catch (Exception e) {
+                        log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                    }
                 }
             }
         } catch (Exception e) {
@@ -435,6 +528,15 @@ public class HBGoodsService implements IHBGoodsService {
             if (!ObjectUtil.isEmpty(product)) {
                 product.setIsDelete(1);
                 productMapper.updateById(product);
+                try {
+                    String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncProductDel" + product.getHbSpuId();
+                    // 将frontCategory对象作为JSON放入请求体
+                    String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, product);
+                    log.info("推送frontCategory到同步服务器结果: {}", response);
+                } catch (Exception e) {
+                    log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+                }
+
                 skuMapper.deleteByProdId(product.getProdId());
                 //删除门店对应商品
                 shopSkuMapper.deleteByProdId(product.getProdId());
@@ -467,6 +569,7 @@ public class HBGoodsService implements IHBGoodsService {
         return post;
     }
 
+
     /**
      * 多规格查询
      *
@@ -651,11 +754,24 @@ public class HBGoodsService implements IHBGoodsService {
         List<CategoryProdHb> categoryProdsHb = categoryProdHbMapper.selectList(new LambdaQueryWrapper<CategoryProdHb>()
                 .eq(CategoryProdHb::getProdId, spuId)
                 .notIn(CategoryProdHb::getCode, list)
-                .eq(CategoryProdHb::getIsDelete, 0) );
+                .eq(CategoryProdHb::getIsDelete, 0));
         for (CategoryProdHb categoryProdHb : categoryProdsHb) {
             categoryProdHb.setIsDelete(1);
             categoryProdHbMapper.updateById(categoryProdHb);
             categoryProdMapper.deleteByCodeAndProdId(categoryProdHb.getCode(), spuId);
+
+            try {
+                String syncUrl = "http://192.168.1.101:8080/smqjh-pms/api/v1/sync/syncCategoryProdData";
+                // 将frontCategory对象作为JSON放入请求体
+                List<CategoryProd> categoryProds = categoryProdMapper.selectList(new LambdaQueryWrapper<CategoryProd>().eq(CategoryProd::getCode, categoryProdHb.getCode()));
+                for (CategoryProd categoryProd : categoryProds) {
+                    String response = com.yami.shop.common.util.HttpUtil.post(syncUrl, categoryProd);
+                    log.info("推送frontCategory到同步服务器结果: {}", response);
+                }
+            } catch (Exception e) {
+                log.error("推送frontCategory到同步服务器失败: {}", e.getMessage(), e);
+            }
+
         }
 
     }

+ 15 - 13
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -49,11 +49,7 @@ import com.yami.shop.common.util.PageAdapter;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.common.util.R;
 import com.yami.shop.dao.*;
-import com.yami.shop.service.ChannelService;
-import com.yami.shop.service.ExportTaskService;
-import com.yami.shop.service.OrderItemService;
-import com.yami.shop.service.OrderService;
-import com.yami.shop.service.OrderSettlementService;
+import com.yami.shop.service.*;
 import com.yami.shop.utils.BinPackingUtil;
 import com.yami.shop.utils.CullenUtils;
 import com.yami.shop.utils.ExportUtils;
@@ -120,6 +116,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private Snowflake snowflake;
     private final OrderRefundSkuMapper orderRefundSkuMapper;
     private final HBSignUtil hbSignUtil;
+    private final TzSysUserMapper userMapper;
     @Autowired
     private ExportTaskService exportTaskService;
 
@@ -264,12 +261,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             log.info("进入拆单处理 订单号:{}", c.getOrderNumber());
 
             //统计订单项总重量
-            if (c.getOrderItems().size() > 1) {
-                if (!c.getNextPay()) {
-                    cd(c, channel, objects);
-                }
+            //TODO 拆单逻辑处理
+//            if (c.getOrderItems().size() > 1) {
+//                if (!c.getNextPay()) {
+//                    cd(c, channel, objects);
+//                }
                 objects.add(c);
-            }
+//            }
         }
 
         objects.sort(Comparator.comparingInt(order -> Optional.ofNullable(order.getOrderLevel()).orElse(0)));
@@ -2250,7 +2248,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         // 1. 查询父订单
         Order parentOrder = orderMapper.selectOne(new LambdaQueryWrapper<Order>()
                 .eq(Order::getOrderNumber, param.getOrderNumber()));
-        
+
         if (parentOrder == null) {
             throw new GlobalException("订单不存在");
         }
@@ -2265,7 +2263,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         if (parentOrderItems == null || parentOrderItems.isEmpty()) {
             throw new GlobalException("订单项不存在");
         }
-
+        parentOrder.setOrderItems( parentOrderItems);
         // 4. 验证拆单数量
         Map<Long, OrderItem> parentItemMap = parentOrderItems.stream()
                 .collect(Collectors.toMap(OrderItem::getSkuId, item -> item));
@@ -2298,8 +2296,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
         // 5. 创建子订单
         Order subOrder = new Order();
+        //通过用户ID获取用户信息
+
         BeanUtils.copyProperties(parentOrder, subOrder);
         subOrder.setOrderId(null);
+        subOrder.setSplitUserId(param.getSplitUserId());
         subOrder.setOrderNumber("D" + snowflake.nextId());
         subOrder.setParentOrderNumber(parentOrder.getOrderNumber());
         subOrder.setOrderLevel(1); // 子订单
@@ -2348,7 +2349,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void confirmSplitOrder(ConfirmSplitOrderParam param) {
+    public void confirmSplitOrder(ConfirmSplitOrderParam param ) {
         // 1. 查询父订单
         Order parentOrder = orderMapper.selectOne(new LambdaQueryWrapper<Order>()
                 .eq(Order::getOrderNumber, param.getOrderNumber()));
@@ -2399,6 +2400,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         Order updateParentOrder = new Order();
         updateParentOrder.setOrderId(parentOrder.getOrderId());
         updateParentOrder.setSplitStatus(4); // 已拆单
+        updateParentOrder.setSplitUserId(param.getSplitUserId());
         updateParentOrder.setUpdateTime(new Date());
         orderMapper.updateById(updateParentOrder);
 

+ 1 - 58
yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java

@@ -221,7 +221,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     }
 
     @Override
-    public IPage<SearchProdDto> getSearchProdDtoPageByProdName(Page page, SearchParam searchParam) {
+    public IPage<SearchProdDto> getSearchProdDtoPageByProdName(PageParam<SearchProdDto> page, SearchParam searchParam) {
 
         if (searchParam.getShopId() == null){
             return new Page<>();
@@ -231,63 +231,6 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
         }
         return productMapper.getSearchProdDtoPageByProdName(page, searchParam);
 
-//        String lat = searchParam.getLat();
-//        String lon = searchParam.getLon();
-//        String distance = searchParam.getDistance();
-//
-//        if (StringUtils.isNotEmpty(lat) && StringUtils.isNotEmpty(lon) && StringUtils.isNotEmpty(distance)) {
-//            List<ShopDetail> shopDetails = productMapper.queryShop(lat, lon, distance);
-//            List<Long> shopIds = shopDetails.stream().map(ShopDetail::getShopId).collect(Collectors.toList());
-//            if (CollectionUtil.isEmpty(shopDetails)) {
-//                return new Page<>();
-//            }
-//            IPage<SearchProdDto> searchProdDtoPage = productMapper.getSearchProdDtoPageByProdNameNew(page, searchParam, shopIds);
-//            for (SearchProdDto searchProdDto : searchProdDtoPage.getRecords()) {
-//
-//                List<SkuDto> skuList = skuMapper.listByProdId(searchProdDto.getProdId()).stream().map((sku) -> SkuDto.builder()
-//                        .skuName(sku.getSkuName()).pic(sku.getPic()).skuScore(sku.getSkuScore()).price(sku.getPrice())
-//                        .stocks(sku.getStocks()).properties(sku.getProperties()).skuId(sku.getSkuId())
-//                        .build()).collect(Collectors.toList());
-//                searchProdDto.setSkuList(skuList);
-//                //计算出好评率
-//                if (searchProdDto.getPraiseNumber() == 0 || searchProdDto.getProdCommNumber() == 0) {
-//                    searchProdDto.setPositiveRating(0.0);
-//                } else {
-//                    searchProdDto.setPositiveRating(Arith.div(Arith.mul(searchProdDto.getPraiseNumber(), 100), searchProdDto.getProdCommNumber()));
-//                }
-//                //计算销量
-//                searchProdDto.setSalesVolume(productMapper.getSalesVolume(searchProdDto.getProdId()));
-//            }
-//            return searchProdDtoPage;
-//        }
-//        IPage<SearchProdDto> searchProdDtoPage = productMapper.getSearchProdDtoPageByProdName2(page, searchParam);
-//        for (SearchProdDto searchProdDto : searchProdDtoPage.getRecords()) {
-//            List<Sku> skus = skuMapper.listByProdId(searchProdDto.getProdId());
-//            List<SkuDto> skuList = new ArrayList<>();
-//            skus.forEach(sku -> {
-//                SkuDto skuDto = new SkuDto();
-//                skuDto.setSkuName(sku.getSkuName());
-//                skuDto.setPic(sku.getPic());
-//                skuDto.setSkuScore(sku.getSkuScore());
-//                skuDto.setPrice(sku.getPrice());
-//                skuDto.setStocks(sku.getStocks());
-//                skuDto.setProperties(sku.getProperties());
-//                skuDto.setSkuId(sku.getSkuId());
-//                skuList.add(skuDto);
-//            });
-//            searchProdDto.setSkuList(skuList);
-//            //计算出好评率
-//            if (Objects.nonNull(searchProdDto.getPraiseNumber()) && Objects.nonNull(searchProdDto.getProdCommNumber())) {
-//                if (searchProdDto.getPraiseNumber() == 0 || searchProdDto.getProdCommNumber() == 0) {
-//                    searchProdDto.setPositiveRating(0.0);
-//                } else {
-//                    searchProdDto.setPositiveRating(Arith.div(Arith.mul(searchProdDto.getPraiseNumber(), 100), searchProdDto.getProdCommNumber()));
-//                }
-//                //计算销量
-//                searchProdDto.setSalesVolume(productMapper.getSalesVolume(searchProdDto.getProdId()));
-//            }
-//        }
-//        return searchProdDtoPage;
     }
 
     @Override

+ 0 - 3
yami-shop-service/src/main/resources/mapper/OrderMapper.xml

@@ -557,9 +557,6 @@
                 and a.auto_split = #{orderParam.autoSplit}
             </if>
             <if test="orderParam.splitStatus != null">
-                <if test="orderParam.splitStatus == 2">
-                    and a.split_status in (2,3)
-                </if>
                 <if test="orderParam.splitStatus != 2">
                     and a.split_status = #{orderParam.splitStatus}
                 </if>

+ 42 - 47
yami-shop-service/src/main/resources/mapper/ProductMapper.xml

@@ -265,6 +265,18 @@
         ORDER BY p.`sold_num` DESC, p.`update_time` DESC
     </select>
 
+    <!--
+    注意:此查询的分页未生效是因为MyBatis Plus分页插件未能正确应用。
+    可能的原因:
+    1. Page对象未正确传递到Mapper方法
+    2. MyBatis Plus分页拦截器配置问题
+    3. SQL查询结构导致分页拦截器无法正确添加LIMIT子句
+    
+    解决方案:
+    1. 确保Service层正确传递Page对象
+    2. 检查MyBatis Plus配置中的分页拦截器
+    3. 如果问题仍然存在,可考虑手动添加LIMIT子句
+    -->
     <select id="getSearchProdDtoPageByProdName" resultType="com.yami.shop.bean.dto.SearchProdDto">
         SELECT
         p.prod_id,
@@ -272,29 +284,17 @@
         p.pic,
         ss.shop_id AS shop_id,
         SUM(ss.shop_sku_stocks) AS stocks,
-        MIN(cp.channel_prod_price) AS price,
-        COALESCE(SUM(oi.prod_count), 0) -
-        COALESCE(SUM(refund.product_count), 0) AS net_sales_volume
+        MIN(cp.channel_prod_price) AS price
         FROM tz_prod p
-        LEFT JOIN tz_sku sku ON p.prod_id = sku.prod_id AND sku.is_delete = 0
-        INNER JOIN tz_shop_sku ss ON ss.sku_id = sku.sku_id AND ss.shop_id = #{searchParam.shopId} AND ss.is_delete = 0
-        INNER JOIN tz_channel_prod cp ON sku.sku_id = cp.sku_id AND cp.shop_id = #{searchParam.shopId}  AND cp.channel_id = #{searchParam.channelId}  AND cp.is_delete = 0
-        LEFT JOIN tz_order_item oi ON p.prod_id = oi.prod_id
-        LEFT JOIN tz_order o ON oi.order_number = o.order_number and  o.shop_id = #{searchParam.shopId}  and o.channel_id = #{searchParam.channelId}
-        AND o.hb_order_status in (70,80)
-        AND o.delete_status = 0
-        LEFT JOIN tz_order_refund_sku refund ON oi.order_item_id = refund.order_item_id
-        AND refund.order_refund_id IN (
-        SELECT refund_id FROM tz_order_refund
-        WHERE return_money_sts= 70
-        )
+        INNER JOIN tz_shop_sku ss ON ss.spu_id = p.prod_id AND ss.shop_id =2 AND ss.is_delete = 0
+        INNER JOIN tz_channel_prod cp  ON ss.sku_id = cp.sku_id AND cp.shop_id = #{searchParam.shopId}  AND cp.channel_id = #{searchParam.channelId}  AND cp.is_delete = 0
+
         WHERE p.status = 1
         <if test="searchParam.prodName != null">
             and p.prod_name LIKE CONCAT('%',#{searchParam.prodName},'%')
         </if>
         AND p.is_delete = 0
         GROUP BY p.prod_id
-        ORDER BY net_sales_volume DESC
     </select>
 
     <select id="tagProdList" resultMap="tagProductMap">
@@ -819,50 +819,45 @@
     </select>
 
     <select id="listProdByCIdAndSId" parameterType="com.yami.shop.bean.dto.ProdByCategoryIdAndShopIdDTO" resultType="com.yami.shop.bean.param.CategoryProductParam" >
-
         SELECT
         tp.prod_id,
         tp.prod_name,
         tcp.shop_id,
-        MIN(cp.channel_prod_price) AS price,
+        cp.channel_prod_price AS price,
         tp.pic,
-        sum(tss.shop_sku_stocks) AS total_stocks,
-
-        COALESCE ((
-        SELECT
-        SUM( oi2.prod_count )
-        FROM
-        tz_order_item oi2
-        INNER JOIN tz_order o2 ON o2.order_number = oi2.order_number
-        WHERE
-        oi2.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
-        AND oi2.prod_id = tp.prod_id
-        AND o2.hb_order_status IN ( 20, 30, 40, 70, 80 )
-        AND o2.delete_status = 0
-        ),
-        0
-        ) AS sales_volume
-
+        tss.shop_sku_stocks AS total_stocks,
+        COALESCE (sales_data.sales_volume, 0) AS sales_volume
         FROM tz_prod tp
         INNER JOIN tz_category_prod tcp ON tp.prod_id = tcp.prod_id
-        AND tcp.is_delete = 0 AND tcp.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
-        and tcp.category_id = #{prodByCategoryIdAndShopIdDTO.categoryId}
-        LEFT JOIN tz_shop_sku tss ON tss.spu_id = tp.prod_id and tss.shop_id =  #{prodByCategoryIdAndShopIdDTO.shopId}
+            AND tcp.is_delete = 0 
+            AND tcp.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
+            AND tcp.category_id = #{prodByCategoryIdAndShopIdDTO.categoryId}
+        LEFT JOIN tz_shop_sku tss ON tss.spu_id = tp.prod_id 
+            AND tss.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
         INNER JOIN tz_channel_prod cp ON cp.shop_id = tcp.shop_id
-        AND cp.sku_id = tss.sku_id
-        AND cp.is_delete = 0
+            AND cp.sku_id = tss.sku_id
+            AND cp.is_delete = 0
+            AND cp.channel_prod_price IS NOT NULL
+        LEFT JOIN (
+            SELECT 
+                oi.prod_id,
+                SUM(oi.prod_count) AS sales_volume
+            FROM tz_order_item oi
+            INNER JOIN tz_order o ON o.order_number = oi.order_number
+            WHERE oi.shop_id = #{prodByCategoryIdAndShopIdDTO.shopId}
+                AND o.hb_order_status IN (20, 30, 40, 70, 80)
+                AND o.delete_status = 0
+            GROUP BY oi.prod_id
+        ) sales_data ON sales_data.prod_id = tp.prod_id
         <if test="prodByCategoryIdAndShopIdDTO.channelId == null or prodByCategoryIdAndShopIdDTO.channelId == 0">
-            and cp.channel_id = 1
+            AND cp.channel_id = 1
         </if>
         <if test="prodByCategoryIdAndShopIdDTO.channelId != null and prodByCategoryIdAndShopIdDTO.channelId != 0">
-            and cp.channel_id = #{prodByCategoryIdAndShopIdDTO.channelId}
+            AND cp.channel_id = #{prodByCategoryIdAndShopIdDTO.channelId}
         </if>
-        AND cp.channel_prod_price IS NOT NULL
-        WHERE tp.STATUS = 1
-        AND tp.`is_delete` = 0
+        WHERE tp.STATUS = 1 AND tp.is_delete = 0
         GROUP BY tp.prod_id
-        ORDER BY
-        sales_volume DESC,  price ASC
+        ORDER BY sales_volume DESC, price ASC
     </select>
 
 <!--    <resultMap id="listProdByCIdAndSIdMap" type="com.yami.shop.bean.param.CategoryProductParam">-->

+ 17 - 15
yami-shop-service/src/main/resources/mapper/ShopCategoryMapper.xml

@@ -16,23 +16,25 @@
     <select id="selectAppListAll" resultType="com.yami.shop.bean.model.ShopCategory">
         SELECT fc.*, tl.name as labelName
         FROM tz_shop_category fc
-        left join tz_category_prod cp on fc.code = cp.code  and cp.is_delete = 0 and cp.shop_id = #{shopId}
-        left join tz_prod p on p.prod_id = cp.prod_id and p.is_delete = 0
-        LEFT JOIN tz_sku sku ON p.prod_id = sku.prod_id AND sku.is_delete = 0
-        LEFT JOIN tz_channel_prod cha ON sku.sku_id = cha.sku_id AND cha.is_delete = 0 AND cha.shop_id = #{shopId} AND cha.channel_id =  #{channelId}
-        left join tz_label tl on fc.label = tl.id
-        WHERE fc.is_delete = 0 and fc.is_delete = 0
-        and fc.shop_id = #{shopId}
+        LEFT JOIN tz_label tl ON fc.label = tl.id
+        LEFT JOIN (
+            SELECT DISTINCT fc_inner.id
+            FROM tz_shop_category fc_inner
+            INNER JOIN tz_category_prod cp ON fc_inner.code = cp.code AND cp.is_delete = 0 AND cp.shop_id = #{shopId}
+            INNER JOIN tz_prod p ON p.prod_id = cp.prod_id AND p.is_delete = 0
+            INNER JOIN tz_sku sku ON p.prod_id = sku.prod_id AND sku.is_delete = 0
+            INNER JOIN tz_channel_prod cha ON sku.sku_id = cha.sku_id AND cha.is_delete = 0 AND cha.shop_id = #{shopId} AND cha.channel_id = #{channelId}
+            WHERE fc_inner.is_delete = 0
+            AND fc_inner.shop_id = #{shopId}
+            AND fc_inner.level != 1
+        ) valid_cats ON fc.id = valid_cats.id
+        WHERE fc.is_delete = 0
+        AND fc.shop_id = #{shopId}
         AND (
-        fc.level = 1
-        OR (
-        fc.level != 1
-        AND p.prod_id IS NOT NULL
-        AND cp.prod_id IS NOT NULL
-        AND cha.sku_id IS NOT NULL
+            fc.level = 1
+            OR valid_cats.id IS NOT NULL
         )
-        )
-        group by fc.id order by fc.num asc
+        ORDER BY fc.num ASC
     </select>
 
     <select id="selectAppCount" resultType="java.lang.Integer">

+ 4 - 4
yami-shop-service/src/main/resources/mapper/ShopSkuMapper.xml

@@ -37,7 +37,7 @@
             AND sk.shop_id = #{shopSku.shopId}
         </if>
         <if test="shopSku.skuId != null">
-            AND sk.sku_id = #{shopSku.sku}
+            AND sk.sku_id = #{shopSku.skuId}
         </if>
         <if test="shopSku.skuName != null">
             AND s.sku_name LIKE CONCAT('%',#{shopSku.skuName},'%')
@@ -48,7 +48,7 @@
 
     <select id="exportList" resultType="com.yami.shop.bean.vo.ChannelProdExportVO">
         SELECT
-        sh.sku_id AS skuId,
+        sha.hb_sku_id AS skuId,
         sha.sku_name AS skuName,
         p.channel_id AS channelId,
         c.channel_name AS channelName,
@@ -57,11 +57,11 @@
         p.delivery_price AS deliveryPrice,
         p.channel_prod_price AS channelProdPrice
         FROM tz_shop_sku sh
-        LEFT JOIN  tz_channel_prod p ON sh.sku_id = p.sku_id and p.is_delete = 0
+        LEFT JOIN  tz_channel_prod p ON p.shop_id = sh.shop_id and sh.sku_id = p.sku_id and p.is_delete = 0
         LEFT JOIN tz_channel c ON p.channel_id = c.id
         LEFT JOIN tz_sku sha ON sh.sku_id = sha.sku_id
         LEFT JOIN tz_shop_detail d ON sh.shop_id = d.shop_id
-        WHERE sh.is_delete = 0
+        WHERE sh.is_delete = 0 and sha.is_delete = 0 and p.is_delete = 0
         <if test="shopSku.shopId != null">
             AND sh.shop_id = #{shopSku.shopId}
         </if>