1
0

54 Коммиты de4c1a3438 ... 33fc2d8243

Автор SHA1 Сообщение Дата
  fubojin 33fc2d8243 解决海博添加商品问题 9 месяцев назад
  wangming 94a996c4a7 sm order 9 месяцев назад
  wangming 589030170d sm order 9 месяцев назад
  wangming de87f6e479 sm order 9 месяцев назад
  wangming 0de5dd1b62 sm order 9 месяцев назад
  wangming 257a099cad Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming 02c5b5af71 sm order 9 месяцев назад
  fubojin fcaa6a4857 smqjh订单推送海博收货信息模块 9 месяцев назад
  wangming 13f33148a2 sm order 9 месяцев назад
  wangming bfe06b61cc sm order 9 месяцев назад
  wangming 6834d60d0c sm order 9 месяцев назад
  wangming 1095ad9e93 sm order 9 месяцев назад
  fubojin 9ac90a2ddc Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  fubojin 37360c9de9 smqjh订单推送海博收货信息模块 9 месяцев назад
  wangming 779cb2e8ab sm order 9 месяцев назад
  wangming 293eea5fe1 sm order 9 месяцев назад
  fubojin 0bd19f775f Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  fubojin 7fa606e6a3 smqjh订单推送海博收货信息模块 9 месяцев назад
  wangming 753810d83d sm order 9 месяцев назад
  wangming 4313ede182 sm order 9 месяцев назад
  wangming f59408dd4d sm order 9 месяцев назад
  wangming ffbf18c395 Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming 92386d573d sm order 9 месяцев назад
  fubojin 61cd74096d smqjh订单推送海博收货信息模块 9 месяцев назад
  wangming 9e888427ef sm order 9 месяцев назад
  fubojin 9d0e791f35 smqjh订单推送海博收货信息模块 9 месяцев назад
  wangming 0e22959788 sm order 9 месяцев назад
  wangming 0c0653a107 sm order 9 месяцев назад
  wangming 327cd1e17a sm order 9 месяцев назад
  wangming 2ef59ee84c Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming 1deb5c782e sm order 9 месяцев назад
  fubojin 32693e2f28 门店新增问题 9 месяцев назад
  wangming f987c15d1c sm order 9 месяцев назад
  wangming f96ba770fa Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming 360434268f sm order 9 месяцев назад
  fubojin 4247dc5d87 门店新增问题 9 месяцев назад
  fubojin 2cf6526b4f Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming 775c4f56ae sm order 9 месяцев назад
  wangming 3ebe9eea50 Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming f68af64a2a sm order 9 месяцев назад
  zhangxin 75d4eef44e 修改门店信息问题 9 месяцев назад
  fubojin 3b596d1e29 Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  zhangxin b4e83ff4f5 Merge branch 'master' into dev 9 месяцев назад
  fubojin 63115e5f08 Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  zhangxin e653ce7480 Merge branch 'master' into dev 9 месяцев назад
  wangming 93dfe41e8d Merge remote-tracking branch 'origin/dev' into dev 9 месяцев назад
  wangming 9842c86d0d sm order 9 месяцев назад
  zhangxin 221e3e3577 Merge branch 'master' into dev 9 месяцев назад
  wangming fb627164a2 sm order 10 месяцев назад
  wangming 614e8381c5 sm order 10 месяцев назад
  wangming 49c1efdd0c sm order 10 месяцев назад
  wangming c2f860acca sm order 10 месяцев назад
  wangming 2327d68f40 sm order 10 месяцев назад
  wangming faa8c07125 sm order 10 месяцев назад
20 измененных файлов с 663 добавлено и 293 удалено
  1. 11 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java
  2. 73 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/po/SMOrderItemPo.java
  3. 69 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/po/SMOrderPo.java
  4. 55 25
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java
  5. 35 0
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/SMOrderController.java
  6. 12 10
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java
  7. 3 1
      yami-shop-platform/src/main/resources/application-dev.yml
  8. 5 0
      yami-shop-platform/src/main/resources/application-prod.yml
  9. 2 2
      yami-shop-platform/src/main/resources/application.yml
  10. 2 0
      yami-shop-security/yami-shop-security-platform/src/main/java/com/yami/shop/security/platform/config/ResourceServerConfiguration.java
  11. 15 0
      yami-shop-service/src/main/java/com/yami/shop/config/SMConstants.java
  12. 3 0
      yami-shop-service/src/main/java/com/yami/shop/dao/OrderMapper.java
  13. 3 0
      yami-shop-service/src/main/java/com/yami/shop/service/OrderService.java
  14. 103 96
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java
  15. 138 104
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java
  16. 41 46
      yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/StoreManagementService.java
  17. 4 4
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java
  18. 66 2
      yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java
  19. 14 3
      yami-shop-service/src/main/java/com/yami/shop/utils/SmqjhUtil.java
  20. 9 0
      yami-shop-service/src/main/resources/mapper/OrderMapper.xml

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

@@ -150,6 +150,17 @@ public class Order implements Serializable {
      * 拆单操作人ID
      */
     private Long splitUserId;
+
+    private String consigneeName;
+
+    private String consigneeMobile;
+
+    private String consigneeAddress;
+
+    private Double latitude;
+
+    private Double longitude;
+
     @TableField(exist = false)
     @ApiModelProperty("拆单操作人名称")
     private String splitUserName;

+ 73 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/po/SMOrderItemPo.java

@@ -0,0 +1,73 @@
+package com.yami.shop.bean.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class SMOrderItemPo implements Serializable {
+
+    private static final long serialVersionUID = 7307405761190788407L;
+
+    /**
+     * 订单orderNumber
+     */
+    private String orderNumber;
+
+    /**
+     * 产品ID
+     */
+    private Long prodId;
+
+    /**
+     * 产品SkuID
+     */
+    private Long skuId;
+
+    /**
+     * 购物车产品个数
+     */
+    private Integer prodCount;
+
+    /**
+     * 产品名称
+     */
+    private String prodName;
+
+    /**
+     * sku名称
+     */
+    private String skuName;
+
+    /**
+     * 产品主图片路径
+     */
+    private String pic;
+
+    /**
+     * 产品价格
+     */
+    private Double price;
+
+    /**
+     * 商品总金额
+     */
+    private Double productTotalAmount;
+
+    /**
+     * 购物时间
+     */
+    private Date recTime;
+
+    /**
+     * 使用积分
+     */
+    private Integer useScore;
+
+    /**
+     * 订单确认收货获取的积分
+     */
+    private Integer gainScore;
+
+}

+ 69 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/po/SMOrderPo.java

@@ -0,0 +1,69 @@
+package com.yami.shop.bean.po;
+
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class SMOrderPo implements Serializable {
+
+    private static final long serialVersionUID = 6222259729062826852L;
+
+    private Long shopId;
+
+    /**
+     * 订购流水号
+     */
+    private String orderNumber;
+
+    /**
+     * 总值
+     */
+    private Double total;
+
+    /**
+     * 实际总值
+     */
+    private Double actualTotal;
+
+    private Integer payType;
+
+    /**
+     * 用户备注
+     */
+    private String remarks;
+
+    /**
+     * 配送类型(1:快递 2:自提 3:及时配送)
+     */
+    private Integer dvyType;
+
+    /**
+     * 订单运费
+     */
+    private Double freightAmount;
+
+    /**
+     * 付款时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date payTime;
+
+    private Long offsetPoints;
+
+    private String consigneeName;
+
+    private String consigneeMobile;
+
+    private String consigneeAddress;
+
+    private Double latitude;
+
+    private Double longitude;
+
+    private List<SMOrderItemPo> orderItems;
+
+}

+ 55 - 25
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java

@@ -14,6 +14,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.gson.internal.LinkedTreeMap;
 import com.yami.shop.bean.enums.DvyType;
 import com.yami.shop.bean.enums.OrderStatus;
 import com.yami.shop.bean.model.*;
@@ -21,30 +22,29 @@ import com.yami.shop.bean.param.*;
 import com.yami.shop.bean.vo.OrderCountVo;
 import com.yami.shop.common.config.Constant;
 import com.yami.shop.common.exception.GlobalException;
+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.dao.ExportTaskMapper;
 import com.yami.shop.security.comment.dao.AppConnectMapper;
 import com.yami.shop.security.comment.model.AppConnect;
 import com.yami.shop.security.platform.util.SecurityUtils;
 import com.yami.shop.service.*;
 import com.yami.shop.sys.service.SysUserService;
 import com.yami.shop.utils.CullenUtils;
+import com.yami.shop.utils.SmqjhUtil;
 import com.yami.shop.wx.service.impl.WxProviderServiceImpl;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import lombok.extern.log4j.Log4j;
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -70,13 +70,14 @@ public class OrderController {
     private final DeliveryService deliveryService;
     private final OrderSettlementService orderSettlementService;
     private final AppConnectMapper appConnectMapper;
-
+    private final SmqjhUtil smqjhUtil;
     @Autowired
     private SysUserService sysUserService;
 
     @Autowired
     private ExportTaskService exportTaskService;
 
+
     /**
      * 分页获取
      */
@@ -123,8 +124,17 @@ public class OrderController {
         if (order == null) {
             throw new GlobalException("未找到所在的订单");
         }
-        UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
-        order.setUserAddrOrder(userAddrOrder);
+        if (order.getOrderType().equals(4)){
+            UserAddrOrder addrOrder = new UserAddrOrder();
+            addrOrder.setReceiver(order.getConsigneeName());
+            addrOrder.setMobile(order.getConsigneeMobile());
+            addrOrder.setAddress(order.getConsigneeAddress());
+            order.setUserAddrOrder(addrOrder);
+        }else {
+            UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
+            order.setUserAddrOrder(userAddrOrder);
+        }
+
         List<OrderItem> orderItems = orderItemService.getOrderItemsByOrderNumber(orderNumber);
         if (!orderItems.isEmpty()) {
             orderItems.forEach(c -> {
@@ -211,31 +221,50 @@ public class OrderController {
         orderParam.setUpdateTime(new Date());
         //orderParam.setHbOrderStatus(OrderStatus.CONSIGNMENT.value());
         orderParam.setUserId(order.getUserId());
-
+        orderParam.setOrderNumber(order.getOrderNumber());
+        orderParam.setOrderType(order.getOrderType());
         orderService.delivery(orderParam);
+        pushDeliveryInfo(orderParam);
 
         for (OrderItem orderItem : orderItems) {
             productService.removeProductCacheByProdId(orderItem.getProdId());
             skuService.removeSkuCacheBySkuId(orderItem.getSkuId(), orderItem.getProdId());
         }
-
-        OrderSettlement settlement = orderSettlementService.getOne(new LambdaQueryWrapper<OrderSettlement>().eq(OrderSettlement::getOrderNumber, deliveryOrderParam.getOrderNumber()));
-        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());
-        WxProviderServiceImpl.uploadShippingInfo(
-                deliveryOrderParam.getDvyFlowId(),
-                settlement.getBizPayNo(),
-                toOrderStr(orderItems),
-                userAddrOrder.getMobile(),
-                connect.getBizUserId(),
-                delivery.getDvyNo(), 1
-        );
+        if (!order.getOrderType().equals(4)){
+            OrderSettlement settlement = orderSettlementService.getOne(new LambdaQueryWrapper<OrderSettlement>().eq(OrderSettlement::getOrderNumber, deliveryOrderParam.getOrderNumber()));
+            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());
+            WxProviderServiceImpl.uploadShippingInfo(
+                    deliveryOrderParam.getDvyFlowId(),
+                    settlement.getBizPayNo(),
+                    toOrderStr(orderItems),
+                    userAddrOrder.getMobile(),
+                    connect.getBizUserId(),
+                    delivery.getDvyNo(), 1
+            );
+        }
         return R.SUCCESS();
     }
 
+    private void pushDeliveryInfo(Order order) {
+        if (order.getOrderType().equals(4)) {
+            Map<Object, Object> map = new LinkedTreeMap<>();
+            map.put("orderNumber", order.getOrderNumber());
+            map.put("dvyId", order.getDvyId());
+            map.put("dvyFlowId", order.getDvyFlowId());
+            map.put("dvyTime", LocalDateTime.ofInstant(order.getDvyTime().toInstant(), ZoneId.systemDefault()));
+            Delivery delivery = deliveryService.getById(order.getDvyId());
+            if (delivery!=null){
+                map.put("dvyNo", delivery.getDvyNo());
+                map.put("dvyName", delivery.getDvyName());
+            }
+            System.out.println(HttpUtil.post(smqjhUtil.getOmsBaseUrl() + "/api/v1/xsb/order/updateDeliveryStatus", map));
+        }
+    }
+
     /**
      * 配送订单模块
      */
@@ -315,6 +344,8 @@ public class OrderController {
             orderParam.setUserAttrType("1");//默认查询正常人员属性
         }
         if (orderParam.getChannelIdList().contains(0L)) {
+            //当渠道为全部的时候,人员属性传0-全部
+            orderParam.setUserAttrType("0");
             Long userId = null;
             try {
                 userId = SecurityUtils.getSysUser().getUserId();
@@ -367,5 +398,4 @@ public class OrderController {
         orderService.deleteTempSubOrder(subOrderNumber);
         return R.SUCCESS();
     }
-
 }

+ 35 - 0
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/SMOrderController.java

@@ -0,0 +1,35 @@
+package com.yami.shop.platform.controller;
+
+import com.yami.shop.bean.po.SMOrderPo;
+import com.yami.shop.common.exception.GlobalException;
+import com.yami.shop.common.util.R;
+import com.yami.shop.service.OrderService;
+import com.yami.shop.service.hb.IHBOrderService;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/sm/order")
+@AllArgsConstructor
+@Log4j2
+public class SMOrderController {
+
+    private final OrderService orderService;
+    private final IHBOrderService hbOrderService;
+
+    @PostMapping("/addSMOrder")
+    @ApiOperation(value = "addSMOrder")
+    public R<?> addSMOrder(@RequestBody SMOrderPo orderPo) {
+        if (orderPo.getOrderItems() == null){
+            throw new GlobalException("订单项不能为空");
+        }
+        String orderNumber = orderService.addSMOrder(orderPo);
+        hbOrderService.createOrderAsync(orderNumber);
+        return R.SUCCESS();
+    }
+}

+ 12 - 10
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java

@@ -11,6 +11,7 @@ import com.yami.shop.security.platform.model.YamiSysUser;
 import com.yami.shop.security.platform.util.SecurityUtils;
 import com.yami.shop.service.IShopCategoryService;
 import com.yami.shop.service.ShopDetailService;
+import com.yami.shop.utils.SmqjhUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -40,6 +41,7 @@ public class ShopCategoryController {
 
     private final IShopCategoryService shopCategoryService;
     private final ShopDetailService shopDetailService;
+    private final SmqjhUtil smqjhUtil;
 
     /**
      * 分页查询门店前台类目列表
@@ -165,16 +167,16 @@ public class ShopCategoryController {
         shopCategoryService.updateById(shopCategory);
 
 
-//        ShopCategory dbShopCategory1 = shopCategoryService.getById(shopCategory.getId());
-//        // 将frontCategory数据推送到另一个服务器(POST请求,参数放在请求体)
-//        String syncUrl = smqjhSyncUrl + "/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);
-//        }
+        ShopCategory dbShopCategory1 = shopCategoryService.getById(shopCategory.getId());
+        try {
+            String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncShopCategoryData";
+            log.info("推送url: {}",syncUrl);
+            // 将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();
     }

+ 3 - 1
yami-shop-platform/src/main/resources/application-dev.yml

@@ -25,6 +25,8 @@ hb:
   secret: 67899367b17e4a8d8a7d10ebe8449b90
 
 smqjh:
-    pms-url: http://192.168.1.253:8802/api/v1/sync
+#    pms-url: http://192.168.1.253:8802/api/v1/sync
+    pms-url: http://192.168.1.242:8080/smqjh-pms/api/v1/sync
+    omsBaseUrl: http://47.109.84.152:8081/smqjh-oms
 
 

+ 5 - 0
yami-shop-platform/src/main/resources/application-prod.yml

@@ -24,3 +24,8 @@ hb:
   appId: 71ad2626c0124ca1a5c07cf5ca818c43
   secret: f655f69f962f427db1f0436fd34cd998
 
+smqjh:
+#  pms-url: http://47.109.39.185:8080/smqjh-pms/api/v1/sync
+#  pms-url: http://192.168.1.242:8080/smqjh-pms/api/v1/sync
+  pms-url: https://smqjh.api.zswlgz.com/smqjh-pms/api/v1/sync
+  omsBaseUrl: https://smqjh.api.zswlgz.com/smqjh-oms

+ 2 - 2
yami-shop-platform/src/main/resources/application.yml

@@ -1,8 +1,8 @@
 spring:
   # 环境 dev|prod|docker quartz定时任务
   profiles:
-    active: dev
-#    active: prod
+#    active: dev
+    active: prod
   #文件上传设置
   servlet:
 

+ 2 - 0
yami-shop-security/yami-shop-security-platform/src/main/java/com/yami/shop/security/platform/config/ResourceServerConfiguration.java

@@ -66,6 +66,8 @@ public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter
                     "/admin/enterprise/downloadErrorExcel",
                     "/admin/enterprise/export",
                     "/platform/sku/**",
+                    "/sm/order/**",
+                    "/platform/order/deliverList",
                     "/captcha.jpg").permitAll()
             .and()
             .authorizeRequests()

+ 15 - 0
yami-shop-service/src/main/java/com/yami/shop/config/SMConstants.java

@@ -0,0 +1,15 @@
+package com.yami.shop.config;
+
+
+/**
+ * 通用常量信息
+ *
+ * @author administrator
+ */
+public class SMConstants {
+
+    public static final String SM_BASE_URL = "https://smqjh.api.zswlgz.com/smqjh-oms";
+//    public static final String SM_BASE_URL = "http://47.109.39.185:8081/smqjh-oms";
+//    public static final String SM_BASE_URL = "http://192.168.0.157:8080/smqjh-oms";
+
+}

+ 3 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/OrderMapper.java

@@ -147,4 +147,7 @@ public interface OrderMapper extends BaseMapper<Order> {
     List<Order> findList( @Param("orderParam")BackendOrderParam orderParam);
 
     OrderCountVo orderCount(@Param("orderParam") BackendOrderParam orderParam);
+
+    String getRiderInfo(String orderNumber);
+
 }

+ 3 - 0
yami-shop-service/src/main/java/com/yami/shop/service/OrderService.java

@@ -18,6 +18,7 @@ import com.yami.shop.bean.app.dto.OrderCountData;
 import com.yami.shop.bean.app.dto.ShopCartOrderMergerDto;
 import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.*;
+import com.yami.shop.bean.po.SMOrderPo;
 import com.yami.shop.bean.vo.OrderCountVo;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.common.util.R;
@@ -214,4 +215,6 @@ public interface OrderService extends IService<Order> {
      * @param subOrderNumber 删除临时子订单参数
      */
     void deleteTempSubOrder(String subOrderNumber);
+
+    String addSMOrder(SMOrderPo orderPo);
 }

+ 103 - 96
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBGoodsService.java

@@ -140,7 +140,7 @@ public class HBGoodsService implements IHBGoodsService {
                         XSBSkuVO xsbSkuVO = new XSBSkuVO();
                         //复制sku.的值到xsbProductVO 字段一样
                         BeanUtils.copyProperties(sku, xsbSkuVO);
-                        xsbSkuVO.setThirdSkuId(String.valueOf(sku.getProdId()));
+                        xsbSkuVO.setThirdSkuId(String.valueOf(sku.getSkuId()));
                         xsbSkuVO.setBusinessType("XSB");
                         shopSkuList.add(xsbSkuVO);
                         String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncSkuData";
@@ -218,7 +218,7 @@ public class HBGoodsService implements IHBGoodsService {
                             XSBSkuVO xsbSkuVO = new XSBSkuVO();
                             //复制sku.的值到xsbProductVO 字段一样
                             BeanUtils.copyProperties(sku, xsbSkuVO);
-                            xsbSkuVO.setThirdSkuId(String.valueOf(sku.getProdId()));
+                            xsbSkuVO.setThirdSkuId(String.valueOf(sku.getSkuId()));
                             xsbSkuVO.setBusinessType("XSB");
                             shopSkuList.add(xsbSkuVO);
                             String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncSkuData";
@@ -413,71 +413,71 @@ public class HBGoodsService implements IHBGoodsService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HBR updateGoodsPrice(JSONObject hbRequest) {
-        try {
-            String bodyStr = hbRequest.getString("body");
-            log.info("商品,body:{}", bodyStr);
-            JSONObject bodyJson = JSON.parseObject(bodyStr);
-            JSONArray requestList = bodyJson.getJSONArray("requestList");
-            for (Object request : requestList) {
-                JSONObject jsonObject = JSON.parseObject(request.toString());
-                String skuId = jsonObject.getString("skuId");
-                Double currentPrice = jsonObject.getDouble("currentPrice");
-                String stationId = jsonObject.getString("stationId");//海博门店编码
-                ShopDetail shopDetail = shopDetailMapper.selectByHbStationId(stationId);
-                if (ObjectUtil.isEmpty(shopDetail)) {
-                    log.error("系统找不到对应的门店(门店编码:{})信息", stationId);
-                    return HBR.error("系统找不到对应的门店(门店编码:" + stationId + ")信息");
-                }
-
-                //改变单品价格
-                Sku sku = skuMapper.selectByHbSkuId(skuId);
-                if (ObjectUtil.isEmpty(sku)) {
-                    log.error("更改价格系统找不到对应商品(单品):{}", skuId);
-                    return HBR.error("更改价格系统找不到对应商品(单品):" + skuId);
-                }
-
-                ShopSku shopSku = shopSkuMapper.selectByShopAndSku(sku.getSkuId(), shopDetail.getShopId());
-                if (ObjectUtil.isEmpty(shopSku)) {
-                    ShopSku shopSkuInfo = new ShopSku();
-                    shopSkuInfo.setShopId(shopDetail.getShopId());
-                    shopSkuInfo.setShopSkuPrice(currentPrice == null ? 0.0 : currentPrice);
-                    shopSkuInfo.setSkuId(sku.getSkuId());
-                    shopSkuInfo.setSpuId(sku.getProdId());
-                    shopSkuInfo.setIsDelete(0);
-                    shopSkuInfo.setRecTime(new Date());
-                    shopSkuMapper.insert(shopSkuInfo);
-                    log.info("门店对应商品系统不存在直接添加");
-                    try {
-                        String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncShopSkuData";
-                        log.info("推送url: {}",syncUrl);
-                        // 将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 = smqjhUtil.getSmqjhPmsUrl() + "/syncShopSkuData";
-                        log.info("推送url: {}",syncUrl);
-                        // 将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) {
-            log.error("商品失败:{}", e.getMessage(), e);
-            return HBR.error("未知异常");
-
-        }
+//        try {
+//            String bodyStr = hbRequest.getString("body");
+//            log.info("商品,body:{}", bodyStr);
+//            JSONObject bodyJson = JSON.parseObject(bodyStr);
+//            JSONArray requestList = bodyJson.getJSONArray("requestList");
+//            for (Object request : requestList) {
+//                JSONObject jsonObject = JSON.parseObject(request.toString());
+//                String skuId = jsonObject.getString("skuId");
+//                Double currentPrice = jsonObject.getDouble("currentPrice");
+//                String stationId = jsonObject.getString("stationId");//海博门店编码
+//                ShopDetail shopDetail = shopDetailMapper.selectByHbStationId(stationId);
+//                if (ObjectUtil.isEmpty(shopDetail)) {
+//                    log.error("系统找不到对应的门店(门店编码:{})信息", stationId);
+//                    return HBR.error("系统找不到对应的门店(门店编码:" + stationId + ")信息");
+//                }
+//
+//                //改变单品价格
+//                Sku sku = skuMapper.selectByHbSkuId(skuId);
+//                if (ObjectUtil.isEmpty(sku)) {
+//                    log.error("更改价格系统找不到对应商品(单品):{}", skuId);
+//                    return HBR.error("更改价格系统找不到对应商品(单品):" + skuId);
+//                }
+
+//                ShopSku shopSku = shopSkuMapper.selectByShopAndSku(sku.getSkuId(), shopDetail.getShopId());
+//                if (ObjectUtil.isEmpty(shopSku)) {
+//                    ShopSku shopSkuInfo = new ShopSku();
+//                    shopSkuInfo.setShopId(shopDetail.getShopId());
+//                    shopSkuInfo.setShopSkuPrice(currentPrice == null ? 0.0 : currentPrice);
+//                    shopSkuInfo.setSkuId(sku.getSkuId());
+//                    shopSkuInfo.setSpuId(sku.getProdId());
+//                    shopSkuInfo.setIsDelete(0);
+//                    shopSkuInfo.setRecTime(new Date());
+//                    shopSkuMapper.insert(shopSkuInfo);
+//                    log.info("门店对应商品系统不存在直接添加");
+//                    try {
+//                        String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncShopSkuData";
+//                        log.info("推送url: {}",syncUrl);
+//                        // 将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 = smqjhUtil.getSmqjhPmsUrl() + "/syncShopSkuData";
+//                        log.info("推送url: {}",syncUrl);
+//                        // 将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) {
+//            log.error("商品失败:{}", e.getMessage(), e);
+//            return HBR.error("未知异常");
+//
+//        }
         return HBR.success();
     }
 
@@ -513,6 +513,7 @@ public class HBGoodsService implements IHBGoodsService {
                     shopSkuInfo.setShopId(shopDetail.getShopId());
                     shopSkuInfo.setShopSkuStocks(currentStock);
                     shopSkuInfo.setSkuId(sku.getSkuId());
+                    shopSkuInfo.setSpuId(sku.getProdId());
 
                     shopSkuInfo.setIsDelete(0);
                     shopSkuInfo.setRecTime(new Date());
@@ -554,40 +555,46 @@ public class HBGoodsService implements IHBGoodsService {
     }
 
     @Override
-    public void deleteGoods(JSONObject hbRequest) {
+    public void     deleteGoods(JSONObject hbRequest) {
         JSONObject body = hbRequest.getJSONObject("body");
         log.info("商品删除,body:{}", body);
 
-        JSONArray productList = body.getJSONArray("productList");
-        for (Object hbProductObject : productList) {
-            JSONObject hbProduct = JSON.parseObject(hbProductObject.toString());
-
-            String spuId = hbProduct.getString("spuId");
-            String skuId = hbProduct.getString("skuId");
-            Product product;
-            if (ObjectUtil.isNotEmpty(spuId)) {
-                product = productMapper.selectByHbSpuId(spuId);
-            } else {
-                Sku sku = skuMapper.selectByHbSkuId(skuId);
-                product = productMapper.selectByHbSpuId(sku.getHbSpuId());
-            }
-            if (!ObjectUtil.isEmpty(product)) {
-                product.setIsDelete(1);
-                productMapper.updateById(product);
-                try {
-                    String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncProductDel" + product.getHbSpuId();
-                    log.info("推送url: {}",syncUrl);
-                    // 将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);
+        try {
+            JSONArray productList = body.getJSONArray("productList");
+            for (Object hbProductObject : productList) {
+                JSONObject hbProduct = JSON.parseObject(hbProductObject.toString());
+
+                String spuId = hbProduct.getString("spuId");
+                String skuId = hbProduct.getString("skuId");
+                Product product = null;
+                if (ObjectUtil.isNotEmpty(spuId)) {
+                    product = productMapper.selectByHbSpuId(spuId);
+                } else {
+                    Sku sku = skuMapper.selectByHbSkuId(skuId);
+                    if (ObjectUtil.isNotEmpty(sku)){
+                    product = productMapper.selectByHbSpuId(sku.getHbSpuId());
+                    }
                 }
+                if (!ObjectUtil.isEmpty(product)) {
+                    product.setIsDelete(1);
+                    productMapper.updateById(product);
+                    try {
+                        String syncUrl = smqjhUtil.getSmqjhPmsUrl() + "/syncProductDel/" + product.getProdId();
+                        log.info("推送url: {}", syncUrl);
+                        // 将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());
+                    skuMapper.deleteByProdId(product.getProdId());
+                    //删除门店对应商品
+                    shopSkuMapper.deleteByProdId(product.getProdId());
+                }
             }
+        } catch (Exception e) {
+            log.error("商品删除失败:{}", e.getMessage(), e);
         }
     }
 
@@ -844,7 +851,7 @@ public class HBGoodsService implements IHBGoodsService {
 
         for (ShopSku shopSku : shopCategoryList) {
             FrontCategory frontCategory = frontCategoryMapper.selectOne(new LambdaQueryWrapper<FrontCategory>()
-                    .eq(FrontCategory::getCode, ztFrontCategoryCodeLevel));
+                    .eq(FrontCategory::getCode, ztFrontCategoryCodeLevel).eq(FrontCategory::getIsDelete, 0));
             ShopDetail shopDetail = shopDetailMapper.selectById(shopSku.getShopId());
 
             addShopCategory(frontCategory, spuId, shopSku.getShopId(), shopDetail.getHbStationId());

+ 138 - 104
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java

@@ -1,39 +1,32 @@
 package com.yami.shop.service.hb.impl;
 
-import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.google.gson.internal.LinkedTreeMap;
 import com.yami.shop.bean.dto.hb.*;
-import com.yami.shop.bean.enums.*;
+import com.yami.shop.bean.enums.OrderStatus;
+import com.yami.shop.bean.enums.ReturnMoneyStsType;
 import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.OrderRefundParam;
 import com.yami.shop.bean.vo.OrderRefundSkuVo;
-import com.yami.shop.common.config.Constant;
-import com.yami.shop.common.exception.GlobalException;
-import com.yami.shop.common.util.Arith;
-import com.yami.shop.common.util.CommonUtils;
+import com.yami.shop.common.util.HttpUtil;
 import com.yami.shop.common.util.hb.HBR;
 import com.yami.shop.dao.*;
-import com.yami.shop.service.*;
+import com.yami.shop.service.OrderRefundService;
+import com.yami.shop.service.OrderService;
+import com.yami.shop.service.UserAddrOrderService;
+import com.yami.shop.service.UserService;
 import com.yami.shop.service.hb.IHBOrderService;
-import com.yami.shop.utils.CullenUtils;
 import com.yami.shop.utils.HBSignUtil;
+import com.yami.shop.utils.SmqjhUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
 
-import javax.validation.Valid;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.ZoneId;
 import java.util.*;
-import java.util.stream.Collectors;
 
 import static com.yami.shop.common.util.HttpUtil.post;
 
@@ -61,7 +54,7 @@ public class HBOrderService implements IHBOrderService {
     private final OrderRefundService orderRefundService;
     private final OrderService orderService;
     private final OrderRefundSkuMapper orderRefundSkuMapper;
-
+    private final SmqjhUtil smqjhUtil;
 
     public HBR addHBGoods(JSONObject hbRequest) {
         try {
@@ -195,91 +188,98 @@ public class HBOrderService implements IHBOrderService {
         }
         orderMapper.updateById(order);
 
-
         //取消订单
         if (operatorType == 60) {
             log.info("取消订单{}", channelOrderId);
             changeOrderStatus(channelOrderId, 60);
-            //创建退款单
-            OrderRefundParam orderRefundParam = new OrderRefundParam();
-            orderRefundParam.setOrderNumber(order.getOrderNumber());
-            orderRefundParam.setApplyType(1);
-            orderRefundParam.setRefundType(1);
-            orderRefundParam.setIsReceiver(false);
-            orderRefundParam.setBuyerReason("17");
-            orderRefundParam.setBuyerDesc(bodyJson.getString("reason"));
-            orderRefundParam.setBuyerMobile(order.getUserMobile());
-            orderRefundParam.setGoodsNum(order.getProductNums());
-            orderRefundParam.setRefundAmount(order.getActualTotal());
-            orderRefundParam.setPhotoFiles("");
-
-            List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
-            List<OrderRefundSku> orderRefundSkuList = new ArrayList<>();
-            for (OrderItem orderItem : listByOrderNumber) {
-
-                // 查询该订单项的所有退款记录
-                List<OrderRefund> orderRefundList = orderRefundService.list(new LambdaQueryWrapper<OrderRefund>()
-                        .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
-                        .eq(OrderRefund::getReturnMoneySts, 70)
-                        .eq(OrderRefund::getOrderItemId, orderItem.getOrderItemId()));
-
-                if (ObjectUtil.isNotEmpty(orderRefundList)) {
-                    // 计算该订单项已退款的总数量(通过退款单查询退款商品)
-                    List<OrderRefundSkuVo> orderRefundSkuVos = orderRefundSkuMapper.selectByRefundId(orderItem.getOrderItemId());
-                    Integer totalRefundedCount = orderRefundSkuVos.stream()
-                            .mapToInt(OrderRefundSkuVo::getProductCount)
-                            .sum();
-
-                    // 计算剩余可退款数量
-                    Integer remainingCount = orderItem.getProdCount() - totalRefundedCount;
-
-                    if (remainingCount > 0) {
-                        // 数量不同,添加剩余数量
+            if (!order.getOrderType().equals(4)) {
+                //创建退款单
+                OrderRefundParam orderRefundParam = new OrderRefundParam();
+                orderRefundParam.setOrderNumber(order.getOrderNumber());
+                orderRefundParam.setApplyType(1);
+                orderRefundParam.setRefundType(1);
+                orderRefundParam.setIsReceiver(false);
+                orderRefundParam.setBuyerReason("17");
+                orderRefundParam.setBuyerDesc(bodyJson.getString("reason"));
+                orderRefundParam.setBuyerMobile(order.getUserMobile());
+                orderRefundParam.setGoodsNum(order.getProductNums());
+                orderRefundParam.setRefundAmount(order.getActualTotal());
+                orderRefundParam.setPhotoFiles("");
+
+                List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
+                List<OrderRefundSku> orderRefundSkuList = new ArrayList<>();
+                for (OrderItem orderItem : listByOrderNumber) {
+
+                    // 查询该订单项的所有退款记录
+                    List<OrderRefund> orderRefundList = orderRefundService.list(new LambdaQueryWrapper<OrderRefund>()
+                            .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
+                            .eq(OrderRefund::getReturnMoneySts, 70)
+                            .eq(OrderRefund::getOrderItemId, orderItem.getOrderItemId()));
+
+                    if (ObjectUtil.isNotEmpty(orderRefundList)) {
+                        // 计算该订单项已退款的总数量(通过退款单查询退款商品)
+                        List<OrderRefundSkuVo> orderRefundSkuVos = orderRefundSkuMapper.selectByRefundId(orderItem.getOrderItemId());
+                        Integer totalRefundedCount = orderRefundSkuVos.stream()
+                                .mapToInt(OrderRefundSkuVo::getProductCount)
+                                .sum();
+
+                        // 计算剩余可退款数量
+                        Integer remainingCount = orderItem.getProdCount() - totalRefundedCount;
+
+                        if (remainingCount > 0) {
+                            // 数量不同,添加剩余数量
+                            OrderRefundSku orderRefundSku = new OrderRefundSku();
+                            orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
+                            orderRefundSku.setSkuId(orderItem.getSkuId());
+                            orderRefundSku.setProductCount(remainingCount); // 设置剩余数量
+                            orderRefundSku.setSkuPrice(orderItem.getPrice());
+                            orderRefundSkuList.add(orderRefundSku);
+                        }
+                        // 如果remainingCount <= 0,说明已全部退款,不添加到列表
+                    } else {
+                        // 没有退款记录,正常添加全部数量
                         OrderRefundSku orderRefundSku = new OrderRefundSku();
                         orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
                         orderRefundSku.setSkuId(orderItem.getSkuId());
-                        orderRefundSku.setProductCount(remainingCount); // 设置剩余数量
+                        orderRefundSku.setProductCount(orderItem.getProdCount());
                         orderRefundSku.setSkuPrice(orderItem.getPrice());
                         orderRefundSkuList.add(orderRefundSku);
                     }
-                    // 如果remainingCount <= 0,说明已全部退款,不添加到列表
-                } else {
-                    // 没有退款记录,正常添加全部数量
-                    OrderRefundSku orderRefundSku = new OrderRefundSku();
-                    orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
-                    orderRefundSku.setSkuId(orderItem.getSkuId());
-                    orderRefundSku.setProductCount(orderItem.getProdCount());
-                    orderRefundSku.setSkuPrice(orderItem.getPrice());
-                    orderRefundSkuList.add(orderRefundSku);
                 }
-            }
-            if (ObjectUtil.isEmpty(orderRefundSkuList)){
-                return;
-            }
-            orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
-
-            OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
-                    .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
-                    .notIn(OrderRefund::getReturnMoneySts, Arrays.asList(30, 40, 70)));
-            log.info(" 申请系统退款未处理数据参数:{}", JSONObject.toJSONString(orderRefund1));
-            if (ObjectUtil.isNotEmpty(orderRefund1)) {
-                orderRefund1.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
-                orderRefundService.updateById(orderRefund1);
-                //退款单状态同步驳回
-                orderRefundService.changeStatus(orderRefund1.getRefundSn(), ReturnMoneyStsType.REJECT.value());
-
-                //生成流程记录
-                orderRefundService.addOrderRefundRecord( orderRefund1.getRefundId(), 20, 10,"驳回单个商家整单处理");
-            }
-            OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
-            orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
-
+                if (ObjectUtil.isEmpty(orderRefundSkuList)) {
+                    return;
+                }
+                orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
 
+                OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
+                        .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
+                        .notIn(OrderRefund::getReturnMoneySts, Arrays.asList(30, 40, 70)));
+                log.info(" 申请系统退款未处理数据参数:{}", JSONObject.toJSONString(orderRefund1));
+                if (ObjectUtil.isNotEmpty(orderRefund1)) {
+                    orderRefund1.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
+                    orderRefundService.updateById(orderRefund1);
+                    //退款单状态同步驳回
+                    orderRefundService.changeStatus(orderRefund1.getRefundSn(), ReturnMoneyStsType.REJECT.value());
+
+                    //生成流程记录
+                    orderRefundService.addOrderRefundRecord(orderRefund1.getRefundId(), 20, 10, "驳回单个商家整单处理");
+                }
+                OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
+                orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
+            }
         }
         //成功直接通知海博
         if (order.getHbOrderStatus() == 80) {
             changeOrderStatus(channelOrderId, OrderStatus.SUCCESS.value());
         }
+
+        //TODO 市民请集合海博状态通知
+        if (order.getOrderType().equals(4)) {
+            Map<Object, Object> map = new LinkedTreeMap<>();
+            map.put("orderNumber", channelOrderId);
+            map.put("hbOrderStatus", operatorType);
+            HttpUtil.post(smqjhUtil.getOmsBaseUrl() + "/api/v1/xsb/order/updateHbOrderStatus", map);
+        }
     }
 
     @Override
@@ -294,6 +294,19 @@ public class HBOrderService implements IHBOrderService {
         order.setDvyFlowId(body.getString("carrierNo"));
         order.setUpdateTime(new Date(changeTime));
         orderMapper.updateById(order);
+
+        //TODO 市民请集合 物流状态推送
+        if (order.getOrderType().equals(4)) {
+            Map<Object, Object> map = new LinkedTreeMap<>();
+            map.put("orderNumber", channelOrderId);
+            map.put("logisticStatus", logisticStatus);
+            map.put("dvyFlowId", body.getString("carrierNo"));
+
+            if (logisticStatus.equals(20) || logisticStatus.equals(30)) {
+                map.put("deliveryInfo", orderMapper.getRiderInfo(order.getOrderNumber()));
+            }
+            HttpUtil.post(smqjhUtil.getOmsBaseUrl() + "/api/v1/xsb/order/updateHbLogisticStatus", map);
+        }
     }
 
     @Override
@@ -319,6 +332,20 @@ public class HBOrderService implements IHBOrderService {
             orderRiderLocation.setCreateTime(new Date());
             orderRiderLocationMapper.insert(orderRiderLocation);
         }
+
+        //TODO 市民请集合配送员位置
+        Order order = orderMapper.getOrderAndOrderItemByOrderNumber(channelOrderId);
+        if (order.getOrderType().equals(4)) {
+            Map<Object, Object> map = new LinkedTreeMap<>();
+            map.put("orderNumber", orderRiderLocation.getOrderNumber());
+            map.put("courierName", orderRiderLocation.getCourierName());
+            map.put("courierPhone", orderRiderLocation.getCourierPhone());
+            map.put("pushTime", orderRiderLocation.getPushTime());
+            map.put("latitude", orderRiderLocation.getLatitude());
+            map.put("longitude", orderRiderLocation.getLongitude());
+            HttpUtil.post(smqjhUtil.getOmsBaseUrl() + "/api/v1/xsb/order/addOrUpdateRiderLocation", map);
+        }
+
     }
 
     @Override
@@ -354,28 +381,35 @@ public class HBOrderService implements IHBOrderService {
         createOrderRequest.setOutStationName(shopDetail.getShopName());
 
         User userByUserId = userService.getUserByUserId(order.getUserId());
-        createOrderRequest.setCaution(userByUserId.getUserMobile() + "*" + order.getRemarks());
-
-        UserAddrOrder userAddrOrder = userAddrOrderService.selectByAddrOrderId(order.getAddrOrderId());
-        if (userAddrOrder == null) {
-            log.error("收货地址信息查询不到,单号:{}", bodyJson.getString("Order"));
-            createOrderRequest.setRecipientName(shopDetail.getMobile());
-            createOrderRequest.setRecipientPhone(shopDetail.getMobile());
-            createOrderRequest.setRecipientLatitude(Double.parseDouble(shopDetail.getShopLat()));
-            createOrderRequest.setRecipientLongitude(Double.parseDouble(shopDetail.getShopLng()));
-            createOrderRequest.setRecipientAddress(shopDetail.getShopAddress());
-        } else {
-            createOrderRequest.setRecipientName(userAddrOrder.getReceiver());
-            createOrderRequest.setRecipientPhone(userAddrOrder.getMobile());
-            createOrderRequest.setRecipientLatitude(userAddrOrder.getLatitude());
-            createOrderRequest.setRecipientLongitude(userAddrOrder.getLongitude());
-            createOrderRequest.setRecipientAddress(userAddrOrder.getAddress() + userAddrOrder.getAddressName() + userAddrOrder.getAddrDetail());
+        if (userByUserId != null) {
+            createOrderRequest.setCaution(userByUserId.getUserMobile() + "*" + order.getRemarks());
         }
+        if (order.getOrderType() != null && order.getOrderType() == 4) {
+            log.info("市民请结合:{}", order);
+            createOrderRequest.setRecipientName(order.getConsigneeName());
+            createOrderRequest.setRecipientPhone(order.getConsigneeMobile());
+            createOrderRequest.setRecipientLatitude(order.getLatitude());
+            createOrderRequest.setRecipientLongitude(order.getLongitude());
+            createOrderRequest.setRecipientAddress(order.getConsigneeAddress());
 
+        } else {
+            UserAddrOrder userAddrOrder = userAddrOrderService.selectByAddrOrderId(order.getAddrOrderId());
+            if (userAddrOrder == null) {
+                log.info("收货地址信息查询不到,单号:{}", bodyJson.getString("Order"));
+                createOrderRequest.setRecipientName(shopDetail.getMobile());
+                createOrderRequest.setRecipientPhone(shopDetail.getMobile());
+                createOrderRequest.setRecipientLatitude(Double.parseDouble(shopDetail.getShopLat()));
+                createOrderRequest.setRecipientLongitude(Double.parseDouble(shopDetail.getShopLng()));
+                createOrderRequest.setRecipientAddress(shopDetail.getShopAddress());
+            } else {
+                createOrderRequest.setRecipientName(userAddrOrder.getReceiver());
+                createOrderRequest.setRecipientPhone(userAddrOrder.getMobile());
+                createOrderRequest.setRecipientLatitude(userAddrOrder.getLatitude());
+                createOrderRequest.setRecipientLongitude(userAddrOrder.getLongitude());
+                createOrderRequest.setRecipientAddress(userAddrOrder.getAddress() + userAddrOrder.getAddressName() + userAddrOrder.getAddrDetail());
+            }
+        }
         int dvyType = 10;
-//        if (order.getDvyType() == 1) {
-//            dvyType = 80;
-//        } else
         if (order.getDvyType() == 2) {
             dvyType = 40;
         }

+ 41 - 46
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/StoreManagementService.java

@@ -20,6 +20,7 @@ import com.yami.shop.dao.ShopDetailMapper;
 import com.yami.shop.service.RefundAddrService;
 import com.yami.shop.service.hb.IStoreManagementService;
 import com.yami.shop.utils.HBSignUtil;
+import com.yami.shop.utils.SmqjhUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -49,15 +50,8 @@ public class StoreManagementService implements IStoreManagementService {
     private final HBSignUtil hbSignUtil;
     private final HBTransport2Mapper transport2Mapper;
     private final RefundAddrService refundAddrService;
+    private final SmqjhUtil smqjhUtil;
 
-    /**
-     * 市民请集合门店修改和新增调用
-     */
-    private static String smqjhMdUrlAddAndUpdate="http://47.109.84.152:8081/smqjh-pms/api/v1/shopDetail/save";
-    /**
-     * 市民请集合门店状态修改调用
-     */
-    private static String smqjhMdUrlUpdateStatus="http://47.109.84.152:8081/smqjh-pms/api/v1/shopDetail/updateStatus";
 
     /**
      * 获取海博门店基础信息
@@ -199,6 +193,7 @@ public class StoreManagementService implements IStoreManagementService {
                 transport2.setCreateTime(new Date());
                 transport2.setShopId(shopDetailInfo.getShopId());
                 transport2Mapper.insert(transport2);
+
             }
 
 
@@ -212,34 +207,34 @@ public class StoreManagementService implements IStoreManagementService {
                 log.info("门店不存在退货地址,添加默认地址!");
                 RefundAddr refundAddr = new RefundAddr();
                 refundAddr.setShopId(shopDetailInfo.getShopId());
-                refundAddr.setReceiverName(shopDetail.getShopOwner());
-                refundAddr.setReceiverMobile(shopDetail.getTel());
-                refundAddr.setProvince(shopDetail.getProvince());
-                refundAddr.setCity(shopDetail.getCity());
-                refundAddr.setArea(shopDetail.getArea());
-                refundAddr.setAddr(shopDetail.getShopAddress());
+                refundAddr.setReceiverName(shopDetailInfo.getShopOwner());
+                refundAddr.setReceiverMobile(shopDetailInfo.getTel());
+                refundAddr.setProvince(shopDetailInfo.getProvince());
+                refundAddr.setCity(shopDetailInfo.getCity());
+                refundAddr.setArea(shopDetailInfo.getArea());
+                refundAddr.setAddr(shopDetailInfo.getShopAddress());
                 refundAddr.setDefaultAddr(1);
                 refundAddr.setStatus(1);
                 refundAddr.setCreateTime(new Date());
                 refundAddr.setUpdateTime(new Date());
                 refundAddrService.save(refundAddr);
             }
-//            resultData.put("thirdPartyId",shopDetailInfo.getShopId());//推送第三方id
-//            String post =null;
-//            try {
-//                 post = HttpUtil.post(smqjhMdUrlAddAndUpdate, goodsInfoJson);
-//                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);
-//            }
-//            log.info("修改门店信息成功");
+            resultData.put("thirdPartyId",shopDetailInfo.getShopId());//推送第三方id
+            String post =null;
+            try {
+                 post = HttpUtil.post(smqjhUtil.getSmqjhPmsUrl()+SmqjhUtil.smqjhMdUrlAddAndUpdate, goodsInfoJson);
+                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);
+            }
+            log.info("修改门店信息成功");
             return HBR.success();
         } catch (Exception e) {
             log.error("门店变更失败:{}", e.getMessage(), e);
@@ -303,22 +298,22 @@ public class StoreManagementService implements IStoreManagementService {
         }else {
             log.error("不存在门店{}", stationId);
         }
-//        String post =null;
-//        try {
-//            goodsInfoJson.put("stationId",stationId);
-//            post = HttpUtil.post(smqjhMdUrlUpdateStatus, goodsInfoJson);
-//            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);
-//        }
-//        log.info("修改门店信息状态成功");
+        String post =null;
+        try {
+            goodsInfoJson.put("stationId",stationId);
+            post = HttpUtil.post(smqjhUtil.getSmqjhPmsUrl()+SmqjhUtil.smqjhMdUrlUpdateStatus, goodsInfoJson);
+            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);
+        }
+        log.info("修改门店信息状态成功");
 
     }
 }

+ 4 - 4
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -1105,7 +1105,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             }
         } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);
-            HBR.error("未知异常");
+            return HBR.error("未知异常");
         }
 
         log.info("退款订单信息,返回:{}", thirdPartyRefundRequest);
@@ -1172,7 +1172,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             changeStatus(orderRefund.getRefundSn(), orderRefund.getReturnMoneySts());
         } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);
-            HBR.error("未知异常");
+            return HBR.error("未知异常");
         }
 
         return HBR.success();
@@ -1211,7 +1211,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             changeStatus(orderRefund.getRefundSn(), orderRefund.getReturnMoneySts());
           } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);
-            HBR.error("未知异常");
+            return HBR.error("未知异常");
         }
 
         return HBR.success();
@@ -1288,7 +1288,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             createRefundOrder(order.getOrderNumber(), orderRefund1.getRefundSn());
         } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);
-            HBR.error("未知异常");
+            return HBR.error("未知异常");
         }
 
         return HBR.success();

+ 66 - 2
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -40,6 +40,8 @@ import com.yami.shop.bean.event.SubmitOrderEvent;
 import com.yami.shop.bean.event.SubmitScoreOrderEvent;
 import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.*;
+import com.yami.shop.bean.po.SMOrderItemPo;
+import com.yami.shop.bean.po.SMOrderPo;
 import com.yami.shop.bean.vo.ExportContext;
 import com.yami.shop.bean.vo.OrderCountVo;
 import com.yami.shop.common.config.Constant;
@@ -60,7 +62,10 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.streaming.SXSSFSheet;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.springframework.beans.BeanUtils;
@@ -119,7 +124,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private final TzSysUserMapper userMapper;
     @Autowired
     private ExportTaskService exportTaskService;
-
     //导出
     // 线程池配置
     private final ExecutorService exportExecutor = Executors.newFixedThreadPool(
@@ -886,6 +890,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 List<OrderItem> orderItems = orderItemMapper.getListByOrderNumber(c.getOrderNumber());
                 c.setOrderItems(orderItems);
                 c.setGoodsTotalCount(orderItems.stream().map(OrderItem::getProdCount).reduce(0, Integer::sum));
+                c.setReceiver(c.getConsigneeName());
+                c.setUserMobile(c.getConsigneeMobile());
             });
         }
         return page;
@@ -2494,6 +2500,64 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         log.info("删除临时子订单成功,子订单号:{},父订单号:{}", subOrderNumber, parentOrderNumber);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String addSMOrder(SMOrderPo orderPo) {
+        Order order = new Order();
+        order.setShopId(orderPo.getShopId() == null ? 0L : orderPo.getShopId());
+        order.setChannelId(4L);
+        order.setUserId("");
+        order.setOrderNumber(orderPo.getOrderNumber());
+        order.setTotal(orderPo.getTotal());
+        order.setActualTotal(orderPo.getActualTotal());
+        order.setPayType(orderPo.getPayType());
+        order.setRemarks(orderPo.getRemarks());
+        order.setHbOrderStatus(20);
+        order.setHbLogisticStatus(0);
+        order.setDvyType(orderPo.getDvyType());
+        order.setFreightAmount(orderPo.getFreightAmount());
+        order.setCreateTime(new Date());
+        order.setUpdateTime(new Date());
+        order.setPayTime(orderPo.getPayTime());
+        order.setIsPayed(1);
+        order.setDeleteStatus(0);
+        order.setOrderType(4);
+        order.setCommSts(0);
+        order.setConsigneeName(orderPo.getConsigneeName());
+        order.setConsigneeMobile(orderPo.getConsigneeMobile());
+        order.setConsigneeAddress(orderPo.getConsigneeAddress());
+        order.setLatitude(orderPo.getLatitude());
+        order.setLongitude(orderPo.getLongitude());
+        order.setOffsetPoints(orderPo.getOffsetPoints());
+        List<SMOrderItemPo> orderItems = orderPo.getOrderItems();
+        List<String> list = orderItems.stream().map(SMOrderItemPo::getSkuName).collect(Collectors.toList());
+        order.setProdName(String.join(",",list));
+        order.setProductNums(orderItems.stream().map(SMOrderItemPo::getProdCount).reduce(0, Integer::sum));
+        orderMapper.insert(order);
+        orderItems.forEach(c->{
+            OrderItem item = new OrderItem();
+            item.setShopId(0L);
+            item.setOrderNumber(order.getOrderNumber());
+            item.setProdId(c.getProdId());
+            item.setSkuId(c.getSkuId());
+            item.setProdCount(c.getProdCount());
+            item.setProdName(c.getProdName());
+            item.setSkuName(c.getSkuName());
+            item.setPic(c.getPic());
+            item.setPrice(c.getPrice());
+            item.setUserId("");
+            item.setProductTotalAmount(c.getProductTotalAmount());
+            item.setRecTime(c.getRecTime());
+            item.setCommSts(0);
+            item.setBasketDate(new Date());
+            item.setUseScore(c.getUseScore());
+            item.setGainScore(c.getGainScore());
+            orderItemService.save(item);
+        });
+
+        return order.getOrderNumber();
+    }
+
     /**
      * 为手动拆单的子订单分配积分和金额
      */

+ 14 - 3
yami-shop-service/src/main/java/com/yami/shop/utils/SmqjhUtil.java

@@ -1,13 +1,10 @@
 package com.yami.shop.utils;
 
-import com.yami.shop.bean.dto.hb.HBBaseReq;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
 
-import static cn.hutool.crypto.SecureUtil.md5;
-
 
 /**
  * 海博签名工具类
@@ -23,4 +20,18 @@ public class SmqjhUtil {
     @Value("${smqjh.pms-url}")
     private String smqjhPmsUrl;
 
+    @Getter
+    @Value("${smqjh.omsBaseUrl}")
+    private String omsBaseUrl;
+
+
+    /**
+     +     * 市民请集合门店修改和新增调用
+     +     */
+    public static String smqjhMdUrlAddAndUpdate="/shopDetail/save";
+    /**
+     * 市民请集合门店状态修改调用
+    */
+    public static String smqjhMdUrlUpdateStatus="/shopDetail/updateStatus";
+
 }

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

@@ -121,6 +121,11 @@
         <result column="refund_status" jdbcType="INTEGER" property="refundStatus"/>
         <result column="order_type" jdbcType="INTEGER" property="orderType"/>
         <result column="close_type" jdbcType="INTEGER" property="closeType"/>
+        <result column="consignee_name" jdbcType="INTEGER" property="consigneeName"/>
+        <result column="consignee_mobile" jdbcType="INTEGER" property="consigneeMobile"/>
+        <result column="consignee_address" jdbcType="INTEGER" property="consigneeAddress"/>
+        <result column="latitude" jdbcType="INTEGER" property="latitude"/>
+        <result column="longitude" jdbcType="INTEGER" property="longitude"/>
         <collection property="orderItems" ofType="com.yami.shop.bean.model.OrderItem">
             <id column="order_item_id" jdbcType="BIGINT" property="orderItemId"/>
             <result column="shop_id" jdbcType="BIGINT" property="shopId"/>
@@ -1353,4 +1358,8 @@
         group by a.order_number
         ) m
     </select>
+    <select id="getRiderInfo" resultType="java.lang.String">
+        SELECT CONCAT('骑手:',courier_name,',电话:', SUBSTRING_INDEX(courier_phone, ',', 1)) info
+        FROM `tz_order_rider_location` WHERE order_number=#{orderNumber}
+    </select>
 </mapper>