From 4114c549ab3afb37d962411b70fcc1a55e5856de Mon Sep 17 00:00:00 2001 From: hurui <177768073@qq.com> Date: Wed, 22 May 2024 14:32:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrderAfterSalesApplyController.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java b/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java index c64d1b3..eeada36 100644 --- a/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java +++ b/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @@ -52,6 +53,40 @@ public class OrderAfterSalesApplyController { @Resource private BsOrderChildService orderChildService; + @RequestMapping(value="/calculate",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "计算预计退款金额") + public ResponseData calculate(@RequestParam(value = "childOrderNo" , required = true) String childOrderNo, + @RequestParam(value = "productCount" , required = true) Integer productCount) { + try { + // 查询子订单 + OrderChildModel orderChild = orderChildService.getDetail(childOrderNo); + if (orderChild == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商品订单"); + } + Map param = new HashMap<>(); + if (orderChild.getSurplusRefundCount().equals(productCount)) { + // 全部退款 + param.put("refundPrice", orderChild.getSurplusRefundPrice()); + param.put("refundIntegral", orderChild.getSurplusRefundIntegral()); + } else { + // 部分退款 + // 计算单价 + BigDecimal unitPrice = orderChild.getSurplusRefundPrice().divide(new BigDecimal(productCount.toString()), 2, BigDecimal.ROUND_DOWN).setScale(2); + BigDecimal unitPriceIntegral = new BigDecimal(orderChild.getSurplusRefundIntegral().toString()).divide(new BigDecimal("100")) + .divide(new BigDecimal(productCount.toString()), 2, BigDecimal.ROUND_DOWN).setScale(2); + param.put("refundPrice", unitPrice.multiply(new BigDecimal(productCount.toString()))); + param.put("refundIntegral", unitPriceIntegral.multiply(new BigDecimal("100")).longValue()); + } + return ResponseMsgUtil.success(param); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value="/apply",method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "申请")