From 297ccc0233c01efc3f2cd213890d90a45ba86cf9 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 29 Aug 2024 14:13:19 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BB=A3=E5=AE=A2=E4=B8=8B=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E6=8A=98=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/dto/shoptable/PayDTO.java | 5 +++++ .../cn/ysk/cashier/service/TbPayService.java | 3 ++- .../service/impl/TbPayServiceImpl.java | 20 +++++++++++++++---- .../impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java index 06c11ba7..3d8bf73e 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java @@ -2,6 +2,8 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -13,4 +15,7 @@ public class PayDTO { private Integer orderId; @NotEmpty private String payType; + @Min(0) + @Max(1) + private Double discount; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/TbPayService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/TbPayService.java index 44bdd047..a1f90984 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/TbPayService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/TbPayService.java @@ -4,12 +4,13 @@ import cn.ysk.cashier.dto.ScanPayDTO; import cn.ysk.cashier.dto.shoptable.PayDTO; import cn.ysk.cashier.pojo.order.TbOrderInfo; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; public interface TbPayService { void scanPay(ScanPayDTO scanPayDTO); - TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId); + TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId, Double discount); TbOrderInfo cashPay(PayDTO payDTO); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java index 8942c365..55430f49 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java @@ -21,13 +21,15 @@ import cn.ysk.cashier.repository.shop.TbMerchantThirdApplyRepository; import cn.ysk.cashier.service.TbPayService; import cn.ysk.cashier.utils.RabbitMsgUtils; import cn.ysk.cashier.utils.SnowFlakeUtil; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; @Service @@ -297,7 +299,7 @@ public class TbPayServiceImpl implements TbPayService { private final TbShopUserFlowMapper shopUserFlowMapper; @Override - public TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId) { + public TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId, Double discount) { TbOrderInfo orderInfo = orderInfoMapper.selectById(orderId); @@ -334,7 +336,12 @@ public class TbPayServiceImpl implements TbPayService { userFlow.setType("-"); shopUserFlowMapper.insert(userFlow); - orderInfo.setPayAmount(orderInfo.getOrderAmount()); + orderInfo.setPayAmount(discount == null ? orderInfo.getOrderAmount() : orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(discount)).setScale(2, RoundingMode.UP)); + if (discount != null && discount != 1) { + orderInfo.setDiscountAmount(orderInfo.getOrderAmount().subtract(orderInfo.getPayAmount())); + orderInfo.setDiscountRatio(BigDecimal.valueOf(discount)); + } + orderInfo.setPayType("cash"); orderInfo.setStatus("closed"); orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo())); @@ -373,7 +380,12 @@ public class TbPayServiceImpl implements TbPayService { // return Result.fail(CodeEnum.PAYTYPENOEXIST); // } - orderInfo.setPayAmount(orderInfo.getOrderAmount()); + orderInfo.setPayAmount(payDTO.getDiscount() == null ? orderInfo.getOrderAmount() : orderInfo.getOrderAmount() + .multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.UP)); + if (payDTO.getDiscount() != null && payDTO.getDiscount() != 1) { + orderInfo.setDiscountAmount(orderInfo.getOrderAmount().subtract(orderInfo.getPayAmount())); + orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); + } orderInfo.setPayType("cash"); orderInfo.setStatus("closed"); orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo())); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index abae1be0..2059d1e0 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -1083,7 +1083,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbOrderInfo orderInfo = null; switch (payDTO.getPayType()) { case "vipPay": - orderInfo = tbPayServiceImpl.vipPay(payDTO.getShopId(), payDTO.getOrderId()); + orderInfo = tbPayServiceImpl.vipPay(payDTO.getShopId(), payDTO.getOrderId(), payDTO.getDiscount()); break; case "cash": orderInfo = tbPayServiceImpl.cashPay(payDTO);