zhijiezhao 2 tahun lalu
induk
melakukan
f0b1d3338f
37 mengubah file dengan 1076 tambahan dan 378 penghapusan
  1. 7 0
      pom.xml
  2. 1 1
      src/main/java/com/caimei/modules/groupbuy/service/ProcureService.java
  3. 1 1
      src/main/java/com/caimei/modules/order/constant/Constant.java
  4. 35 27
      src/main/java/com/caimei/modules/order/controller/CmOrderRemarkController.java
  5. 1 0
      src/main/java/com/caimei/modules/order/controller/OrderPayShopController.java
  6. 25 28
      src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java
  7. 15 3
      src/main/java/com/caimei/modules/order/dao/CmOrderRemarkDao.java
  8. 8 1
      src/main/java/com/caimei/modules/order/dao/NewOrderDao.java
  9. 4 4
      src/main/java/com/caimei/modules/order/dao/PayShopDao.java
  10. 19 7
      src/main/java/com/caimei/modules/order/entity/CmOrderRemark.java
  11. 2 0
      src/main/java/com/caimei/modules/order/entity/CmReceiptOrderRelation.java
  12. 2 0
      src/main/java/com/caimei/modules/order/entity/NewOrder.java
  13. 2 3
      src/main/java/com/caimei/modules/order/entity/NewShopOrder.java
  14. 5 0
      src/main/java/com/caimei/modules/order/entity/OrderPayShopDetail.java
  15. 39 0
      src/main/java/com/caimei/modules/order/entity/OssFile.java
  16. 28 0
      src/main/java/com/caimei/modules/order/entity/PayChangeRecord.java
  17. 1 1
      src/main/java/com/caimei/modules/order/entity/ProductType.java
  18. 3 0
      src/main/java/com/caimei/modules/order/entity/ReceiptDetail.java
  19. 16 0
      src/main/java/com/caimei/modules/order/entity/RemarkImage.java
  20. 12 2
      src/main/java/com/caimei/modules/order/service/CmOrderRemarkService.java
  21. 1 1
      src/main/java/com/caimei/modules/order/service/NewOrderService.java
  22. 7 0
      src/main/java/com/caimei/modules/order/service/impl/CmDiscernReceiptServiceImpl.java
  23. 98 6
      src/main/java/com/caimei/modules/order/service/impl/CmOrderRemarkServiceImpl.java
  24. 0 16
      src/main/java/com/caimei/modules/order/service/impl/CmReceiptOrderRelationServiceImpl.java
  25. 2 3
      src/main/java/com/caimei/modules/order/service/impl/CmReturnedPurchaseServiceImpl.java
  26. 4 51
      src/main/java/com/caimei/modules/order/service/impl/NewOrderServiceImpl.java
  27. 3 0
      src/main/java/com/caimei/modules/order/service/impl/OrderDeliverServiceImpl.java
  28. 15 9
      src/main/java/com/caimei/modules/order/service/impl/PayShopServiceImpl.java
  29. 37 15
      src/main/java/com/caimei/modules/order/util/OrderUtils.java
  30. 65 0
      src/main/java/com/caimei/modules/order/util/OssService.java
  31. 243 0
      src/main/java/com/caimei/utils/OSSUtils.java
  32. 61 58
      src/main/resources/mapper/CmOrderRemarkMapper.xml
  33. 15 13
      src/main/resources/mapper/CmReceiptOrderRelationMapper.xml
  34. 27 4
      src/main/resources/mapper/NewOrderMapper.xml
  35. 3 1
      src/main/resources/mapper/NewOrderProductMapper.xml
  36. 224 86
      src/main/resources/mapper/NewShopOrderMapper.xml
  37. 45 37
      src/main/resources/mapper/PayShopDao.xml

+ 7 - 0
pom.xml

@@ -26,6 +26,13 @@
             <artifactId>okhttp</artifactId>
             <version>3.8.1</version>
         </dependency>
+        <!--对象存储oss-->
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.10.2</version>
+        </dependency>
+
         <!--spring Boot原始依赖-->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 1 - 1
src/main/java/com/caimei/modules/groupbuy/service/ProcureService.java

@@ -230,7 +230,7 @@ public class ProcureService {
         List<AdditionalPo> procureById = additionalService.findProcureById(byId.getId());
         List<ProcurePo> procurePos = new ArrayList<>();
         procureById.forEach(p -> {
-            ProcurePo byId1 = findById(p.getProcureId());
+            ProcurePo byId1 = findById(p.getAdditionalId());
             procurePos.add(byId1);
         });
         Map<String, Object> map = new HashMap<>(2);

+ 1 - 1
src/main/java/com/caimei/modules/order/constant/Constant.java

@@ -9,7 +9,7 @@ package com.caimei.modules.order.constant;
 public class Constant {
 
     public static final String prodSplit = "https://core.caimei365.com/order/pay/delay/split/callback";
-
+    // todo
     public static final String betaSplit = "https://core-b.caimei365.com/order/pay/delay/split/callback";
 
     //快捷支付请求地址

+ 35 - 27
src/main/java/com/caimei/modules/order/controller/CmOrderRemarkController.java

@@ -3,18 +3,23 @@ package com.caimei.modules.order.controller;
 
 import com.caimei.modules.order.entity.CmOrderRemark;
 import com.caimei.modules.order.service.CmOrderRemarkService;
-import com.caimei.utils.JsonModel;
+import com.caimei.utils.ResponseJson;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
-/**
- * 订单备注Controller
- */
+
+@Api(tags = "订单备注api")
 @RestController
 @RequiredArgsConstructor
 @RequestMapping(value = "/order/cmOrderRemark")
@@ -23,27 +28,30 @@ public class CmOrderRemarkController {
 
     private final CmOrderRemarkService cmOrderRemarkService;
 
-    @ModelAttribute
-    public CmOrderRemark get(@RequestParam(required = false) String id) {
-        CmOrderRemark entity = null;
-        if (StringUtils.isNotBlank(id)) {
-            entity = cmOrderRemarkService.get(id);
-        }
-        if (entity == null) {
-            entity = new CmOrderRemark();
-        }
-        return entity;
+
+    @ApiOperation("订单备注详情")
+    @GetMapping(value = "/remarksView/{orderId}")
+    public ResponseJson<List<CmOrderRemark>> remarksView(@PathVariable("orderId") Integer orderId) {
+        List<CmOrderRemark> remarksList = cmOrderRemarkService.findList(orderId);
+        return ResponseJson.success(remarksList);
+    }
+
+    @ApiOperation("添加订单备注")
+    @PostMapping(value = "/add/remark")
+    public ResponseJson addRemark(@RequestBody CmOrderRemark remark) {
+        cmOrderRemarkService.insertRemark(remark);
+        return ResponseJson.success();
+    }
+
+    @ApiOperation("上传备注文件")
+    @PostMapping("/upload/remark")
+    public ResponseJson<Map<String, Object>> uploadFile(MultipartFile file, Integer orderId) {
+        return cmOrderRemarkService.upload(file, orderId);
     }
 
-    /**
-     * 订单备注
-     */
-    @GetMapping(value = "remarksView")
-    public JsonModel remarksView(Integer orderId) {
-        //通过商品Id获取对应备注信息
-        CmOrderRemark remark = new CmOrderRemark();
-        remark.setOrderId(orderId);
-        List<CmOrderRemark> remarksList = cmOrderRemarkService.findList(remark);
-        return JsonModel.newInstance().success(remarksList);
+    @ApiOperation("下载备注文件")
+    @GetMapping("/download/remark")
+    public void downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException {
+        cmOrderRemarkService.downFile(fileId, request, response);
     }
 }

+ 1 - 0
src/main/java/com/caimei/modules/order/controller/OrderPayShopController.java

@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.Map;
 

+ 25 - 28
src/main/java/com/caimei/modules/order/controller/OrganizeOrderController.java

@@ -2,6 +2,7 @@ package com.caimei.modules.order.controller;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.caimei.modules.club.entity.Page;
+import com.caimei.modules.order.dao.NewOrderDao;
 import com.caimei.modules.order.entity.*;
 import com.caimei.modules.order.service.*;
 import com.caimei.modules.order.util.OrderUtils;
@@ -12,13 +13,14 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.Assert;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
 
-
+@Slf4j
 @Api(tags = "订单api")
 @RestController
 @RequiredArgsConstructor
@@ -37,6 +39,8 @@ public class OrganizeOrderController {
 
     private final OrderUtils orderUtil;
 
+    private final NewOrderDao orderDao;
+
     @ModelAttribute
     public NewOrder getOrder(@RequestParam(required = false) String id) {
         NewOrder entity = null;
@@ -52,12 +56,14 @@ public class OrganizeOrderController {
     @ApiOperation("更改收款状态")
     @ApiImplicitParams({
             @ApiImplicitParam(required = true, name = "orderId", value = "订单Id"),
-            @ApiImplicitParam(required = true, name = "amount", value = "本次收款金额"),
-            @ApiImplicitParam(required = true, name = "status", value = "订单收款状态 2部分收款 3已收款")
+            @ApiImplicitParam(required = true, name = "amount", value = "本次收款金额")
     })
     @GetMapping("/check/receipt")
-    public ResponseJson checkReceipt(Double amount, Integer status, Integer orderId) {
-        return newOrderService.checkReceipt(amount, status, orderId);
+    public ResponseJson checkReceipt(Double amount, Integer orderId) {
+        if (null == amount || null == orderId) {
+            return ResponseJson.error("参数不能为空!");
+        }
+        return newOrderService.checkReceipt(amount, orderId);
     }
 
     /**
@@ -67,12 +73,6 @@ public class OrganizeOrderController {
     @GetMapping("orderList")
     public JsonModel orderList(NewOrder order, Page page) {
         Assert.assertNotNull("组织id不能为空!", order.getOrganizeId());
-        if (null != order.getStartTime() && !"".equals(order.getStartTime()) && !order.getStartTime().endsWith("00:00:00")) {
-            order.setStartTime(order.getStartTime() + " 00:00:00");
-        }
-        if (null != order.getEndTime() && !"".equals(order.getEndTime()) && !order.getEndTime().endsWith("23:59:59")) {
-            order.setEndTime(order.getEndTime() + " 23:59:59");
-        }
         if (null != order.getBuyer()) {
             order.setBuyer(order.getBuyer().trim());
         }
@@ -92,25 +92,22 @@ public class OrganizeOrderController {
         bpClause.setEnabledStatus("1");
         List<BpClause> bpClauses = bpClauseService.findList(bpClause);
         map.put("bpClauses", bpClauses);
-
-        //获取订单是否可以申请付款
-        List<Integer> oId = new ArrayList<>();
-        oId.add(order.getOrderId());
-        List<Integer> orderIdsInApplyReturn = cmReturnedPurchaseService.findOrderIdsInApplyReturnFlag(oId);
-        if (CollectionUtils.isNotEmpty(orderIdsInApplyReturn) && orderIdsInApplyReturn.size() > 0) {
-            order.setApplyReturnedPurchaseFlag("0");
+        orderUtil.setOrderValue(order);
+        orderUtil.setOrderPostInfo(order);
+        /**
+         *  当主订单为【待收款】或者为线下支付的【部分收款】状态时,才显示更改订单状态按钮
+         *  (排除交易全退订单)
+         */
+        Integer checkFlag = 0;
+        if ("11".equals(order.getStatus()) || "12".equals(order.getStatus()) || "13".equals(order.getStatus())) {
+            checkFlag = 1;
+        } else if ("21".equals(order.getStatus()) || "22".equals(order.getStatus()) || "23".equals(order.getStatus())) {
+            Integer count = orderDao.findOnlinePay(order.getOrderId());
+            checkFlag = count == 0 ? 1 : 0;
         } else {
-            order.setApplyReturnedPurchaseFlag("1");
-        }
-        //判断是否有在收款审核的订单
-        List<Integer> ids = cmReceiptOrderRelationService.toAudit(order);
-        if (ids != null && ids.size() > 0) {
-            order.setToAudit("1");
+            checkFlag = 0;
         }
-        if (order.getProductCount() == null) {
-            order.setProductCount(1);
-        }
-        orderUtil.setOrderPostInfo(order);
+        order.setCheckFlag(checkFlag);
         map.put("order", order);
 
         List<Voucher> vouchers = newOrderService.findVoucher(order.getOrderId());

+ 15 - 3
src/main/java/com/caimei/modules/order/dao/CmOrderRemarkDao.java

@@ -1,6 +1,8 @@
 package com.caimei.modules.order.dao;
 
 import com.caimei.modules.order.entity.CmOrderRemark;
+import com.caimei.modules.order.entity.OssFile;
+import com.caimei.modules.order.entity.RemarkImage;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -8,11 +10,21 @@ import java.util.List;
 @Mapper
 public interface CmOrderRemarkDao{
 
-    CmOrderRemark get(String id);
-
-    List<CmOrderRemark> findList(CmOrderRemark remark);
+    List<CmOrderRemark> findList(Integer orderId);
 
     void insert(CmOrderRemark remark);
 
     void update(CmOrderRemark remark);
+
+    List<String> findImages(Integer id);
+
+    List<OssFile> findFiles(Integer id);
+
+    OssFile findFileByMd5(String md5Hex);
+
+    OssFile findRemarkById(Integer fileId);
+
+    void insertImage(RemarkImage i);
+
+    void insertFile(OssFile o);
 }

+ 8 - 1
src/main/java/com/caimei/modules/order/dao/NewOrderDao.java

@@ -4,6 +4,7 @@ import com.caimei.modules.order.entity.*;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
 
 @Mapper
 public interface NewOrderDao {
@@ -48,9 +49,15 @@ public interface NewOrderDao {
 
     List<String> findNotes(Integer orderId);
 
-    void updateReceiptStatus(Integer status, Integer orderId);
+    void updateReceiptStatus(Integer status, String orderStatus,Integer orderId);
 
     List<Voucher> findVoucher(Integer orderId);
 
     List<String> findVocherImage(Integer id);
+
+    Double findWaitPay(Integer orderId);
+
+    Integer findCountDeliver(Integer orderId);
+
+    String findOrderStatus(Integer orderId);
 }

+ 4 - 4
src/main/java/com/caimei/modules/order/dao/PayShopDao.java

@@ -33,7 +33,7 @@ public interface PayShopDao {
 
     void insertPayRecord(OrderPayShopRecord record);
 
-    void updatePaying(Integer shopOrderId);
+    void updatePaying(Integer shopOrderId,Double shopPostFee);
 
     void updatePayShopDetail(OrderPayShopDetail payShop);
 
@@ -45,17 +45,17 @@ public interface PayShopDao {
 
     List<String> findShopOrderNosByPayShop(Integer payShopId);
 
-    List<String> findOrderNos(Integer payShopId);
+    String findOrderNos(Integer payShopId);
 
     void insertSettleRecord(SettleRecord settleRecord);
 
-    void updateSettleStatus(Integer shopOrderId, int i);
+    void updateSettleStatus(Integer shopOrderId, Integer productType);
 
     Double findShouldPayShopAmount(Integer shopOrderId);
 
     Double findSettleSum(Integer shopOrderId,Integer status);
 
-    void updateShopOrderSettleStatus(Integer shopOrderId, int i);
+    void updateShopOrderSettleStatus(Integer shopOrderId, Integer settleStatus);
 
     List<CmReceiptOrderRelation> findOrderRelations(Integer orderId);
 

+ 19 - 7
src/main/java/com/caimei/modules/order/entity/CmOrderRemark.java

@@ -1,19 +1,31 @@
 package com.caimei.modules.order.entity;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
+@ApiModel(description = "订单备注")
 @Data
 public class CmOrderRemark implements Serializable {
 
     private Integer id;
-    private Integer orderId; // 主订单ID
-    private Integer shopOrderId;  // 子订单ID
-    private String no;
-    private String remarks;    // 备注
-    private Integer createBy;    // 创建者
-    private Date createDate;    // 创建日期
-    private String sysUserName;    //创建账户
+    private Integer orderId;
+    private Integer shopOrderId;
+    private Integer createBy;
+    @ApiModelProperty("备注")
+    private String remarks;
+    @ApiModelProperty("创建日期")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String createDate;
+    @ApiModelProperty("创建者")
+    private String createName;
+    @ApiModelProperty("图片")
+    private List<String> images;
+    @ApiModelProperty("上传文件")
+    private List<OssFile> ossFiles;
 }

+ 2 - 0
src/main/java/com/caimei/modules/order/entity/CmReceiptOrderRelation.java

@@ -74,4 +74,6 @@ public class CmReceiptOrderRelation implements Serializable {
      * 收款金额
      */
     private Double receiptAmount;
+
+    private String bankNameType;
 }

+ 2 - 0
src/main/java/com/caimei/modules/order/entity/NewOrder.java

@@ -181,7 +181,9 @@ public class NewOrder implements Serializable {
     /**
      * 订单提交时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private String startTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private String endTime;
 
     @ApiModelProperty("总税费")

+ 2 - 3
src/main/java/com/caimei/modules/order/entity/NewShopOrder.java

@@ -178,9 +178,8 @@ public class NewShopOrder {
     private String receiver;
     @ApiModelProperty("'0'=不是邮费商品子订单; '1'=是邮费商品子订单")
     private String postFeeCos = "0";
-    @ApiModelProperty("需要使用sn码的订单产品列表")
-    private List<NewOrderProduct> snOrderProducts;
-
+    @ApiModelProperty("机构名称")
+    private String clubName;
     /**
      *  付款列表展示数据
      */

+ 5 - 0
src/main/java/com/caimei/modules/order/entity/OrderPayShopDetail.java

@@ -40,6 +40,9 @@ public class OrderPayShopDetail implements Serializable {
     @ApiModelProperty("付采美账号的类型 0公账, 1私账")
     private Integer cmType;
 
+    @ApiModelProperty("供应商运费")
+    private Double shopPostFee;
+
     @ApiModelProperty("shopId")
     private Integer shopId;
     @ApiModelProperty("付款单Id")
@@ -81,4 +84,6 @@ public class OrderPayShopDetail implements Serializable {
     private List<NewShopOrder> shopOrders;
     @ApiModelProperty("删除标记 0未删除,其他删除")
     private Integer delFlag;
+    @ApiModelProperty("机构名称")
+    private String clubName;
 }

+ 39 - 0
src/main/java/com/caimei/modules/order/entity/OssFile.java

@@ -0,0 +1,39 @@
+package com.caimei.modules.order.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+/**
+ * @author zzj
+ */
+@ApiModel(description = "oss文件")
+@Data
+public class OssFile implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("文件id")
+    private Integer id;
+
+    private Integer orderId;
+
+    @ApiModelProperty("文字备注ID")
+    private Integer remarkId;
+
+    @ApiModelProperty("文件名称")
+    private String name;
+
+    @ApiModelProperty("oss存储名")
+    private String ossName;
+
+    @ApiModelProperty("文件唯一标识")
+    private String md5Hex;
+
+    @ApiModelProperty("上传时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String uploadTime;
+}

+ 28 - 0
src/main/java/com/caimei/modules/order/entity/PayChangeRecord.java

@@ -0,0 +1,28 @@
+package com.caimei.modules.order.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author zzj
+ */
+@ApiModel(description = "应付供应商修改成本记录")
+@Data
+public class PayChangeRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty("1原始记录,2修改记录")
+    private String recordType;
+    private Integer orderId;
+    private Integer shopOrderId;
+    @ApiModelProperty("付供应商运费")
+    private Double shopPostFee;
+    @ApiModelProperty("修改应付金额的用户ID")
+    private Integer modifyShouldPayUserId;
+
+
+
+}

+ 1 - 1
src/main/java/com/caimei/modules/order/entity/ProductType.java

@@ -3,7 +3,7 @@ package com.caimei.modules.order.entity;
 
 /**
  * @Author ye.qin
- * @Description //TODO 商品常用一级分类枚举类型
+ * @Description
  * @Date 2018/11/27 17:09
  */
 public enum ProductType {

+ 3 - 0
src/main/java/com/caimei/modules/order/entity/ReceiptDetail.java

@@ -18,6 +18,9 @@ public class ReceiptDetail implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty("线下支付凭证")
+    private List<Voucher> vouchers;
+
     @ApiModelProperty("用户付款方式:1线上,2线下")
     private Integer payWay;
 

+ 16 - 0
src/main/java/com/caimei/modules/order/entity/RemarkImage.java

@@ -0,0 +1,16 @@
+package com.caimei.modules.order.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author zzj
+ */
+@Data
+public class RemarkImage implements Serializable {
+
+    private Integer orderId;
+    private Integer remarkId;
+    private String remarkImage;
+}

+ 12 - 2
src/main/java/com/caimei/modules/order/service/CmOrderRemarkService.java

@@ -1,12 +1,22 @@
 package com.caimei.modules.order.service;
 
 import com.caimei.modules.order.entity.CmOrderRemark;
+import com.caimei.utils.ResponseJson;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 public interface CmOrderRemarkService {
 
-    CmOrderRemark get(String id);
+    List<CmOrderRemark> findList(Integer orderId);
 
-    List<CmOrderRemark> findList(CmOrderRemark remark);
+    void insertRemark(CmOrderRemark remark);
+
+    ResponseJson<Map<String, Object>> upload(MultipartFile file, Integer orderId);
+
+    void downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException;
 }

+ 1 - 1
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -13,7 +13,7 @@ public interface NewOrderService {
 
     NewOrder get(String id);
 
-    ResponseJson checkReceipt(Double amount, Integer status, Integer orderId);
+    ResponseJson checkReceipt(Double amount, Integer orderId);
 
     List<Voucher> findVoucher(Integer orderId);
 }

+ 7 - 0
src/main/java/com/caimei/modules/order/service/impl/CmDiscernReceiptServiceImpl.java

@@ -3,6 +3,7 @@ package com.caimei.modules.order.service.impl;
 import com.caimei.modules.order.dao.CmDiscernReceiptDao;
 import com.caimei.modules.order.entity.*;
 import com.caimei.modules.order.service.CmDiscernReceiptService;
+import com.caimei.modules.order.service.NewOrderService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
@@ -17,6 +18,8 @@ public class CmDiscernReceiptServiceImpl implements CmDiscernReceiptService {
 
     @Resource
     private CmDiscernReceiptDao cmDiscernReceiptDao;
+    @Resource
+    private NewOrderService orderService;
 
 
     @Override
@@ -43,6 +46,10 @@ public class CmDiscernReceiptServiceImpl implements CmDiscernReceiptService {
             }
         });
         r.setOrderInfos(orderInfos);
+        if (2 == r.getPayWay()) {
+            List<Voucher> vouchers = orderService.findVoucher(r.getOrderId());
+            r.setVouchers(vouchers);
+        }
         return r;
     }
 

+ 98 - 6
src/main/java/com/caimei/modules/order/service/impl/CmOrderRemarkServiceImpl.java

@@ -2,26 +2,118 @@ package com.caimei.modules.order.service.impl;
 
 import com.caimei.modules.order.dao.CmOrderRemarkDao;
 import com.caimei.modules.order.entity.CmOrderRemark;
+import com.caimei.modules.order.entity.OssFile;
+import com.caimei.modules.order.entity.RemarkImage;
 import com.caimei.modules.order.service.CmOrderRemarkService;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.caimei.modules.order.util.OssService;
+import com.caimei.modules.shiro.entity.CmMallAdminUser;
+import com.caimei.utils.OSSUtils;
+import com.caimei.utils.ResponseJson;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.*;
 
+@Slf4j
 @Service
 public class CmOrderRemarkServiceImpl implements CmOrderRemarkService {
 
     @Resource
     private CmOrderRemarkDao cmOrderRemarkDao;
+    @Resource
+    private OssService ossService;
+    @Resource
+    private OSSUtils ossUtils;
+
+    @Override
+    public List<CmOrderRemark> findList(Integer orderId) {
+        List<CmOrderRemark> list = cmOrderRemarkDao.findList(orderId);
+        list.forEach(l -> {
+            l.setImages(cmOrderRemarkDao.findImages(l.getId()));
+            l.setOssFiles(cmOrderRemarkDao.findFiles(l.getId()));
+        });
+        return list;
+    }
+
+    @Override
+    public void insertRemark(CmOrderRemark remark) {
+        CmMallAdminUser user = (CmMallAdminUser) SecurityUtils.getSubject().getPrincipal();
+        remark.setCreateBy(user.getId());
+        cmOrderRemarkDao.insert(remark);
+        List<String> images = remark.getImages();
+        List<OssFile> ossFiles = remark.getOssFiles();
+        if (null != images && images.size() > 0) {
+            images.forEach(i -> {
+                RemarkImage remarkImage = new RemarkImage();
+                remarkImage.setRemarkImage(i);
+                remarkImage.setRemarkId(remark.getId());
+                remarkImage.setOrderId(remark.getOrderId());
+                cmOrderRemarkDao.insertImage(remarkImage);
+            });
+        }
+        if (null != ossFiles && ossFiles.size() > 0) {
+            ossFiles.forEach(o -> {
+                o.setRemarkId(remark.getId());
+                o.setOrderId(remark.getOrderId());
+                cmOrderRemarkDao.insertFile(o);
+            });
+        }
+    }
 
     @Override
-    public CmOrderRemark get(String id) {
-        return cmOrderRemarkDao.get(id);
+    public ResponseJson<Map<String, Object>> upload(MultipartFile file, Integer orderId) {
+        Map<String, Object> map = new HashMap<>();
+        String fileAllName = file.getOriginalFilename();
+        String fileType = fileAllName.substring(fileAllName.lastIndexOf(".") + 1);
+        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
+        String filePath = uuid + "." + fileType;
+        String contentType = ossUtils.getContentType(fileAllName);
+        try {
+            //保存本地
+            File fil = ossUtils.ossUpload(file);
+            //判断文件的唯一性,转换成16进制md5值
+            String md5Hex = DigestUtils.md5Hex(new FileInputStream(fil));
+            OssFile remarkFile = cmOrderRemarkDao.findFileByMd5(md5Hex);
+            String url = "";
+            if (remarkFile == null) {
+                log.info("默认路径>>>" + fil.getAbsolutePath());
+                //上传oss
+                url = ossUtils.ossUpload(filePath, fil, contentType);
+            } else {
+                filePath = remarkFile.getOssName();
+            }
+            //删除本地文件
+            ossUtils.deleteFile(fil);
+            //保存关联关系
+            OssFile orderRemarkFile = new OssFile();
+            orderRemarkFile.setOrderId(orderId);
+            orderRemarkFile.setName(fileAllName);
+            orderRemarkFile.setOssName(filePath);
+            orderRemarkFile.setMd5Hex(md5Hex);
+            map.put("url", url);
+            map.put("ossFiles", orderRemarkFile);
+            return ResponseJson.success(map);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("备注文件上传异常!!!");
+            return ResponseJson.error("备注文件上传异常");
+        }
     }
 
     @Override
-    public List<CmOrderRemark> findList(CmOrderRemark remark) {
-        return cmOrderRemarkDao.findList(remark);
+    public void downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException {
+        OssFile remarkFile = cmOrderRemarkDao.findRemarkById(fileId);
+        String fileName = remarkFile.getName();
+        ossUtils.downFile(remarkFile.getOssName(), fileName);
+        ossService.download(request, response, fileName);
     }
 }

+ 0 - 16
src/main/java/com/caimei/modules/order/service/impl/CmReceiptOrderRelationServiceImpl.java

@@ -16,25 +16,9 @@ public class CmReceiptOrderRelationServiceImpl implements CmReceiptOrderRelation
 
     @Resource
     private CmReceiptOrderRelationDao cmReceiptOrderRelationDao;
-    @Resource
-    private NewOrderDao orderDao;
 
     @Override
     public List<Integer> toAudit(NewOrder order) {
-        /**
-         *  当主订单为【待收款】或者为线下支付的【部分收款】状态时,才显示更改订单状态按钮
-         *  (排除交易全退订单)
-         */
-        Integer checkFlag = 0;
-        if ("11".equals(order.getStatus()) || "12".equals(order.getStatus()) || "13".equals(order.getStatus())) {
-            checkFlag = 1;
-        } else if ("21".equals(order.getStatus()) || "22".equals(order.getStatus()) || "23".equals(order.getStatus())) {
-            Integer count = orderDao.findOnlinePay(order.getOrderId());
-            checkFlag = count == 0 ? 1 : 0;
-        } else {
-            checkFlag = 0;
-        }
-        order.setCheckFlag(checkFlag);
         return cmReceiptOrderRelationDao.toAudit(order.getOrderId());
     }
 

+ 2 - 3
src/main/java/com/caimei/modules/order/service/impl/CmReturnedPurchaseServiceImpl.java

@@ -154,9 +154,8 @@ public class CmReturnedPurchaseServiceImpl implements CmReturnedPurchaseService
     @Override
     public Map<String, Object> getReturnAndPay(Integer shopOrderId) {
         Map<String, Object> map = new HashMap<>();
-        OrderPayShop orderPayShop = new OrderPayShop();
-        orderPayShop.setShopOrderId(shopOrderId);
-        NewShopOrder shopOrder = shopOrderDao.findPayShopOrderList(orderPayShop).get(0);
+
+        NewShopOrder shopOrder = shopOrderDao.findByShopOrderId(shopOrderId);
         orderUtil.getShouldPay(shopOrder);
         orderUtil.setShopPostInfo(shopOrder);
         List<OrderPayShopRecord> pays = payShopDao.findPayShopRecordsByShopOrder(shopOrderId);

+ 4 - 51
src/main/java/com/caimei/modules/order/service/impl/NewOrderServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
@@ -48,54 +49,7 @@ public class NewOrderServiceImpl implements NewOrderService {
     public Page<NewOrder> findList(NewOrder newOrder, Page page) {
         PageHelper.startPage(page.getIndex(), page.getPageSize());
         List<NewOrder> orderList = newOrderDao.findList(newOrder);
-        List<Integer> oId = orderList.stream().map(NewOrder::getOrderId).collect(Collectors.toList());
-        //从查询到的订单列表中 找到正在退款中的订单集合
-        List<Integer> orderIdsInReturn = null;
-        //查询可以申请退款的订单Id
-        List<Integer> orderIdsInApplyReturn = null;
-        if (CollectionUtils.isNotEmpty(oId)) {
-            orderIdsInReturn = cmReturnedPurchaseDao.findOrderIdInReturnPurchase(oId);
-            orderIdsInApplyReturn = cmReturnedPurchaseDao.findOrderIdsInApplyReturnFlag(oId);
-        }
-        for (NewOrder order : orderList) {
-            if (orderIdsInReturn != null && orderIdsInReturn.contains(order.getOrderId())) {
-                order.setReturnedPurchaseStatus("1");
-            } else {
-                order.setReturnedPurchaseStatus("0");
-            }
-            if (orderIdsInApplyReturn != null && orderIdsInApplyReturn.contains(order.getOrderId())) {
-                order.setApplyReturnedPurchaseFlag("0");
-            } else {
-                order.setApplyReturnedPurchaseFlag("1");
-            }
-
-            List<NewShopOrder> shopOrders = order.getNewShopOrders();
-            if (shopOrders != null && shopOrders.size() == 1) {
-                order.setShopName(shopOrders.get(0).getShopName());
-            }
-            for (NewShopOrder shopOrder : order.getNewShopOrders()) {
-                shopOrder.setOrderId(order.getOrderId());
-                shopOrder.setOrderNo(order.getOrderNo());
-                shopOrder.setReceiver(order.getReceiver());
-                shopOrder.setOrderTime(order.getOrderTime());
-                shopOrder.setBuyer(order.getBuyer());
-                //子订单Id
-                Integer shopOrderId = shopOrder.getShopOrderId();
-                //通过子订单Id查询子订单信息
-                NewShopOrder newShopOrder = newShopOrderDao.get(shopOrderId);
-                if (null != newShopOrder) {
-                    shopOrder.setFee(newShopOrder.getFee());
-                    shopOrder.setShouldPayProduct(newShopOrder.getShouldPayProduct());
-                } else {
-                    shopOrder.setFee(0d);
-                    shopOrder.setShouldPayProduct(0d);
-                }
-            }
-            //一个子订单只有一个商品时,不可拆分
-            if (order.getProductCount() == null) {
-                order.setProductCount(1);
-            }
-        }
+        orderList.forEach(o->orderUtil.setOrderValue(o));
         return new Page<>(orderList);
     }
 
@@ -169,9 +123,8 @@ public class NewOrderServiceImpl implements NewOrderService {
 
     @Override
     @Transactional(readOnly = false, rollbackFor = Exception.class)
-    public ResponseJson checkReceipt(Double amount, Integer status, Integer orderId) {
-        orderUtil.addReceiptRecord(amount, status, orderId);
-        return ResponseJson.success();
+    public ResponseJson checkReceipt(Double amount,Integer orderId) {
+        return orderUtil.addReceiptRecord(amount, orderId);
     }
 
     @Override

+ 3 - 0
src/main/java/com/caimei/modules/order/service/impl/OrderDeliverServiceImpl.java

@@ -49,6 +49,9 @@ public class OrderDeliverServiceImpl implements OrderDeliverService {
     @Transactional(readOnly = false, rollbackFor = Exception.class)
     public ResponseJson confirmDeliver(DeliverDto dto) {
         List<NewOrderProduct> orderProducts = dto.getOrderProducts();
+        if (null == orderProducts || orderProducts.size() == 0) {
+            return ResponseJson.error("发货商品不能为空!");
+        }
         // 设置子订单/主订单发货状态
         Boolean status = orderUtil.setDeliverStatus(orderProducts);
         if (!status) {

+ 15 - 9
src/main/java/com/caimei/modules/order/service/impl/PayShopServiceImpl.java

@@ -49,8 +49,8 @@ public class PayShopServiceImpl implements PayShopService {
         PageHelper.startPage(pageNum, pageSize);
         List<OrderPayShop> payShops = payShopDao.findPayShops(orderPayShop);
         payShops.forEach(p -> {
-            p.setOrderNos(payShopDao.findShopOrderNosByPayShop(p.getPayShopId()));
-            p.setShopOrderNos(payShopDao.findOrderNos(p.getPayShopId()));
+            p.setShopOrderNos(payShopDao.findShopOrderNosByPayShop(p.getPayShopId()));
+            p.setOrderNo(payShopDao.findOrderNos(p.getPayShopId()));
         });
         return new PageInfo(payShops);
     }
@@ -59,7 +59,10 @@ public class PayShopServiceImpl implements PayShopService {
     public OrderPayShopDetail getPayShopDetail(Integer id) {
         OrderPayShopDetail detail = payShopDao.findPayShopDetail(id);
         List<NewShopOrder> shopOrders = payShopDao.findPayShopOrders(detail.getPayShopId());
-        shopOrders.forEach(s -> orderUtils.getShouldPay(s));
+        shopOrders.forEach(s -> {
+            orderUtils.getShouldPay(s);
+            s.setShopOrderNos(payShopDao.findShopOrderNosByPayShop(id));
+        });
         detail.setShopOrders(shopOrders);
         orderUtils.setPayShopPostInfo(detail);
         Double totalPayShop = shopOrders.stream().mapToDouble(NewShopOrder::getPayedShopAmount).sum();
@@ -134,7 +137,7 @@ public class PayShopServiceImpl implements PayShopService {
 
     @Transactional(readOnly = false, rollbackFor = Exception.class)
     @Override
-    public ResponseJson<Integer> applyPay(OrderPayShopDetail payShop) throws Exception {
+    public ResponseJson<Integer> applyPay(OrderPayShopDetail payShop) {
         CmMallAdminUser user = (CmMallAdminUser) SecurityUtils.getSubject().getPrincipal();
         payShop.setApplicant(user.getId());
         List<NewShopOrder> shopOrders = payShop.getShopOrders();
@@ -158,7 +161,8 @@ public class PayShopServiceImpl implements PayShopService {
                 record.setStatus(0);
                 payShopDao.insertPayRecord(record);
                 //子订单发起付款申请以后 就不能同时再次发起付款申请了  直到审核操作通过或者取消
-                payShopDao.updatePaying(s.getShopOrderId());
+                // 同时修改付供应商运费
+                payShopDao.updatePaying(s.getShopOrderId(), payShop.getShopPostFee());
             });
             // 运费付款单作用不明,暂时取消生成
 
@@ -184,6 +188,8 @@ public class PayShopServiceImpl implements PayShopService {
             }
             payShopDao.updatePayShopDetail(payShop);
         }
+        // 如果供应商运费不为0 , 修改子订单供应商运费
+
         return ResponseJson.success(payShop.getPayShopId());
     }
 
@@ -359,9 +365,9 @@ public class PayShopServiceImpl implements PayShopService {
         String substring = format.substring(20);
         shopOrders.forEach(s -> {
             try {
-                orderUtils.settleOrder("JSCB" + s.getShopOrderId() + substring, s.getWaitPayShop(), s.getSplitCode(), s.getShopOrderId(), 1);
-                orderUtils.settleOrder("JSCMYJ" + s.getShopOrderId() + substring, s.getPayCmAmount(), Constant.CUSTOMERNUM2, s.getShopOrderId(), 2);
-                orderUtils.settleOrder("JSYJ" + s.getShopOrderId() + substring, s.getPayCmAmount(), Constant.LHLGCUSTOMERNUM, s.getShopOrderId(), 3);
+                orderUtils.settleOrder("JSCB" + s.getShopOrderId() + substring, s.getWaitSettleShop(), s.getSplitCode(), s.getShopOrderId(), 1);
+                orderUtils.settleOrder("JSCMYJ" + s.getShopOrderId() + substring, s.getWaitSettleCm(), Constant.CUSTOMERNUM2, s.getShopOrderId(), 3);
+                orderUtils.settleOrder("JSYJ" + s.getShopOrderId() + substring, s.getWaitSettleOrganize(), Constant.LHLGCUSTOMERNUM, s.getShopOrderId(), 5);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -391,7 +397,7 @@ public class PayShopServiceImpl implements PayShopService {
             orderUtils.setPayShopPostInfo(detail);
             detail.setShopId(shopOrders.get(0).getShopId());
             detail.setShopName(shopOrders.get(0).getShopName());
-
+            detail.setClubName(shopOrders.get(0).getClubName());
             return ResponseJson.success(detail);
         }
         return ResponseJson.error("未选择子订单!");

+ 37 - 15
src/main/java/com/caimei/modules/order/util/OrderUtils.java

@@ -107,6 +107,10 @@ public class OrderUtils {
         });
         // 应付供应商
         Double v = MathUtil.sub(shopFee.get(), totalCharge.get()).doubleValue();
+        if (!onlineFlag.get() && shopOrder.getShopPostFee() > 0) {
+            // 线下收付款,有供应商运费 付供应商 = 付供应商 + 供应商运费
+            v = v + shopOrder.getShopPostFee();
+        }
         // 线下已付采美
         Double paidCm = shopOrder.getPayCmAmount();
         // 线下已付供应商
@@ -144,6 +148,7 @@ public class OrderUtils {
             shouldSettleCm = cmFee;
             shouldSettleOrganize = organizeFee.get().doubleValue();
         }
+
         shopOrder.setWaitSettleShop(waitSettleShop);
         shopOrder.setWaitSettleCm(waitSettleCm);
         shopOrder.setWaitSettleOrganize(waitSettleOrganize);
@@ -231,16 +236,14 @@ public class OrderUtils {
                         payShopDao.updateShopOrderSettleStatus(shopOrderId, 3);
                     }
                 } else {
-                    // 采美佣金结算
+                    // 佣金结算
                     settleRecord.setSettleType(settleFlag);
                     settleRecord.setSettleAmount(settleAmount);
                     settleRecord.setSplitCode(P3_customerNumber);
                     settleRecord.setShopOrderId(shopOrderId);
                     payShopDao.insertSettleRecord(settleRecord);
-                    if (3 == settleFlag) {
-                        // 最后佣金结算修改cm_split_account settlestatus
-                        payShopDao.updateSettleStatus(shopOrderId, 3);
-                    }
+                    // 最后佣金结算修改cm_split_account settlestatus
+                    payShopDao.updateSettleStatus(shopOrderId, settleFlag);
                 }
             }
         }
@@ -257,8 +260,12 @@ public class OrderUtils {
             // 包邮
             order.setPostageInfo("¥" + fee + "(冷链费: ¥" + fee + ", 其他: 包邮)");
         } else {
+            Double other = 0d;
+            if (fee >= 700) {
+                other = fee - 700;
+            }
             // 有运费
-            order.setPostageInfo("¥" + MathUtil.add(fee, order.getFreight()).doubleValue() + "(冷链费: ¥" + fee + ", 其他: ¥" + order.getFreight() + ")");
+            order.setPostageInfo("¥" + fee + "(冷链费: ¥" + 700 + ", 其他: ¥" + other + ")");
         }
         return order;
     }
@@ -410,11 +417,9 @@ public class OrderUtils {
                 shops.put(o.getShopOrderId(), o.getDeliveryNum());
             }
         });
-        if (!flag.get()) {
-            return flag.get();
-        }
+        // 统计本次发货
+        AtomicReference<Integer> totalDeliver = new AtomicReference<>(0);
         AtomicReference<Integer> orderId = new AtomicReference<>();
-        List<Integer> statusList = new ArrayList<>();
         shops.forEach((key, value) -> {
             NewShopOrder shopOrder = shopOrderDao.get(key);
             Integer outStoreNum = shopOrder.getOutStoreNum();
@@ -425,9 +430,9 @@ public class OrderUtils {
                 flag.set(false);
                 return;
             }
+            totalDeliver.set(totalDeliver.get() + value);
             // 2 部分发货 3全部发货
             int status = deliver < total ? 2 : 3;
-            statusList.add(status);
             shopOrder.setOutStoreNum(outStoreNum + value);
             shopOrder.setSendOutStatus(Integer.toString(status));
             shopOrder.setOutStoreTimes(shopOrder.getOutStoreTimes() + 1);
@@ -435,8 +440,13 @@ public class OrderUtils {
             shopOrderDao.update(shopOrder);
             orderId.set(shopOrder.getOrderId());
         });
+        if (!flag.get()) {
+            return flag.get();
+        }
+
+        Integer count = newOrderDao.findCountDeliver(orderId.get());
         Integer orderDeliverStatus = 3;
-        if (statusList.contains(2)) {
+        if (count > totalDeliver.get()) {
             orderDeliverStatus = 2;
         }
         orderStatus = orderStatus.substring(0, 1) + orderDeliverStatus.toString();
@@ -445,7 +455,11 @@ public class OrderUtils {
         return true;
     }
 
-    public void addReceiptRecord(Double amount, Integer status, Integer orderId) {
+    public ResponseJson addReceiptRecord(Double amount, Integer orderId) {
+        Double wait = newOrderDao.findWaitPay(orderId);
+        if (amount > wait) {
+            return ResponseJson.error("支付金额大于待付!");
+        }
         ReceiptVo receiptVo = new ReceiptVo();
         // 31 线下凭证
         receiptVo.setPayType(31);
@@ -461,8 +475,16 @@ public class OrderUtils {
         record.setReceiptId(receiptVo.getId());
         record.setOrderId(orderId);
         receiptDao.insertOrderRelation(record);
-        // 修改cm_order状态
-        newOrderDao.updateReceiptStatus(status, orderId);
+        // 根据金额修改cm_order状态
+        Integer status = 2;
+        if (0 == wait - amount) {
+            status = 3;
+        }
+        String orderStatus = newOrderDao.findOrderStatus(orderId);
+        String substring = orderStatus.substring(orderStatus.length() - 1);
+        orderStatus = status + substring;
+        newOrderDao.updateReceiptStatus(status, orderStatus, orderId);
+        return ResponseJson.success();
     }
 
     public List<SettleRecord> getSettleRecord(NewOrder newOrder) {

+ 65 - 0
src/main/java/com/caimei/modules/order/util/OssService.java

@@ -0,0 +1,65 @@
+package com.caimei.modules.order.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+
+/**
+ * @author zzj
+ */
+@Slf4j
+@Service
+public class OssService {
+
+    public void download(HttpServletRequest request, HttpServletResponse response, String fileName) throws IOException {
+        File file = new File("./" + fileName);
+        //  文件存在才下载
+        if (file.exists()) {
+            OutputStream out = null;
+            FileInputStream in = null;
+            try {
+                // 1.读取要下载的内容
+                in = new FileInputStream(file);
+
+                // 2. 告诉浏览器下载的方式以及一些设置
+                // 解决文件名乱码问题,获取浏览器类型,转换对应文件名编码格式,IE要求文件名必须是utf-8, firefo要求是iso-8859-1编码
+                String agent = request.getHeader("user-agent");
+                if (agent.contains("FireFox")) {
+                    fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
+                } else {
+                    fileName = URLEncoder.encode(fileName, "UTF-8");
+                }
+                // 设置下载文件的mineType,告诉浏览器下载文件类型
+                String mineType = request.getServletContext().getMimeType(fileName);
+                response.setContentType(mineType);
+                // 设置一个响应头,无论是否被浏览器解析,都下载
+                response.setHeader("Content-disposition", "attachment; filename=" + fileName);
+                // 将要下载的文件内容通过输出流写到浏览器
+                out = response.getOutputStream();
+                int len = 0;
+                byte[] buffer = new byte[1024];
+                while ((len = in.read(buffer)) > 0) {
+                    out.write(buffer, 0, len);
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            } finally {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+                file.delete();
+            }
+        }
+    }
+}

+ 243 - 0
src/main/java/com/caimei/utils/OSSUtils.java

@@ -0,0 +1,243 @@
+package com.caimei.utils;
+
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.GetObjectRequest;
+import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.UploadFileRequest;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+
+@Slf4j
+@Component
+public class OSSUtils {
+
+
+    private static final String config = "beta";
+    private static final String endpoint = "https://oss-cn-shenzhen.aliyuncs.com";
+    private static final String accessKeyId = "LTAI4GBL3o4YkWnbKYgf2Xia";
+    private static final String accessKeySecret = "dBjAXqbYiEPP6Ukuk2ZsXQeET7FVkK";
+    private static final String privateBucket = "caimei-oss";
+
+
+    public String ossUpload(String fileName, File file, String contentType) {
+        String url = null;
+        try {
+            if ("product".equals(config)) {
+                fileName = "prod/" + fileName;
+            } else {
+                fileName = config + "/" + fileName;
+            }
+            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+            ObjectMetadata meta = new ObjectMetadata();
+            meta.setContentType(contentType);
+            UploadFileRequest uploadFileRequest = new UploadFileRequest(privateBucket, fileName);
+            // 指定上传的本地文件。
+            uploadFileRequest.setUploadFile(file.toString());
+            // 指定上传并发线程数,默认为1。
+            uploadFileRequest.setTaskNum(10);
+            // 指定上传的分片大小,范围为100KB~5GB,默认为文件大小/10000。
+            uploadFileRequest.setPartSize(1024 * 1024);
+            // 开启断点续传,默认关闭。
+            uploadFileRequest.setEnableCheckpoint(true);
+            uploadFileRequest.setCheckpointFile(file.getAbsolutePath() + "uploadFile.ucp");
+            // 文件的元数据。
+            uploadFileRequest.setObjectMetadata(meta);
+            // 设置上传成功回调,参数为Callback类型。
+            //uploadFileRequest.setCallback("<yourCallbackEvent>");
+            // 断点续传上传。
+            ossClient.uploadFile(uploadFileRequest);
+            Date expiration = new Date(new Date().getTime() + 3600L * 1000);
+            url = ossClient.generatePresignedUrl(privateBucket, fileName, expiration).toString();
+            // 关闭OSSClient。
+            ossClient.shutdown();
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+        return url;
+    }
+
+
+    /**
+     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
+     */
+    public String getContentType(String fileName) {
+        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
+        if (".bmp".equalsIgnoreCase(fileExtension)) {
+            return "image/bmp";
+        }
+        if (".gif".equalsIgnoreCase(fileExtension)) {
+            return "image/gif";
+        }
+        if (".jpeg".equalsIgnoreCase(fileExtension)) {
+            return "image/jpeg";
+        }
+        if (".jpg".equalsIgnoreCase(fileExtension)) {
+            return "image/jpg";
+        }
+        if (".png".equalsIgnoreCase(fileExtension)) {
+            return "image/png";
+        }
+        if (".html".equalsIgnoreCase(fileExtension)) {
+            return "text/html";
+        }
+        if (".txt".equalsIgnoreCase(fileExtension)) {
+            return "text/plain";
+        }
+        if (".vsd".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.visio";
+        }
+        if (".ppt".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.ms-powerpoint";
+        }
+        if (".pptx".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.openxmlformats-officedocument.presentationml.presentation";
+        }
+        if (".doc".equalsIgnoreCase(fileExtension)) {
+            return "application/msword";
+        }
+        if ("docx".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
+        }
+        if (".xml".equalsIgnoreCase(fileExtension)) {
+            return "text/xml";
+        }
+        if (".mp4".equalsIgnoreCase(fileExtension)) {
+            return "video/mp4";
+        }
+        if (".mp3".equalsIgnoreCase(fileExtension)) {
+            return "audio/mp3";
+        }
+        if (".pdf".equalsIgnoreCase(fileExtension)) {
+            return "application/pdf";
+        }
+        return "text/html";
+    }
+
+    public void deleteFile(File... files) {
+        for (File file : files) {
+            //logger.info("File:[{}]",file.getAbsolutePath());
+            if (file.exists()) {
+                file.delete();
+            }
+        }
+    }
+
+    public File ossUpload(MultipartFile file) throws IOException {
+        // 获取文件名
+        String fileName = file.getOriginalFilename();
+        // 获取文件后缀
+        String prefix = fileName.substring(fileName.lastIndexOf("."));
+        // 用uuid作为文件名,防止生成的临时文件重复
+        File excelFile = File.createTempFile(UUID.randomUUID().toString(), prefix);
+        // MultipartFile to File
+        file.transferTo(excelFile);
+        //程序结束时,删除临时文件
+        return excelFile;
+    }
+
+    /**
+     * 授权生成签名URL临时访问
+     *
+     * @param fileName 文件名称
+     */
+    public String getOssUrl(String fileName) {
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        // 设置URL过期时间为1个小时
+        Date expiration = new Date(new Date().getTime() + 3600L * 1000);
+        if ("product".equals(config)) {
+            fileName = "prod/" + fileName;
+        } else {
+            fileName = config + "/" + fileName;
+        }
+        String url = ossClient.generatePresignedUrl(privateBucket, fileName, expiration).toString();
+        // 关闭OSSClient。
+        ossClient.shutdown();
+        return url;
+    }
+
+    /**
+     * 生成商品资料库链接
+     *
+     * @param archiveFile
+     * @return
+     */
+    public String generateProductArchiveUrl(String ossName, Date uploadTime) {
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        // 设置URL过期时间为1个小时
+        Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000);
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date dateOne = format.parse("2021-06-01 00:00:00");
+            Date dateTwo = format.parse("2021-09-17 18:00:00");
+            String active = "product".equals(config) ? "prod" : config;
+            if (uploadTime != null && uploadTime.compareTo(dateOne) > 0 && uploadTime.compareTo(dateTwo) < 0) {
+                ossName = active + "/" + ossName;
+            } else if (uploadTime != null && uploadTime.compareTo(dateTwo) > 0) {
+                ossName = active + "/archiveFile/" + ossName;
+            }
+        } catch (ParseException e) {
+        }
+        String url = ossClient.generatePresignedUrl(privateBucket, ossName, expiration).toString();
+        ossClient.shutdown();
+        return url;
+    }
+
+    /**
+     * oss单个文件删除
+     *
+     * @param fileName 文件名称或文件夹名称
+     */
+    public void deleteSingleFile(String fileName) {
+        // 创建OSSClient实例。
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        // 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。
+        // 如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
+        try {
+            //之前的文件没有放进文件夹
+            ossClient.deleteObject(privateBucket, fileName);
+        } catch (Exception e) {
+            if ("product".equals(config)) {
+                fileName = "prod/" + fileName;
+            } else {
+                fileName = config + "/" + fileName;
+            }
+            ossClient.deleteObject(privateBucket, fileName);
+        }
+        // 关闭OSSClient。
+        ossClient.shutdown();
+    }
+
+    /**
+     * oss单个文件下载
+     */
+    public void downFile(String ossName, String fileName) {
+        // 创建OSSClient实例。
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
+        try {
+            //之前的文件没有放进文件夹
+            ossClient.getObject(new GetObjectRequest(privateBucket, ossName), new File("./" + fileName));
+        } catch (Exception e) {
+            if ("product".equals(config)) {
+                ossName = "prod/" + ossName;
+            } else {
+                ossName = config + "/" + ossName;
+            }
+            ossClient.getObject(new GetObjectRequest(privateBucket, ossName), new File("./" + fileName));
+        }
+        // 关闭OSSClient。
+        ossClient.shutdown();
+    }
+}

+ 61 - 58
src/main/resources/mapper/CmOrderRemarkMapper.xml

@@ -3,71 +3,74 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.modules.order.dao.CmOrderRemarkDao">
-    <sql id="cmOrderRemarkColumns">
-		su.id AS "id",
-		su.no AS "no",
-		a.orderId AS "orderId",
-		a.remarks AS "remarks",
-		a.createBy AS "createBy.id",
-		a.createDate AS "createDate",
-		su.name AS  "sysUserName"
-	</sql>
 
-    <select id="get" resultType="com.caimei.modules.order.entity.CmOrderRemark">
-        SELECT
-        <include refid="cmOrderRemarkColumns"/>
-        FROM cm_order_remark a
-        LEFT JOIN sys_user su ON su.id = a.createBy
-        WHERE a.id = #{id}
-        ORDER BY a.createDate
-    </select>
 
     <select id="findList" resultType="com.caimei.modules.order.entity.CmOrderRemark">
-        SELECT
-        <include refid="cmOrderRemarkColumns"/>
+        SELECT a.id           AS "id",
+               a.orderId      AS "orderId",
+               a.remarks      AS "remarks",
+               a.createBy     AS "createBy.id",
+               a.createDate   AS "createDate",
+               cu.accountName AS "createName"
         FROM cm_order_remark a
-        LEFT JOIN sys_user su ON su.id = a.createBy
-        <if test="shopOrderId != null">
-            <where>
-                <if test="orderId != null and orderId != ''">
-                    AND (a.orderID = #{orderId} AND a.shopOrderID is null)
-                </if>
-                or (a.orderID = #{orderId} AND a.shopOrderID = #{shopOrderId})
-            </where>
-        </if>
-        <if test="shopOrderId == null">
-            <where>
-                <if test="orderId != null and orderId != ''">
-                    AND a.orderID = #{orderId} AND a.shopOrderID is null
-                </if>
-            </where>
-        </if>
+                 LEFT JOIN cm_mall_admin_user cu ON cu.id = a.createBy
+        where a.orderId = #{orderId}
         ORDER BY a.createDate
     </select>
 
-    <insert id="insert" parameterType="com.caimei.modules.order.entity.CmOrderRemark"  keyProperty="id" useGeneratedKeys="true">
-		INSERT INTO cm_order_remark(
-			orderID,
-			shopOrderID,
-			remarks,
-			createBy,
-			createDate
-		) VALUES (
-			#{orderId},
-			#{shopOrderId},
-			#{remarks},
-			#{createBy},
-			#{createDate}
-		)
-	</insert>
+    <select id="findImages" resultType="java.lang.String">
+        select remarkImage
+        from cm_order_remark_image
+        where remarkId = #{id}
+    </select>
+
+    <select id="findFiles" resultType="com.caimei.modules.order.entity.OssFile">
+        select id, orderId, name, ossName, md5Hex, uploadTime
+        from cm_order_remark_file
+        where remarkId = #{id}
+    </select>
+
+    <select id="findFileByMd5" resultType="com.caimei.modules.order.entity.OssFile">
+        select id, orderId, remarkId, name, ossName, md5Hex, uploadTime
+        from cm_order_remark_file
+        where md5Hex = #{md5Hex}
+    </select>
+
+    <select id="findRemarkById" resultType="com.caimei.modules.order.entity.OssFile">
+        select id, orderId, remarkId, name, ossName, md5Hex, uploadTime
+        from cm_order_remark_file
+        where id = #{fileId}
+    </select>
+
+    <insert id="insert" parameterType="com.caimei.modules.order.entity.CmOrderRemark" keyProperty="id"
+            useGeneratedKeys="true">
+        INSERT INTO cm_order_remark(orderID,
+                                    remarks,
+                                    createBy,
+                                    createDate)
+        VALUES (#{orderId},
+                #{remarks},
+                #{createBy},
+                now())
+    </insert>
+
+    <insert id="insertImage">
+        INSERT INTO cm_order_remark_image(orderID, remarkId, remarkImage, addTime, delFlag)
+        values (#{orderId}, #{remarkId}, #{remarkImage}, now(), 0)
+    </insert>
+
+    <insert id="insertFile">
+        insert into cm_order_remark_file(orderId, remarkId, name, ossName, md5Hex, uploadTime)
+        values (#{orderId}, #{remarkId}, #{name}, #{ossName}, #{md5Hex}, now())
+    </insert>
 
     <update id="update">
-		UPDATE cm_order_remark SET
-			orderID = #{orderId},
-			shopOrderID = #{shopOrderId},
-			remarks = #{remarks},
-			createBy = #{createBy},
-			createDate = #{createDate}
-		WHERE id = #{id}
-	</update>
+        UPDATE cm_order_remark
+        SET orderID     = #{orderId},
+            shopOrderID = #{shopOrderId},
+            remarks     = #{remarks},
+            createBy    = #{createBy},
+            createDate  = #{createDate}
+        WHERE id = #{id}
+    </update>
 </mapper>

+ 15 - 13
src/main/resources/mapper/CmReceiptOrderRelationMapper.xml

@@ -17,18 +17,20 @@
 	</select>
 
 	<select id="findByOrderId" resultType="com.caimei.modules.order.entity.CmReceiptOrderRelation">
-		select
-		a.*,
-		b.payType as "payType",
-		b.receiptDate as "receiptDate",
-		b.confirmType as "confirmType"
-		from  cm_receipt_order_relation a
-		left join cm_discern_receipt b on a.receiptID = b.id
-		where a.orderID = #{orderId}
-		AND b.receiptType = '1'
-		AND b.receiptStatus = '3'
-		AND a.delFlag = '0'
-		AND b.delFlag = '0'
-		order by b.receiptDate desc
+		SELECT
+			a.*,
+			coc.bankAccount as bankNameType,
+			b.payType AS "payType",
+			b.receiptDate AS "receiptDate",
+			b.confirmType AS "confirmType"
+		FROM  cm_receipt_order_relation a
+		LEFT JOIN cm_discern_receipt b ON a.receiptID = b.id
+		LEFT JOIN cm_offline_collection coc ON b.payType=coc.type
+		WHERE a.orderID = #{orderId}
+		  AND b.receiptType = '1'
+		  AND b.receiptStatus = '3'
+		  AND a.delFlag = '0'
+		  AND b.delFlag = '0'
+		ORDER BY b.receiptDate DESC
 	</select>
 </mapper>

+ 27 - 4
src/main/resources/mapper/NewOrderMapper.xml

@@ -33,7 +33,6 @@
 		a.delFlag AS delFlag,
 		a.onlinePayFlag AS onlinePayFlag,
 		a.payTime AS payTime,
-		(select sum(cop.totalAddedValueTax) from cm_order_product cop where cop.orderId = a.orderId) AS totalAddedValueTax,
 		a.preferential AS preferential,
 		a.closeReason AS closeReason,
 		a.receiptStatus as receiptStatus,
@@ -250,7 +249,8 @@
 
     <update id="updateReceiptStatus">
         update cm_order
-        set receiptStatus = #{status}
+        set receiptStatus = #{status},
+            status = #{orderStatus}
         where orderId = #{orderId}
     </update>
 
@@ -290,10 +290,12 @@
         (SELECT IFNULL(sum(cop.shouldPayFee),0) FROM cm_order_product cop WHERE cop.orderId=co.orderId) AS
         "shouldPayProduct",
         co.status AS status,
-        co.postageOrderFlag AS postageOrderFlag
+        co.postageOrderFlag AS postageOrderFlag,
+        c.name as clubName
         FROM cm_order co
         LEFT JOIN bp_order_userinfo bou ON bou.orderId = co.orderId
         left join cm_order_product cop on co.orderID = cop.orderID
+        left join club c on co.userId = c.userId
         <where>
             <if test="orderId != null">
                 AND co.orderId = #{orderId}
@@ -419,7 +421,9 @@
     <select id="get" resultType="com.caimei.modules.order.entity.NewOrder">
         SELECT
         <include refid="columns"/>
+        ,c.name as clubName
         FROM cm_order a
+        left join club c on a.userId = c.userId
         WHERE a.orderId = #{id}
     </select>
 
@@ -577,7 +581,7 @@
                  LEFT JOIN product p ON cop.productID = p.productID
                  left join cm_order co on co.orderID = cop.orderID
         WHERE cop.shopOrderID = #{shopOrderId}
-          AND IF(co.userBeans = 0, 1 = 1, cop.skuId != 4099)
+          AND IF(co.userBeans = 0, 1 = 1, cop.shopId != 998)
         ORDER BY cop.discountPrice DESC
     </select>
 
@@ -689,6 +693,7 @@
         from cm_shop_order
         where orderId = #{orderId}
             and note is not null
+            and note != ''
     </select>
 
     <select id="findVoucher" resultType="com.caimei.modules.order.entity.Voucher">
@@ -702,4 +707,22 @@
         from cm_voucher_image
         where voucherId = #{id}
     </select>
+
+    <select id="findWaitPay" resultType="java.lang.Double">
+        SELECT ifnull((SELECT payTotalFee FROM cm_order WHERE orderId = #{orderId}) - ifnull(SUM(receiptAmount),0),0)
+        FROM cm_discern_receipt cdr
+        LEFT JOIN cm_receipt_order_relation cror ON cdr.id = cror.receiptID
+        WHERE cror.orderId = #{orderId}
+    </select>
+
+    <select id="findCountDeliver" resultType="java.lang.Integer">
+        SELECT COUNT(num) - ifnull((SELECT COUNT(num) FROM cm_logistics_record WHERE orderId = #{orderId}),0)
+        FROM cm_order_product
+        WHERE orderid = #{orderId}
+        and shopId != 998
+    </select>
+
+    <select id="findOrderStatus" resultType="java.lang.String">
+        select status from cm_order where orderId = #{orderId}
+    </select>
 </mapper>

+ 3 - 1
src/main/resources/mapper/NewOrderProductMapper.xml

@@ -120,9 +120,11 @@
 		<include refid="orderProductColumns"/>
 		,(SELECT ifnull(SUM(num),0)FROM cm_logistics_record WHERE orderproductId=a.orderproductId) as sendOutNum
 		FROM cm_order_product a
+		left join cm_logistics_record clr on a.orderProductId = clr.orderProductId
 		<include refid="orderProductJoins"/>
 		WHERE a.orderId = #{orderId}
-		and a.skuId != 4099
+		and clr.id is null
+		and a.shopId != 998
 	</select>
 
 	<select id="getActualCancelNum" resultType="java.lang.Integer">

+ 224 - 86
src/main/resources/mapper/NewShopOrderMapper.xml

@@ -3,64 +3,6 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.modules.order.dao.NewShopOrderDao">
-    <sql id="shopOrderColumns">
-        a.payCmAmount AS payCmAmount,
-			a.shopOrderId AS shopOrderId,
-			a.orderId AS orderId,
-			a.organizeId AS organizeId,
-			a.shopOrderNo AS  shopOrderNo,
-			a.orderNo AS  orderNo,
-			a.userId  AS userId,
-			a.shopId  AS shopId,
-			a.itemCount  AS itemCount,
-			a.townId  AS townId,
-			a.productAmount  AS productAmount,
-            a.isColdChina,
-			a.discountAmount AS  discountAmount,
-			a.totalAmount AS  totalAmount,
-			a.payFlag  AS payFlag,
-			a.payTime  AS payTime,
-			a.finishTime AS finishTime,
-			a.refundStatus AS  refundStatus,
-			a.needPayAmount AS  needPayAmount,
-			a.canRefundAmount AS  canRefundAmount,
-			a.refundAmount AS  refundAmount,
-			a.clubId  AS clubId,
-			a.spId AS  spId,
-			a.orderBeanAmount AS  orderBeanAmount,
-			a.useBeanAmount AS  useBeanAmount,
-			a.useBeanFlag AS  useBeanFlag,
-			a.canRefundFlag AS  canRefundFlag,
-			a.useBalanceFlag  AS useBalanceFlag,
-			a.canRefundBeans AS  canRefundBeans,
-			a.freePostageFee AS  freePostageFee,
-			a.freePostageTicketId  AS freePostageTicketId,
-			a.brokerage  AS brokerage,
-			a.delFlag  AS delFlag,
-			a.refundsAmount  AS refundsAmount,
-			a.orderStatusFlag  AS orderStatusFlag,
-			a.orderSubmitType AS orderSubmitType,
-			a.orderTime AS orderTime,
-			a.presentNum AS presentNum,
-			a.preferential AS preferential,
-			a.outStoreNum AS outStoreNum,
-			IFNULL(a.outStoreTimes, 0) AS outStoreTimes,
-    		a.receiveGoodsTime AS receiveGoodsTime,
-    		a.note AS note,
-    		a.payStatus AS payStatus,
-    		a.sendOutStatus AS sendOutStatus,
-    		a.shopProductAmount AS shopProductAmount,
-    		a.shopPostFee AS shopPostFee,
-    		a.shopTaxFee AS shopTaxFee,
-    		a.shouldPayShopAmount AS shouldPayShopAmount,
-    		a.payedShopAmount AS payedShopAmount,
-    		a.shopOtherFee AS shopOtherFee,
-    		a.paying AS paying,
-    		a.costType AS costType,
-    		a.modifyShouldPayNote AS modifyShouldPayNote,
-    		proportional AS proportional,
-            a.settleStatus as settleStatus
-    </sql>
 
     <update id="update">
         update cm_shop_order
@@ -220,43 +162,240 @@
     </update>
 
     <select id="get" resultType="com.caimei.modules.order.entity.NewShopOrder" useCache="false" flushCache="true">
-        select
-        <include refid="shopOrderColumns"/>
+        select a.refundStatus                                       AS refundStatus,
+               ifnull(a.shopPostFee, 0)                             AS shopPostFee,
+               a.paying                                             AS paying,
+               ifnull(a.settleStatus, 1)                            as settleStatus,
+               ifnull(a.receiptStatus, 1)                           as receiptStatus,
+               a.shopOrderID                                        AS shopOrderId,
+               a.orderID                                            AS orderId,
+               a.organizeID                                         AS organizeId,
+               a.shopOrderNo                                        AS shopOrderNo,
+               a.orderNo                                            AS orderNo,
+               a.userID                                             AS userId,
+               a.shopID                                             AS shopId,
+               a.itemCount                                          AS itemCount,
+               a.townID                                             AS townId,
+               a.productAmount                                      AS productAmount,
+               a.accountAmount                                      AS accountAmount,
+               a.totalAmount                                        AS totalAmount,
+               a.payTime                                            AS payTime,
+               a.needPayAmount                                      AS needPayAmount,
+               a.splitCode,
+               a.realPay                                            AS realPay,
+               a.receiptAmount                                      AS receiptAmount,
+               a.refundAmount                                       AS refundAmount,
+               a.clubID                                             AS clubId,
+               a.spID                                               AS spId,
+               a.canRefundFlag                                      AS canRefundFlag,
+               a.freePostageFee                                     AS freePostageFee,
+               a.brokerage                                          AS brokerage,
+               a.refundsAmount                                      AS refundsAmount,
+               a.orderStatusFlag                                    AS orderStatusFlag,
+               a.orderType                                          AS orderType,
+               a.orderTime                                          AS orderTime,
+               ifnull(a.presentNum, 0)                              AS presentNum,
+               a.preferential                                       AS preferential,
+               a.receiveGoodsTime                                   AS receiveGoodsTime,
+               a.note                                               AS note,
+               a.payStatus                                          AS payStatus,
+               ifnull(a.sendOutStatus, 0)                           AS sendOutStatus,
+               a.shopProductAmount                                  AS shopProductAmount,
+               a.shouldPayShopAmount                                AS shouldPayShopAmount,
+               ifnull((select sum(payAmount)
+                       from cm_pay_shop_record
+                       where shopOrderId = a.shopOrderId
+                         and status = 1
+                         and delFlag = 0), 0)                       as payedShopAmount,
+               ifnull((select sum(payCmAmount)
+                       from cm_pay_shop_record
+                       where shopOrderId = a.shopOrderId
+                         and status = 1
+                         and delFlag = 0), 0)                       as payCmAmount,
+               a.differenceType                                     AS differenceType,
+               ifnull(a.outStoreNum, 0)                             as outStoreNum,
+               ifnull(a.outStoreTimes, 0)                           as outStoreTimes,
+               co.payTotalFee                                       AS payTotalFee,
+               co.status                                            AS status,
+               co.receiptStatus                                     as orderReceiptStatus,
+               a.isColdChina,
+               bou.name                                             AS buyer,
+               s.name                                               AS shopName,
+               c.name                                               AS clubName,
+               if(co.freePostFlag = 1, co.freight, co.freePostFlag) as freight,
+               (select IFNULL(sum(associateAmount), 0)
+                from cm_receipt_order_relation crpr
+                         left join cm_discern_receipt b on crpr.receiptID = b.id
+                where crpr.orderID = a.orderId
+                  AND b.receiptStatus = 3
+                  AND b.delFlag = 0)                                as receiptTotalFee
         from cm_shop_order a
+                 left join cm_order co on a.orderId = co.orderID
+                 left join bp_order_userinfo bou on bou.orderId = a.orderID
+                 left join shop s on a.shopID = s.shopID
+                 left join club c on a.userId = c.userID
         where a.shopOrderId = #{shopOrderId}
     </select>
 
     <select id="findByShopOrderId" resultType="com.caimei.modules.order.entity.NewShopOrder">
-        select
-        <include refid="shopOrderColumns"/>
-        ,co.payTotalFee
+        select a.shopOrderID                                        AS shopOrderId,
+               a.orderID                                            AS orderId,
+               a.organizeID                                         AS organizeId,
+               a.shopOrderNo                                        AS shopOrderNo,
+               a.orderNo                                            AS orderNo,
+               a.userID                                             AS userId,
+               a.shopID                                             AS shopId,
+               a.itemCount                                          AS itemCount,
+               a.townID                                             AS townId,
+               a.productAmount                                      AS productAmount,
+               a.accountAmount                                      AS accountAmount,
+               a.totalAmount                                        AS totalAmount,
+               a.payTime                                            AS payTime,
+               a.needPayAmount                                      AS needPayAmount,
+               a.splitCode,
+               a.realPay                                            AS realPay,
+               a.receiptAmount                                      AS receiptAmount,
+               a.receiptStatus                                      as receiptStatus,
+               a.refundAmount                                       AS refundAmount,
+               a.clubID                                             AS clubId,
+               a.spID                                               AS spId,
+               a.canRefundFlag                                      AS canRefundFlag,
+               a.freePostageFee                                     AS freePostageFee,
+               a.brokerage                                          AS brokerage,
+               a.refundsAmount                                      AS refundsAmount,
+               a.orderStatusFlag                                    AS orderStatusFlag,
+               a.orderType                                          AS orderType,
+               a.orderTime                                          AS orderTime,
+               a.presentNum                                         AS presentNum,
+               a.preferential                                       AS preferential,
+               a.receiveGoodsTime                                   AS receiveGoodsTime,
+               a.note                                               AS note,
+               a.payStatus                                          AS payStatus,
+               a.sendOutStatus                                      AS sendOutStatus,
+               a.shopProductAmount                                  AS shopProductAmount,
+               ifnull(a.shopPostFee, 0)                             AS shopPostFee,
+               a.shouldPayShopAmount                                AS shouldPayShopAmount,
+               ifnull((select sum(payAmount)
+                       from cm_pay_shop_record
+                       where shopOrderId = a.shopOrderId
+                         and status = 1
+                         and delFlag = 0), 0)                       as payedShopAmount,
+               ifnull((select sum(payCmAmount)
+                       from cm_pay_shop_record
+                       where shopOrderId = a.shopOrderId
+                         and status = 1
+                         and delFlag = 0), 0)                       as payCmAmount,
+               a.paying                                             AS paying,
+               a.settleStatus                                       AS settleStatus,
+               a.differenceType                                     AS differenceType,
+               co.payTotalFee                                       AS payTotalFee,
+               co.status                                            AS status,
+               co.receiptStatus                                     as orderReceiptStatus,
+               a.isColdChina,
+               bou.name                                             AS buyer,
+               s.name                                               AS shopName,
+               c.name                                               AS clubName,
+               if(co.freePostFlag = 1, co.freight, co.freePostFlag) as freight,
+               (select IFNULL(sum(associateAmount), 0)
+                from cm_receipt_order_relation crpr
+                         left join cm_discern_receipt b on crpr.receiptID = b.id
+                where crpr.orderID = a.orderId
+                  AND b.receiptStatus = 3
+                  AND b.delFlag = 0)                                as receiptTotalFee
         from cm_shop_order a
-        left join cm_order co on a.orderId = co.orderId
+                 left join bp_order_userinfo bou on bou.orderId = a.orderID
+                 left join cm_order co on co.orderID = a.orderID
+                 left join shop s on s.shopID = a.shopID
+                 LEFT JOIN club c ON c.userID = a.userID
+                 LEFT JOIN cm_receipt_order_relation cror ON cror.orderId = co.orderId
+                 LEFT JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
+                 LEFT JOIN cm_split_account csa on csa.shopOrderId = a.shopOrderID
         where a.shopOrderId = #{shopOrderId}
+        group by a.shopOrderId
     </select>
 
     <select id="findListByOrderId" resultType="com.caimei.modules.order.entity.NewShopOrder">
-        SELECT<include refid="shopOrderColumns"/>,
-        b.name as shopName,
-        (select ifnull(sum(payAmount),0) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1 and
-        delFlag = 0) as payedShopAmount,
-        (select ifnull(sum(payCmAmount),0) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1 and
-        delFlag = 0) as payCmAmount
-        FROM cm_shop_order a
-        left join shop b on a.shopId = b.shopId
-        left join cm_order_product cop on a.shopOrderId = cop.shopOrderId
-        WHERE a.orderId = #{orderId}
-        and cop.skuId != 4099
-        ORDER BY a.shopOrderNo DESC
+        select DISTINCT a.shopOrderID                                        AS shopOrderId,
+                        a.orderID                                            AS orderId,
+                        a.organizeID                                         AS organizeId,
+                        a.shopOrderNo                                        AS shopOrderNo,
+                        a.orderNo                                            AS orderNo,
+                        a.userID                                             AS userId,
+                        a.shopID                                             AS shopId,
+                        a.itemCount                                          AS itemCount,
+                        a.townID                                             AS townId,
+                        a.productAmount                                      AS productAmount,
+                        a.accountAmount                                      AS accountAmount,
+                        a.totalAmount                                        AS totalAmount,
+                        a.payTime                                            AS payTime,
+                        a.needPayAmount                                      AS needPayAmount,
+                        a.splitCode,
+                        a.realPay                                            AS realPay,
+                        a.receiptAmount                                      AS receiptAmount,
+                        a.receiptStatus                                      as receiptStatus,
+                        a.refundAmount                                       AS refundAmount,
+                        a.clubID                                             AS clubId,
+                        a.spID                                               AS spId,
+                        a.canRefundFlag                                      AS canRefundFlag,
+                        a.freePostageFee                                     AS freePostageFee,
+                        a.brokerage                                          AS brokerage,
+                        a.refundsAmount                                      AS refundsAmount,
+                        a.orderStatusFlag                                    AS orderStatusFlag,
+                        a.orderType                                          AS orderType,
+                        a.orderTime                                          AS orderTime,
+                        a.presentNum                                         AS presentNum,
+                        a.preferential                                       AS preferential,
+                        a.receiveGoodsTime                                   AS receiveGoodsTime,
+                        a.note                                               AS note,
+                        a.payStatus                                          AS payStatus,
+                        a.sendOutStatus                                      AS sendOutStatus,
+                        a.shopProductAmount                                  AS shopProductAmount,
+                        ifnull(a.shopPostFee, 0)                             AS shopPostFee,
+                        a.shouldPayShopAmount                                AS shouldPayShopAmount,
+                        ifnull((select sum(payAmount)
+                                from cm_pay_shop_record
+                                where shopOrderId = a.shopOrderId
+                                  and status = 1
+                                  and delFlag = 0), 0)                       as payedShopAmount,
+                        ifnull((select sum(payCmAmount)
+                                from cm_pay_shop_record
+                                where shopOrderId = a.shopOrderId
+                                  and status = 1
+                                  and delFlag = 0), 0)                       as payCmAmount,
+                        a.paying                                             AS paying,
+                        a.settleStatus                                       AS settleStatus,
+                        a.differenceType                                     AS differenceType,
+                        co.payTotalFee                                       AS payTotalFee,
+                        co.status                                            AS status,
+                        co.receiptStatus                                     as orderReceiptStatus,
+                        a.isColdChina,
+                        bou.name                                             AS buyer,
+                        s.name                                               AS shopName,
+                        c.name                                               AS clubName,
+                        if(co.freePostFlag = 1, co.freight, co.freePostFlag) as freight,
+                        (select IFNULL(sum(associateAmount), 0)
+                         from cm_receipt_order_relation crpr
+                                  left join cm_discern_receipt b on crpr.receiptID = b.id
+                         where crpr.orderID = a.orderId
+                           AND b.receiptStatus = 3
+                           AND b.delFlag = 0)                                as receiptTotalFee
+        from cm_shop_order a
+                 left join bp_order_userinfo bou on bou.orderId = a.orderID
+                 left join cm_order co on co.orderID = a.orderID
+                 left join shop s on s.shopID = a.shopID
+                 LEFT JOIN club c ON c.userID = a.userID
+                 LEFT JOIN cm_receipt_order_relation cror ON cror.orderId = co.orderId
+                 LEFT JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
+                 LEFT JOIN cm_split_account csa on csa.shopOrderId = a.shopOrderID
+        where a.orderId = #{orderId}
     </select>
 
     <select id="findUnPaidShopOrder" resultType="java.lang.Integer">
-        SELECT COUNT(cso.shopOrderId)
-        FROM cm_shop_order cso
-        left join cm_order_product cop on cso.orderID=cop.orderID
-        WHERE cso.orderID = #{orderId}
-          AND cop.skuId != 4099
-          AND cso.payStatus != 3
+        SELECT COUNT(shopOrderId)
+        FROM cm_shop_order
+        WHERE orderID = #{orderId}
+          AND shopID != 998
+          AND payStatus != 3
     </select>
 
     <select id="getPayingStatus" resultType="java.lang.Integer">
@@ -310,7 +449,7 @@
         a.payStatus AS payStatus,
         a.sendOutStatus AS sendOutStatus,
         a.shopProductAmount AS shopProductAmount,
-        a.shopPostFee AS shopPostFee,
+        ifnull(a.shopPostFee,0) AS shopPostFee,
         a.shouldPayShopAmount AS shouldPayShopAmount,
         ifnull((select sum(payAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1 and
         delFlag = 0),0) as payedShopAmount,
@@ -337,7 +476,6 @@
         from cm_shop_order a
         left join bp_order_userinfo bou on bou.orderId = a.orderID
         left join cm_order co on co.orderID = a.orderID
-        left join cm_order_product cop on co.orderID = cop.orderID
         left join shop s on s.shopID = a.shopID
         LEFT JOIN club c ON c.userID = a.userID
         LEFT JOIN cm_receipt_order_relation cror ON cror.orderId = co.orderId
@@ -393,7 +531,7 @@
             and a.payStatus != 3 and co.status NOT IN (6,7)
             and co.delFlag = 0
             and a.delFlag = 0
-            and cop.skuId != 4099
+            and a.shopID != 998
             and a.paying != 1
             and co.orderID not in (
             SELECT orderID FROM cm_order_product WHERE productID IN
@@ -413,7 +551,7 @@
     </select>
 
     <select id="findSettleStatus" resultType="java.lang.Integer">
-        select ifnull(settleStatus,1)
+        select ifnull(settleStatus, 1)
         from cm_shop_order
         where orderID = #{orderId}
     </select>

+ 45 - 37
src/main/resources/mapper/PayShopDao.xml

@@ -119,6 +119,9 @@
     <update id="updatePaying">
         update cm_shop_order
         set paying = 1
+        <if test="shopPostFee != null and shopPostFee > 0">
+            ,shopPostFee = #{shopPostFee}
+        </if>
         where shopOrderID = #{shopOrderId}
     </update>
 
@@ -231,15 +234,19 @@
         a.reviewTime AS "reviewTime",
         a.payTime AS "payTime",
         a.status AS "status",
+        a.payType as payType,
         u1.accountName AS applicantName,
         u2.accountName AS reviewerName,
-        s.name AS shopName
+        s.name AS shopName,
+        c.name as clubName,
+        cso.orderId as orderId
         FROM cm_pay_shop a
         left join cm_mall_admin_user u1 on u1.id = a.applicant
         left join cm_mall_admin_user u2 on u2.id = a.reviewer
-        left join cm_pay_shop_record cpr on a.id = cpr.payShopID
         left join shop s on s.shopID = a.shopID
-        LEFT JOIN cm_order_product cop ON cpr.shopOrderId = cop.shopOrderId
+        left join cm_pay_shop_record cpsr on a.id = cpsr.payShopID
+        left join cm_shop_order cso on cso.shopOrderId = cpsr.shopOrderId
+        left join club c on cso.userId = c.userId
         <where>
             <if test="payShopId != null">
                 and a.id = #{payShopId}
@@ -285,7 +292,7 @@
                 so.shopOrderID=cpsr.shopOrderID WHERE so.orderNo LIKE CONCAT('%',#{orderNo},'%'))
             </if>
             and a.delFlag = 0
-            and cop.skuId != 4099
+            and a.shopID != 998
         </where>
         ORDER BY a.id desc
     </select>
@@ -321,37 +328,37 @@
     </select>
 
     <select id="findPayShopOrders" resultType="com.caimei.modules.order.entity.NewShopOrder">
-        SELECT DISTINCT a.shopOrderID       AS shopOrderId,
-                        a.orderID           AS orderId,
-                        a.organizeID        AS organizeId,
-                        a.shopOrderNo       AS shopOrderNo,
-                        a.orderNo           AS orderNo,
+        SELECT DISTINCT a.shopOrderID            AS shopOrderId,
+                        a.orderID                AS orderId,
+                        a.organizeID             AS organizeId,
+                        a.shopOrderNo            AS shopOrderNo,
+                        a.orderNo                AS orderNo,
                         a.totalAmount,
-                        a.payCmAmount       AS payCmAmount,
-                        a.receiptStatus     AS receiptStatus,
-                        a.orderTime         AS orderTime,
-                        a.payStatus         AS payStatus,
-                        a.shopProductAmount AS shopProductAmount,
-                        a.shopPostFee       AS shopPostFee,
+                        a.payCmAmount            AS payCmAmount,
+                        a.receiptStatus          AS receiptStatus,
+                        a.orderTime              AS orderTime,
+                        a.payStatus              AS payStatus,
+                        a.shopProductAmount      AS shopProductAmount,
+                        ifnull(a.shopPostFee, 0) AS shopPostFee,
                         ifnull((select sum(payAmount)
                                 from cm_pay_shop_record
                                 where shopOrderId = a.shopOrderId
                                   and status = 1
                                   and delFlag = 0),
-                               0)           as payedShopAmount,
+                               0)                as payedShopAmount,
                         ifnull((select sum(payCmAmount)
                                 from cm_pay_shop_record
                                 where shopOrderId = a.shopOrderId
                                   and status = 1
                                   and delFlag = 0),
-                               0)           as payCmAmount,
-                        a.payedShopAmount   AS payedShopAmount,
-                        co.payTotalFee      AS payTotalFee,
-                        s.name              AS shopName,
+                               0)                as payCmAmount,
+                        a.payedShopAmount        AS payedShopAmount,
+                        co.payTotalFee           AS payTotalFee,
+                        s.name                   AS shopName,
                         s.shopId,
                         a.paying,
-                        co.receiptStatus    AS orderReceiptStatus,
-                        bou.name            as buyer
+                        co.receiptStatus         AS orderReceiptStatus,
+                        bou.name                 as buyer
         FROM cm_shop_order a
                  LEFT JOIN cm_order co ON co.orderID = a.orderID
                  LEFT JOIN shop s ON s.shopID = a.shopID
@@ -380,6 +387,7 @@
                cop.totalAmount,
                cop.notOutStore,
                cop.presentNum,
+               cop.productImage,
                ifnull((SELECT SUM(crpp.actualReturnedNum) + SUM(crpp.actualCancelNum)
                        FROM cm_returned_purchase_product crpp
                                 LEFT JOIN cm_returned_purchase rp ON rp.id = crpp.returnedID
@@ -395,11 +403,10 @@
     </select>
 
     <select id="findShopOrderNos" resultType="java.lang.String">
-        SELECT CONCAT(cso.shopOrderNo, '(', cso.shopOrderID, ')') AS result
-        FROM cm_shop_order cso
-        left join cm_order_product cop on cso.orderID = cop.orderID
-        WHERE cso.orderID = #{orderId}
-          and cop.skuId != 4099
+        SELECT CONCAT(shopOrderNo, '(', shopOrderID, ')') AS result
+        FROM cm_shop_order
+        WHERE orderID = #{orderId}
+          and shopId != 998
     </select>
 
     <select id="findPayShopRecords" resultType="com.caimei.modules.order.entity.OrderPayShopRecord">
@@ -424,9 +431,8 @@
         SELECT distinct CONCAT(cso.shopOrderNo, '(', cso.shopOrderID, ')') AS result
         FROM cm_shop_order cso
         left join cm_pay_shop_record cpsr on cso.shopOrderID = cpsr.shopOrderID
-        left join cm_order_product cop on cpsr.shopOrderId = cop.shopOrderId
         WHERE cpsr.payShopID = #{id}
-          and cop.skuId != 4099
+          and cso.shopId != 998
     </select>
 
     <select id="findOrderNos" resultType="java.lang.String">
@@ -434,9 +440,8 @@
         FROM cm_pay_shop_record cpsr
         left join cm_shop_order cso on cpsr.shopOrderID = cso.shopOrderID
         left join cm_order co on cso.orderID = co.orderID
-        left join cm_order_product cop on co.orderId = cop.orderID
         WHERE cpsr.payShopID = #{id}
-          and cop.skuId != 4099
+          and cso.shopId != 998
     </select>
 
     <select id="findShouldPayShopAmount" resultType="java.lang.Double">
@@ -493,7 +498,7 @@
         a.orderTime AS orderTime,
         a.payStatus AS payStatus,
         a.shopProductAmount AS shopProductAmount,
-        a.shopPostFee AS shopPostFee,
+        ifnull(a.shopPostFee,0) AS shopPostFee,
         ifnull((select sum(payAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1 and
         delFlag = 0),0) as payedShopAmount,
         ifnull((select sum(payCmAmount) from cm_pay_shop_record where shopOrderId = a.shopOrderId and status = 1 and
@@ -503,10 +508,13 @@
         s.name AS shopName,
         s.shopId,
         a.paying,
-        co.receiptStatus AS orderReceiptStatus
+        a.splitCode,
+        co.receiptStatus AS orderReceiptStatus,
+        c.name as clubName
         FROM cm_shop_order a
         LEFT JOIN cm_order co ON co.orderID = a.orderID
         LEFT JOIN shop s ON s.shopID = a.shopID
+        left join club c on a.userId = c.userId
         WHERE a.shopOrderId in
         <foreach collection="shopOrderIds" open="(" close=")" item="oId" separator=",">
             #{oId}
@@ -542,8 +550,8 @@
                a.payShopID   AS "payShopID",
                a.status      AS "status"
         FROM cm_pay_shop_record a
-                 LEFT JOIN cm_offline_collection f ON a.payType = f.type
-                 left join cm_pay_shop cps on a.shopID = cps.shopID
+        LEFT JOIN cm_offline_collection f ON a.payType = f.type
+        left join cm_pay_shop cps on a.shopID = cps.shopID
         WHERE a.shopOrderID in (select shopOrderId from cm_shop_order where orderId = #{orderId})
           and a.delFlag = 0
           and cps.delFlag = 0
@@ -575,8 +583,8 @@
                a.payShopID   AS "payShopID",
                a.status      AS "status"
         FROM cm_pay_shop_record a
-                 LEFT JOIN cm_offline_collection f ON a.payType = f.type
-                 left join cm_pay_shop cps on a.shopID = cps.shopID
+        LEFT JOIN cm_offline_collection f ON a.payType = f.type
+        left join cm_pay_shop cps on a.shopID = cps.shopID
         WHERE a.shopOrderID in (select shopOrderId from cm_shop_order where orderId = #{shopOrderId})
           and a.delFlag = 0
           and cps.delFlag = 0