1
0

54 Коммитууд de4c1a3438 ... 33fc2d8243

Эзэн SHA1 Мессеж Огноо
  fubojin 33fc2d8243 解决海博添加商品问题 2 долоо хоног өмнө
  wangming 94a996c4a7 sm order 3 долоо хоног өмнө
  wangming 589030170d sm order 3 долоо хоног өмнө
  wangming de87f6e479 sm order 3 долоо хоног өмнө
  wangming 0de5dd1b62 sm order 4 долоо хоног өмнө
  wangming 257a099cad Merge remote-tracking branch 'origin/dev' into dev 4 долоо хоног өмнө
  wangming 02c5b5af71 sm order 4 долоо хоног өмнө
  fubojin fcaa6a4857 smqjh订单推送海博收货信息模块 4 долоо хоног өмнө
  wangming 13f33148a2 sm order 4 долоо хоног өмнө
  wangming bfe06b61cc sm order 4 долоо хоног өмнө
  wangming 6834d60d0c sm order 4 долоо хоног өмнө
  wangming 1095ad9e93 sm order 1 сар өмнө
  fubojin 9ac90a2ddc Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  fubojin 37360c9de9 smqjh订单推送海博收货信息模块 1 сар өмнө
  wangming 779cb2e8ab sm order 1 сар өмнө
  wangming 293eea5fe1 sm order 1 сар өмнө
  fubojin 0bd19f775f Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  fubojin 7fa606e6a3 smqjh订单推送海博收货信息模块 1 сар өмнө
  wangming 753810d83d sm order 1 сар өмнө
  wangming 4313ede182 sm order 1 сар өмнө
  wangming f59408dd4d sm order 1 сар өмнө
  wangming ffbf18c395 Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  wangming 92386d573d sm order 1 сар өмнө
  fubojin 61cd74096d smqjh订单推送海博收货信息模块 1 сар өмнө
  wangming 9e888427ef sm order 1 сар өмнө
  fubojin 9d0e791f35 smqjh订单推送海博收货信息模块 1 сар өмнө
  wangming 0e22959788 sm order 1 сар өмнө
  wangming 0c0653a107 sm order 1 сар өмнө
  wangming 327cd1e17a sm order 1 сар өмнө
  wangming 2ef59ee84c Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  wangming 1deb5c782e sm order 1 сар өмнө
  fubojin 32693e2f28 门店新增问题 1 сар өмнө
  wangming f987c15d1c sm order 1 сар өмнө
  wangming f96ba770fa Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  wangming 360434268f sm order 1 сар өмнө
  fubojin 4247dc5d87 门店新增问题 1 сар өмнө
  fubojin 2cf6526b4f Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  wangming 775c4f56ae sm order 1 сар өмнө
  wangming 3ebe9eea50 Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  wangming f68af64a2a sm order 1 сар өмнө
  zhangxin 75d4eef44e 修改门店信息问题 1 сар өмнө
  fubojin 3b596d1e29 Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  zhangxin b4e83ff4f5 Merge branch 'master' into dev 1 сар өмнө
  fubojin 63115e5f08 Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  zhangxin e653ce7480 Merge branch 'master' into dev 1 сар өмнө
  wangming 93dfe41e8d Merge remote-tracking branch 'origin/dev' into dev 1 сар өмнө
  wangming 9842c86d0d sm order 1 сар өмнө
  zhangxin 221e3e3577 Merge branch 'master' into dev 1 сар өмнө
  wangming fb627164a2 sm order 1 сар өмнө
  wangming 614e8381c5 sm order 1 сар өмнө
  wangming 49c1efdd0c sm order 1 сар өмнө
  wangming c2f860acca sm order 1 сар өмнө
  wangming 2327d68f40 sm order 1 сар өмнө
  wangming faa8c07125 sm order 1 сар өмнө
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>