Browse Source

Merge branch 'master' into 202511

zhangxin 10 tháng trước cách đây
mục cha
commit
1dcf5d03c2
27 tập tin đã thay đổi với 476 bổ sung và 210 xóa
  1. 2 4
      yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java
  2. 17 12
      yami-shop-api/src/main/java/com/yami/shop/api/controller/PayNoticeController.java
  3. 1 1
      yami-shop-api/src/main/java/com/yami/shop/api/controller/SearchController.java
  4. 1 0
      yami-shop-api/src/main/java/com/yami/shop/api/controller/UserController.java
  5. 0 8
      yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java
  6. 13 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java
  7. 37 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/param/ConfirmSplitOrderParam.java
  8. 59 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/param/ManualSplitOrderParam.java
  9. 4 4
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ChannelProdExportVO.java
  10. 4 4
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ChannelProdImportVO.java
  11. 3 1
      yami-shop-common/src/main/java/com/yami/shop/common/util/HttpUtil.java
  12. 42 14
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java
  13. 13 0
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java
  14. 20 4
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/hb/HBOrderController.java
  15. 2 0
      yami-shop-service/src/main/java/com/yami/shop/dao/ChannelProdMapper.java
  16. 1 1
      yami-shop-service/src/main/java/com/yami/shop/dao/ProductMapper.java
  17. 1 1
      yami-shop-service/src/main/java/com/yami/shop/service/ProductService.java
  18. 34 6
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBFrontCategoryService.java
  19. 118 2
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java
  20. 38 2
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/StoreManagementService.java
  21. 0 1
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ChannelProdServiceImpl.java
  22. 15 13
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java
  23. 1 58
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ProductServiceImpl.java
  24. 0 3
      yami-shop-service/src/main/resources/mapper/OrderMapper.xml
  25. 29 52
      yami-shop-service/src/main/resources/mapper/ProductMapper.xml
  26. 17 15
      yami-shop-service/src/main/resources/mapper/ShopCategoryMapper.xml
  27. 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());
-                }
+//                }
             }
         }
 

+ 17 - 12
yami-shop-api/src/main/java/com/yami/shop/api/controller/PayNoticeController.java

@@ -77,18 +77,18 @@ public class PayNoticeController {
             List<Order> orders = payService.paySuccess(payInfoBo.getPayNo(), payInfoBo.getBizPayNo(), 1);
 
             //进行拆单处理
-            List<Order> objects = new ArrayList<>();
-            for (Order order : orders) {
-                Channel byId = channelService.getById(order.getChannelId());
-                orderService.cd(order, byId, objects);
-            }
-
-            for (Order order : objects) {
-                //创建子订单
-                orderService.save(order);
-                //推送海博订单
-                hbOrderService.createOrderAsync(order.getOrderNumber());
-            }
+//            List<Order> objects = new ArrayList<>();
+//            for (Order order : orders) {
+//                Channel byId = channelService.getById(order.getChannelId());
+//                orderService.cd(order, byId, objects);
+//            }
+//
+//            for (Order order : objects) {
+//                //创建子订单
+//                orderService.save(order);
+//                //推送海博订单
+//                hbOrderService.createOrderAsync(order.getOrderNumber());
+//            }
 
             // 移除缓存
             for (Order order : orders) {
@@ -98,6 +98,11 @@ public class PayNoticeController {
                     skuService.removeSkuCacheBySkuId(orderItem.getSkuId(), orderItem.getProdId());
                 }
             }
+
+            //推送海博订单
+            for (Order order : orders) {
+                hbOrderService.createOrderAsync(order.getOrderNumber());
+            }
         }
         return ResponseEntity.ok(payInfoBo.getSuccessString());
     }

+ 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);

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

@@ -169,6 +169,7 @@ public class UserController {
                 appConnect.setBizUserId(session.getOpenid());
                 appConnect.setBizUnionid(session.getUnionid());
                 appConnectService.save(appConnect);
+
             }
 
             // 加载用户信息

+ 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;
+    }
+}

+ 4 - 4
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ChannelProdExportVO.java

@@ -13,7 +13,7 @@ import java.math.BigDecimal;
 @Data
 public class ChannelProdExportVO {
 
-    @ExcelProperty(value = "海博商品ID", index = 0)
+    @ExcelProperty(value = "海博商品ID*", index = 0)
     @ColumnWidth(20)
     private Long skuId;
 
@@ -21,11 +21,11 @@ public class ChannelProdExportVO {
     @ColumnWidth(40)
     private String skuName;
 
-    @ExcelProperty(value = "门店名称", index = 3)
+    @ExcelProperty(value = "门店名称*", index = 3)
     @ColumnWidth(20)
     private String shopName;
 
-    @ExcelProperty(value = "销售渠道", index = 2)
+    @ExcelProperty(value = "销售渠道*", index = 2)
     @ColumnWidth(20)
     private String channelName;
 
@@ -37,7 +37,7 @@ public class ChannelProdExportVO {
     @ColumnWidth(20)
     private BigDecimal deliveryPrice;
 
-    @ExcelProperty(value = "渠道售价(元)", index = 6)
+    @ExcelProperty(value = "渠道售价(元)*", index = 6)
     @ColumnWidth(20)
     private BigDecimal channelProdPrice;
 

+ 4 - 4
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ChannelProdImportVO.java

@@ -17,7 +17,7 @@ import java.math.BigDecimal;
 @ContentStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 9) // 内容背景色(9=淡黄色)
 public class ChannelProdImportVO {
 
-    @ExcelProperty(value = "海博商品ID", index = 0)
+    @ExcelProperty(value = "海博商品ID*", index = 0)
     @ColumnWidth(20) // 列宽
     @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) // 居中对齐
     private String skuId;
@@ -27,12 +27,12 @@ public class ChannelProdImportVO {
     @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT)
     private String skuName;
 
-    @ExcelProperty(value = "销售渠道", index = 2)
+    @ExcelProperty(value = "销售渠道*", index = 2)
     @ColumnWidth(20)
     @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT)
     private String channelName;
 
-    @ExcelProperty(value = "门店名称", index = 3)
+    @ExcelProperty(value = "门店名称*", index = 3)
     @ColumnWidth(20)
     @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT)
     private String shopName;
@@ -45,7 +45,7 @@ public class ChannelProdImportVO {
     @ColumnWidth(20)
     private BigDecimal deliveryPrice;
 
-    @ExcelProperty(value = "渠道售价(元)", index = 6)
+    @ExcelProperty(value = "渠道售价(元)*", index = 6)
     @ColumnWidth(20)
     private BigDecimal channelProdPrice;
 

+ 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();
     }
 

+ 20 - 4
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/hb/HBOrderController.java

@@ -1,13 +1,18 @@
 package com.yami.shop.platform.controller.hb;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yami.shop.bean.model.Order;
 import com.yami.shop.common.util.hb.HBR;
+import com.yami.shop.service.OrderService;
 import com.yami.shop.service.hb.IHBOrderService;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * 海博-订单信息管理
  *
@@ -23,17 +28,28 @@ import org.springframework.web.bind.annotation.*;
 public class HBOrderController {
 
     private final IHBOrderService orderService;
+    private final OrderService orderServicel;
 
     /**
      * 海博订单创建接口-推送接口
      *
-     * @param channelOrderId 海博订单单号
+     * @param orderNumber 订单单号
      * @return 前台类目响应
      */
     @PostMapping("/createOrderAsync")
-    public String addGoods(String channelOrderId) {
-        log.info("海博新增订单{}", channelOrderId);
-        return orderService.createOrderAsync(channelOrderId);
+    public String addGoods(String orderNumber) {
+        log.info("海博新增订单{}", orderNumber);
+//        //查询订单 ID>1354的
+//        List<Order> orders = orderServicel.list(new LambdaQueryWrapper<Order>()
+//                .eq(Order::getIsPayed, 1)
+//                .gt(Order::getOrderId, 1354)
+//                .ne(Order::getActualTotal, 0.00)
+//        );
+//        for (Order order : orders) {
+//            orderService.createOrderAsync(order.getOrderNumber());
+//        }
+
+        return orderService.createOrderAsync(orderNumber);
     }
 
     /**

+ 2 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/ChannelProdMapper.java

@@ -102,4 +102,6 @@ public interface ChannelProdMapper extends BaseMapper<ChannelProd> {
      * @param updateShannerProdDTO 渠道商品
      */
     void deleteChannelProd(UpdateShannerProdDTO updateShannerProdDTO);
+
+
 }

+ 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);
+            }
+
         }
 
     }

+ 38 - 2
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/StoreManagementService.java

@@ -11,6 +11,7 @@ import com.yami.shop.bean.dto.hb.StoreRegister;
 import com.yami.shop.bean.model.RefundAddr;
 import com.yami.shop.bean.model.ShopDetail;
 import com.yami.shop.bean.model.Transport2;
+import com.yami.shop.common.util.HttpUtil;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.common.util.R;
 import com.yami.shop.common.util.hb.HBR;
@@ -21,6 +22,7 @@ import com.yami.shop.service.hb.IStoreManagementService;
 import com.yami.shop.utils.HBSignUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -48,6 +50,14 @@ public class StoreManagementService implements IStoreManagementService {
     private final HBTransport2Mapper transport2Mapper;
     private final RefundAddrService refundAddrService;
 
+    /**
+     * 市民请集合门店修改和新增调用
+     */
+    private static String smqjhMdUrlAddAndUpdate="http://192.168.1.242:8080/smqjh-pms/api/v1/shopDetail/save";
+    /**
+     * 市民请集合门店状态修改调用
+     */
+    private static String smqjhMdUrlUpdateStatus="http://192.168.1.242:8080/smqjh-pms/api/v1/shopDetail/updateStatus";
 
     /**
      * 获取海博门店基础信息
@@ -214,8 +224,20 @@ public class StoreManagementService implements IStoreManagementService {
                 refundAddr.setUpdateTime(new Date());
                 refundAddrService.save(refundAddr);
             }
-
-
+//            String post =null;
+//            try {
+//                 post = HttpUtil.post(smqjhMdUrlAddAndUpdate, registerRequest);
+//                JSONObject jsonObject = JSONObject.parseObject(post);
+//                Object code = jsonObject.get("code");
+//                if (!ObjectUtils.isEmpty(code)&&"00000".equals(code.toString())){
+//                    log.info("市民请集合推送门店成功");
+//                }else {
+//                    log.error("市民请集合推送门店失败返回"+post);
+//                }
+//            } catch (Exception e) {
+//                log.error("市民请集合推送门店失败异常"+e.getMessage());
+//                log.error("市民请集合推送门店失败1"+post);
+//            }
             return HBR.success();
         } catch (Exception e) {
             log.error("门店变更失败:{}", e.getMessage(), e);
@@ -279,6 +301,20 @@ public class StoreManagementService implements IStoreManagementService {
         }else {
             log.error("不存在门店{}", stationId);
         }
+//        String post =null;
+//        try {
+//            post = HttpUtil.post(smqjhMdUrlUpdateStatus, HBRequest);
+//            JSONObject jsonObject = JSONObject.parseObject(post);
+//            Object code = jsonObject.get("code");
+//            if (!ObjectUtils.isEmpty(code)&&"00000".equals(code.toString())){
+//                log.info("市民请集合推送门店成功");
+//            }else {
+//                log.error("市民请集合推送门店失败返回"+post);
+//            }
+//        } catch (Exception e) {
+//            log.error("市民请集合推送门店失败异常"+e.getMessage());
+//            log.error("市民请集合推送门店失败1"+post);
+//        }
 
     }
 }

+ 0 - 1
yami-shop-service/src/main/java/com/yami/shop/service/impl/ChannelProdServiceImpl.java

@@ -32,7 +32,6 @@ import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 渠道对应商品管理服务实现类

+ 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>

+ 29 - 52
yami-shop-service/src/main/resources/mapper/ProductMapper.xml

@@ -272,29 +272,16 @@
         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 = #{searchParam.shopId} 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 +806,40 @@
     </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}
-        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
-        <if test="prodByCategoryIdAndShopIdDTO.channelId == null or prodByCategoryIdAndShopIdDTO.channelId == 0">
-            and cp.channel_id = 1
-        </if>
-        <if test="prodByCategoryIdAndShopIdDTO.channelId != null and prodByCategoryIdAndShopIdDTO.channelId != 0">
+            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 =  #{prodByCategoryIdAndShopIdDTO.shopId}
             and cp.channel_id = #{prodByCategoryIdAndShopIdDTO.channelId}
-        </if>
-        AND cp.channel_prod_price IS NOT NULL
-        WHERE tp.STATUS = 1
-        AND tp.`is_delete` = 0
-        GROUP BY tp.prod_id
-        ORDER BY
-        sales_volume DESC,  price ASC
+            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
+        WHERE tp.STATUS = 1 AND tp.is_delete = 0
+        GROUP BY tp.prod_id, tp.prod_name, tcp.shop_id, cp.channel_prod_price, tp.pic, tss.shop_sku_stocks, sales_data.sales_volume
+        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>