Explorar o código

供应商发货API

chao %!s(int64=3) %!d(string=hai) anos
pai
achega
021d18e8bb
Modificáronse 36 ficheiros con 1299 adicións e 251 borrados
  1. 2 2
      src/main/java/com/caimei365/order/controller/AddressApi.java
  2. 110 0
      src/main/java/com/caimei365/order/controller/ShipApi.java
  3. 6 0
      src/main/java/com/caimei365/order/mapper/AddressMapper.java
  4. 5 0
      src/main/java/com/caimei365/order/mapper/BaseMapper.java
  5. 0 17
      src/main/java/com/caimei365/order/mapper/OrderClubMapper.java
  6. 21 0
      src/main/java/com/caimei365/order/mapper/OrderCommonMapper.java
  7. 0 11
      src/main/java/com/caimei365/order/mapper/PayOrderMapper.java
  8. 91 0
      src/main/java/com/caimei365/order/mapper/ShipMapper.java
  9. 0 5
      src/main/java/com/caimei365/order/mapper/SubmitMapper.java
  10. 1 1
      src/main/java/com/caimei365/order/model/dto/AddressDto.java
  11. 60 0
      src/main/java/com/caimei365/order/model/dto/LogisticsDto.java
  12. 1 1
      src/main/java/com/caimei365/order/model/po/AddressPo.java
  13. 61 0
      src/main/java/com/caimei365/order/model/po/LogisticsBatchPo.java
  14. 73 0
      src/main/java/com/caimei365/order/model/po/LogisticsInformationPo.java
  15. 60 0
      src/main/java/com/caimei365/order/model/po/LogisticsRecordPo.java
  16. 2 12
      src/main/java/com/caimei365/order/model/po/OrderUserInfoPo.java
  17. 1 1
      src/main/java/com/caimei365/order/model/vo/AddressVo.java
  18. 30 0
      src/main/java/com/caimei365/order/model/vo/CompanyVo.java
  19. 1 1
      src/main/java/com/caimei365/order/model/vo/LogisticsBatchVo.java
  20. 10 10
      src/main/java/com/caimei365/order/model/vo/LogisticsInformationVo.java
  21. 2 11
      src/main/java/com/caimei365/order/model/vo/OrderUserinfoVo.java
  22. 24 1
      src/main/java/com/caimei365/order/model/vo/ShopOrderVo.java
  23. 57 0
      src/main/java/com/caimei365/order/service/ShipService.java
  24. 1 1
      src/main/java/com/caimei365/order/service/impl/AddressServiceImpl.java
  25. 7 6
      src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java
  26. 12 12
      src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java
  27. 338 0
      src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java
  28. 7 9
      src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java
  29. 3 3
      src/main/resources/bootstrap.yml
  30. 23 5
      src/main/resources/mapper/AddressMapper.xml
  31. 3 22
      src/main/resources/mapper/BaseMapper.xml
  32. 0 35
      src/main/resources/mapper/OrderClubMapper.xml
  33. 97 0
      src/main/resources/mapper/OrderCommonMapper.xml
  34. 0 80
      src/main/resources/mapper/PayOrderMapper.xml
  35. 188 0
      src/main/resources/mapper/ShipMapper.xml
  36. 2 5
      src/main/resources/mapper/SubmitMapper.xml

+ 2 - 2
src/main/java/com/caimei365/order/controller/AddressApi.java

@@ -78,7 +78,7 @@ public class AddressApi {
      *                   addressId    用户地址Id
      *                   townId       区ID
      *                   address      详细地址
-     *                   name         收货人
+     *                   receiver         收货人
      *                   mobile       手机
      *                   defaultFlag  是否默认收货地址(0 不是默认,1 默认)
      */
@@ -94,7 +94,7 @@ public class AddressApi {
         if (StringUtils.isEmpty(addressDto.getAddress())) {
             return ResponseJson.error("详细地址不能为空!", null);
         }
-        if (StringUtils.isEmpty(addressDto.getName())) {
+        if (StringUtils.isEmpty(addressDto.getReceiver())) {
             return ResponseJson.error("收货人不能为空!", null);
         }
         if (StringUtils.isEmpty(addressDto.getMobile())) {

+ 110 - 0
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -0,0 +1,110 @@
+package com.caimei365.order.controller;
+
+import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.LogisticsDto;
+import com.caimei365.order.model.vo.CompanyVo;
+import com.caimei365.order.model.vo.ShopOrderVo;
+import com.caimei365.order.service.ShipService;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 供应商发货API
+ *
+ * @author : Charles
+ * @date : 2021/8/5
+ */
+@Api(tags="供应商发货API")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/order/shop")
+public class ShipApi {
+    private final ShipService shipService;
+
+    /**
+     * 供应商订单列表
+     */
+    @ApiOperation("供应商订单列表(旧:/supplier/myOrderList)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "shopId", value = "供应商Id"),
+            @ApiImplicitParam(required = false, name = "sendOutStatus", value = "发货状态"),
+            @ApiImplicitParam(required = false, name = "payStatus", value = "结算状态"),
+            @ApiImplicitParam(required = false, name = "shopOrderNo", value = "订单编号"),
+            @ApiImplicitParam(required = false, name = "receiver", value = "买家名称(收货人)"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/list")
+    public ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver,
+                                                        @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                        @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        if (null == shopId) {
+            return ResponseJson.error("供应商Id不能为空!", null);
+        }
+        return shipService.getShopOrderList(shopId, sendOutStatus, payStatus, shopOrderNo, receiver, pageNum, pageSize);
+    }
+
+    /**
+     * 发货页面子订单数据
+     */
+    @ApiOperation("供应商订单列表(旧:/supplier/shipmentsInfo)")
+    @ApiImplicitParam(required = true, name = "shopOrderId", value = "子订单Id")
+    @GetMapping("/ship/info")
+    public ResponseJson<ShopOrderVo> getShopOrderInfo(Integer shopOrderId) {
+        if (null == shopOrderId) {
+            return ResponseJson.error("参数不能为空!", null);
+        }
+        return shipService.getShopOrderInfo(shopOrderId);
+    }
+
+    /**
+     * 物流公司
+     */
+    @ApiOperation("供应商订单列表(旧:/supplier/logisticsCompany)")
+    @ApiImplicitParam(required = true, name = "value", value = "快递公司代码")
+    @GetMapping("/ship/company")
+    public ResponseJson<List<CompanyVo>> getLogisticsCompany(String value) {
+        return shipService.getLogisticsCompany(value);
+    }
+
+    /**
+     * 发货
+     *
+     * @param logisticsDto {
+     *                     shopOrderId: 子订单Id,
+     *                     note: 备注信息,
+     *                     image: 图片备注以||隔开,
+     *                     logistics:[  // 物流信息
+     *                          {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'},
+     *                          {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'}
+     *                        ],
+     *                     products:[   // 商品信息
+     *                          {orderProductId:订单商品id,num:此次发货数量},
+     *                          {orderProductId:订单商品id,num:此次发货数量}
+     *                        ],
+     *                     }
+     */
+    @ApiOperation("发货(旧:/supplier/addLogistics)")
+    @PostMapping("/addLogistics")
+    public ResponseJson<Integer> addLogistics(LogisticsDto logisticsDto) {
+        if (null == logisticsDto.getLogistics()) {
+            return ResponseJson.error("物流信息不能为空!", null);
+        }
+        if (null == logisticsDto.getShopOrderId()) {
+            return ResponseJson.error("子订单Id不能为空!", null);
+        }
+        if (null == logisticsDto.getProducts()) {
+            return ResponseJson.error("商品信息不能为空!", null);
+        }
+        return shipService.addLogistics(logisticsDto);
+    }
+
+
+
+
+
+}

+ 6 - 0
src/main/java/com/caimei365/order/mapper/AddressMapper.java

@@ -3,6 +3,7 @@ package com.caimei365.order.mapper;
 import com.caimei365.order.model.po.AddressPo;
 import com.caimei365.order.model.vo.AddressSelectVo;
 import com.caimei365.order.model.vo.AddressVo;
+import com.caimei365.order.model.vo.OrderUserinfoVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -64,4 +65,9 @@ public interface AddressMapper {
      * @param userId 用户Id
      */
     void deleteAddress(Integer addressId, Integer userId);
+    /**
+     * 订单中收货地址
+     * @param orderId 订单Id
+     */
+    OrderUserinfoVo getOrderUserinfo(Integer orderId);
 }

+ 5 - 0
src/main/java/com/caimei365/order/mapper/BaseMapper.java

@@ -16,6 +16,11 @@ import java.util.List;
  */
 @Mapper
 public interface BaseMapper {
+    /**
+     * 供应商名称
+     * @param shopId 供应商Id
+     */
+    String getShopNameById(Integer shopId);
     /**
      * 获取机构用户Id
      * @param clubId 机构Id

+ 0 - 17
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -132,18 +132,6 @@ public interface OrderClubMapper {
      * @param userId 用户Id
      */
     void deleteOrderSearchHistory(Integer userId);
-    /**
-     * 已退货数量
-     * @param shopOrderId 子订单Id
-     * @param productId   商品Id
-     */
-    Integer countReturnedNum(Integer shopOrderId, Integer productId);
-    /**
-     * 已取消发货数量
-     * @param shopOrderId 子订单Id
-     * @param productId   商品Id
-     */
-    Integer countActualCancelNum(Integer shopOrderId, Integer productId);
     /**
      * 退款记录
      * @param orderId 订单Id
@@ -154,11 +142,6 @@ public interface OrderClubMapper {
      * @param clauseId 条款Id
      */
     ClauseVo getClauseById(Integer clauseId);
-    /**
-     * 收货地址
-     * @param orderId 订单Id
-     */
-    OrderUserinfoVo getOrderUserinfo(Integer orderId);
     /**
      * 获取物流批次列表
      * @param orderId 订单Id

+ 21 - 0
src/main/java/com/caimei365/order/mapper/OrderCommonMapper.java

@@ -84,4 +84,25 @@ public interface OrderCommonMapper {
      * @param userId 用户Id
      */
     void deleteSearchHistoryLimit(Integer userId);
+    /**
+     * 已退货数量
+     * @param shopOrderId 子订单Id
+     * @param productId   商品Id
+     */
+    Integer countReturnedNum(Integer shopOrderId, Integer productId);
+    /**
+     * 已取消发货数量
+     * @param shopOrderId 子订单Id
+     * @param productId   商品Id
+     */
+    Integer countActualCancelNum(Integer shopOrderId, Integer productId);
+    /**
+     * 根据订单Id获取订单
+     * @param orderId 订单Id
+     */
+    OrderVo getOrderByOrderId(Integer orderId);
+    /**
+     * 根据订单Id获取子订单列表
+     */
+    List<ShopOrderVo> getShopOrderListByOrderId(Integer orderId);
 }

+ 0 - 11
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -6,10 +6,8 @@ import com.caimei365.order.model.po.PayShopRecordPo;
 import com.caimei365.order.model.po.SplitAccountPo;
 import com.caimei365.order.model.vo.OrderPayLinkVo;
 import com.caimei365.order.model.vo.OrderVo;
-import com.caimei365.order.model.vo.ShopOrderVo;
 import org.apache.ibatis.annotations.Mapper;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -24,11 +22,6 @@ public interface PayOrderMapper {
      * 获取线上支付全局开关状态
      */
     Integer getPayOnLineSwitch();
-    /**
-     * 根据订单Id获取订单
-     * @param orderId 订单Id
-     */
-    OrderVo getOrderByOrderId(Integer orderId);
     /**
      * 查询审核中的退款退货数量
      * @param orderId 订单Id
@@ -99,10 +92,6 @@ public interface PayOrderMapper {
      * 查询分账给子商户号
      */
     List<SplitAccountPo> getSplitAccountList(String mbOrderId);
-    /**
-     * 根据订单Id获取子订单列表
-     */
-    List<ShopOrderVo> getShopOrderListByOrderId(Integer orderId);
     /**
      * 查询已付供应商金额
      */

+ 91 - 0
src/main/java/com/caimei365/order/mapper/ShipMapper.java

@@ -0,0 +1,91 @@
+package com.caimei365.order.mapper;
+
+import com.caimei365.order.model.po.LogisticsBatchPo;
+import com.caimei365.order.model.po.LogisticsInformationPo;
+import com.caimei365.order.model.po.LogisticsRecordPo;
+import com.caimei365.order.model.vo.CompanyVo;
+import com.caimei365.order.model.vo.OrderProductVo;
+import com.caimei365.order.model.vo.OrderVo;
+import com.caimei365.order.model.vo.ShopOrderVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/5
+ */
+@Mapper
+public interface ShipMapper {
+    /**
+     * 机构订单列表
+     */
+    List<ShopOrderVo> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver);
+    /**
+     * 发货页面子订单数据
+     * @param shopOrderId 子订单Id
+     */
+    ShopOrderVo getShopOrder(Integer shopOrderId);
+    /**
+     * (收款买家)收款状态:1待收款、2部分收款、3已收款
+     * @param orderId 订单Id
+     */
+    Integer getOrderReceiptStatus(Integer orderId);
+    /**
+     * 物流公司
+     * @param value 快递公司代码
+     */
+    List<CompanyVo> getLogisticsCompany(String value);
+    /**
+     * 统计物流批次
+     */
+    int countLogisticsBatch(Integer orderId);
+    /**
+     * 保存 物流批次
+     * @param logisticsBatch LogisticsBatchPo
+     */
+    void insertLogisticsBatch(LogisticsBatchPo logisticsBatch);
+    /**
+     * 订单商品
+     * @param orderProductId 订单商品Id
+     */
+    OrderProductVo getOrderProductById(Integer orderProductId);
+    /**
+     * 保存 发货物流记录
+     * @param logisticsRecord LogisticsRecordPo
+     */
+    void insertLogisticsRecord(LogisticsRecordPo logisticsRecord);
+    /**
+     * 保存订单商品未出库数量
+     * @param orderProductId 订单商品Id
+     * @param notOutStore 未出库数量
+     */
+    void updateNotOutStore(Integer orderProductId, int notOutStore);
+    /**
+     * 保存 物流跟踪信息
+     * @param logisticsInformation LogisticsInformationPo
+     */
+    void insertLogisticsInformation(LogisticsInformationPo logisticsInformation);
+    /**
+     * 修改子订单发货状态
+     * @param shopOrderId 子订单Id
+     * @param outStoreNum 已经发货的商品数量
+     * @param outStoreTimes 子订单发货批次 默认值 = 0 即没过发货
+     * @param sendOutStatus 发货状态:1待发货、2部分发货、3已发货
+     */
+    void updateShopOrderShip(Integer shopOrderId, Integer outStoreNum, Integer outStoreTimes, Integer sendOutStatus);
+    /**
+     * 子订单发货状态列表
+     * @param orderId 订单Id
+     */
+    List<Integer> getAllSendOutStatus(Integer orderId);
+    /**
+     * 修改主订单发货状态
+     * @param orderId 订单Id
+     * @param sendOutStatus 发货状态:1待发货、2部分发货、3已发货
+     * @param status 订单状态
+     */
+    void updateOrderShip(Integer orderId, Integer sendOutStatus, Integer status);
+}

+ 0 - 5
src/main/java/com/caimei365/order/mapper/SubmitMapper.java

@@ -31,11 +31,6 @@ public interface SubmitMapper {
      * @param serviceProviderId 协销Id
      */
     Integer getServiceProviderUserId(Integer serviceProviderId);
-    /**
-     * 供应商名称
-     * @param shopId 供应商Id
-     */
-    String getShopNameById(Integer shopId);
     /**
      * 获取数据库商品信息
      * @param productId 商品Id

+ 1 - 1
src/main/java/com/caimei365/order/model/dto/AddressDto.java

@@ -28,7 +28,7 @@ public class AddressDto implements Serializable {
      * 收货人
      */
     @ApiModelProperty("收货人")
-    private String name;
+    private String receiver;
     /**
      * 区ID
      */

+ 60 - 0
src/main/java/com/caimei365/order/model/dto/LogisticsDto.java

@@ -0,0 +1,60 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/6
+ */
+@Data
+public class LogisticsDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 子订单Id
+     */
+    @ApiModelProperty("子订单Id")
+    private Integer shopOrderId;
+    /**
+     * 备注信息
+     */
+    @ApiModelProperty("备注信息")
+    private String note;
+    /**
+     * 图片备注以||隔开
+     */
+    @ApiModelProperty("图片备注以||隔开")
+    private String image;
+    /**
+     * 物流信息:[
+     *             {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'},
+     *             {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'}
+     *         ]
+     */
+    @ApiModelProperty("物流信息")
+    private String logistics;
+
+    /**
+     * 商品信息:[
+     *            {orderProductId:订单商品id,num:此次发货数量},
+     *            {orderProductId:订单商品id,num:此次发货数量}
+     *         ]
+     */
+    @ApiModelProperty("商品信息")
+    private String products;
+
+    @Override
+    public String toString() {
+        return "LogisticsDto{" +
+                "shopOrderId=" + shopOrderId +
+                ", note='" + note + '\'' +
+                ", image='" + image + '\'' +
+                ", logistics='" + logistics + '\'' +
+                ", products='" + products + '\'' +
+                '}';
+    }
+}

+ 1 - 1
src/main/java/com/caimei365/order/model/po/AddressPo.java

@@ -24,7 +24,7 @@ public class AddressPo implements Serializable {
     /**
      * 收货人
      */
-    private String name;
+    private String receiver;
     /**
      * 区ID
      */

+ 61 - 0
src/main/java/com/caimei365/order/model/po/LogisticsBatchPo.java

@@ -0,0 +1,61 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/6
+ */
+@Data
+public class LogisticsBatchPo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     *  ID
+     */
+    private Integer id;
+    /**
+     * 子订单ID
+     */
+    private Integer shopOrderId;
+    /**
+     * 主订单ID
+     */
+    private Integer orderId;
+    /**
+     * 第几批发货
+     */
+    private Integer outStoreTimes;
+    /**
+     * 是否确认收货(0:否,1:是)
+     */
+    private String status;
+    /**
+     * 邮寄者  0 采美   1 供应商
+     */
+    private String mailer;
+    /**
+     * 供应商ID
+     */
+    private Integer shopId;
+    /**
+     * 最后更新时间
+     */
+    private Date updateDate;
+    /**
+     * 发货时间
+     */
+    private Date deliveryTime;
+    /**
+     * 备注图片,以"||"隔开
+     */
+    private String remarkImage;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 73 - 0
src/main/java/com/caimei365/order/model/po/LogisticsInformationPo.java

@@ -0,0 +1,73 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/7/22
+ */
+@Data
+public class LogisticsInformationPo implements Serializable {
+    private static final long serialVersionUId = 1L;
+    /**
+     * id
+     */
+    private Integer id;
+    /**
+     * 发货批次表Id
+     */
+    private Integer logisticsBatchId;
+    /**
+     * 类型:1 采美365  2 呵呵商城 3 大宗采购
+     */
+    private String type;
+    /**
+     * 子订单编号
+     */
+    private Integer shopOrderId;
+    /**
+     * 订单商品Id
+     */
+    private Integer orderProductId;
+    /**
+     * 订单Id
+     */
+    private Integer orderId;
+    /**
+     * 快递单号
+     */
+    private String nu;
+    /**
+     * 快递单当前的状态(0:在途,即货物处于运输过程中;1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;2:疑难,货物寄送过程出了问题;3:签收,收件人已签收;4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;5:派件,即快递正在进行同城派件;6:退回,货物正处于退回发件人的途中;)
+     */
+    private String state;
+    /**
+     * 物流跟踪信息
+     */
+    private String info;
+    /**
+     * 物流公司名称
+     */
+    private String logisticsCompanyName;
+    /**
+     * 物流公司代码
+     */
+    private String logisticsCompanyCode;
+    /**
+     * 供应商Id
+     */
+    private Integer shopId;
+    /**
+     * 最后更新时间
+     */
+    private Date updateDate;
+    /**
+     * 备注
+     */
+    private String remarks;
+}

+ 60 - 0
src/main/java/com/caimei365/order/model/po/LogisticsRecordPo.java

@@ -0,0 +1,60 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/6
+ */
+@Data
+public class LogisticsRecordPo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    private Integer id;
+    /**
+     * 发货物流批次Id
+     */
+    private Integer logisticsBatchId;
+    /**
+     * 子订单Id
+     */
+    private Integer shopOrderId;
+    /**
+     * 主订单Id
+     */
+    private Integer orderId;
+    /**
+     * 订单商品Id
+     */
+    private Integer orderProductId;
+    /**
+     * 商品购买数量
+     */
+    private Integer buyNum;
+
+    /**
+     * 此次发货数量
+     */
+    private Integer num;
+
+    /**
+     * 商品ID
+     */
+    private Integer productId;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+    /**
+     * 商品图片
+     */
+    private String image;
+}

+ 2 - 12
src/main/java/com/caimei365/order/model/po/OrderUserInfoPo.java

@@ -32,11 +32,11 @@ public class OrderUserInfoPo implements Serializable {
     /**
      * 买家
      */
-    private String userName;
+    private String name;
     /**
      * 收货人
      */
-    private String name;
+    private String  receiver;
     /**
      * 手机
      */
@@ -65,14 +65,4 @@ public class OrderUserInfoPo implements Serializable {
      * 详细地址
      */
     private String address;
-
-    /**
-     * 买家
-     */
-    //private String name;
-
-    /**
-     * 收货人
-     */
-    //private String shouHuoRen;
 }

+ 1 - 1
src/main/java/com/caimei365/order/model/vo/AddressVo.java

@@ -24,7 +24,7 @@ public class AddressVo implements Serializable {
     /**
      * 收货人
      */
-    private String name;
+    private String receiver;
     /**
      * 省ID
      */

+ 30 - 0
src/main/java/com/caimei365/order/model/vo/CompanyVo.java

@@ -0,0 +1,30 @@
+package com.caimei365.order.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/6
+ */
+@Data
+public class CompanyVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 编号
+     */
+    private Integer id;
+
+    /**
+     * 数据值
+     */
+    private String value;
+
+    /**
+     * 标签名
+     */
+    private String label;
+}

+ 1 - 1
src/main/java/com/caimei365/order/model/vo/LogisticsBatchVo.java

@@ -27,7 +27,7 @@ public class LogisticsBatchVo implements Serializable {
     /**
      * 主订单Id
      */
-    private String orderId;
+    private Integer orderId;
     /**
      * 第几批发货
      */

+ 10 - 10
src/main/java/com/caimei365/order/model/vo/LogisticsInformationVo.java

@@ -15,15 +15,15 @@ import java.util.List;
  */
 @Data
 public class LogisticsInformationVo implements Serializable {
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUId = 1L;
     /**
      * id
      */
     private Integer id;
     /**
-     * 发货批次表ID
+     * 发货批次表Id
      */
-    private Integer logisticsBatchID;
+    private Integer logisticsBatchId;
     /**
      * 类型:1 采美365  2 呵呵商城 3 大宗采购
      */
@@ -31,15 +31,15 @@ public class LogisticsInformationVo implements Serializable {
     /**
      * 子订单编号
      */
-    private Integer shopOrderID;
+    private Integer shopOrderId;
     /**
-     * 订单商品ID
+     * 订单商品Id
      */
-    private Integer orderProductID;
+    private Integer orderProductId;
     /**
-     * 订单ID
+     * 订单Id
      */
-    private Integer orderID;
+    private Integer orderId;
     /**
      * 快递单号
      */
@@ -61,9 +61,9 @@ public class LogisticsInformationVo implements Serializable {
      */
     private String logisticsCompanyCode;
     /**
-     * 供应商ID
+     * 供应商Id
      */
-    private Integer shopID;
+    private Integer shopId;
     /**
      * 最后更新时间
      */

+ 2 - 11
src/main/java/com/caimei365/order/model/vo/OrderUserinfoVo.java

@@ -32,11 +32,11 @@ public class OrderUserinfoVo implements Serializable {
     /**
      * 买家(name)
      */
-    private String userName;
+    private String name;
     /**
      * 收货人(shouHuoRen)
      */
-    private String name;
+    private String receiver;
     /**
      * 手机
      */
@@ -69,13 +69,4 @@ public class OrderUserinfoVo implements Serializable {
      * 收货地址
      */
     private String address;
-    /**
-     * 买家
-     */
-    //private String name;
-
-    /**
-     * 收货人
-     */
-    //private String shouHuoRen;
 }

+ 24 - 1
src/main/java/com/caimei365/order/model/vo/ShopOrderVo.java

@@ -3,7 +3,6 @@ package com.caimei365.order.model.vo;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -115,6 +114,22 @@ public class ShopOrderVo implements Serializable {
      * 付供应商 = 商品费 + 运费 + 税费
      */
     private Double shouldPayShopAmount;
+    /**
+     * 已经发货的商品数量
+     */
+    private Integer outStoreNum;
+    /**
+     * 子订单发货批次 默认值 = 0 即没过发货
+     */
+    private Integer outStoreTimes;
+    /**
+     * 发货状态:1待发货、2部分发货、3已发货
+     */
+    private Integer sendOutStatus;
+    /**
+     * 赠品数
+     */
+    private Integer presentNum;
     /**
      * 订单提交时间
      */
@@ -139,4 +154,12 @@ public class ShopOrderVo implements Serializable {
      * 发货物流记录
      */
     private List<LogisticsRecordVo> logisticsRecordList;
+    /**
+     * 收货地址
+     */
+    private OrderUserinfoVo userInfo;
+    /**
+     * (收款买家)收款状态:1待收款、2部分收款、3已收款
+     */
+    private Integer receiptStatus;
 }

+ 57 - 0
src/main/java/com/caimei365/order/service/ShipService.java

@@ -0,0 +1,57 @@
+package com.caimei365.order.service;
+
+import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.LogisticsDto;
+import com.caimei365.order.model.vo.CompanyVo;
+import com.caimei365.order.model.vo.ShopOrderVo;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/5
+ */
+public interface ShipService {
+    /**
+     * 供应商订单列表
+     * @param shopId         供应商Id
+     * @param sendOutStatus  发货状态
+     * @param payStatus      结算状态
+     * @param shopOrderNo    订单编号
+     * @param receiver       买家名称
+     * @param pageNum        页码
+     * @param pageSize       每页数量
+     */
+    ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, int pageNum, int pageSize);
+    /**
+     * 发货页面子订单数据
+     * @param shopOrderId 子订单Id
+     */
+    ResponseJson<ShopOrderVo> getShopOrderInfo(Integer shopOrderId);
+    /**
+     * 物流公司
+     * @param value 快递公司代码
+     */
+    ResponseJson<List<CompanyVo>> getLogisticsCompany(String value);
+    /**
+     * 发货
+     *
+     * @param logisticsDto {
+     *                     shopOrderId: 子订单Id,
+     *                     note: 备注信息,
+     *                     image: 图片备注以||隔开,
+     *                     logistics:[  // 物流信息
+     *                          {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'},
+     *                          {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'}
+     *                        ],
+     *                     products:[   // 商品信息
+     *                          {orderProductId:订单商品id,num:此次发货数量},
+     *                          {orderProductId:订单商品id,num:此次发货数量}
+     *                        ],
+     *                     }
+     */
+    ResponseJson<Integer> addLogistics(LogisticsDto logisticsDto);
+}

+ 1 - 1
src/main/java/com/caimei365/order/service/impl/AddressServiceImpl.java

@@ -108,7 +108,7 @@ public class AddressServiceImpl implements AddressService {
         address.setUserId(addressDto.getUserId());
         address.setTownId(addressDto.getTownId());
         address.setAddress(addressDto.getAddress());
-        address.setName(addressDto.getName());
+        address.setReceiver(addressDto.getReceiver());
         address.setMobile(addressDto.getMobile());
         if (null == address.getAddressId()) {
             // 新增地址

+ 7 - 6
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.components.OrderCommonService;
 import com.caimei365.order.components.ProductService;
+import com.caimei365.order.mapper.AddressMapper;
 import com.caimei365.order.mapper.BaseMapper;
 import com.caimei365.order.mapper.OrderClubMapper;
 import com.caimei365.order.mapper.OrderCommonMapper;
@@ -48,6 +49,8 @@ public class OrderClubServiceImpl implements OrderClubService {
     @Resource
     private BaseMapper baseMapper;
     @Resource
+    private AddressMapper addressMapper;
+    @Resource
     private OrderClubMapper orderClubMapper;
     @Resource
     private OrderCommonMapper orderCommonMapper;
@@ -152,11 +155,11 @@ public class OrderClubServiceImpl implements OrderClubService {
                 //已发货数量
                 orderProduct.setShipmentsNum(orderProduct.getNum() + orderProduct.getPresentNum() - orderProduct.getNotOutStore());
                 //已退货数量
-                Integer returnedNum = orderClubMapper.countReturnedNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
+                Integer returnedNum = orderCommonMapper.countReturnedNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
                 returnedNum = null != returnedNum ? returnedNum : 0;
                 orderProduct.setReturnedNum(returnedNum);
                 //已取消发货数量
-                Integer actualCancelNum = orderClubMapper.countActualCancelNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
+                Integer actualCancelNum = orderCommonMapper.countActualCancelNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
                 actualCancelNum = null != actualCancelNum ? actualCancelNum : 0;
                 orderProduct.setActualCancelNum(actualCancelNum);
                 //判断商品价格是否含税
@@ -182,9 +185,7 @@ public class OrderClubServiceImpl implements OrderClubService {
         List<ReturnedPurchaseVo> returnedPurchaseList = orderClubMapper.getReturnedPurchaseList(order.getOrderId());
         if (!returnedPurchaseList.isEmpty()) {
             AtomicDouble returnedPurchaseFee = new AtomicDouble(0d);
-            returnedPurchaseList.forEach(returnedPurchase -> {
-                returnedPurchaseFee.set(MathUtil.add(returnedPurchaseFee.get(), returnedPurchase.getRefundFee()).doubleValue());
-            });
+            returnedPurchaseList.forEach(returnedPurchase -> returnedPurchaseFee.set(MathUtil.add(returnedPurchaseFee.get(), returnedPurchase.getRefundFee()).doubleValue()));
             //退款总金额
             order.setReturnedPurchaseFee(returnedPurchaseFee.get());
         }
@@ -196,7 +197,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             clause = orderClubMapper.getClauseById(clauseId);
         }
         // 收货地址
-        OrderUserinfoVo userInfo = orderClubMapper.getOrderUserinfo(orderId);
+        OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(orderId);
 
         Map<String, Object> map = new HashMap<>();
         map.put("order", order);

+ 12 - 12
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -80,7 +80,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Override
     public ResponseJson<Map<String, Object>> payBeforeCheck(Integer orderId) {
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(orderId);
+        OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -130,7 +130,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Override
     public ResponseJson<Map<String, Object>> balanceDeduction(Integer orderId) {
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(orderId);
+        OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -223,7 +223,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Override
     public ResponseJson<Map<String, Object>> getCheckoutCounter(Integer orderId) {
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(orderId);
+        OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -280,7 +280,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Override
     public ResponseJson<String> getPayLink(PayLinkDto payLinkDto) {
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(payLinkDto.getOrderId());
+        OrderVo order = orderCommonMapper.getOrderByOrderId(payLinkDto.getOrderId());
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -343,7 +343,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         //链接状态,0成功
         int code = 0;
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(orderPayLink.getOrderId());
+        OrderVo order = orderCommonMapper.getOrderByOrderId(orderPayLink.getOrderId());
         // 支付记录
         List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(order.getOrderId(), order.getShopOrderIds());
         if (orderPayLink.getEffectiveTime().compareTo(new Date()) < 0) {
@@ -479,7 +479,7 @@ public class PayOrderServiceImpl implements PayOrderService {
      */
     private ResponseJson<JSONObject> toPayOrder(PayParamBo payParam, HttpHeaders headers) {
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(payParam.getOrderId());
+        OrderVo order = orderCommonMapper.getOrderByOrderId(payParam.getOrderId());
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -601,7 +601,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         //支付类型
         String payType = split[1];
         // 订单信息
-        OrderVo order = payOrderMapper.getOrderByOrderId(orderId);
+        OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
         if (null == order) {
             return "订单不存在";
         }
@@ -1118,7 +1118,7 @@ public class PayOrderServiceImpl implements PayOrderService {
             for (OrderReceiptRelationPo orderRelation : orderRelations) {
                 log.info("【延时分账】>>>>>>>>>>订单id:" + orderRelation.getOrderId() + ",进入延时分账");
                 // 订单信息
-                OrderVo order = payOrderMapper.getOrderByOrderId(orderRelation.getOrderId());
+                OrderVo order = orderCommonMapper.getOrderByOrderId(orderRelation.getOrderId());
                 PayParamBo payParam = new PayParamBo();
                 payParam.setPayAmount(MathUtil.mul(orderRelation.getAssociateAmount(), 100).intValue());
                 if (12 == orderRelation.getPayType()) {
@@ -1127,7 +1127,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                 }
                 List<SplitAccountPo> splitBillDetail = setSplitAccountDetail(order, payParam);
                 List<Map<String, String>> maps = new ArrayList<>();
-                List<ShopOrderVo> shopOrderList = payOrderMapper.getShopOrderListByOrderId(order.getOrderId());
+                List<ShopOrderVo> shopOrderList = orderCommonMapper.getShopOrderListByOrderId(order.getOrderId());
                 //供应商子商户总金额
                 for (ShopOrderVo shopOrder : shopOrderList) {
                     double shopTotalAmount = 0.00;
@@ -1223,7 +1223,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         // 待分账总金额
         double splitAmount = payAmount;
         // 总手续费
-        double procedureFee = 0.00;
+        double procedureFee;
         if ("UNIONPAY".equals(payParam.getPayWay())) {
             procedureFee = 8.00;
         } else {
@@ -1291,7 +1291,7 @@ public class PayOrderServiceImpl implements PayOrderService {
         }
         // 付供应商运费,是以供应商为单位的
         if (MathUtil.compare(splitAmount, 0) > 0) {
-            List<ShopOrderVo> shopOrderList = payOrderMapper.getShopOrderListByOrderId(order.getOrderId());
+            List<ShopOrderVo> shopOrderList = orderCommonMapper.getShopOrderListByOrderId(order.getOrderId());
             for (ShopOrderVo shopOrder : shopOrderList) {
                 // 运费
                 Double shopPostFee = shopOrder.getShopPostFee();
@@ -1366,7 +1366,7 @@ public class PayOrderServiceImpl implements PayOrderService {
             List<SplitAccountPo> splitAccountList = payOrderMapper.getSplitAccountList(mbOrderId);
             if (splitAccountList != null && splitAccountList.size() > 0) {
                 Integer orderId = splitAccountList.get(0).getOrderId();
-                List<ShopOrderVo> shopOrderList = payOrderMapper.getShopOrderListByOrderId(orderId);
+                List<ShopOrderVo> shopOrderList = orderCommonMapper.getShopOrderListByOrderId(orderId);
                 Integer shopOrderId = null;
                 String shopOrderNo = "";
                 for (SplitAccountPo account : splitAccountList) {

+ 338 - 0
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -0,0 +1,338 @@
+package com.caimei365.order.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.caimei365.order.mapper.AddressMapper;
+import com.caimei365.order.mapper.BaseMapper;
+import com.caimei365.order.mapper.OrderCommonMapper;
+import com.caimei365.order.mapper.ShipMapper;
+import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.LogisticsDto;
+import com.caimei365.order.model.po.LogisticsBatchPo;
+import com.caimei365.order.model.po.LogisticsInformationPo;
+import com.caimei365.order.model.po.LogisticsRecordPo;
+import com.caimei365.order.model.vo.*;
+import com.caimei365.order.service.RemoteCallService;
+import com.caimei365.order.service.ShipService;
+import com.caimei365.order.utils.ImageUtil;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+import static com.alibaba.fastjson.JSON.parseArray;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/5
+ */
+@Slf4j
+@Service
+public class ShipServiceImpl implements ShipService {
+    @Value("${caimei.wwwDomain}")
+    private String domain;
+    @Resource
+    private BaseMapper baseMapper;
+    @Resource
+    private ShipMapper shipMapper;
+    @Resource
+    private AddressMapper addressMapper;
+    @Resource
+    private OrderCommonMapper orderCommonMapper;
+    @Resource
+    private RemoteCallService remoteCallService;
+    /**
+     * 供应商订单列表
+     *
+     * @param shopId        供应商Id
+     * @param sendOutStatus 发货状态
+     * @param payStatus     结算状态
+     * @param shopOrderNo   订单编号
+     * @param receiver      买家名称(收货人)
+     * @param pageNum       页码
+     * @param pageSize      每页数量
+     */
+    @Override
+    public ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, int pageNum, int pageSize) {
+        // 分页请求数据
+        PageHelper.startPage(pageNum, pageSize);
+        List<ShopOrderVo> shopOrderList = shipMapper.getShopOrderList(shopId, sendOutStatus, payStatus, shopOrderNo, receiver);
+        shopOrderList.forEach(shopOrder -> {
+            if (null != shopOrder) {
+                setShopOrderInfo(shopOrder);
+            }
+        });
+        PageInfo<ShopOrderVo> pageInfo = new PageInfo(shopOrderList);
+        return ResponseJson.success(pageInfo);
+    }
+
+    /**
+     * 发货页面子订单数据
+     *
+     * @param shopOrderId 子订单Id
+     */
+    @Override
+    public ResponseJson<ShopOrderVo> getShopOrderInfo(Integer shopOrderId) {
+        ShopOrderVo shopOrder = shipMapper.getShopOrder(shopOrderId);
+        if (null != shopOrder) {
+            setShopOrderInfo(shopOrder);
+        }
+        return ResponseJson.success(shopOrder);
+    }
+
+
+    private void setShopOrderInfo(ShopOrderVo shopOrder) {
+        // 收货地址
+        OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(shopOrder.getOrderId());
+        shopOrder.setUserInfo(userInfo);
+        // (收款买家)收款状态:1待收款、2部分收款、3已收款
+        Integer receiptStatus = shipMapper.getOrderReceiptStatus(shopOrder.getOrderId());
+        //(收款买家)收款状态:1待收款、2部分收款、3已收款
+        shopOrder.setReceiptStatus(receiptStatus);
+        // 供应商名称
+        String shopName = baseMapper.getShopNameById(shopOrder.getShopId());
+        shopOrder.setShopName(shopName);
+
+        if (null != userInfo) {
+            String address = userInfo.getProvince() + userInfo.getCity() + userInfo.getTown() + userInfo.getAddress();
+            userInfo.setAddress(address);
+        }
+        List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(shopOrder.getShopOrderId());
+        orderProductList.forEach(orderProduct -> {
+            if (null != orderProduct) {
+                orderProduct.setImage(ImageUtil.getImageUrl("product", orderProduct.getImage(), domain));
+                //已发货数量
+                orderProduct.setShipmentsNum(orderProduct.getNum() + orderProduct.getPresentNum() - orderProduct.getNotOutStore());
+                //已退货数量
+                Integer returnedNum = orderCommonMapper.countReturnedNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
+                returnedNum = null != returnedNum ? returnedNum : 0;
+                orderProduct.setReturnedNum(returnedNum);
+                //已取消发货数量
+                Integer actualCancelNum = orderCommonMapper.countActualCancelNum(orderProduct.getShopOrderId(), orderProduct.getProductId());
+                actualCancelNum = null != actualCancelNum ? actualCancelNum : 0;
+                orderProduct.setActualCancelNum(actualCancelNum);
+            }
+        });
+        shopOrder.setOrderProductList(orderProductList);
+        shopOrder.setShopLogo(ImageUtil.getImageUrl("shopLogo", shopOrder.getShopLogo(), domain));
+        shopOrder.setOrderProductList(orderProductList);
+    }
+
+    /**
+     * 物流公司
+     *
+     * @param value 快递公司代码
+     */
+    @Override
+    public ResponseJson<List<CompanyVo>> getLogisticsCompany(String value) {
+        List<CompanyVo> companyList = shipMapper.getLogisticsCompany(value);
+        return ResponseJson.success(companyList);
+    }
+
+    /**
+     * 发货
+     *
+     * @param logisticsDto {
+     *                     shopOrderId: 子订单Id,
+     *                     note: 备注信息,
+     *                     image: 图片备注以||隔开,
+     *                     logistics:[  // 物流信息
+     *                          {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'},
+     *                          {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'}
+     *                        ],
+     *                     products:[   // 商品信息
+     *                          {orderProductId:订单商品id,num:此次发货数量},
+     *                          {orderProductId:订单商品id,num:此次发货数量}
+     *                        ],
+     *                     }
+     */
+    @Override
+    public ResponseJson<Integer> addLogistics(LogisticsDto logisticsDto) {
+        JSONArray logistics = null;
+        JSONArray products = null;
+        try {
+            logistics = parseArray(logisticsDto.getLogistics());
+            products = parseArray(logisticsDto.getProducts());
+        } catch (Exception e) {
+            log.info("发货参数:" + logisticsDto.toString());
+            log.error("【发货】>>>发货参数解析异常try-catch:", e);
+            return ResponseJson.error("发货参数解析异常!", null);
+        }
+
+        String image = logisticsDto.getImage();
+        String note = logisticsDto.getNote();
+        ShopOrderVo shopOrder = shipMapper.getShopOrder(logisticsDto.getShopOrderId());
+        if (null == shopOrder) {
+            return ResponseJson.error("订单异常,shopOrderId:" + logisticsDto.getShopOrderId(), null);
+        }
+        // 本次发货数量
+        int shipmentsNum = 0;
+        Date date = new Date();
+        // 统计物流批次
+        int batchCount = shipMapper.countLogisticsBatch(shopOrder.getOrderId());
+        // 物流批次
+        LogisticsBatchPo logisticsBatch = new LogisticsBatchPo();
+        if (batchCount > 0) {
+            logisticsBatch.setOutStoreTimes(batchCount + 1);
+        } else {
+            logisticsBatch.setOutStoreTimes(0);
+        }
+        logisticsBatch.setShopOrderId(shopOrder.getShopOrderId());
+        logisticsBatch.setOrderId(shopOrder.getOrderId());
+        logisticsBatch.setStatus("0");
+        logisticsBatch.setMailer("1");
+        logisticsBatch.setShopId(shopOrder.getShopId());
+        logisticsBatch.setUpdateDate(date);
+        logisticsBatch.setDeliveryTime(date);
+        logisticsBatch.setRemarkImage(image);
+        logisticsBatch.setRemark(note);
+        // 保存物流批次
+        shipMapper.insertLogisticsBatch(logisticsBatch);
+
+        /* products:[   // 发货商品信息
+         *      {orderProductId:订单商品id,num:此次发货数量},
+         *      {orderProductId:订单商品id,num:此次发货数量}]
+         */
+        for (Object productObj: products) {
+            JSONObject productInfo = (JSONObject) productObj;
+            Integer orderProductId = (Integer) productInfo.get("orderProductId");
+            Integer num = (Integer) productInfo.get("num");
+            if (null == num || 0 == num) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return ResponseJson.error("发货数量异常!", null);
+            }
+            OrderProductVo orderProduct = shipMapper.getOrderProductById(orderProductId);
+            if (null == orderProduct || orderProduct.getNotOutStore() < num) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return ResponseJson.error("订单商品异常,orderProductId:" + orderProductId, null);
+            }
+            LogisticsRecordPo logisticsRecord = new LogisticsRecordPo();
+            logisticsRecord.setLogisticsBatchId(logisticsBatch.getId());
+            logisticsRecord.setShopOrderId(orderProduct.getShopOrderId());
+            logisticsRecord.setOrderId(orderProduct.getOrderId());
+            logisticsRecord.setOrderProductId(orderProductId);
+            logisticsRecord.setBuyNum((orderProduct.getNum() + orderProduct.getPresentNum()));
+            logisticsRecord.setNum(num);
+            logisticsRecord.setProductId(orderProduct.getProductId());
+            logisticsRecord.setProductName(orderProduct.getName());
+            logisticsRecord.setImage(orderProduct.getImage());
+            // 保存 发货物流记录
+            shipMapper.insertLogisticsRecord(logisticsRecord);
+            // 保存订单商品未出库数量
+            int notOutStore = orderProduct.getNotOutStore() - num;
+            shipMapper.updateNotOutStore(orderProductId, notOutStore);
+        }
+
+        /* logistics:[  // 物流跟踪信息
+         *   {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'},
+         *   {number:'45646464646',logisticsCompanyName:'顺丰物流',logisticsCompanyCode:'物流英文代码'}]
+         */
+        for (Object logisticObj: logistics) {
+            JSONObject logistic = (JSONObject) logisticObj;
+            String number = (String) logistic.get("number");
+            String logisticsCompanyName = (String) logistic.get("logisticsCompanyName");
+            String logisticsCompanyCode = (String) logistic.get("logisticsCompanyCode");
+            if (StringUtils.isBlank(number) || StringUtils.isBlank(logisticsCompanyName) || StringUtils.isBlank(logisticsCompanyCode)) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return ResponseJson.error("物流信息参数异常!", null);
+            }
+            LogisticsInformationPo logisticsInformation = new LogisticsInformationPo();
+            logisticsInformation.setLogisticsBatchId(logisticsBatch.getId());
+            logisticsInformation.setType("1");
+            logisticsInformation.setShopOrderId(shopOrder.getShopOrderId());
+            logisticsInformation.setOrderId(shopOrder.getOrderId());
+            logisticsInformation.setNu(number);
+            logisticsInformation.setLogisticsCompanyName(logisticsCompanyName);
+            logisticsInformation.setLogisticsCompanyCode(logisticsCompanyCode);
+            logisticsInformation.setShopId(shopOrder.getShopId());
+            logisticsInformation.setUpdateDate(date);
+            // 保存 物流跟踪信息
+            shipMapper.insertLogisticsInformation(logisticsInformation);
+        }
+
+        /*
+         * 修改子订单发货状态
+         */
+        if (null == shopOrder.getOutStoreNum()) {
+            shopOrder.setOutStoreNum(shipmentsNum);
+        } else {
+            shopOrder.setOutStoreNum(shopOrder.getOutStoreNum() + shipmentsNum);
+        }
+        shopOrder.setOutStoreTimes(logisticsBatch.getOutStoreTimes());
+        shopOrder.setPresentNum(shopOrder.getPresentNum() == null ? 0 : shopOrder.getPresentNum());
+        int productNum = shopOrder.getPresentNum() + shopOrder.getItemCount();
+        if (productNum > shopOrder.getOutStoreNum()) {
+            shopOrder.setSendOutStatus(2);
+        } else if (productNum == shopOrder.getOutStoreNum()) {
+            shopOrder.setSendOutStatus(3);
+        } else {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return ResponseJson.error("发货数量异常!", null);
+        }
+        shopOrder.setSplitFlag(0);
+        shipMapper.updateShopOrderShip(shopOrder.getShopOrderId(), shopOrder.getOutStoreNum(), shopOrder.getOutStoreTimes(), shopOrder.getSendOutStatus());
+
+        /*
+         * 修改主订单发货状态
+         */
+        OrderVo order = orderCommonMapper.getOrderByOrderId(shopOrder.getOrderId());
+        // 主订单发货状态
+        Integer sendOutStatus = order.getSendOutStatus();
+        // 发货状态:1待发货、2部分发货、3已发货
+        List<Integer> allShopSendOutStatus = shipMapper.getAllSendOutStatus(shopOrder.getOrderId());
+        String statusSuffix = "";
+        if (allShopSendOutStatus.stream().allMatch(s -> 3 == s)) {
+            // 所有的子订单都已经完成发货
+            statusSuffix = "3";
+            order.setSendOutStatus(3);
+        } else {
+            statusSuffix = "2";
+            order.setSendOutStatus(2);
+        }
+        if (order.getStatus() >= 10) {
+            String statusTmp = order.getStatus().toString().charAt(0) + statusSuffix;
+            order.setStatus(Integer.valueOf(statusTmp));
+        }
+        // 修改主订单发货状态
+        shipMapper.updateOrderShip(order.getOrderId(), order.getSendOutStatus(), order.getStatus());
+        //发货短信推送
+        String bindMobile = baseMapper.getBindMobileByUserId(order.getUserId());
+        if (StringUtils.isNotBlank(bindMobile) && 0 == order.getRebateFlag()) {
+            boolean sendSms = false;
+            if (1 == sendOutStatus && 2 == order.getSendOutStatus()){
+                String shortLink = remoteCallService.getShortLink(8, 7, domain + "/user/order/detail.html?orderId=" + order.getOrderId());
+                String content = "您的订单(订单编号:" + order.getOrderNo() + ")已部分发货。您可关注采美公众号或者访问采美微信小程序和网站查看订单。平台公众号:微信搜索“采美365网”; " +
+                        "微信小程序:微信搜索“采美采购商城”;网址:www.caimei365.com/t/" + shortLink;
+                sendSms = remoteCallService.getSendSms(7, bindMobile, content);
+            } else if (3 == order.getSendOutStatus()) {
+                String shortLink = remoteCallService.getShortLink(8, 8, domain + "/user/order/detail.html?orderId=" + order.getOrderId());
+                String content = "您的订单(订单编号:" + order.getOrderNo() + ")已发货完毕。您可关注采美公众号或者访问采美微信小程序和网站查看订单。平台公众号:微信搜索“采美365网”; " +
+                        "微信小程序:微信搜索“采美采购商城”;网址:www.caimei365.com/t/" + shortLink;
+                sendSms = remoteCallService.getSendSms(8, bindMobile, content);
+            }
+            if (!sendSms) {
+                log.info("发货短信推送失败,orderId>>>>" + order.getOrderId());
+            }
+        }
+        return ResponseJson.success(logisticsBatch.getId());
+    }
+
+
+
+
+
+
+
+
+
+
+}

+ 7 - 9
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -271,7 +271,7 @@ public class SubmitServiceImpl implements SubmitService {
     }
 
     @Transactional
-    private ResponseJson<Map<String, Object>> saveOrder(OrderParamBo orderParamBo) {
+    public ResponseJson<Map<String, Object>> saveOrder(OrderParamBo orderParamBo) {
         log.info("******************** 提交订单逻辑处理 start *******************");
         /*
          * 初始化主订单
@@ -378,7 +378,7 @@ public class SubmitServiceImpl implements SubmitService {
                 return ResponseJson.error("订单商品数据异常!", null);
             }
             // 供应商名称
-            String shopName = submitMapper.getShopNameById(shopId);
+            String shopName = baseMapper.getShopNameById(shopId);
             /*
              * 初始化子订单
              */
@@ -741,9 +741,7 @@ public class SubmitServiceImpl implements SubmitService {
                     if (promotions.getMode() == 2 || promotions.getMode() == 3) {
                         // 实际该促销商品总额
                         AtomicDouble tempProductFee = new AtomicDouble(0);
-                        promotions.getProductList().forEach(item -> {
-                            tempProductFee.set(MathUtil.add(tempProductFee.get(), MathUtil.mul(item.getNumber(), item.getPrice())).doubleValue());
-                        });
+                        promotions.getProductList().forEach(item -> tempProductFee.set(MathUtil.add(tempProductFee.get(), MathUtil.mul(item.getNumber(), item.getPrice())).doubleValue()));
                         //判断是否达到满减满赠要求
                         if (MathUtil.compare(tempProductFee.get(), promotions.getTouchPrice()) >= 0) {
                             if (promotions.getMode() == 2) {
@@ -814,7 +812,7 @@ public class SubmitServiceImpl implements SubmitService {
         // 余额支付标识,0不使用,1使用
         if (1 == orderParamBo.getBalancePayFlag()) {
             // 抵扣后用户剩余可用余额
-            Double lastAbleUserMoney = orderParamBo.getAbleUserMoney();
+            Double lastAbleUserMoney;
             // 抵扣后账户余额
             Double lastUserMoney = orderParamBo.getUserMoney();
             // 部分抵扣
@@ -1094,8 +1092,8 @@ public class SubmitServiceImpl implements SubmitService {
             userInfo.setOrderId(mainOrder.getOrderId());
             userInfo.setClubId(mainOrder.getClubId());
             userInfo.setUserId(mainOrder.getUserId());
-            userInfo.setUserName(userName);
-            userInfo.setName(address.getName());
+            userInfo.setName(userName);
+            userInfo.setReceiver(address.getReceiver());
             userInfo.setMobile(address.getMobile());
             userInfo.setTownId(address.getTownId());
             userInfo.setProvince(address.getProvince());
@@ -1337,7 +1335,7 @@ public class SubmitServiceImpl implements SubmitService {
         // 获取数据库商品信息
         OrderProductPo rechargeProduct = submitMapper.getProductDetails(6060);
         // 供应商名称
-        String shopName = submitMapper.getShopNameById(rechargeProduct.getShopId());
+        String shopName = baseMapper.getShopNameById(rechargeProduct.getShopId());
         /*
          * 初始化子订单
          */

+ 3 - 3
src/main/resources/bootstrap.yml

@@ -1,5 +1,5 @@
 server:
-  port: 18012
+  port: 18014
 
 # 指定当前服务的名称,这个名称会注册到注册中心
 spring:
@@ -9,7 +9,7 @@ spring:
     config:                             # Config客户端配置
       profile: @activatedProperties@    # 启用配置后缀名称
       label: master                     # 分支名称
-      # uri: http://localhost:18001
+      uri: http://localhost:18001
       # uri: http://47.119.112.46:18001       # 配置中心地址
-      uri: http://120.79.162.1:18001          # 配置中心地址(正式环境)
+      # uri: http://120.79.162.1:18001          # 配置中心地址(正式环境)
       name: order                       # 配置文件名称

+ 23 - 5
src/main/resources/mapper/AddressMapper.xml

@@ -5,7 +5,7 @@
         SELECT
             a.addressID AS addressId,
             a.userID AS userId,
-            a.shouHuoRen AS name,
+            a.shouHuoRen AS receiver,
             a.townID AS townId,
             a.address,
             a.mobile,
@@ -38,7 +38,7 @@
         SELECT
             a.addressID AS addressId,
             a.userID AS userId,
-            a.shouHuoRen AS name,
+            a.shouHuoRen AS receiver,
             a.townID AS townId,
             a.address,
             a.mobile,
@@ -57,7 +57,7 @@
     </update>
     <update id="updateAddress" parameterType="com.caimei365.order.model.po.AddressPo">
         UPDATE address SET
-            shouHuoRen =#{name},
+            shouHuoRen =#{receiver},
             townID = #{townId},
             address = #{address},
             mobile = #{mobile},
@@ -66,10 +66,28 @@
     </update>
     <insert id="insertAddress" keyColumn="addressID" keyProperty="addressId" parameterType="com.caimei365.order.model.po.AddressPo" useGeneratedKeys="true">
         INSERT INTO address (userID, shouHuoRen, townID, address, mobile, defaultFlag)
-        VALUES (#{userId},#{name},#{townId},#{address},#{mobile},#{defaultFlag})
+        VALUES (#{userId},#{receiver},#{townId},#{address},#{mobile},#{defaultFlag})
     </insert>
     <delete id="deleteAddress">
         DELETE FROM address WHERE addressID = #{addressId} AND userID = #{userId}
     </delete>
-
+    <select id="getOrderUserinfo" resultType="com.caimei365.order.model.vo.OrderUserinfoVo">
+        SELECT
+        id,
+        orderId,
+        clubId,
+        userId,
+        name,
+        shouHuoRen AS receiver,
+        mobile,
+        phone,
+        postalCode,
+        townId,
+        province,
+        city,
+        town,
+        address
+        FROM bp_order_userinfo
+        WHERE orderId = #{orderId}
+    </select>
 </mapper>

+ 3 - 22
src/main/resources/mapper/BaseMapper.xml

@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.order.mapper.BaseMapper">
+    <select id="getShopNameById" resultType="java.lang.String">
+        SELECT `name` FROM shop WHERE shopID = #{shopId}
+    </select>
     <insert id="insertUserInvoiceByUserId" parameterType="com.caimei365.order.model.vo.InvoiceVo">
         INSERT INTO cm_user_invoiceinfo (userId, invoiceTitle, corporationTaxNum, registeredAddress, registeredPhone, bankAccountNo, openBank)
         VALUES(#{userId}, #{invoiceTitle}, #{corporationTaxNum},#{registeredAddress}, #{registeredPhone},#{bankAccountNo}, #{openBank})
@@ -209,26 +212,4 @@
         INSERT INTO cm_user_balance_record (userId, type, balanceType, addDate, amount, orderId, remark, delFlag)
         VALUES (#{userId}, #{type}, #{balanceType}, #{addDate}, #{amount}, #{orderId}, #{remark}, #{delFlag})
     </insert>
-    <!--    <select id="getAddressDetailById" resultType="com.caimei365.order.model.vo.AddressVo">-->
-<!--        SELECT-->
-<!--            a.addressID AS addressId,-->
-<!--            a.userID AS userId,-->
-<!--            a.shouHuoRen AS name,-->
-<!--            p.provinceID AS provinceId,-->
-<!--            p.name AS province,-->
-<!--            c.cityID AS cityId,-->
-<!--            c.name AS city,-->
-<!--            a.townID AS townId,-->
-<!--            t.name AS town,-->
-<!--            a.address,-->
-<!--            a.mobile,-->
-<!--            a.defaultFlag-->
-<!--        FROM address a-->
-<!--        LEFT JOIN town t ON t.townID = a.townID-->
-<!--        LEFT JOIN city c ON c.cityID = t.cityID-->
-<!--        LEFT JOIN province p ON p.provinceID = c.provinceID-->
-<!--        WHERE a.addressID = #{addressId}-->
-<!--    </select>-->
-
-
 </mapper>

+ 0 - 35
src/main/resources/mapper/OrderClubMapper.xml

@@ -357,22 +357,6 @@
         WHERE userId = #{userId}
         ORDER BY id DESC
     </select>
-    <select id="countReturnedNum" resultType="java.lang.Integer">
-        SELECT SUM(crpp.actualReturnedNum)
-        FROM cm_returned_purchase_product crpp
-        LEFT JOIN cm_returned_purchase rp ON rp.id = crpp.returnedID
-        WHERE crpp.productID = #{productId}
-        AND crpp.shopOrderID = #{shopOrderId}
-        AND rp.status = '2' AND rp.delFlag = '0'
-    </select>
-    <select id="countActualCancelNum" resultType="java.lang.Integer">
-        SELECT SUM(crpp.actualCancelNum)
-        FROM cm_returned_purchase_product crpp
-        LEFT JOIN cm_returned_purchase rp ON rp.id = crpp.returnedID
-        WHERE crpp.productID = #{productId}
-        AND crpp.shopOrderID = #{shopOrderId}
-        AND rp.status = '2' AND rp.delFlag = '0'
-    </select>
     <select id="getReturnedPurchaseList" resultType="com.caimei365.order.model.vo.ReturnedPurchaseVo">
         SELECT
             id,
@@ -424,25 +408,6 @@
         FROM bp_clause
         where id = #{clauseId}
     </select>
-    <select id="getOrderUserinfo" resultType="com.caimei365.order.model.vo.OrderUserinfoVo">
-        SELECT
-            id,
-            orderId,
-            clubId,
-            userId,
-            name AS userName,
-            shouHuoRen AS name,
-            mobile,
-            phone,
-            postalCode,
-            townId,
-            province,
-            city,
-            town,
-            address
-        FROM bp_order_userinfo
-        WHERE orderId = #{orderId}
-    </select>
     <select id="getLogisticsBatchList" resultType="com.caimei365.order.model.vo.LogisticsBatchVo">
         SELECT
             id,

+ 97 - 0
src/main/resources/mapper/OrderCommonMapper.xml

@@ -222,4 +222,101 @@
         WHERE orderID = #{orderId}
         ORDER BY shopID ASC, productID ASC
     </select>
+    <select id="countReturnedNum" resultType="java.lang.Integer">
+        SELECT SUM(crpp.actualReturnedNum)
+        FROM cm_returned_purchase_product crpp
+        LEFT JOIN cm_returned_purchase rp ON rp.id = crpp.returnedID
+        WHERE crpp.productID = #{productId}
+        AND crpp.shopOrderID = #{shopOrderId}
+        AND rp.status = '2' AND rp.delFlag = '0'
+    </select>
+    <select id="countActualCancelNum" resultType="java.lang.Integer">
+        SELECT SUM(crpp.actualCancelNum)
+        FROM cm_returned_purchase_product crpp
+        LEFT JOIN cm_returned_purchase rp ON rp.id = crpp.returnedID
+        WHERE crpp.productID = #{productId}
+        AND crpp.shopOrderID = #{shopOrderId}
+        AND rp.status = '2' AND rp.delFlag = '0'
+    </select>
+    <select id="getOrderByOrderId" resultType="com.caimei365.order.model.vo.OrderVo">
+        SELECT
+        orderID AS orderId,
+        orderSource,
+        orderNo,
+        userID AS userId,
+        clubID AS clubId,
+        shopOrderIds,
+        buyUserID AS buyUserId,
+        orderTime AS orderTime,
+        updateDate AS updateDate,
+        delFlag,
+        userBeans,
+        orderType,
+        orderSubmitType,
+        confirmFlag,
+        onlinePayFlag,
+        splitFlag,
+        payFlag,
+        receiptStatus,
+        payStatus,
+        zeroCostFlag,
+        sendOutStatus,
+        refundType,
+        affirmPaymentFlag,
+        productCount,
+        presentCount,
+        promotionalGiftsCount,
+        hasActProduct,
+        promotionFullReduction,
+        secondHandOrderFlag,
+        invoiceFlag,
+        freePostFlag AS postageFlag,
+        freight AS postage,
+        productTotalFee,
+        orderTotalFee,
+        payTotalFee,
+        payableAmount,
+        balancePayFee,
+        status,
+        paySuccessCounter,
+        confirmTime,
+        payTime,
+        rebateFlag,
+        clauseID AS clauseId,
+        clauseName
+        FROM cm_order
+        WHERE orderID = #{orderId}
+    </select>
+    <select id="getShopOrderListByOrderId" resultType="com.caimei365.order.model.vo.ShopOrderVo">
+        SELECT
+        shopOrderId,
+        shopOrderNo,
+        orderID AS orderId,
+        orderNo,
+        shopID AS shopId,
+        shopName,
+        note,
+        userID AS userId,
+        clubID AS clubId,
+        spID AS spId,
+        orderPromotionsId,
+        promotionFullReduction,
+        brokerage,
+        canRefundAmount,
+        itemCount,
+        totalAmount,
+        productAmount,
+        needPayAmount,
+        shopProductAmount,
+        shopPostFee,
+        shopTaxFee,
+        shouldPayShopAmount,
+        orderTime,
+        orderSubmitType,
+        payStatus,
+        splitFlag
+        FROM cm_shop_order
+        WHERE cso.delFlag = 0
+        AND orderID = #{orderId}
+    </select>
 </mapper>

+ 0 - 80
src/main/resources/mapper/PayOrderMapper.xml

@@ -85,55 +85,6 @@
     <select id="getPayOnLineSwitch" resultType="java.lang.Integer">
         SELECT STATUS FROM cm_pay_online_switch WHERE id=1
     </select>
-    <select id="getOrderByOrderId" resultType="com.caimei365.order.model.vo.OrderVo">
-        SELECT
-            orderID AS orderId,
-            orderSource,
-            orderNo,
-            userID AS userId,
-            clubID AS clubId,
-            shopOrderIds,
-            buyUserID AS buyUserId,
-            orderTime AS orderTime,
-            updateDate AS updateDate,
-            delFlag,
-            userBeans,
-            orderType,
-            orderSubmitType,
-            confirmFlag,
-            onlinePayFlag,
-            splitFlag,
-            payFlag,
-            receiptStatus,
-            payStatus,
-            zeroCostFlag,
-            sendOutStatus,
-            refundType,
-            affirmPaymentFlag,
-            productCount,
-            presentCount,
-            promotionalGiftsCount,
-            hasActProduct,
-            promotionFullReduction,
-            secondHandOrderFlag,
-            invoiceFlag,
-            freePostFlag AS postageFlag,
-            freight AS postage,
-            productTotalFee,
-            orderTotalFee,
-            payTotalFee,
-            payableAmount,
-            balancePayFee,
-            status,
-            paySuccessCounter,
-            confirmTime,
-            payTime,
-            rebateFlag,
-            clauseID AS clauseId,
-            clauseName
-        FROM cm_order
-        WHERE orderID = #{orderId}
-    </select>
     <select id="getRefundCount" resultType="java.lang.Integer">
         SELECT COUNT(*)
         FROM cm_returned_purchase
@@ -200,37 +151,6 @@
         AND mbOrderId = #{mbOrderId}
         GROUP BY shopId
     </select>
-    <select id="getShopOrderListByOrderId" resultType="com.caimei365.order.model.vo.ShopOrderVo">
-        SELECT
-            shopOrderNo,
-            orderID AS orderId,
-            orderNo,
-            shopID AS shopId,
-            shopName,
-            note,
-            userID AS userId,
-            clubID AS clubId,
-            spID AS spId,
-            orderPromotionsId,
-            promotionFullReduction,
-            brokerage,
-            canRefundAmount,
-            itemCount,
-            totalAmount,
-            productAmount,
-            needPayAmount,
-            shopProductAmount,
-            shopPostFee,
-            shopTaxFee,
-            shouldPayShopAmount,
-            orderTime,
-            orderSubmitType,
-            payStatus,
-            splitFlag
-        FROM cm_shop_order
-        WHERE cso.delFlag = 0
-        AND orderID = #{orderId}
-    </select>
     <select id="getPaidShopAmount" resultType="java.lang.Double">
         SELECT SUM(payAmount)
         FROM cm_pay_shop_record

+ 188 - 0
src/main/resources/mapper/ShipMapper.xml

@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei365.order.mapper.ShipMapper">
+    <insert id="insertLogisticsBatch" keyColumn="id" keyProperty="id" parameterType="com.caimei365.order.model.po.LogisticsBatchPo" useGeneratedKeys="true">
+        INSERT INTO cm_logistics_batch (id, shopOrderID, orderID, outStoreTimes, status, mailer, shopID,
+                                        updateDate, deliveryTime, remarkImage, remark)
+        VALUES ( #{id}, #{shopOrderId}, #{orderId}, #{outStoreTimes}, #{status}, #{mailer}, #{shopId},
+                #{updateDate}, #{deliveryTime}, #{remarkImage}, #{remark})
+    </insert>
+    <insert id="insertLogisticsRecord" keyColumn="id" keyProperty="id" parameterType="com.caimei365.order.model.po.LogisticsRecordPo" useGeneratedKeys="true">
+        INSERT INTO cm_logistics_record (logisticsBatchID, shopOrderID, orderID, orderProductID, buyNum, num, productID, productName, image)
+        VALUES (#{logisticsBatchId}, #{shopOrderId}, #{orderId}, #{orderProductId}, #{buyNum}, #{num}, #{productId}, #{productName}, #{image})
+    </insert>
+    <insert id="insertLogisticsInformation" keyColumn="id" keyProperty="id" parameterType="com.caimei365.order.model.po.LogisticsInformationPo" useGeneratedKeys="true">
+        INSERT INTO logistics_information (logisticsBatchID, type, shopOrderID, orderID, nu, logisticsCompanyName, logisticsCompanyCode, shopID, updateDate)
+        VALUES (#{logisticsBatchId}, #{type}, #{shopOrderId}, #{orderId}, #{nu}, #{logisticsCompanyName}, #{logisticsCompanyCode}, #{shopId}, #{updateDate})
+    </insert>
+    <update id="updateNotOutStore">
+        UPDATE cm_order_product SET notOutStore = #{notOutStore} WHERE orderProductID = #{orderProductId}
+    </update>
+    <update id="updateShopOrderShip">
+        UPDATE cm_shop_order SET
+            outStoreNum = #{outStoreNum}, outStoreTimes = #{outStoreTimes}, sendOutStatus = #{sendOutStatus}
+        WHERE shopOrderID = #{shopOrderId}
+    </update>
+    <update id="updateOrderShip">
+        UPDATE cm_order SET  sendOutStatus = #{sendOutStatus}, status = #{status}
+        WHERE orderID = #{orderId}
+    </update>
+    <select id="getShopOrderList" resultType="com.caimei365.order.model.vo.ShopOrderVo">
+        SELECT
+            shopOrderId,
+            shopOrderNo,
+            orderID AS orderId,
+            orderNo,
+            shopID AS shopId,
+            shopName,
+            note,
+            userID AS userId,
+            clubID AS clubId,
+            spID AS spId,
+            orderPromotionsId,
+            promotionFullReduction,
+            brokerage,
+            canRefundAmount,
+            itemCount,
+            totalAmount,
+            productAmount,
+            needPayAmount,
+            shopProductAmount,
+            shopPostFee,
+            shopTaxFee,
+            shouldPayShopAmount,
+            orderTime,
+            orderSubmitType,
+            payStatus,
+            splitFlag
+        FROM cm_shop_order a
+        LEFT JOIN bp_order_userinfo ou ON  ou.orderId=a.orderId
+        LEFT JOIN cm_order o ON a.orderID=o.orderID
+        <where>
+            <if test="shopOrderNo != null and shopOrderNo != ''">
+                AND a.shopOrderNo = #{shopOrderNo}
+            </if>
+            <if test="sendOutStatus != null and sendOutStatus != ''">
+                <if test="sendOutStatus == 1 ">
+                    AND (a.sendOutStatus = 1 or a.sendOutStatus is null )
+                </if>
+                <if test="sendOutStatus != 1 ">
+                    AND a.sendOutStatus = #{sendOutStatus}
+                </if>
+            </if>
+            <if test="payStatus != null and payStatus != ''">
+                <if test="payStatus == 1 ">
+                    AND (a.payStatus = 1 or a.payStatus is null )
+                </if>
+                <if test="payStatus != 1 ">
+                    AND a.payStatus = #{payStatus}
+                </if>
+            </if>
+            <if test="receiver != null and receiver != ''">
+                AND ou.shouHuoRen like concat('%',#{receiver},'%')
+            </if>
+            AND o.delFlag='0'
+            AND o.status NOT IN(0,6)
+            AND a.delFlag='0'
+            AND a.shopID=#{shopId}
+        </where>
+        ORDER BY a.orderTime DESC
+    </select>
+    <select id="getShopOrder" resultType="com.caimei365.order.model.vo.ShopOrderVo">
+        SELECT
+            shopOrderId,
+            shopOrderNo,
+            orderID AS orderId,
+            orderNo,
+            shopID AS shopId,
+            shopName,
+            note,
+            userID AS userId,
+            clubID AS clubId,
+            spID AS spId,
+            orderPromotionsId,
+            promotionFullReduction,
+            brokerage,
+            canRefundAmount,
+            itemCount,
+            totalAmount,
+            productAmount,
+            needPayAmount,
+            shopProductAmount,
+            shopPostFee,
+            shopTaxFee,
+            shouldPayShopAmount,
+            outStoreNum,
+            presentNum,
+            orderTime,
+            orderSubmitType,
+            payStatus,
+            splitFlag
+        FROM cm_shop_order
+        WHERE shopOrderID = #{shopOrderId} AND delFlag = '0'
+    </select>
+    <select id="getOrderReceiptStatus" resultType="java.lang.Integer">
+        SELECT receiptStatus FROM cm_order
+        WHERE orderID = #{orderId} AND delFlag = '0'
+    </select>
+    <select id="getLogisticsCompany" resultType="com.caimei365.order.model.vo.CompanyVo">
+        SELECT id, value, label
+        FROM sys_dict	WHERE TYPE= "kd_type"
+        <if test="value != null and value != ''">
+            AND value = #{value}
+        </if>
+    </select>
+    <select id="countLogisticsBatch" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM cm_logistics_batch WHERE orderID= #{orderId}
+    </select>
+    <select id="getOrderProductById" resultType="com.caimei365.order.model.vo.OrderProductVo">
+        SELECT
+            cop.orderID AS orderId,
+            cop.orderNo,
+            cop.shopOrderID AS shopOrderId,
+            cop.shopOrderNo,
+            cop.orderPromotionsId,
+            cop.productId,
+            cop.shopId,
+            cop.name,
+            cop.image,
+            cop.price1 AS price,
+            cop.shopName,
+            cop.costPrice,
+            cop.normalPrice,
+            cop.ladderPriceFlag,
+            cop.discountPrice,
+            cop.discount,
+            cop.totalAmount,
+            cop.totalFee,
+            cop.shouldPayFee,
+            cop.productUnit,
+            cop.num,
+            cop.presentNum,
+            cop.discountFee,
+            cop.includedTax,
+            cop.invoiceType,
+            cop.taxRate,
+            cop.addedValueTax,
+            cop.totalAddedValueTax,
+            cop.singleShouldPayTotalTax,
+            cop.shouldPayTotalTax,
+            cop.shopProductAmount,
+            cop.singleShopFee,
+            cop.shopFee,
+            cop.singleOtherFee,
+            cop.otherFee,
+            cop.singleCmFee,
+            cop.cmFee,
+            cop.payStatus,
+            cop.buyAgainFlag,
+            cop.notOutStore,
+            cop.isActProduct AS actProduct
+        FROM cm_order_product cop
+        WHERE cop.orderProductID = #{orderProductId}
+    </select>
+    <select id="getAllSendOutStatus" resultType="java.lang.Integer">
+        SELECT sendOutStatus FROM cm_shop_order
+        WHERE cso.delFlag = 0 AND orderID = #{orderId}
+    </select>
+</mapper>

+ 2 - 5
src/main/resources/mapper/SubmitMapper.xml

@@ -60,7 +60,7 @@
     <insert id="insertOrderUserInfo" parameterType="com.caimei365.order.model.po.OrderUserInfoPo">
         INSERT INTO bp_order_userinfo (orderId, clubId, userId, name, shouHuoRen, mobile,
                                         addressId, townId, province, city, town, address)
-        VALUES (#{orderId}, #{clubId}, #{userId}, #{userName}, #{name}, #{mobile},
+        VALUES (#{orderId}, #{clubId}, #{userId}, #{name}, #{receiver}, #{mobile},
                 #{addressId}, #{townId}, #{province}, #{city}, #{town}, #{address})
     </insert>
     <update id="updateUserMoney">
@@ -89,9 +89,6 @@
         FROM user
         WHERE userID = #{userId}
     </select>
-    <select id="getShopNameById" resultType="java.lang.String">
-        SELECT `name` FROM shop WHERE shopID = #{shopId}
-    </select>
     <select id="getProductDetails" resultType="com.caimei365.order.model.po.OrderProductPo">
         SELECT
             p.productID AS productId,
@@ -120,7 +117,7 @@
         SELECT
         a.addressID AS addressId,
         a.userID AS userId,
-        a.shouHuoRen AS name,
+        a.shouHuoRen AS receiver,
         a.townID AS townId,
         a.address,
         a.mobile,