Quellcode durchsuchen

关联收款信息

chao vor 3 Jahren
Ursprung
Commit
4853535b2f

+ 27 - 0
src/main/java/com/caimei365/order/controller/ReceiptApi.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.controller;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.ReceiptAssociateDto;
 import com.caimei365.order.model.dto.ReceiptAuthDto;
 import com.caimei365.order.model.dto.ReceiptDto;
 import com.caimei365.order.model.po.ReceiptPo;
@@ -117,6 +118,21 @@ public class ReceiptApi {
         return receiptService.saveReceipt(receiptDto);
     }
 
+    /**
+     * 操作收款信息(作废,设为返佣/普通/供应商退款)
+     *
+     * @param receiptDto {
+     *                  id:收款Id
+     *                  receiptType: 1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款
+     *                  delFlag: 作废标记: 0否,其余是
+     * }
+     */
+    @ApiOperation("操作收款信息(作废,设为返佣/普通/供应商退款)")
+    @PostMapping("/operate")
+    public ResponseJson<ReceiptPo> operateReceipt(ReceiptDto receiptDto) {
+        return receiptService.operateReceipt(receiptDto);
+    }
+
     /**
      * 获取收款列表
      */
@@ -234,5 +250,16 @@ public class ReceiptApi {
         return receiptService.getReceiptOrderInfo(orderId, openid);
     }
 
+    /**
+     * 关联收款信息
+     */
+    @ApiOperation("关联收款信息")
+    @PostMapping("/associate")
+    public ResponseJson<ReceiptPo> receiptAssociate(ReceiptAssociateDto receiptAssociateDto) {
+        if (!StringUtils.hasLength(receiptAssociateDto.getOpenid())) {
+            return ResponseJson.error("微信openid不能为空!", null);
+        }
+        return receiptService.receiptAssociate(receiptAssociateDto);
+    }
 }
 

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

@@ -4,6 +4,7 @@ import com.caimei365.order.model.bo.ReceiptParamsBo;
 import com.caimei365.order.model.po.ReceiptPo;
 import com.caimei365.order.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -34,7 +35,7 @@ public interface ReceiptMapper {
     /**
      * 根据mobile更新openid
      */
-    void updateOpenidByMobile(String openId, String unionId, String mobile);
+    void updateOpenidByMobile(String openid, String unionId, String mobile);
     /**
      * 获取用户权限: 1录入收款权限,2收款确认权限,3收款审核权限 4返佣管理权限 5供应商退款管理权限
      */
@@ -99,6 +100,7 @@ public interface ReceiptMapper {
      * 获取收款商品订单列表
      */
     List<OrderVo> getOrderListByParams(ReceiptParamsBo receiptParamsBo);
+    List<OrderVo> getOrderListByOrderIds(@Param("orderIdS") String[] orderIdS);
     /**
      * 存在退款中的记录
      */
@@ -131,4 +133,8 @@ public interface ReceiptMapper {
      * 需要支付金额
      */
     double countNeedPayAmount(Integer orderId);
+    /**
+     * 删除之前与这个收款所有的关系
+     */
+    void deleteReceiptRelation(Integer receiptId);
 }

+ 42 - 0
src/main/java/com/caimei365/order/model/dto/ReceiptAssociateDto.java

@@ -0,0 +1,42 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/2/21
+ */
+@Data
+public class ReceiptAssociateDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 收款Id
+     */
+    @ApiModelProperty("收款Id")
+    private Integer id;
+    /**
+     * 确认订单类型:1小额抹平确认,2大额抹平确认,3大额退款余额,4确认关联
+     */
+    @ApiModelProperty("确认订单类型:1小额抹平确认,2大额抹平确认,3大额退款余额,4确认关联")
+    private String confirmType;
+    /**
+     * 关联订单IDS
+     */
+    @ApiModelProperty("关联订单IDS")
+    private String orderIds;
+    /**
+     * 非订单款说明(适用协销确认的时候区分订单和非订单款)
+     */
+    @ApiModelProperty("非订单款说明(适用协销确认的时候区分订单和非订单款)")
+    private String noOrderReason;
+    /**
+     * 微信openid
+     */
+    @ApiModelProperty("微信openid")
+    private String openid;
+}

+ 19 - 5
src/main/java/com/caimei365/order/model/po/ReceiptPo.java

@@ -1,5 +1,6 @@
 package com.caimei365.order.model.po;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -12,7 +13,7 @@ import java.io.Serializable;
  */
 @Data
 public class ReceiptPo implements Serializable {
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUId = 1L;
     /**
      * 收款Id
      */
@@ -70,19 +71,19 @@ public class ReceiptPo implements Serializable {
      */
     private String confirmDate;
     /**
-     * 确认人权限ID(对应cm_receipt_user表)
+     * 确认人权限Id(对应cm_receipt_user表)
      */
     private Integer confirmUserPermissionId;
     /**
-     * 收款人权限ID(对应cm_receipt_user表)
+     * 收款人权限Id(对应cm_receipt_user表)
      */
     private Integer receiptUserPermissionId;
     /**
-     * 审核人权限ID(对应cm_receipt_user表)
+     * 审核人权限Id(对应cm_receipt_user表)
      */
     private Integer reviewUserPermissionId;
     /**
-     * 撤销人权限ID(对应cm_receipt_user表)
+     * 撤销人权限Id(对应cm_receipt_user表)
      */
     private String cancelUserPermissionId;
     /**
@@ -109,4 +110,17 @@ public class ReceiptPo implements Serializable {
      * 当前识别短信是否已经识别存在系统。0新短信可以识别,1已经存在识别短信。
      */
     private String smsContentPresenceFlag;
+    /**
+     * 非订单款说明(适用协销确认的时候区分订单和非订单款)
+     */
+    private String noOrderReason;
+    /**
+     * 审核不通过原因
+     */
+    private String reviewReason;
+    /**
+     * 返佣关联备注
+     */
+    private String rebateRemarks;
+
 }

+ 18 - 0
src/main/java/com/caimei365/order/service/ReceiptService.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.service;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.ReceiptAssociateDto;
 import com.caimei365.order.model.dto.ReceiptDto;
 import com.caimei365.order.model.po.ReceiptPo;
 import com.caimei365.order.model.vo.*;
@@ -51,6 +52,17 @@ public interface ReceiptService {
      */
     ResponseJson<ReceiptPo> saveReceipt(ReceiptDto receiptDto);
 
+    /**
+     * 操作收款信息(作废,设为返佣/普通/供应商退款)
+     *
+     * @param receiptDto {
+     *                  id:收款Id
+     *                  receiptType: 1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款
+     *                  delFlag: 作废标记: 0否,其余是
+     * }
+     */
+    ResponseJson<ReceiptPo> operateReceipt(ReceiptDto receiptDto);
+
     /**
      * 获取收款列表
      *
@@ -103,4 +115,10 @@ public interface ReceiptService {
      * @param openid  微信openid
      */
     ResponseJson<OrderVo> getReceiptOrderInfo(Integer orderId, String openid);
+
+    /**
+     * 关联收款信息
+     */
+    ResponseJson<ReceiptPo> receiptAssociate(ReceiptAssociateDto receiptAssociateDto);
+
 }

+ 242 - 25
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -7,6 +7,7 @@ import com.caimei365.order.mapper.PayOrderMapper;
 import com.caimei365.order.mapper.ReceiptMapper;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.bo.ReceiptParamsBo;
+import com.caimei365.order.model.dto.ReceiptAssociateDto;
 import com.caimei365.order.model.dto.ReceiptDto;
 import com.caimei365.order.model.enums.OrderStatus;
 import com.caimei365.order.model.enums.ReceiptStatus;
@@ -177,27 +178,8 @@ public class ReceiptServiceImpl implements ReceiptService {
         if (StringUtils.isNotBlank(receiptDto.getSmsContent())) {
             receiptPo.setSmsMd5Code(Md5Util.md5(receiptDto.getSmsContent()));
         }
-        // 收款作废
-        if (null != receiptDto.getId() && StringUtils.isNotBlank(receiptDto.getDelFlag())) {
-            // 收款状态receiptStatus:2已确认(待审核)、3审核通过
-            if ("2".equals(receiptDto.getReceiptStatus()) || "3".equals(receiptDto.getReceiptStatus())) {
-                // 收款款项类型receiptType:1订单款
-                if ("1".equals(receiptDto.getReceiptType())) {
-                    return ResponseJson.error(-2, "该收款已关联了订单,不能作废!请刷新页面查看最新数据", null);
-                }
-                // 收款款项类型receiptType:3返佣款
-                else if ("3".equals(receiptDto.getReceiptType())) {
-                    return ResponseJson.error(-2, "该收款已关联了返佣订单,不能作废!请刷新页面查看最新数据", null);
-                }
-            }
-            // 收款款项类型receiptType:2非订单款
-            if ("2".equals(receiptDto.getReceiptType())) {
-                receiptPo.setReceiptStatus("2");
-                receiptPo.setConfirmUserPermissionId(receiptUser.getId());
-                receiptPo.setConfirmDate(time);
-            }
-            // 更新收款记录
-            receiptMapper.updateReceipt(receiptPo);
+        if (null != receiptDto.getId()) {
+            return ResponseJson.error("接口调用错误,该接口用作保存收款信息", null);
         } else {
             // 如果是添加收款则判断是否存在重复添加
             if (StringUtils.isNotBlank(receiptDto.getSmsContent()) && StringUtils.isNotBlank(receiptDto.getPayWay())) {
@@ -417,6 +399,57 @@ public class ReceiptServiceImpl implements ReceiptService {
         return ResponseJson.success(receiptPo);
     }
 
+    /**
+     * 操作收款信息(作废,设为返佣/普通/供应商退款)
+     *
+     * @param receiptDto {
+     *                   id:收款Id
+     *                   receiptType: 1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款
+     *                   delFlag: 作废标记: 0否,其余是
+     *                   }
+     */
+    @Override
+    public ResponseJson<ReceiptPo> operateReceipt(ReceiptDto receiptDto) {
+        // 操作用户
+        ReceiptUserVo receiptUser = checkPermissions(2, receiptDto.getOpenid());
+        if (null == receiptUser) {
+            return ResponseJson.error("无权限操作!", null);
+        }
+        ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptDto.getId());
+        if (null == receipt) {
+            return ResponseJson.error("收款数据异常!", null);
+        }
+        String time = DateUtils.getDateTime();
+        ReceiptPo receiptPo = new ReceiptPo();
+        receiptPo.setId(receiptDto.getId());
+        receiptPo.setUpdateDate(time);
+        // 收款作废
+        if (StringUtils.isNotBlank(receiptDto.getDelFlag()) && !"0".equals(receiptDto.getDelFlag())) {
+            // 收款状态receiptStatus:2已确认(待审核)、3审核通过
+            if ("2".equals(receiptDto.getReceiptStatus()) || "3".equals(receiptDto.getReceiptStatus())) {
+                // 收款款项类型receiptType:1订单款
+                if ("1".equals(receiptDto.getReceiptType())) {
+                    return ResponseJson.error(-2, "该收款已关联了订单,不能作废!请刷新页面查看最新数据", null);
+                }
+                // 收款款项类型receiptType:3返佣款
+                else if ("3".equals(receiptDto.getReceiptType())) {
+                    return ResponseJson.error(-2, "该收款已关联了返佣订单,不能作废!请刷新页面查看最新数据", null);
+                }
+            }
+            receiptPo.setDelFlag(receiptDto.getDelFlag());
+        }
+        receiptPo.setReceiptType(receiptDto.getReceiptType());
+        // 收款款项类型receiptType:2非订单款
+        if ("2".equals(receiptDto.getReceiptType())) {
+            receiptPo.setReceiptStatus("2");
+            receiptPo.setConfirmUserPermissionId(receiptUser.getId());
+            receiptPo.setConfirmDate(time);
+        }
+        // 更新收款记录
+        receiptMapper.updateReceipt(receiptPo);
+        return ResponseJson.success(receiptPo);
+    }
+
     /**
      * 获取收款列表
      *
@@ -577,7 +610,7 @@ public class ReceiptServiceImpl implements ReceiptService {
             } else {
                 // 存在退款中的记录 (0:否,1:是)
                 Integer haveReturning = receiptMapper.countHaveReturning(order.getOrderId());
-                if (null != haveReturning && haveReturning>0) {
+                if (null != haveReturning && haveReturning > 0) {
                     haveReturning = 1;
                 } else {
                     haveReturning = 0;
@@ -585,7 +618,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                 order.setHaveReturning(haveReturning.toString());
                 // 存在收款中的记录 (0:否,1:是)
                 Integer haveReceipting = receiptMapper.countHaveReceipting(order.getOrderId());
-                if (null != haveReceipting && haveReceipting>0) {
+                if (null != haveReceipting && haveReceipting > 0) {
                     haveReceipting = 1;
                 } else {
                     haveReceipting = 0;
@@ -644,6 +677,7 @@ public class ReceiptServiceImpl implements ReceiptService {
 
     /**
      * 获取收款订单详情
+     *
      * @param orderId 订单Id
      * @param openid  微信openid
      */
@@ -669,7 +703,7 @@ public class ReceiptServiceImpl implements ReceiptService {
             shopOrder.setShopName(shopName);
             List<OrderProductVo> orderProductList = orderCommonMapper.getShopOrderProduct(shopOrder.getShopOrderId());
             for (OrderProductVo orderProduct : orderProductList) {
-                if (null != orderProduct.getTotalAddedValueTax()){
+                if (null != orderProduct.getTotalAddedValueTax()) {
                     totalAddedValueTax = MathUtil.add(totalAddedValueTax, orderProduct.getTotalAddedValueTax()).doubleValue();
                 }
             }
@@ -680,6 +714,189 @@ public class ReceiptServiceImpl implements ReceiptService {
         return ResponseJson.success(order);
     }
 
+    /**
+     * 关联收款信息
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ResponseJson<ReceiptPo> receiptAssociate(ReceiptAssociateDto receiptAssociateDto) {
+        // 操作用户
+        ReceiptUserVo receiptUser = checkPermissions(2, receiptAssociateDto.getOpenid());
+        if (null == receiptUser) {
+            return ResponseJson.error("无权限操作!", null);
+        }
+        ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
+        // 删除之前与这个收款所有的关系
+        receiptMapper.deleteReceiptRelation(receipt.getId());
+        // ReceiptVo -- copy to --> ReceiptPo
+        String time = DateUtils.getDateTime();
+        ReceiptPo receiptPo = new ReceiptPo();
+        BeanUtils.copyProperties(receipt, receiptPo);
+        receiptPo.setUpdateDate(time);
+        receiptPo.setReceiptStatus("2");
+        receiptPo.setConfirmType(receiptAssociateDto.getConfirmType());
+        // 非订单款项确认
+        if (2 == receipt.getReceiptType()) {
+            if (StringUtils.isNotBlank(receiptAssociateDto.getNoOrderReason())) {
+                receiptPo.setNoOrderReason(receiptAssociateDto.getNoOrderReason());
+            }
+        }
+        // 订单款项
+        if (1 == receipt.getReceiptType()) {
+            if (StringUtils.isNotBlank(receiptAssociateDto.getOrderIds())) {
+                String[] orderIDS = receiptAssociateDto.getOrderIds().split(",");
+                // 关联一个订单
+                if (orderIDS.length == 1) {
+                    // 收款项和订单关系表
+                    OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+                    relation.setRelationType(2);
+                    relation.setAssociationType(1);
+                    // 订单信息
+                    OrderVo order = orderCommonMapper.getOrderByOrderId(Integer.parseInt(orderIDS[0]));
+                    //设置订单未付金额(此处payableAmount用作实际应收)
+                    order.setPayableAmount(getUnPayMoney(order, true));
+                    // 收款金额 = 订单应付金额
+                    if (0 == MathUtil.compare(receiptPo.getReceiptAmount(), order.getPayableAmount())) {
+                        //确认关联
+                        receiptPo.setConfirmType("4");
+                        relation.setReceiptId(receiptPo.getId());
+                        relation.setOrderId(order.getOrderId());
+                        relation.setAssociateAmount(receiptPo.getReceiptAmount());
+                    }
+                    // 收款金额 < 订单应付金额
+                    else if (-1 == MathUtil.compare(receiptPo.getReceiptAmount(), order.getPayableAmount())) {
+                        // 小额抹平确认
+                        if ("1".equals(receiptPo.getConfirmType())) {
+                            relation.setReceiptId(receiptPo.getId());
+                            relation.setOrderId(order.getOrderId());
+                            relation.setAssociateAmount(receiptPo.getReceiptAmount());
+                        }
+                        // 部分收款确认
+                        if ("4".equals(receiptPo.getConfirmType())) {
+                            relation.setReceiptId(receiptPo.getId());
+                            relation.setOrderId(order.getOrderId());
+                            relation.setAssociateAmount(receiptPo.getReceiptAmount());
+                        }
+                    }
+                    // 收款金额 > 订单应付金额
+                    else if (1 == MathUtil.compare(receiptPo.getReceiptAmount(), order.getPayableAmount())) {
+                        // 大额抹平确认
+                        if ("2".equals(receiptPo.getConfirmType())) {
+                            relation.setReceiptId(receiptPo.getId());
+                            relation.setOrderId(order.getOrderId());
+                            relation.setAssociateAmount(order.getPayableAmount());
+                        }
+                        // 大额退款余额
+                        if ("3".equals(receiptPo.getConfirmType())) {
+                            relation.setReceiptId(receiptPo.getId());
+                            relation.setOrderId(order.getOrderId());
+                            relation.setAssociateAmount(order.getPayableAmount());
+                        }
+                    }
+                    // 保存 收款项和订单关系
+                    baseMapper.insertOrderReceiptRelation(relation);
+                }
+                // 关联多个订单
+                else if (orderIDS.length > 1) {
+                    // 先满足金额小的订单,如果金额相等就先满足ID较小的订单
+                    List<OrderVo> list = receiptMapper.getOrderListByOrderIds(orderIDS);
+                    for (OrderVo item : list) {
+                        item.setPayableAmount(getUnPayMoney(item, true));
+                    }
+                    // 余下的收款金额
+                    Double amount = receiptPo.getReceiptAmount();
+                    if ("4".equals(receiptPo.getConfirmType())) {
+                        // 确认关联
+                        for (OrderVo order : list) {
+                            if (amount > 0) {
+                                OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+                                relation.setRelationType(2);
+                                if (amount >= order.getPayableAmount()) {
+                                    relation.setReceiptId(receiptPo.getId());
+                                    relation.setOrderId(order.getOrderId());
+                                    relation.setAssociateAmount(order.getPayableAmount());
+                                } else if (amount < order.getPayableAmount()) {
+                                    relation.setReceiptId(receiptPo.getId());
+                                    relation.setOrderId(order.getOrderId());
+                                    relation.setAssociateAmount(amount);
+                                }
+                                // 保存 收款项和订单关系
+                                baseMapper.insertOrderReceiptRelation(relation);
+                                amount -= order.getPayableAmount();
+                            }
+                        }
+                    } else if ("1".equals(receiptPo.getConfirmType())) {
+                        //小额抹平确认
+                        for (OrderVo order : list) {
+                            OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+                            relation.setRelationType(2);
+                            if (amount >= order.getPayableAmount()) {
+                                relation.setReceiptId(receiptPo.getId());
+                                relation.setOrderId(order.getOrderId());
+                                relation.setAssociateAmount(order.getPayableAmount());
+                            } else if (amount < order.getPayableAmount()) {
+                                relation.setReceiptId(receiptPo.getId());
+                                relation.setOrderId(order.getOrderId());
+                                relation.setAssociateAmount(amount < 0d ? 0d : amount);
+                            }
+                            // 保存 收款项和订单关系
+                            baseMapper.insertOrderReceiptRelation(relation);
+                            amount -= order.getPayableAmount();
+                        }
+                    } else if ("2".equals(receiptPo.getConfirmType())) {
+                        //大额抹平确认
+                        for (OrderVo order : list) {
+                            OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+                            relation.setRelationType(2);
+                            if (amount >= order.getPayableAmount()) {
+                                relation.setReceiptId(receiptPo.getId());
+                                relation.setOrderId(order.getOrderId());
+                                relation.setAssociateAmount(order.getPayableAmount());
+                                // 保存 收款项和订单关系
+                                baseMapper.insertOrderReceiptRelation(relation);
+                                amount -= order.getPayableAmount();
+                            } else {
+                                // 设置手动回滚事务
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                log.info("订单(Id:" + order.getOrderId() + ")大额抹平确认--金额不正确!");
+                                return ResponseJson.error("订单(Id:" + order.getOrderId() + ")大额抹平确认--金额不正确!", null);
+                            }
+                        }
+                    } else if ("3".equals(receiptPo.getConfirmType())) {
+                        //大额退款余额
+                        for (OrderVo order : list) {
+                            OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
+                            relation.setRelationType(2);
+                            if (amount >= order.getPayableAmount()) {
+                                relation.setReceiptId(receiptPo.getId());
+                                relation.setOrderId(order.getOrderId());
+                                relation.setAssociateAmount(order.getPayableAmount());
+                                // 保存 收款项和订单关系
+                                baseMapper.insertOrderReceiptRelation(relation);
+                                amount -= order.getPayableAmount();
+                            } else {
+                                // 设置手动回滚事务
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                log.info("订单(Id:" + order.getOrderId() + ")大额退款余额--金额不正确!");
+                                return ResponseJson.error("订单(Id:" + order.getOrderId() + ")大额退款余额--金额不正确!", null);
+                            }
+                        }
+                    }
+                }
+            } else {
+                // 设置手动回滚事务
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                log.info("关联订单为空!");
+                return ResponseJson.error("关联订单为空!", null);
+            }
+        }
+        receiptPo.setPayWay("2");
+        receiptPo.setConfirmUserPermissionId(receiptUser.getId());
+        receiptPo.setConfirmDate(time);
+        receiptMapper.updateReceipt(receiptPo);
+        return ResponseJson.success(receiptPo);
+    }
+
     /**
      * 设置订单的款项信息
      */
@@ -712,7 +929,7 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     public void setReceiptedAmount(ShopOrderVo shopOrder) {
         OrderVo order = orderCommonMapper.getOrderByOrderId(shopOrder.getOrderId());
-        if (null != order.getRebateFlag() && 1 == order.getRebateFlag()){
+        if (null != order.getRebateFlag() && 1 == order.getRebateFlag()) {
             // 返佣订单
             double associateAmount = receiptMapper.countAllPayAssociateAmount(order.getOrderId());
             order.setReceiptAmount(associateAmount);

+ 71 - 51
src/main/resources/mapper/ReceiptMapper.xml

@@ -16,15 +16,6 @@
             confirmUserPermissionID,
             reviewUserPermissionID,
             cancelUserPermissionID,
-            transactionNum,
-            bankID,
-            bankCode,
-            kuaiQianPayTypeID,
-            kuaiQianPayerID,
-            rePayFlag,
-            actualAmount,
-            formData,
-            problem,
             noOrderReason,
             reviewReason,
             rebateRemarks,
@@ -49,15 +40,6 @@
              #{confirmUserPermissionId},
              #{reviewUserPermissionId},
              #{cancelUserPermissionId},
-             #{transactionNum},
-             #{bankId},
-             #{bankCode},
-             #{kuaiQianPayTypeId},
-             #{kuaiQianPayerId},
-             #{rePayFlag},
-             #{actualAmount},
-             #{formData},
-             #{problem},
              #{noOrderReason},
              #{reviewReason},
              #{rebateRemarks},
@@ -112,27 +94,6 @@
             <if test="cancelUserPermissionId != null" >
                 cancelUserPermissionID = #{cancelUserPermissionId},
             </if>
-            <if test="transactionNum != null" >
-                transactionNum = #{transactionNum},
-            </if>
-            <if test="bankId != null" >
-                bankID = #{bankId},
-            </if>
-            <if test="bankCode != null" >
-                bankCode = #{bankCode},
-            </if>
-            <if test="kuaiQianPayTypeId != null" >
-                kuaiQianPayTypeID = #{kuaiQianPayTypeId},
-            </if>
-            <if test="kuaiQianPayerId != null" >
-                kuaiQianPayerID = #{kuaiQianPayerId},
-            </if>
-            <if test="rePayFlag != null" >
-                rePayFlag = #{rePayFlag},
-            </if>
-            <if test="actualAmount != null" >
-                actualAmount = #{actualAmount},
-            </if>
             <if test="noOrderReason != null" >
                 noOrderReason = #{noOrderReason},
             </if>
@@ -160,12 +121,6 @@
             <if test="delFlag != null" >
                 delFlag = #{delFlag},
             </if>
-            <if test="formData != null" >
-                formData = #{formData},
-            </if>
-            <if test="problem != null" >
-                problem = #{problem},
-            </if>
             <if test="rebateRemarks != null" >
                 rebateRemarks = #{rebateRemarks},
             </if>
@@ -175,6 +130,9 @@
     <update id="updateOpenidByMobile">
         UPDATE cm_receipt_user SET openid=#{openid},unionId=#{unionId} WHERE mobile = #{mobile}
     </update>
+    <update id="deleteReceiptRelation">
+        UPDATE cm_receipt_order_relation SET delFlag = '1' WHERE receiptID = #{receiptId}
+    </update>
     <select id="getReceiptUserByOpenid" resultType="com.caimei365.order.model.vo.ReceiptUserVo">
         SELECT DISTINCT id, user_type AS userType, name, mobile, openid, unionId, password
         FROM cm_receipt_user
@@ -261,17 +219,19 @@
             cdr.receiptType,
             cdr.receiptStatus,
             cdr.receiptAmount,
+            cdr.smsContent,
             cdr.smsMd5Code,
             cdr.receiptDate,
             cdr.confirmDate,
             cdr.handlingFee,
             cdr.orderFlag,
+            cdr.noOrderReason,
             IFNULL((
                 SELECT SUM(b.associateAmount) FROM cm_receipt_order_relation b WHERE b.receiptID = cdr.id AND b.delFlag = '0'
             ), 0) AS associateAmount
         FROM cm_discern_receipt cdr
-            LEFT JOIN cm_receipt_order_relation cror ON cror.receiptID = cdr.id
-        WHERE cdr.smsMd5Code = #{smsMd5Code} AND cdr.delFlag = '0' AND cror.delFlag = '0'
+                 LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
+        WHERE cdr.smsMd5Code = #{smsMd5Code} AND cdr.delFlag = '0'
     </select>
     <select id="getReceiptList" resultType="com.caimei365.order.model.vo.ReceiptVo" parameterType="com.caimei365.order.model.bo.ReceiptParamsBo">
         SELECT DISTINCT
@@ -281,11 +241,13 @@
             cdr.receiptType,
             cdr.receiptStatus,
             cdr.receiptAmount,
+            cdr.smsContent,
             cdr.smsMd5Code,
             cdr.receiptDate,
             cdr.confirmDate,
             cdr.handlingFee,
             cdr.orderFlag,
+            cdr.noOrderReason,
             CASE WHEN cror.relationType = 2 THEN co.organizeID
                  WHEN cror.relationType = 1 THEN cso.organizeID
                  ELSE '' END AS organizeId,
@@ -296,10 +258,10 @@
                 SELECT SUM(b.associateAmount) FROM cm_receipt_order_relation b WHERE b.receiptID = cdr.id AND b.delFlag = '0'
             ), 0) AS associateAmount
         FROM cm_discern_receipt cdr
-            LEFT JOIN cm_receipt_order_relation cror ON cror.receiptID = cdr.id
+            LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
             LEFT JOIN cm_order co ON (cror.orderID = co.orderID AND cror.relationType = 2)
             LEFT JOIN cm_shop_order cso ON (cror.orderID = cso.shopOrderID AND cror.relationType = 1)
-        WHERE cdr.delFlag = '0' AND cror.delFlag = '0'
+        WHERE cdr.delFlag = '0'
         <if test="id != null and id != ''">
             AND cdr.id = #{id}
         </if>
@@ -344,11 +306,13 @@
         cdr.receiptType,
         cdr.receiptStatus,
         cdr.receiptAmount,
+        cdr.smsContent,
         cdr.smsMd5Code,
         cdr.receiptDate,
         cdr.confirmDate,
         cdr.handlingFee,
         cdr.orderFlag,
+        cdr.noOrderReason,
         cru.name AS confirmUserName,
         su.fullName AS cancelUserName,
         CASE WHEN cror.relationType = 2 THEN co.organizeID
@@ -361,12 +325,12 @@
         SELECT SUM(b.associateAmount) FROM cm_receipt_order_relation b WHERE b.receiptID = cdr.id AND b.delFlag = '0'
         ), 0) AS associateAmount
         FROM cm_discern_receipt cdr
-        LEFT JOIN cm_receipt_order_relation cror ON cror.receiptID = cdr.id
+        LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
         LEFT JOIN cm_receipt_user cru ON cru.id = cdr.confirmUserPermissionID
         LEFT JOIN system_user su ON su.id = cdr.cancelUserPermissionID
         LEFT JOIN cm_order co ON (cror.orderID = co.orderID AND cror.relationType = 2)
         LEFT JOIN cm_shop_order cso ON (cror.orderID = cso.shopOrderID AND cror.relationType = 1)
-        WHERE cdr.delFlag = '0' AND cror.delFlag = '0' AND cdr.id = #{id}
+        WHERE cdr.delFlag = '0' AND cdr.id = #{id}
     </select>
     <select id="getReceiptOrders" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
@@ -527,6 +491,62 @@
             ORDER BY o.orderTime DESC
         </if>
     </select>
+    <select id="getOrderListByOrderIds" resultType="com.caimei365.order.model.vo.OrderVo">
+        SELECT DISTINCT
+            IFNULL(o.orderSeen,0) AS orderSeen,
+            o.orderID AS orderId,
+            o.shopOrderIds,
+            o.orderSource,
+            o.orderNo,
+            o.userID AS userId,
+            o.clubID AS clubId,
+            o.buyUserID AS buyUserId,
+            o.orderTime AS orderTime,
+            o.updateDate AS updateDate,
+            o.delFlag,
+            o.userBeans,
+            o.orderType,
+            o.orderSubmitType,
+            o.confirmFlag,
+            o.onlinePayFlag,
+            o.splitFlag,
+            o.payFlag,
+            o.receiptStatus,
+            o.payStatus,
+            o.zeroCostFlag,
+            o.sendOutStatus,
+            o.refundType,
+            o.affirmPaymentFlag,
+            o.productCount,
+            o.presentCount,
+            o.promotionalGiftsCount,
+            o.hasActProduct,
+            o.promotionFullReduction,
+            o.svipFullReduction,
+            o.secondHandOrderFlag,
+            o.invoiceFlag,
+            o.freePostFlag AS postageFlag,
+            o.freight AS postage,
+            o.productTotalFee,
+            o.orderTotalFee,
+            o.payTotalFee,
+            o.payableAmount,
+            o.balancePayFee,
+            o.discountFee,
+            o.couponAmount,
+            o.status,
+            o.confirmTime,
+            o.payTime,
+            o.rebateFlag,
+            o.clauseID AS clauseId,
+            o.clauseName
+        FROM cm_order o
+        WHERE o.delFlag = '0' AND o.orderID IN
+        <foreach collection="orderIdS" open="(" close=")" separator="," item="orderId">
+            #{orderId}
+        </foreach>
+        order by o.payableAmount, o.orderID
+    </select>
     <select id="countHaveReturning" resultType="java.lang.Integer">
         SELECT IFNULL(COUNT(id), 0) FROM cm_returned_purchase WHERE orderID = #{orderID} AND status = 1 AND delFlag = 0
     </select>