Browse Source

联合丽格1.0.2

huangzhiguo 1 year ago
parent
commit
a5cbfda2d7

+ 5 - 0
pom.xml

@@ -172,6 +172,11 @@
             <artifactId>aliyun-sdk-oss</artifactId>
             <version>3.10.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.1.6</version>
+        </dependency>
 
 
 

+ 25 - 8
src/main/java/com/caimei365/order/components/OrderCommonService.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 /**
@@ -295,6 +296,8 @@ public class OrderCommonService {
             } else {
                 arrList.add(3);
             }
+            // 是否有分帐号
+            AtomicBoolean isSplit = new AtomicBoolean(true);
             orderProductList.forEach(orderProduct -> {
                 // 不含税可开票商品,单价/折后单价在原基础上加上税费
                 boolean taxFlag = false;
@@ -330,15 +333,18 @@ public class OrderCommonService {
                         orderProduct.setSvipPriceTag("¥" + orderProduct.getDiscountPrice());
                     }
                 }
+                if (StringUtils.isEmpty(orderProduct.getSplitCode())) {
+                    isSplit.set(false);
+                }
             });
-            // 冷链运输费 -- 联合丽格
+            // 冷链运输费
             if (null != shopOrder.getIsColdChina() && 1 == shopOrder.getIsColdChina()) {
                 shopOrder.setColdChina(700.00d);
             } else {
                 shopOrder.setColdChina(0.00d);
             }
-            // 拼接运费信息--联合丽格
-            if (null != shopOrder.getColdChina()) {
+            // 拼接运费信息
+            if (null != shopOrder.getColdChina() && null != shopOrder.getIsColdChina() && 1 == shopOrder.getIsColdChina()) {
                 String open = "";
                 String close = "";
                 if (shopOrder.getIsColdChina()==1) {
@@ -383,11 +389,20 @@ public class OrderCommonService {
      */
     public List<DiscernReceiptVo> getDiscernReceiptAndSetShoporder(ShopOrderVo shopOrderVo) {
         // 判断是否可以走线上支付
+        if (0 == shopOrderVo.getPayway()) {
+            shopOrderVo.setOnlinePay(0);
+        } else if (1 == shopOrderVo.getPayway()) {
+            shopOrderVo.setOnlinePay(1);
+        } else {
+            shopOrderVo.setOnlinePay(2);
+        }
         Integer orderVoucher = orderCommonMapper.getOrderVoucher(shopOrderVo.getShopOrderId());
         if (null != orderVoucher && orderVoucher > 0) {
             shopOrderVo.setOnlinePay(2);
-        } else {
-            shopOrderVo.setOnlinePay(1);
+        }
+        // 余额抵扣线下
+        if (1 == shopOrderVo.getUseBalanceFlag()) {
+            shopOrderVo.setOnlinePay(2);
         }
         // 支付记录
         List<DiscernReceiptVo> discernReceiptList = orderCommonMapper.getDiscernReceipt(shopOrderVo.getOrderId(), shopOrderVo.getShopOrderId().toString());
@@ -400,7 +415,9 @@ public class OrderCommonService {
                 if (null != discernReceipt.getPayType()) {
                     discernReceipt.setPayTypeStr(ReceivablesType.getReceivablesType(discernReceipt.getPayType()));
                 }
-                if (2 == discernReceipt.getPayWay()) {
+                if (1 == discernReceipt.getPayWay()) {
+                    shopOrderVo.setOnlinePay(1);
+                } else {
                     shopOrderVo.setOnlinePay(2);
                 }
             });
@@ -417,9 +434,9 @@ public class OrderCommonService {
             shopOrderVo.setRealPay(shopOrderVo.getNeedPayAmount());
         }
         shopOrderVo.setObligation(MathUtil.sub(shopOrderVo.getRealPay(), receiptAmount).doubleValue());
-        //支付总金额
+        // 支付总金额 = 用户结算金额 + 付款金额
         if(!discernReceiptList.isEmpty()) {
-            shopOrderVo.setReceiptAmount(receiptAmount);
+            shopOrderVo.setReceiptAmount(MathUtil.add(shopOrderVo.getReceiptAmount(), receiptAmount).doubleValue());
         }
         return discernReceiptList;
     }

+ 4 - 3
src/main/java/com/caimei365/order/components/ProductService.java

@@ -426,6 +426,7 @@ public class ProductService {
             shopOrderVo.setReceiptStatus(shopOrder.getReceiptStatus());
             shopOrderVo.setAccountAmount(shopOrderPay);
             shopOrderVo.setReceiptAmount(shopOrderPay);
+            shopOrderVo.setUseBalanceFlag(1);
             payOrderMapper.updateShopOrderBalancePay(shopOrderVo);
 
         });
@@ -433,7 +434,7 @@ public class ProductService {
     }
 
     /**
-     *
+     * 保存余额抵扣到收款记录
      * @param balancePayFee
      * @param shopOrder
      * @param note
@@ -486,7 +487,7 @@ public class ProductService {
         balanceRecord.setAmount(shopOrderPay);
         balanceRecord.setOrderId(shopOrder.getOrderId());
         balanceRecord.setShopOrderId(shopOrder.getShopOrderId());
-        balanceRecord.setRemark("机构自主订单");
+        balanceRecord.setRemark("协销订单");
         balanceRecord.setDelFlag(0);
         // 保存 余额收支记录
         baseMapper.insertBalanceRecord(balanceRecord);
@@ -495,7 +496,7 @@ public class ProductService {
 
         // 修改子订单状态
         shopOrder.setAccountAmount(shopOrderPay);
-        shopOrder.setReceiptAmount(shopOrderPay);
+        shopOrder.setReceiptAmount(MathUtil.add(shopOrder.getReceiptAmount(),shopOrderPay).doubleValue());
         payOrderMapper.updateShopOrderBalancePay(shopOrder);
 
     }

+ 37 - 12
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -1,12 +1,8 @@
 package com.caimei365.order.controller;
 
-import com.alibaba.fastjson.JSONArray;
+import com.alibaba.excel.EasyExcel;
 import com.caimei365.order.model.ResponseJson;
-import com.caimei365.order.model.dto.JsonParamsDto;
-import com.caimei365.order.model.dto.LogisticsBatchDto;
-import com.caimei365.order.model.dto.LogisticsDto;
-import com.caimei365.order.model.dto.OrderRemarkDto;
-import com.caimei365.order.model.po.ShopPo;
+import com.caimei365.order.model.dto.*;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.ShipService;
 import com.github.pagehelper.PageInfo;
@@ -20,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.List;
 import java.util.Map;
 
@@ -88,6 +85,37 @@ public class ShipApi {
         return shipService.getSettlementList(shopId, payStatus, shopOrderNo, name, beginTime, endTime, refundStatus, pageNum, pageSize);
     }
 
+    /**
+     *导出结算列表
+     * @param shopId
+     * @param shopOrderNo
+     * @param payStatus
+     * @param name
+     * @param beginTime
+     * @param endTime
+     * @param refundStatus
+     * @param response
+     */
+    @PostMapping("/exportExcel")
+    public void exportExcel(Integer shopId, String shopOrderNo, Integer payStatus, String name, String beginTime, String endTime, Integer refundStatus,
+                            @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                            @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
+                            HttpServletResponse response) {
+        String file = "结算列表数据";
+        try {
+            ResponseJson<PageInfo<SettlementVo>> pageInfo = shipService.exportExcel(shopId, payStatus, shopOrderNo, name, beginTime, endTime, refundStatus, pageNum, pageSize);
+            SettlementDto settLementDto = new SettlementDto();
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
+            String fileName = URLEncoder.encode(file, "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+            EasyExcel.write(response.getOutputStream(), settLementDto.getClass()).autoCloseStream(Boolean.TRUE).sheet("数据").doWrite(pageInfo.getData().getList());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 供应商订单详情
      */
@@ -427,11 +455,8 @@ public class ShipApi {
      * @throws IOException
      */
     @ApiOperation("下载备注文件")
-    @GetMapping("/download/remark")
-    public ResponseJson<Map<String, Object>> downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException {
-        if (null == fileId) {
-            return ResponseJson.error(-1, "id不能为空", null);
-        }
-        return shipService.downFile(fileId, request, response);
+    @PostMapping("/download/remark")
+    public void downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException {
+        shipService.downFile(fileId, request, response);
     }
 }

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

@@ -50,7 +50,7 @@ public interface OrderCommonMapper {
      * @param shopOrderId
      * @return
      */
-    DiscernReceiptVo getShopOrderReceipt(@Param("shopOrderId") Integer shopOrderId);
+    List<DiscernReceiptVo> getShopOrderReceipt(@Param("shopOrderId") Integer shopOrderId);
     /**
      * 根据Id获取订单促销
      * @param orderPromotionsId 订单促销Id

+ 80 - 0
src/main/java/com/caimei365/order/model/dto/SettlementDto.java

@@ -0,0 +1,80 @@
+package com.caimei365.order.model.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/6/19
+ */
+@Data
+public class SettlementDto {
+    /**
+     * 子订单编号
+     */
+    @ExcelProperty(value = "子订单编号", index = 0)
+    private String shopOrderNo;
+    /**
+     * 订单提交时间
+     */
+    @ExcelProperty(value = "订单提交时间", index = 1)
+    private String orderTime;
+    /**
+     * 用户名称
+     */
+    @ExcelProperty(value = "用户名称", index = 2)
+    private String name;
+    /**
+     * 商品信息
+     */
+    @ExcelProperty(value = "商品信息", index = 3)
+    private String productInfo;
+    /**
+     * 订单金额
+     */
+    @ExcelProperty(value = "订单金额", index = 4)
+    private Double totalAmount;
+    /**
+     * 退款状态 1无退款、3有退款
+     */
+    @ExcelProperty(value = "退款状态", index = 5)
+    private String refundStatus;
+    /**
+     * 退款金额
+     */
+    @ExcelProperty(value = "退款金额", index = 6)
+    private Double refundAmount;
+    /**
+     * 支付手续费
+     */
+    @ExcelProperty(value = "支付手续费", index = 7)
+    private Double paymentCommission;
+    /**
+     * 分帐手续费
+     */
+    @ExcelProperty(value = "分帐手续费", index = 8)
+    private Double prorateCommission;
+    /**
+     * (付款供应商)付款状态:1待付款、2部分付款、3已付款
+     */
+    @ExcelProperty(value = "结算状态", index = 9)
+    private String payStatus;
+    /**
+     * 付供应商 = 商品费 + 运费 + 税费
+     */
+    @ExcelProperty(value = "总结算金额", index = 10)
+    private Double shouldPayShopAmount;
+    /**
+     * 已付款金额
+     */
+    @ExcelProperty(value = "已结算金额", index = 11)
+    private Double payedShopAmount;
+    /**
+     * 未结算金额
+     */
+    @ExcelProperty(value = "未结算金额", index = 12)
+    private Double unsettledAmount;
+}

+ 30 - 4
src/main/java/com/caimei365/order/model/vo/SettlementVo.java

@@ -1,5 +1,7 @@
 package com.caimei365.order.model.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -16,14 +18,17 @@ public class SettlementVo {
     /**
      * 子订单ID
      */
+    @ExcelIgnore
     private Integer shopOrderId;
     /**
      * 子订单编号
      */
+    @ExcelProperty(value = "子订单编号", index = 0)
     private String shopOrderNo;
     /**
      * 订单提交时间
      */
+    @ExcelProperty(value = "订单提交时间", index = 1)
     private String orderTime;
     /**
      * 用户名称
@@ -32,25 +37,46 @@ public class SettlementVo {
     /**
      * (付款供应商)付款状态:1待付款、2部分付款、3已付款
      */
+    @ExcelProperty(value = "结算状态", index = 9)
     private Integer payStatus;
     /**
-     * 付供应商 = 商品费 + 运费 + 税费
+     * 订单金额
      */
-    private Double shouldPayShopAmount;
+    @ExcelProperty(value = "订单金额", index = 4)
+    private Double totalAmount;
     /**
-     * 已付款金额
+     * 退款状态 1无退款、3有退款
      */
-    private Double payedShopAmount;
+    @ExcelProperty(value = "退款状态 1无退款、3有退款", index = 5)
+    private Integer refundStatus;
+    /**
+     * 退款金额
+     */
+    @ExcelProperty(value = "退款金额", index = 6)
+    private Double refundAmount;
     /**
      * 支付手续费
      */
+    @ExcelProperty(value = "支付手续费", index = 7)
     private Double paymentCommission;
     /**
      * 分帐手续费
      */
+    @ExcelProperty(value = "分帐手续费", index = 8)
     private Double prorateCommission;
+    /**
+     * 付供应商 = 商品费 + 运费 + 税费
+     */
+    @ExcelProperty(value = "付供应商", index = 10)
+    private Double shouldPayShopAmount;
+    /**
+     * 已付款金额
+     */
+    @ExcelProperty(value = "已付款金额", index = 11)
+    private Double payedShopAmount;
     /**
      * 订单商品信息
      */
+    @ExcelIgnore
     private List<OrderProductVo> orderProductList;
 }

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

@@ -99,7 +99,7 @@ public class ShopOrderVo implements Serializable {
      */
     private String OrderMark;
     /**
-     * 供应商 支持支付方式 1 线上 2 线下
+     * 供应商 支持支付方式 0 线上下线  1 线上 2 线下
      */
     private Integer payway;
     /**
@@ -343,7 +343,7 @@ public class ShopOrderVo implements Serializable {
      */
    private List<VoucherPo> voucher;
     /**
-     * 能否线上
+     * 供应商支持支付方式 0 线上下线  1 线上 2 线下
      */
    private Integer onlinePay;
     /**

+ 15 - 5
src/main/java/com/caimei365/order/service/ShipService.java

@@ -1,10 +1,7 @@
 package com.caimei365.order.service;
 
 import com.caimei365.order.model.ResponseJson;
-import com.caimei365.order.model.dto.JsonParamsDto;
-import com.caimei365.order.model.dto.LogisticsBatchDto;
-import com.caimei365.order.model.dto.LogisticsDto;
-import com.caimei365.order.model.dto.OrderRemarkDto;
+import com.caimei365.order.model.dto.*;
 import com.caimei365.order.model.vo.*;
 import com.github.pagehelper.PageInfo;
 import org.springframework.http.HttpHeaders;
@@ -44,6 +41,19 @@ public interface ShipService {
      * @param pageSize       每页数量
      */
     ResponseJson<PageInfo<SettlementVo>> getSettlementList(Integer shopId, Integer payStatus, String shopOrderNo, String name, String beginTime, String endTime, Integer refundStatus, int pageNum, int pageSize);
+
+    /**
+     * 导出excel
+     * @param shopId
+     * @param payStatus
+     * @param shopOrderNo
+     * @param name
+     * @param beginTime
+     * @param endTime
+     * @param refundStatus
+     * @return
+     */
+    ResponseJson<PageInfo<SettlementVo>> exportExcel(Integer shopId, Integer payStatus, String shopOrderNo, String name, String beginTime, String endTime, Integer refundStatus,Integer pageNum, Integer pageSize);
     /**
      * 供应商子订单详情
      * @param shopOrderId 子订单Id
@@ -196,5 +206,5 @@ public interface ShipService {
      * @param response
      * @throws IOException
      */
-    ResponseJson<Map<String, Object>> downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException;
+    void downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException;
 }

+ 15 - 27
src/main/java/com/caimei365/order/service/impl/HeliPayServiceImpl.java

@@ -15,7 +15,6 @@ import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.bo.PayParamBo;
 import com.caimei365.order.model.dto.BankListDto;
 import com.caimei365.order.model.dto.HeliDto;
-import com.caimei365.order.model.enums.AccountPayOrderType;
 import com.caimei365.order.model.enums.AppPayType;
 import com.caimei365.order.model.enums.OrderStatus;
 import com.caimei365.order.model.enums.PayType;
@@ -37,14 +36,12 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.beans.IntrospectionException;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
-import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -1251,39 +1248,30 @@ public class HeliPayServiceImpl implements HeliPayService {
             shopOrder.setOrderProductList(orderProductList);
             shopOrder.setShopLogo(ImageUtil.getImageUrl("shopLogo", shopOrder.getShopLogo(), domain));
             // 子订单支付方式
-            Integer onlinePay = 0;
+            AtomicReference<Integer> onlinePay = new AtomicReference<>(0);
 
-            // 支付记录
-            DiscernReceiptVo shopOrderReceipt = orderCommonMapper.getShopOrderReceipt(shopOrder.getShopOrderId());
-            // 1线上,2线下,3余额抵扣
-            if (null != shopOrderReceipt) {
-                if (1 == shopOrderReceipt.getPayWay()) {
-                    onlinePay = 1;
-                } else if (2 == shopOrderReceipt.getPayWay()) {
-                    onlinePay = 2;
-                } else {
-                    onlinePay = 2;
-                }
-            }
             // 供应商是否支持线上下线
             if (null != shopOrder.getPayway()) {
-                if (1 == shopOrder.getPayway()) {
-                    onlinePay = 1;
-                } else {
-                    onlinePay = 2;
-                }
+                onlinePay.set(shopOrder.getPayway());
             }
             // 线上分帐号
             String shopCode = payOrderMapper.getShopCode(shopOrder.getShopId());
             if (null == shopCode) {
-                onlinePay = 2;
+                onlinePay.set(2);
             }
-            // 开关是否开启
-            Integer payswitch = payOrderMapper.getPayOnLineSwitch();
-            if (1 != payswitch) {
-                onlinePay = 2;
+            // 支付记录
+            List<DiscernReceiptVo> shopOrderReceipt = orderCommonMapper.getShopOrderReceipt(shopOrder.getShopOrderId());
+            // 1线上,2线下,3余额抵扣
+            if (null != shopOrderReceipt) {
+                shopOrderReceipt.forEach(receipt -> {
+                    if (1 == receipt.getPayWay()) {
+                        onlinePay.set(1);
+                    } else {
+                        onlinePay.set(2);
+                    }
+                });
             }
-            shopOrder.setOnlinePay(onlinePay);
+            shopOrder.setOnlinePay(onlinePay.get());
             orderCommonService.setPostageInfo(shopOrder);
         });
         return ResponseJson.success(shopOrderList);

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

@@ -149,7 +149,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             // 设置子订单付款金额
             orderCommonService.getDiscernReceiptAndSetShoporder(shopOrder);
             // 联合丽格 [待付款]或者线下支付[部分付款] 的子订单 状态
-            if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && (1 == shopOrder.getReceiptStatus() || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
+            if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && ((1 == shopOrder.getReceiptStatus() && (2 == shopOrder.getOnlinePay() || 0 == shopOrder.getOnlinePay())) || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
                 shopOrder.setCheckFlag(2);
             } else {
                 shopOrder.setCheckFlag(1);
@@ -317,7 +317,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             //退款总金额
             shopOrder.setReturnedPurchaseFee(returnedPurchaseFee.get());
         }
-        if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && (1 == shopOrder.getReceiptStatus() || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
+        if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && ((1 == shopOrder.getReceiptStatus() && (2 == shopOrder.getOnlinePay() || 0 == shopOrder.getOnlinePay())) || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
             shopOrder.setCheckFlag(2);
         } else {
             shopOrder.setCheckFlag(1);

+ 110 - 8
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -95,7 +95,7 @@ public class ShipServiceImpl implements ShipService {
                 setShopOrderInfo(shopOrder);
             }
             // 联合丽格 [待付款]或者线下支付[部分付款] 的子订单 状态
-            if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && (1 == shopOrder.getReceiptStatus() || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
+            if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && ((1 == shopOrder.getReceiptStatus() && (2 == shopOrder.getOnlinePay() || 0 == shopOrder.getOnlinePay())) || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
                 shopOrder.setCheckFlag(2);
             } else {
                 shopOrder.setCheckFlag(1);
@@ -170,6 +170,7 @@ public class ShipServiceImpl implements ShipService {
                 }
                 procedureFee = MathUtil.add(procedureFee, payAmount).doubleValue();
             }
+            // 支付手续费
             settlement.setPaymentCommission(procedureFee);
             // 分帐记录
             Double splitAccount = shipMapper.getSplitAccount(settlement.getShopOrderId());
@@ -180,6 +181,112 @@ public class ShipServiceImpl implements ShipService {
         return ResponseJson.success(pageInfo);
     }
 
+    /**
+     * 导出excel
+     *
+     * @param shopId
+     * @param payStatus
+     * @param shopOrderNo
+     * @param name
+     * @param beginTime
+     * @param endTime
+     * @param refundStatus
+     * @return
+     */
+    @Override
+    public ResponseJson<PageInfo<SettlementVo>> exportExcel(Integer shopId, Integer payStatus, String shopOrderNo, String name, String beginTime, String endTime, Integer refundStatus,Integer pageNum, Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<SettlementVo> settlementList = shipMapper.getSettlementList(shopId, payStatus, shopOrderNo, name, beginTime, endTime, refundStatus);
+        List<SettlementDto> settlementDto = new ArrayList<>();
+        settlementList.forEach(settlement -> {
+            if (null != settlement) {
+                List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(settlement.getShopOrderId());
+                settlement.setOrderProductList(orderProductList);
+            }
+            // 付款记录
+            List<DiscernReceiptVo> shopOrderRelation = shipMapper.getShopOrderRelation(settlement.getShopOrderId());
+            // 付款手续费
+            double procedureFee = 0d;
+            for (DiscernReceiptVo discernReceipt:shopOrderRelation) {
+                // 本次支付金额,单位/元
+                double splitAmount = discernReceipt.getAssociateAmount();
+                double payAmount;
+                if (12 == discernReceipt.getPayType()) {
+                    // 网银支付
+                    payAmount = 10.00;
+                } else if (17 == discernReceipt.getPayType()) {
+                    //b2c网银
+                    //b2c 0.2%
+                    payAmount = MathUtil.mul(splitAmount, 0.002, 2).doubleValue();
+                    //b2c最低手续费0.1
+                    if (payAmount < 0.1) {
+                        payAmount = 0.1;
+                    }
+                } else if (8 == discernReceipt.getPayType() || 13 == discernReceipt.getPayType() || 15 == discernReceipt.getPayType()) {
+                    //微信0.65%手续费
+                    //微信0.65%
+                    payAmount = MathUtil.mul(splitAmount, 0.0065, 2).doubleValue();
+                } else if (29 == discernReceipt.getPayType()) {
+                    //快捷支付 借记卡支付29,
+
+                    payAmount = MathUtil.mul(splitAmount, 0.003, 2).doubleValue();
+                    if (payAmount < 0.1) {
+                        payAmount = 0.1;
+                    }
+                }else if (30 == discernReceipt.getPayType()) {
+                    //快捷支付 贷记卡支付30
+                    payAmount = MathUtil.mul(splitAmount, 0.006, 2).doubleValue();
+                    if (payAmount < 0.1) {
+                        payAmount = 0.1;
+                    }
+                } else {
+                    //手续费 其他0.25%
+                    payAmount = MathUtil.mul(splitAmount, 0.0025, 2).doubleValue();
+                }
+                if (MathUtil.compare(payAmount, 0.01) <= 0) {
+                    payAmount = 0.01;
+                }
+                procedureFee = MathUtil.add(procedureFee, payAmount).doubleValue();
+            }
+            // 支付手续费
+            settlement.setPaymentCommission(procedureFee);
+            // 分帐记录
+            Double splitAccount = shipMapper.getSplitAccount(settlement.getShopOrderId());
+            // 分帐手续费
+            settlement.setProrateCommission(MathUtil.mul(splitAccount, 0.001).doubleValue());
+            // 设置返回数据
+            SettlementDto lementDto = new SettlementDto();
+            lementDto.setShopOrderNo(settlement.getShopOrderNo());
+            lementDto.setOrderTime(settlement.getOrderTime());
+            lementDto.setName(settlement.getName());
+            if(settlement.getOrderProductList().size() > 0) {
+                lementDto.setProductInfo(settlement.getOrderProductList().get(0).getName());
+            }
+            lementDto.setTotalAmount(settlement.getTotalAmount());
+            if (1 == settlement.getRefundStatus()) {
+                lementDto.setRefundStatus("无退款");
+            } else {
+                lementDto.setRefundStatus("有退款");
+            }
+            lementDto.setRefundAmount(settlement.getRefundAmount());
+            lementDto.setPaymentCommission(settlement.getPaymentCommission());
+            lementDto.setProrateCommission(settlement.getProrateCommission());
+            if (1 == settlement.getPayStatus()) {
+                lementDto.setPayStatus("待付款");
+            } else if (2 == settlement.getPayStatus()){
+                lementDto.setPayStatus("部分付款");
+            } else {
+                lementDto.setPayStatus("已付款");
+            }
+            lementDto.setShouldPayShopAmount(settlement.getShouldPayShopAmount());
+            lementDto.setPayedShopAmount(settlement.getPayedShopAmount());
+            lementDto.setUnsettledAmount(MathUtil.sub(settlement.getShouldPayShopAmount(), settlement.getPayedShopAmount()).doubleValue());
+            settlementDto.add(lementDto);
+        });
+        PageInfo<SettlementVo> pageInfo = new PageInfo(settlementList);
+        return ResponseJson.success(pageInfo);
+    }
+
     /**
      * 供应商子订单详情
      *
@@ -193,7 +300,7 @@ public class ShipServiceImpl implements ShipService {
         }
         setShopOrderInfo(shopOrder);
         // 联合丽格 [待付款]或者线下支付[部分付款] 的子订单 状态
-        if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && (1 == shopOrder.getReceiptStatus() || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
+        if ((4 != shopOrder.getStatus() && 5 != shopOrder.getStatus()) && ((1 == shopOrder.getReceiptStatus() && (2 == shopOrder.getOnlinePay() || 0 == shopOrder.getOnlinePay())) || (2 == shopOrder.getReceiptStatus() && 2 == shopOrder.getOnlinePay()))) {
             shopOrder.setCheckFlag(2);
         } else {
             shopOrder.setCheckFlag(1);
@@ -1186,17 +1293,12 @@ public class ShipServiceImpl implements ShipService {
     }
 
     @Override
-    public ResponseJson<Map<String, Object>> downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException {
+    public void downFile(Integer fileId, HttpServletRequest request, HttpServletResponse response) throws IOException {
         OssFileDto remarkFile = shipMapper.findRemarkById(fileId);
-        Map<String, Object> map = new HashMap<>();
         if (null != remarkFile) {
             String fileName = remarkFile.getName();
             ossUtils.downFile(remarkFile.getOssName(), fileName);
             ossService.download(request, response, fileName);
-            map.put("code", 0);
-        } else {
-            map.put("code", -1);
         }
-        return ResponseJson.success(map);
     }
 }

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

@@ -1432,11 +1432,8 @@ public class SubmitServiceImpl implements SubmitService {
             // 设置组织Id
             shopOrder.setOrganizeId(organizeId);
             // 分帐号
-            if (0 == organizeId) {
-                shopOrder.setSplitCode(Constant.CUSTOMERNUM);
-            } else {
+            if (0 != organizeId) {
                 // 联合丽格
-                shopOrder.setSplitCode(Constant.BCCMERCHANT);
                 shopOrder.setRealPay(shopOrder.getNeedPayAmount());
             }
             // 设置运费

+ 7 - 2
src/main/resources/mapper/OrderClubMapper.xml

@@ -273,13 +273,14 @@
             cso.payStatus,
             cso.orderSubmitType,
             cso.splitFlag,
+            cso.useBalanceFlag,
             ifnull(cso.sendOutStatus, 1) as sendOutStatus,
             co.secondHandOrderFlag as secondHandOrderFlag,
             IFNULL(cso.receiptAmount,0) AS receiptAmount,
             cso.eachDiscount,
             IFNULL(cso.realPay, cso.needPayAmount)AS readPay,
             s.name AS shopName,
-            s.payway AS payway,
+            ifnull(s.payway, 0) AS payway,
             s.logo AS shopLogo,
             s.shopType AS shopType,
             co.clauseID AS clauseId,
@@ -570,11 +571,12 @@
             cso.payStatus,
             cso.orderSubmitType,
             cso.splitFlag,
+            cso.useBalanceFlag,
             ifnull(cso.sendOutStatus, 1) as sendOutStatus,
             (select onlinePayFlag from cm_order where orderId = cso.orderId ) as onlinePay,
             (select secondHandOrderFlag from cm_order where orderId = cso.orderId ) as secondHandOrderFlag,
             s.name AS shopName,
-            s.payway AS payway,
+            ifnull(s.payway, 0) AS payway,
             s.logo AS shopLogo,
             s.shopType AS shopType,
             IFNULL(cso.receiptAmount,0) AS receiptAmount,
@@ -701,15 +703,18 @@
                         cso.payStatus,
                         cso.orderSubmitType,
                         cso.splitFlag,
+                        cso.useBalanceFlag,
                         ifnull(cso.sendOutStatus, 1) as sendOutStatus,
                         (SELECT secondHandOrderFlag FROM cm_order WHERE orderId = cso.orderId ) AS secondHandOrderFlag,
                         IFNULL(cso.receiptAmount,0) AS receiptAmount,
                         cso.eachDiscount,
+                        ifnull(s.payway, 0) AS payway,
                         IFNULL(cso.realPay, cso.needPayAmount)AS readPay,
                         ifnull(cso.receiptStatus, 1) as receiptStatus,
                         cso.shopStatus AS STATUS
         FROM cm_shop_order cso
                  LEFT JOIN cm_order_product cop ON cso.shopOrderId = cop.shopOrderId
+                 LEFT JOIN shop s ON cso.shopID = s.shopID
         WHERE cso.delFlag = 0
           AND cso.userID = #{userId}
           AND cop.name LIKE concat('%',#{searchWord},'%')

+ 6 - 2
src/main/resources/mapper/OrderCommonMapper.xml

@@ -53,7 +53,7 @@
         cso.splitFlag,
         ifnull(cso.sendOutStatus, 1) as sendOutStatus,
         s.name AS shopName,
-        s.payway as payway,
+        ifnull(s.payway, 0) AS payway,
         s.logo AS shopLogo,
         s.shopType as shopType,
         ifnull(cso.receiptAmount,0) as receiptAmount,
@@ -147,6 +147,7 @@
                p.productCategory  as productCategory,
                p.productType,
                p.productCode,
+               p.splitCode,
                p.returnGoodsStutas
         FROM cm_order_product cop
                  LEFT JOIN product p ON cop.productID = p.productID
@@ -494,10 +495,11 @@
         cso.payStatus,
         cso.orderSubmitType,
         cso.splitFlag,
+        cso.useBalanceFlag,
         ifnull(cso.sendOutStatus, 1) as sendOutStatus,
         (select secondHandOrderFlag from cm_order where orderId = cso.orderId ) as secondHandOrderFlag,
         s.name AS shopName,
-        s.payway AS payway,
+        ifnull(s.payway, 0) AS payway,
         s.logo AS shopLogo,
         s.shopType AS shopType,
         IFNULL(cso.receiptAmount,0) AS receiptAmount,
@@ -810,6 +812,7 @@
                cop.orderSubmitType,
                cop.payStatus,
                cop.splitFlag,
+               cop.useBalanceFlag,
                cop.realPay,
                cop.receiptAmount,
                ifnull(cop.sendOutStatus, 1) as sendOutStatus,
@@ -817,6 +820,7 @@
                cop.splitCode,
                ifnull(cop.paySuccessCounter, 0) as paySuccessCounter,
                p.name                           as shopName,
+               ifnull(p.payway, 0) AS payway,
                cop.shopStatus as status
         FROM cm_shop_order cop
                  left join shop p on cop.shopID = p.shopID

+ 6 - 3
src/main/resources/mapper/OrderSellerMapper.xml

@@ -130,13 +130,14 @@
         cso.payStatus,
         cso.orderSubmitType,
         cso.splitFlag,
+        cso.useBalanceFlag,
         ifnull(cso.sendOutStatus, 1) as sendOutStatus,
         (select onlinePayFlag from cm_order where orderId = cso.orderId ) as onlinePay,
         (select secondHandOrderFlag from cm_order where orderId = cso.orderId ) as secondHandOrderFlag,
         IFNULL(cso.receiptAmount,0) AS receiptAmount,
         cso.eachDiscount,
         s.name AS shopName,
-        s.payway AS payway,
+        ifnull(s.payway, 0) AS payway,
         s.logo AS shopLogo,
         s.shopType AS shopType,
         IFNULL(cso.realPay, cso.needPayAmount)AS readPay,
@@ -293,13 +294,14 @@
         cso.payStatus,
         cso.orderSubmitType,
         cso.splitFlag,
+        cso.useBalanceFlag,
         ifnull(cso.sendOutStatus, 1) as sendOutStatus,
         (select onlinePayFlag from cm_order where orderId = cso.orderId ) as onlinePay,
         (select secondHandOrderFlag from cm_order where orderId = cso.orderId ) as secondHandOrderFlag,
         IFNULL(cso.receiptAmount,0) AS receiptAmount,
         cso.eachDiscount,
         s.name AS shopName,
-        s.payway AS payway,
+        ifnull(s.payway, 0) AS payway,
         s.logo AS shopLogo,
         s.shopType AS shopType,
         IFNULL(cso.realPay, cso.needPayAmount)AS readPay,
@@ -426,13 +428,14 @@
         cso.payStatus,
         cso.orderSubmitType,
         cso.splitFlag,
+        cso.useBalanceFlag,
         ifnull(cso.sendOutStatus, 1) as sendOutStatus,
         (select onlinePayFlag from cm_order where orderId = cso.orderId ) as onlinePay,
         (select secondHandOrderFlag from cm_order where orderId = cso.orderId ) as secondHandOrderFlag,
         IFNULL(cso.receiptAmount,0) AS receiptAmount,
         cso.eachDiscount,
         s.name AS shopName,
-        s.payway AS payway,
+        ifnull(s.payway, 0) AS payway,
         s.logo AS shopLogo,
         s.shopType AS shopType,
         IFNULL(cso.realPay, cso.needPayAmount)AS readPay,

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

@@ -256,6 +256,7 @@
         set accountAmount = #{accountAmount},
             receiptAmount = #{receiptAmount},
             receiptStatus = #{receiptStatus},
+            useBalanceFlag = #{useBalanceFlag},
             updateTime = now()
         where shopOrderId = #{shopOrderId}
     </update>

+ 46 - 40
src/main/resources/mapper/ShipMapper.xml

@@ -128,11 +128,14 @@
             ifnull(a.sendOutStatus, 1) as sendOutStatus,
             ifnull(a.receiptStatus, 1) as receiptStatus,
             a.refundStatus,
+            ifnull(s.payway, 0) AS payway,
             a.shopStatus as status,
-            a.splitFlag
+            a.splitFlag,
+            a.useBalanceFlag
         FROM cm_shop_order a
         LEFT JOIN bp_order_userinfo ou ON  ou.orderId=a.orderId
         LEFT JOIN cm_order o ON a.orderID=o.orderID
+        LEFT JOIN shop s ON a.shopID = s.shopID
         <where>
             <if test="shopOrderNo != null and shopOrderNo != ''">
                 AND a.shopOrderNo = #{shopOrderNo}
@@ -223,45 +226,48 @@
     </select>
     <select id="getShopOrder" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT
-            receiptAmount,
-            shopOrderID AS shopOrderId,
-            shopOrderNo,
-            orderID AS orderId,
-            orderNo,
-            shopID AS shopId,
-            organizeID as organizeId,
-            IFNULL(isColdChina, 0) AS isColdChina,
-            note,
-            userID AS userId,
-            clubID AS clubId,
-            spID AS spId,
-            orderPromotionsId,
-            promotionFullReduction,
-            brokerage,
-            canRefundAmount,
-            itemCount,
-            totalAmount,
-            productAmount,
-            needPayAmount,
-            shopProductAmount,
-            shopPostFee,
-            IFNULL(shopPostFlag, 0) AS shopPostFlag,
-            shopTaxFee,
-            shouldPayShopAmount,
-            payedShopAmount,
-            ifnull(accountAmount,0) as accountAmount,
-            outStoreNum,
-            IFNULL(presentNum,0) AS presentNum,
-            orderTime,
-            orderSubmitType,
-            payStatus,
-            ifnull(sendOutStatus, 1) as sendOutStatus,
-            ifnull(receiptStatus, 1) as receiptStatus,
-            refundStatus,
-            shopStatus as status,
-            splitFlag
-        FROM cm_shop_order
-        WHERE shopOrderID = #{shopOrderId} AND delFlag = '0'
+            cso.receiptAmount,
+            cso.shopOrderID AS shopOrderId,
+            cso.shopOrderNo,
+            cso.orderID AS orderId,
+            cso.orderNo,
+            cso.shopID AS shopId,
+            cso.organizeID as organizeId,
+            IFNULL(cso.isColdChina, 0) AS isColdChina,
+            cso.note,
+            cso.userID AS userId,
+            cso.clubID AS clubId,
+            cso.spID AS spId,
+            cso.orderPromotionsId,
+            cso.promotionFullReduction,
+            cso.brokerage,
+            cso.canRefundAmount,
+            cso.itemCount,
+            cso.totalAmount,
+            cso.productAmount,
+            cso.needPayAmount,
+            cso.shopProductAmount,
+            cso.shopPostFee,
+            IFNULL(cso.shopPostFlag, 0) AS shopPostFlag,
+            cso.shopTaxFee,
+            cso.shouldPayShopAmount,
+            cso.payedShopAmount,
+            ifnull(cso.accountAmount,0) as accountAmount,
+            cso.outStoreNum,
+            IFNULL(cso.presentNum,0) AS presentNum,
+            cso.orderTime,
+            cso.orderSubmitType,
+            cso.payStatus,
+            ifnull(cso.sendOutStatus, 1) as sendOutStatus,
+            ifnull(cso.receiptStatus, 1) as receiptStatus,
+            cso.refundStatus,
+            ifnull(s.payway, 0) AS payway,
+            cso.shopStatus as status,
+            cso.splitFlag,
+            cso.useBalanceFlag
+        FROM cm_shop_order cso
+                 LEFT JOIN shop s ON cso.shopID = s.shopID
+        WHERE cso.shopOrderID = #{shopOrderId} AND cso.delFlag = '0'
     </select>
 
     <select id="getOpenidListByPermission" resultType="java.lang.String">