Procházet zdrojové kódy

收款订单列表

chao před 3 roky
rodič
revize
b3a00c235f

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

@@ -164,5 +164,61 @@ public class ReceiptApi {
         return receiptService.getReceiptDetail(id, openid);
     }
 
+    /**
+     * 获取收款订单列表
+     */
+    @ApiOperation("获取收款订单列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "id", value = "收款ID"),
+            @ApiImplicitParam(required = false, name = "type", value = "类型:0商品订单(默认),1订金订单"),
+            @ApiImplicitParam(required = false, name = "organizeId", value = "组织ID"),
+            @ApiImplicitParam(required = false, name = "orderReceiptStatus", value = "订单收款状态:1待收款,2部分收款,3已收款"),
+            @ApiImplicitParam(required = false, name = "userName", value = "客户名称"),
+            @ApiImplicitParam(required = false, name = "openid", value = "微信openid"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/list")
+    public ResponseJson<PageInfo<ReceiptVo>> getReceiptOrderList(Integer id,
+                                                                 Integer type,
+                                                                 Integer organizeId,
+                                                            String orderReceiptStatus,
+                                                            String userName,
+                                                            String openid,
+                                                            @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                            @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        if (!StringUtils.hasLength(openid)) {
+            return ResponseJson.error("微信openid不能为空!", null);
+        }
+        return receiptService.getReceiptOrderList(id, type, organizeId, orderReceiptStatus, userName, openid, pageNum, pageSize);
+    }
+
+    /**
+     * 供应商退款关联的子订单信息
+     */
+    @ApiOperation("供应商退款关联的子订单信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "id", value = "返佣收款ID"),
+            @ApiImplicitParam(required = false, name = "confirmedType", value = "0待确认,2已确认子订单"),
+            @ApiImplicitParam(required = false, name = "shopName", value = "供应商名称"),
+            @ApiImplicitParam(required = false, name = "userName", value = "客户名称"),
+            @ApiImplicitParam(required = false, name = "openid", value = "微信openid"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/list")
+    public ResponseJson<PageInfo<ReceiptVo>> getRefundShopOrderList(Integer id,
+                                                                 Integer confirmedType,
+                                                                 String shopName,
+                                                                 String userName,
+                                                                 String openid,
+                                                                 @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                 @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        if (!StringUtils.hasLength(openid)) {
+            return ResponseJson.error("微信openid不能为空!", null);
+        }
+        return receiptService.getRefundShopOrderList(id, confirmedType, shopName, userName, openid, pageNum, pageSize);
+    }
+
 }
 

+ 37 - 4
src/main/java/com/caimei365/order/mapper/ReceiptMapper.java

@@ -2,10 +2,7 @@ package com.caimei365.order.mapper;
 
 import com.caimei365.order.model.bo.ReceiptParamsBo;
 import com.caimei365.order.model.po.ReceiptPo;
-import com.caimei365.order.model.vo.OrderVo;
-import com.caimei365.order.model.vo.ReceiptTypeVo;
-import com.caimei365.order.model.vo.ReceiptUserVo;
-import com.caimei365.order.model.vo.ReceiptVo;
+import com.caimei365.order.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -98,4 +95,40 @@ public interface ReceiptMapper {
      * 获取收款关联订单
      */
     List<OrderVo> getReceiptOrders(Integer receiptId);
+    /**
+     * 获取收款商品订单列表
+     */
+    List<OrderVo> getOrderListByParams(ReceiptParamsBo receiptParamsBo);
+    /**
+     * 存在退款中的记录
+     */
+    Integer countHaveReturning(Integer orderId);
+    /**
+     * 存在收款中的记录
+     */
+    Integer countHaveReceipting(Integer orderId);
+    /**
+     * 线上支付收款Id
+     */
+    Integer getOnlineReceiptId(Integer orderId);
+    /**
+     * 获取已退款金额
+     */
+    List<ReturnedPurchaseVo> getRefundFeeByOrderId(Integer orderId);
+    /**
+     * 已关联子订单
+     */
+    List<ShopOrderVo> getShopOrderListByReceiptId(Integer receiptId);
+    /**
+     * 搜索子订单进行关联
+     */
+    List<ShopOrderVo> getRefundShopOrders(Integer confirmedType, String shopName, String userName);
+    /**
+     * 返佣订单付款总金额
+     */
+    double countAllPayAssociateAmount(Integer orderId);
+    /**
+     * 需要支付金额
+     */
+    double countNeedPayAmount(Integer orderId);
 }

+ 22 - 1
src/main/java/com/caimei365/order/model/bo/ReceiptParamsBo.java

@@ -37,7 +37,7 @@ public class ReceiptParamsBo implements Serializable {
     /**
      * 收款状态列表
      */
-    private String[] receiptStatusList;
+    private String[] receiptStatusArr;
     /**
      * 筛选开始时间
      */
@@ -46,4 +46,25 @@ public class ReceiptParamsBo implements Serializable {
      * 筛选结束时间
      */
     private String endDate;
+    /**
+     * 订单Id
+     */
+    private Integer orderId;
+    /**
+     * 订单类型:0商品订单(默认),1订金订单
+     */
+    private Integer orderType;
+    /**
+     * 订单状态集合
+     */
+    private List<Integer> orderStatus;
+    /**
+     * 客户名称
+     */
+    private String userName;
+    /**
+     * 组织Id
+     */
+    private Integer organizeId;
+
 }

+ 14 - 1
src/main/java/com/caimei365/order/model/enums/OrderStatus.java

@@ -23,7 +23,11 @@ public enum OrderStatus {
     TRANSACTION_COMPLETED(4, "交易完成"),
     ORDER_COMPLETED(5, "订单完成"),
     FULL_RETURNED(7, "交易全退"),
-    CLOSED(6, "已关闭");
+    CLOSED(6, "已关闭"),
+    // ---数据库不存在的状态
+    WAIT_PAY(1,"待支付"),
+    TRANSACTION(2,"交易中"),
+    REFUND_RETURN(8,"退货退款");
 
     private final int code;
     private final String desc;
@@ -41,4 +45,13 @@ public enum OrderStatus {
         this.desc = desc;
     }
 
+    public static String getOrderStatusText(int code){
+        for(OrderStatus type : OrderStatus.values()){
+            if(type.getCode() == code){
+                return type.desc;
+            }
+        }
+        return "";
+    }
+
 }

+ 32 - 0
src/main/java/com/caimei365/order/model/vo/OrderVo.java

@@ -275,4 +275,36 @@ public class OrderVo implements Serializable {
      * 收款详情是否可以查看
      */
     private Boolean authority = false;
+    /**
+     * 存在退款中的记录 (0:否,1:是)
+     */
+    private String haveReturning;
+    /**
+     * 存在收款中的记录 (0:否,1:是)
+     */
+    private String haveReceipting;
+    /**
+     * 剩余应收金额
+     */
+    private Double surplusAmount;
+    /**
+     * 已支付金额
+     */
+    private Double paidAmount;
+    /**
+     * 待审金额
+     */
+    private Double unCheckAmount;
+    /**
+     * 退货退款价值(抵扣经理折扣后)
+     */
+    private Double returnValue;
+    /**
+     * 退款总额(给买家)
+     */
+    private Double refundFee;
+    /**
+     * 订单状态备注
+     */
+    private String statusName;
 }

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

@@ -3,6 +3,7 @@ package com.caimei365.order.model.vo;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -166,4 +167,16 @@ public class ShopOrderVo implements Serializable {
      * (收款买家)收款状态:1待收款、2部分收款、3已收款
      */
     private Integer receiptStatus;
+    /**
+     * 供应商已退金额
+     */
+    private BigDecimal shopRefundAmount;
+    /**
+     * 存在退款中的记录 (0:否,1:是)
+     */
+    private String haveReturning;
+    /**
+     * 返佣订单关联页面展示用
+     */
+    private OrderVo mainOrder;
 }

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

@@ -74,4 +74,28 @@ public interface ReceiptService {
      * @param openid 微信openid
      */
     ResponseJson<ReceiptVo> getReceiptDetail(Integer id, String openid);
+
+    /**
+     * 获取收款商品订单列表
+     *
+     * @param id                 收款ID
+     * @param organizeId         组织ID
+     * @param orderReceiptStatus 订单收款状态:1待收款,2部分收款,3已收款
+     * @param userName           客户名称
+     * @param openid             微信openid
+     * @param pageNum            页码
+     * @param pageSize           每页数量
+     */
+    ResponseJson<PageInfo<ReceiptVo>> getReceiptOrderList(Integer id, Integer type, Integer organizeId, String orderReceiptStatus, String userName, String openid, int pageNum, int pageSize);
+
+    /**
+     * @param id            返佣收款ID
+     * @param confirmedType 0待确认,2已确认子订单
+     * @param shopName      供应商名称
+     * @param userName      客户名称搜索使用
+     * @param openid        微信openid
+     * @param pageNum       页码
+     * @param pageSize      每页数量
+     */
+    ResponseJson<PageInfo<ReceiptVo>> getRefundShopOrderList(Integer id, Integer confirmedType, String shopName, String userName, String openid, int pageNum, int pageSize);
 }

+ 173 - 9
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -14,10 +14,7 @@ import com.caimei365.order.model.enums.ReceiptType;
 import com.caimei365.order.model.po.BalanceRecordPo;
 import com.caimei365.order.model.po.OrderReceiptRelationPo;
 import com.caimei365.order.model.po.ReceiptPo;
-import com.caimei365.order.model.vo.OrderVo;
-import com.caimei365.order.model.vo.ReceiptTypeVo;
-import com.caimei365.order.model.vo.ReceiptUserVo;
-import com.caimei365.order.model.vo.ReceiptVo;
+import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.ReceiptService;
 import com.caimei365.order.utils.DateUtils;
 import com.caimei365.order.utils.MathUtil;
@@ -25,6 +22,7 @@ import com.caimei365.order.utils.Md5Util;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.http.HttpHeaders;
@@ -34,6 +32,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -443,14 +442,14 @@ public class ReceiptServiceImpl implements ReceiptService {
             paramsBo.setSmsMd5Code(Md5Util.md5(message));
         }
         if (StringUtils.isNotBlank(receiptStatus)) {
-            String[] receiptStatusList = null;
+            String[] receiptStatusArr = null;
             if ("1".equals(receiptStatus)) {
-                receiptStatusList = "1,4,5".split(",");
+                receiptStatusArr = "1,4,5".split(",");
             } else {
-                receiptStatusList = receiptStatus.split(",");
+                receiptStatusArr = receiptStatus.split(",");
             }
             paramsBo.setReceiptStatus(receiptStatus);
-            paramsBo.setReceiptStatusList(receiptStatusList);
+            paramsBo.setReceiptStatusArr(receiptStatusArr);
         }
         // 分页请求数据
         PageHelper.startPage(pageNum, pageSize);
@@ -512,6 +511,172 @@ public class ReceiptServiceImpl implements ReceiptService {
         return ResponseJson.success(receipt);
     }
 
+    /**
+     * 获取收款商品订单列表
+     *
+     * @param id                 收款ID
+     * @param organizeId         组织ID
+     * @param orderReceiptStatus 订单收款状态:1待收款,2部分收款,3已收款
+     * @param userName           客户名称
+     * @param openid             微信openid
+     * @param pageNum            页码
+     * @param pageSize           每页数量
+     */
+    @Override
+    public ResponseJson<PageInfo<ReceiptVo>> getReceiptOrderList(Integer id, Integer type, Integer organizeId, String orderReceiptStatus, String userName, String openid, int pageNum, int pageSize) {
+        // 操作用户
+        ReceiptUserVo receiptUser = checkPermissions(1, openid);
+        if (null == receiptUser) {
+            return ResponseJson.error("无权限操作!", null);
+        }
+        if (StringUtils.isBlank(orderReceiptStatus)) {
+            orderReceiptStatus = "1,2";
+        }
+        ReceiptVo receipt = receiptMapper.getReceiptDetail(id);
+        if (null == receipt) {
+            return ResponseJson.error("收款数据异常!", null);
+        }
+        Integer orderId = null;
+        try {
+            orderId = Integer.parseInt(receipt.getOrderFlag());
+        } catch (NumberFormatException e) {
+            log.info("---------此收款无订单标注------");
+        }
+        String[] receiptStatusArr = orderReceiptStatus.split(",");
+        List<Integer> orderStatus = new ArrayList<>();
+        boolean receiptFlag = false;
+        if (ArrayUtils.contains(receiptStatusArr, "3")) {
+            orderStatus = Arrays.asList(4, 5, 31, 32, 33);
+            receiptFlag = true;
+        } else {
+            orderStatus = Arrays.asList(11, 12, 13, 21, 22, 23);
+        }
+        if (null == type || 0 == type) {
+            type = 0;
+        }
+        // 获取该收款用户下的机构userIds
+        List<Integer> userIds = getReceiptClubUserIds(openid, receipt.getReceiptStatus().toString());
+        ReceiptParamsBo params = new ReceiptParamsBo();
+        params.setUserIds(userIds);
+        params.setOrderId(orderId);
+        params.setReceiptStatusArr(receiptStatusArr);
+        params.setOrderStatus(orderStatus);
+        params.setUserName(userName);
+        params.setOrganizeId(organizeId);
+        params.setOrderType(type);
+        // 分页请求数据
+        PageHelper.startPage(pageNum, pageSize);
+        // 将有订单标识的订单放到列表的首位显示
+        List<OrderVo> orderList = receiptMapper.getOrderListByParams(params);
+        Iterator<OrderVo> iterator = orderList.iterator();
+        while (iterator.hasNext()) {
+            OrderVo order = iterator.next();
+            Integer receiptOnlineId = receiptMapper.getOnlineReceiptId(order.getOrderId());
+            if (null != receiptOnlineId && receiptOnlineId > 0) {
+                // 排除线上支付订单
+                iterator.remove();
+            } else {
+                // 存在退款中的记录 (0:否,1:是)
+                Integer haveReturning = receiptMapper.countHaveReturning(order.getOrderId());
+                if (null != haveReturning && haveReturning>0) {
+                    haveReturning = 1;
+                } else {
+                    haveReturning = 0;
+                }
+                order.setHaveReturning(haveReturning.toString());
+                // 存在收款中的记录 (0:否,1:是)
+                Integer haveReceipting = receiptMapper.countHaveReceipting(order.getOrderId());
+                if (null != haveReceipting && haveReceipting>0) {
+                    haveReceipting = 1;
+                } else {
+                    haveReceipting = 0;
+                }
+                order.setHaveReceipting(haveReceipting.toString());
+                if (receiptFlag) {
+                    order.setSurplusAmount(0d);
+                }
+                order.setPaidAmount(getReceivedAmount(order, true));
+                order.setStatusName(OrderStatus.getOrderStatusText(order.getStatus()));
+                order.setUnCheckAmount(receiptMapper.getUncheckAmount(order.getOrderId()));
+                //获取退款价值
+                order.setReturnValue(getReturnValue(order));
+                //退款(退货)总金额
+                Double returnedPurchaseFee = 0d;
+                //退款总额(给买家)
+                Double refundFee = 0d;
+                //获取已退款金额
+                List<ReturnedPurchaseVo> returnedList = receiptMapper.getRefundFeeByOrderId(orderId);
+                if (null != returnedList && returnedList.size() > 0) {
+                    for (ReturnedPurchaseVo returned : returnedList) {
+                        returnedPurchaseFee += returned.getReturnedPurchaseFee();
+                        refundFee += returned.getRefundFee();
+                    }
+                }
+                order.setReturnedPurchaseFee(returnedPurchaseFee);
+                order.setRefundFee(refundFee);
+                //获取剩余应收
+                order.setSurplusAmount(getUnPayMoney(order, true));
+            }
+        }
+        PageInfo<ReceiptVo> pageInfo = new PageInfo(orderList);
+        return ResponseJson.success(pageInfo);
+    }
+
+    /**
+     * @param id            返佣收款ID
+     * @param confirmedType 0待确认,2已确认子订单
+     * @param shopName      供应商名称
+     * @param userName      客户名称搜索使用
+     * @param openid        微信openid
+     * @param pageNum       页码
+     * @param pageSize      每页数量
+     */
+    @Override
+    public ResponseJson<PageInfo<ReceiptVo>> getRefundShopOrderList(Integer id, Integer confirmedType, String shopName, String userName, String openid, int pageNum, int pageSize) {
+        // 操作用户
+        ReceiptUserVo receiptUser = checkPermissions(1, openid);
+        if (null == receiptUser) {
+            return ResponseJson.error("无权限操作!", null);
+        }
+        List<ShopOrderVo> shopOrderList = new ArrayList<>();
+        PageHelper.startPage(pageNum, pageSize);
+        if (id != null) {
+            // 已关联子订单,展示关联信息
+            shopOrderList = receiptMapper.getShopOrderListByReceiptId(id);
+            for (ShopOrderVo shopOrder : shopOrderList) {
+                setReceiptedAmount(shopOrder);
+            }
+        } else {
+            //没有关联子订单,根据shopName搜索子订单进行关联
+            //这里的子订单  必须满足 它的主订单只进行过返佣收款或者主订单根本没有收过款
+            shopOrderList = receiptMapper.getRefundShopOrders(confirmedType, shopName, userName);
+            for (ShopOrderVo shopOrder : shopOrderList) {
+                setReceiptedAmount(shopOrder);
+                if (confirmedType != null && confirmedType == 2) {
+                    shopOrder.setHaveReturning("1");
+                }
+            }
+        }
+        PageInfo<ReceiptVo> pageInfo = new PageInfo(shopOrderList);
+        return ResponseJson.success(pageInfo);
+    }
+
+    /**
+     * 设置收款金额
+     */
+    public void setReceiptedAmount(ShopOrderVo shopOrder) {
+        OrderVo order = orderCommonMapper.getOrderByOrderId(shopOrder.getOrderId());
+        if (null != order.getRebateFlag() && 1 == order.getRebateFlag()){
+            // 返佣订单
+            double associateAmount = receiptMapper.countAllPayAssociateAmount(order.getOrderId());
+            order.setReceiptAmount(associateAmount);
+        } else {
+            double needPayAmount = receiptMapper.countNeedPayAmount(order.getOrderId());
+            order.setReceiptAmount(needPayAmount);
+        }
+        shopOrder.setMainOrder(order);
+    }
+
     /**
      * 设置收款详情信息
      */
@@ -789,7 +954,6 @@ public class ReceiptServiceImpl implements ReceiptService {
      */
     private Double getReceivedAmount(OrderVo order, Boolean isCountUncheckAmount) {
         Double receivedAmount = 0d;
-
         if (null != order) {
             // 获取订单已支付金额(待审核状态的收款也算)
             Double paidAmount = receiptMapper.getPaidAmountByOrderId(order.getOrderId());

+ 243 - 12
src/main/resources/mapper/ReceiptMapper.xml

@@ -315,9 +315,9 @@
         <if test="endDate != null  and endDate != ''">
             AND cdr.receiptDate <![CDATA[  <  ]]> #{endDate}
         </if>
-        <if test="receiptStatusList != null and receiptStatusList != ''">
+        <if test="receiptStatusArr != null and receiptStatusArr != ''">
             AND cdr.receiptStatus in
-            <foreach collection="receiptStatusList" open="(" close=")" separator="," item="val">
+            <foreach collection="receiptStatusArr" open="(" close=")" separator="," item="val">
                 #{val}
             </foreach>
         </if>
@@ -370,7 +370,67 @@
     </select>
     <select id="getReceiptOrders" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
-        ifnull(o.orderSeen,0) AS orderSeen,
+            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,
+        IFNULL(u.userName,'') AS userName
+        FROM cm_order o
+        INNER JOIN cm_receipt_order_relation cror ON o.orderID = cror.orderID
+        INNER JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
+        LEFT JOIN USER u ON o.userID = u.userID
+        WHERE cdr.id = #{receiptId}
+            AND o.delFlag = '0'
+            AND cror.delFlag = '0'
+            AND cdr.delFlag = '0'
+        ORDER BY o.orderTime DESC
+    </select>
+    <select id="getOrderListByParams" resultType="com.caimei365.order.model.vo.OrderVo">
+        SELECT DISTINCT
+        IFNULL(o.orderSeen,0) AS orderSeen,
         o.orderID AS orderId,
         o.shopOrderIds,
         o.orderSource,
@@ -417,16 +477,187 @@
         o.rebateFlag,
         o.clauseID AS clauseId,
         o.clauseName,
-        IFNULL(u.userName,'') AS userName
+        <if test="organizeID == 0 or organizeID == null">
+            IFNULL(u.userName, u.name) AS userName,
+        </if>
+        <if test="organizeID > 0">
+            u.name AS "userName",
+            IFNULL(u.name, u.userName) AS userName,
+        </if>
+        '0' AS haveReturning,
+        '0' AS haveReceipting
         FROM cm_order o
-        INNER JOIN cm_receipt_order_relation cror ON o.orderID = cror.orderID
-        INNER JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
-        LEFT JOIN USER u ON o.userID = u.userID
-        WHERE cdr.id = #{receiptId}
+        LEFT JOIN user u ON o.userID = u.userID
+        LEFT JOIN cm_order_product cop ON o.orderID = cop.orderID
+        <where>
+            <if test="orderId != null and orderId != ''">
+                AND o.orderID != #{orderId}
+            </if>
             AND o.delFlag = '0'
-            AND cror.delFlag = '0'
-            AND cdr.delFlag = '0'
-        ORDER BY o.orderTime DESC
+            AND o.organizeID = #{organizeId}
+            AND o.receiptStatus IN
+            <foreach collection="receiptStatusArr" open="(" close=")" item="receiptStatus" separator=",">
+                #{receiptStatus}
+            </foreach>
+            AND o.status IN
+            <foreach collection="orderStatus" open="(" close=")" item="status" separator=",">
+                #{status}
+            </foreach>
+            <if test="userIds != null and userIds.size() > 0">
+                AND o.userID IN
+                <foreach collection="userIds" open="(" close=")" separator="," item="val">
+                    #{val}
+                </foreach>
+            </if>
+            <if test="userName != null and userName != ''">
+                AND (u.userName LIKE CONCAT('%',#{userName},'%') OR u.name LIKE CONCAT('%',#{userName},'%'))
+            </if>
+            AND o.rebateFlag = 0
+            <if test="orderType == null or orderType == 0">
+                AND cop.productID NOT IN(6060, 6061, 6062, 6063, 6064,6065, 6066, 6067, 6068, 6069)
+            </if>
+            <if test="orderType != null and orderType == 1">
+                AND cop.productID IN(6060, 6061, 6062, 6063, 6064,6065, 6066, 6067, 6068, 6069)
+            </if>
+        </where>
+        <if test="orderId != null and orderId != ''">
+            ORDER BY (CASE WHEN o.orderID=#{orderId} THEN 1 ELSE 2 END),o.orderTime DESC
+        </if>
+        <if test="orderId == null or orderId == ''">
+            ORDER BY o.orderTime DESC
+        </if>
+    </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>
+    <select id="countHaveReceipting" resultType="java.lang.Integer">
+        SELECT IFNULL(COUNT(cror.id), 0) FROM cm_receipt_order_relation cror
+            INNER JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
+        WHERE cror.orderID = #{orderID} AND cror.delFlag = 0 AND cdr.delFlag = 0 AND cdr.receiptStatus = 2
+    </select>
+    <select id="getOnlineReceiptId" resultType="java.lang.Integer">
+        SELECT
+            cdr.id
+        FROM cm_receipt_order_relation cror
+        LEFT JOIN cm_discern_receipt cdr ON cror.receiptID = cdr.id
+        WHERE cror.orderID = #{orderId}
+          AND cror.relationType = '2'
+          AND cror.delFlag = '0'
+          AND cdr.delFlag = '0'
+          AND cdr.receiptStatus = '3'
+          AND cdr.payWay = '1'
+        LIMIT 1
+    </select>
+    <select id="getRefundFeeByOrderId" resultType="com.caimei365.order.model.vo.ReturnedPurchaseVo">
+        SELECT
+            id,
+            returnedPurchaseFee,
+            refundFee
+        FROM cm_returned_purchase
+        WHERE orderID = #{orderId} AND STATUS = '2'
+    </select>
+    <select id="getShopOrderListByReceiptId" resultType="com.caimei365.order.model.vo.ShopOrderVo">
+        SELECT DISTINCT
+            cso.shopOrderId AS shopOrderId,
+            cso.shopOrderNo,
+            cso.orderID AS orderId,
+            cso.orderNo,
+            cso.shopID AS shopId,
+            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,
+            cso.shopTaxFee,
+            cso.shouldPayShopAmount,
+            cso.payedShopAmount,
+            cso.orderTime,
+            cso.orderSubmitType,
+            cso.payStatus,
+            cso.sendOutStatus,
+            cso.splitFlag,
+            s.name AS shopName
+        FROM cm_receipt_order_relation cror
+            LEFT JOIN cm_shop_order cso ON  cso.shopOrderID = cror.orderID
+            LEFT JOIN shop s ON s.shopID = cso.shopID
+        WHERE cror.delFlag = '0' AND  cror.relationType = '1' AND cror.receiptID = #{receiptId}
+    </select>
+    <select id="getRefundShopOrders" resultType="com.caimei365.order.model.vo.ShopOrderVo">
+        SELECT DISTINCT
+        cso.shopOrderId AS shopOrderId,
+        cso.shopOrderNo,
+        cso.orderID AS orderId,
+        cso.orderNo,
+        cso.shopID AS shopId,
+        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,
+        cso.shopTaxFee,
+        cso.shouldPayShopAmount,
+        cso.payedShopAmount,
+        cso.orderTime,
+        cso.orderSubmitType,
+        cso.payStatus,
+        cso.sendOutStatus,
+        cso.splitFlag,
+        s.name AS shopName,
+        IFNULL((SELECT SUM(refundAmount) FROM cm_refund_shop_record WHERE shopOrderID = cso.shopOrderID AND delFlag = 0), 0) AS shopRefundAmount
+        FROM cm_shop_order cso
+        LEFT JOIN shop s ON s.shopID = cso.shopID
+        LEFT JOIN cm_receipt_order_relation cror ON cso.shopOrderID = cror.orderID AND cror.relationType = 1
+        LEFT JOIN cm_discern_receipt cdr ON cdr.id = cror.receiptID AND cdr.receiptType = 5 AND cdr.receiptStatus = 2
+        LEFT JOIN user u ON u.userID = cso.userID
+        WHERE cso.delFlag = 0
+        AND (cror.delFlag = 0 OR cror.id IS NULL)
+        <if test="shopName != null and shopName != ''">
+            AND s.name LIKE CONCAT('%',#{shopName},'%')
+        </if>
+        <if test="userName != null and userName != ''">
+            AND u.userName LIKE CONCAT('%',#{userName},'%')
+        </if>
+        <if test="confirmedType == 2">
+            AND cdr.receiptStatus = 2
+        </if>
+        GROUP BY cso.shopOrderID
+        <if test="confirmedType != 2">
+            HAVING IFNULL(cso.payedShopAmount, 0) > IFNULL((SELECT SUM(refundAmount) FROM cm_refund_shop_record WHERE shopOrderID = cso.shopOrderID AND delFlag = 0), 0)
+        </if>
+        ORDER BY cso.orderTime DESC
+    </select>
+    <select id="countAllPayAssociateAmount" resultType="java.lang.Double">
+        SELECT IFNULL(SUM(cror.associateAmount), 0) FROM cm_receipt_order_relation cror
+        LEFT JOIN cm_discern_receipt cdr on cror.receiptID = cdr.id
+        WHERE cror.delFlag = '0' AND cdr.delFlag = '0' AND cdr.payWay != '3' AND cdr.receiptStatus in(2,3)
+        <if test="orderID != null and orderID != ''">
+            AND cror.orderID = #{orderId} AND cror.relationType = 2
+        </if>
+    </select>
+    <select id="countNeedPayAmount" resultType="java.lang.Double">
+        SELECT SUM(cso.needPayAmount) FROM cm_receipt_order_relation cror
+            LEFT JOIN  cm_discern_receipt cdr ON cdr.id = cror.receiptID
+            LEFT JOIN cm_shop_order cso ON cso.shopOrderID = cror.orderID
+        WHERE cror.delFlag = '0' AND cror.relationType = '1' AND cdr.receiptType = 3
+          AND cdr.delFlag = '0' AND cdr.receiptStatus = '2'
+          AND cror.orderID IN (SELECT shopOrderID FROM cm_shop_order cso1 WHERE cso1.orderID = #{orderId})
     </select>
-
 </mapper>