wangming 2 weeks ago
parent
commit
5c6e256aa9

+ 8 - 1
yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderRefundController.java

@@ -381,7 +381,14 @@ public class OrderRefundController {
         newOrderRefund.setReturnMoneySts(ReturnMoneyStsType.APPLY.value());
         newOrderRefund.setApplyTime(new Date());
         newOrderRefund.setUpdateTime(new Date());
-        newOrderRefund.setFreightAmount(orderRefundParam.getFreightAmount());
+        //剩余的
+        Integer remainGoodsNumber = orderRefundService.queryRemainGoodsNumber(orderRefundParam.getOrderNumber());
+        Integer refundGoodsNumber = orderRefundSkuList.stream().map(OrderRefundSku::getProductCount).reduce(0, Integer::sum);
+        if (remainGoodsNumber>refundGoodsNumber){
+            newOrderRefund.setFreightAmount(0.0);
+        }else {
+            newOrderRefund.setFreightAmount(orderRefundParam.getFreightAmount());
+        }
 
         long orderPoints = order.getOffsetPoints() == null ? 0 : order.getOffsetPoints();
         if (orderPoints == 0) {

+ 3 - 4
yami-shop-service/src/main/java/com/yami/shop/dao/OrderRefundMapper.java

@@ -10,14 +10,11 @@
 
 package com.yami.shop.dao;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yami.shop.bean.dto.OrderRefundDto;
 import com.yami.shop.bean.model.OrderRefund;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yami.shop.bean.param.OrderRefundCountParam;
 import com.yami.shop.bean.param.OrderRefundStaisticsParam;
 import com.yami.shop.bean.param.StatisticsRefundParam;
@@ -106,4 +103,6 @@ public interface OrderRefundMapper extends BaseMapper<OrderRefund> {
     OrderRefundVo selectInfoById(Long refundId);
 
     List<OrderRefund> findByOrderNumber(@Param("orderNumber")String orderNumber, @Param("returnMoneySts")Integer returnMoneySts);
+
+    Integer queryRemainGoodsNumber(String orderNumber);
 }

+ 2 - 0
yami-shop-service/src/main/java/com/yami/shop/service/OrderRefundService.java

@@ -218,4 +218,6 @@ public interface OrderRefundService extends IService<OrderRefund> {
      * @param refundId  id
      */
     OrderRefundVo selectInfoById(Long refundId);
+
+    Integer queryRemainGoodsNumber(String orderNumber);
 }

+ 5 - 0
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -1296,5 +1296,10 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         return orderRefundMapper.selectInfoById(refundId);
     }
 
+    @Override
+    public Integer queryRemainGoodsNumber(String orderNumber) {
+        return orderRefundMapper.queryRemainGoodsNumber(orderNumber);
+    }
+
 
 }

+ 7 - 0
yami-shop-service/src/main/resources/mapper/OrderRefundMapper.xml

@@ -522,4 +522,11 @@
         select * from tz_order_refund where return_money_sts=#{returnMoneySts} and order_number =#{orderNumber}
     </select>
 
+    <select id="queryRemainGoodsNumber" resultType="integer">
+        SELECT (SELECT IFNULL(SUM(prod_count), 0) FROM tz_order_item WHERE order_number = #{orderNumber}) -
+               (SELECT COALESCE(SUM(product_count), 0)FROM tz_order_refund_sku a
+                LEFT JOIN tz_order_refund b ON a.order_refund_id = b.refund_id
+                WHERE b.order_number = #{orderNumber} AND b.return_money_sts NOT IN (30, 40)) AS result
+    </select>
+
 </mapper>