zhijiezhao hai 1 ano
pai
achega
7d31053dd1

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

@@ -49,7 +49,7 @@ public interface OrderRefundMapper {
 
     void updateReturnMoney(CmReturnedPurchase cmReturnedPurchase);
 
-    void insertReturnProduct(Integer id, Integer shopOrderId);
+    void insertReturnProduct(Integer id, Integer shopOrderId,Integer sendCount);
 
     Integer findShopOrderRefundCount(Integer orderId);
 
@@ -58,4 +58,6 @@ public interface OrderRefundMapper {
     void insertTransfer(BigDecimal money, String orderRequestNo, Integer shopOrderId);
 
     OrderReceiptRelationPo findOrderRelationByNo(String orderRequestNo);
+
+    Integer findSendOut(Integer shopOrderId);
 }

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

@@ -109,8 +109,10 @@ public class OrderRefundServiceImpl implements OrderRefundService {
          * 为与旧数据兼容,保持cm_returned_purchase_product数据,当前版本退款为原路退回且只能全退,
          * cm_returned_purchase_product表数据无实际意义,可直接取cm_order_product,
          * cm_returned_purchase_product后续版本可删除
+         * 看该子订单是否发货,发货则退货数量为子订单数量,未发货则为取消数量
          */
-        refundMapper.insertReturnProduct(cmReturnedPurchase.getId(), shopOrderId);
+        Integer sendCount = refundMapper.findSendOut(shopOrderId);
+        refundMapper.insertReturnProduct(cmReturnedPurchase.getId(), shopOrderId, sendCount);
         // 修改子订单信息
         refundMapper.updateShopOrder(shopOrderId);
         // 修改订单信息 refundType

+ 18 - 4
src/main/resources/mapper/OrderRefundMapper.xml

@@ -68,10 +68,20 @@
                     orderProductId,
                     shopOrderId,
                     shopId,
-                    num + presentNum,
-                    num + presentNum,
-                    num + presentNum,
-                    num + presentNum
+                    <choose>
+                        <when test="sendCount>0">
+                            (select ifnull(sum(num),0) from cm_logistics_record where shopOrderId = #{shopOrderId}),
+                            num + presentnum-(select ifnull(sum(num),0) from cm_logistics_record where shopOrderId = #{shopOrderId}),
+                            (select ifnull(sum(num),0) from cm_logistics_record where shopOrderId = #{shopOrderId}),
+                            num + presentnum-(select ifnull(sum(num),0) from cm_logistics_record where shopOrderId = #{shopOrderId})
+                        </when>
+                        <otherwise>
+                            0,
+                            num + presentnum-(select ifnull(sum(num),0) from cm_logistics_record where shopOrderId = #{shopOrderId}),
+                            0,
+                            num + presentnum-(select ifnull(sum(num),0) from cm_logistics_record where shopOrderId = #{shopOrderId})
+                        </otherwise>
+                    </choose>
              FROM cm_order_product
              WHERE shopOrderId = #{shopOrderId})
     </insert>
@@ -244,4 +254,8 @@
         where cror.orderRequestNo = #{orderRequestNo}
     </select>
 
+    <select id="findSendOut" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM cm_logistics_batch WHERE shoporderid=#{shopOrderId}
+    </select>
+
 </mapper>