Parcourir la source

fix 补差价

zoujiajian il y a 2 ans
Parent
commit
95b8e0de58

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserBalanceSourceRecord.java

@@ -30,6 +30,7 @@ public class UserBalanceSourceRecord extends BaseEntity{
 		ds_transport("分销实物发货"),
 		follow_task("关注引导"),
 		rd_comment("实物评论"),
+		price_differ("订单补差价")
 		;
 		String desc;
 

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderRefundReq.java

@@ -34,4 +34,9 @@ public class OrderRefundReq {
 	 * 订单金额、余额
 	 */
 	private String refundType;
+
+	/**
+	 * 补差价余额
+	 */
+	private BigDecimal refundBalance;
 }

+ 6 - 0
netflix-service/src/main/java/com/cyksj/service/mange/CmsOrderDonService.java

@@ -47,4 +47,10 @@ public interface CmsOrderDonService extends IService<OrderDon> {
 	 * 退款记录
 	 */
 	void refundRecord(OrderDon orderDon, GoodsDon goodsDon, GoodsDonSku sku, String outRefundNo, String refundType);
+
+	/**
+	 *
+	 * @param orderRefundReq
+	 */
+	void refundPriceDiffer(OrderRefundReq orderRefundReq);
 }

+ 17 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -890,6 +890,23 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         refundOrderDonMapper.insert(refund);
     }
 
+    @Override
+    public void refundPriceDiffer(OrderRefundReq orderRefundReq) {
+        Long orderId = orderRefundReq.getOrderId();
+        OrderDon orderDon = orderDonMapper.selectById(orderId);
+        if (orderDon == null) {
+            throw BusinessRuntimeException.getInstance("订单不存在");
+        }
+        if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0) {
+            throw BusinessRuntimeException.getInstance("该订单是0元订单,无法补差价");
+        }
+        BigDecimal refundBalance = orderRefundReq.getRefundBalance();
+        if (refundBalance == null || refundBalance.compareTo(BigDecimal.ZERO) <= 0 || refundBalance.compareTo(orderDon.getMoney()) > 0) {
+            throw BusinessRuntimeException.getInstance("请输入正确的差价金额");
+        }
+        userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.price_differ);
+    }
+
     /**
      * 寻找该车队空余车位
      */

+ 11 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -601,4 +601,15 @@ public class CmsOrderController {
 				builder.build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 订单补差价,补差价退款到余额
+	 */
+	@PutMapping("/refund/price/differ")
+	@Log(module = "订单管理/订单补差价", businessType = BusinessType.PUT, isSaveRequestData = true)
+	public Result<String> refundPriceDiffer(@RequestBody OrderRefundReq orderRefundReq) {
+		cmsOrderDonService.refundPriceDiffer(orderRefundReq);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
 }