From 8d5fdc565710539d893fcc634b6b1eeca7eb9620 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 7 May 2025 16:25:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E5=8F=91=E8=B4=A7=E9=87=91=E9=A2=9D?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=88=86=E5=89=B2=E5=88=B0=E7=A7=91=E7=9B=AE?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tzc/entity/dto/TzcRebateCalculateDTO.java | 11 +++++++++++ .../entity/qo/TzcGetActivityRebateQuery.java | 18 ++++++++++++++++++ .../tzc/controller/TzcRebateController.java | 17 +++++++++++++++++ ...ateApplication4VerificationServiceImpl.java | 4 ++++ 4 files changed, 50 insertions(+) create mode 100644 cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcGetActivityRebateQuery.java diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/dto/TzcRebateCalculateDTO.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/dto/TzcRebateCalculateDTO.java index 02498a3..74a2b21 100644 --- a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/dto/TzcRebateCalculateDTO.java +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/dto/TzcRebateCalculateDTO.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.tzc.entity.dto; import com.qs.serve.modules.tzc.entity.TzcRebateLevels; import lombok.Data; +import java.math.BigDecimal; import java.util.List; /** @@ -13,6 +14,11 @@ import java.util.List; @Data public class TzcRebateCalculateDTO { + /** + * 活动ID + */ + private Long activityId; + /** * 当前条件,命中的最大级坎级 */ @@ -29,4 +35,9 @@ public class TzcRebateCalculateDTO { */ private List levelAmountList; + /** + * 返利总金额 + */ + private BigDecimal totalReturnAmt; + } diff --git a/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcGetActivityRebateQuery.java b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcGetActivityRebateQuery.java new file mode 100644 index 0000000..bd9fbe9 --- /dev/null +++ b/cms-modules/cms-policy/cms-policy-api/src/main/java/com/qs/serve/modules/tzc/entity/qo/TzcGetActivityRebateQuery.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.tzc.entity.qo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2025/5/7 + */ +@Data +public class TzcGetActivityRebateQuery { + + private Long activityId; + + private BigDecimal dispatchAmount; + +} diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/controller/TzcRebateController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/controller/TzcRebateController.java index a38a558..cfe318d 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/controller/TzcRebateController.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/controller/TzcRebateController.java @@ -11,8 +11,11 @@ import com.qs.serve.common.utils.StringUtils; import com.qs.serve.framework.base.model.PageVo; import com.qs.serve.framework.base.model.R; import com.qs.serve.modules.tzc.entity.bo.TzcRebateParam; +import com.qs.serve.modules.tzc.entity.dto.TzcRebateCalculateDTO; +import com.qs.serve.modules.tzc.entity.qo.TzcGetActivityRebateQuery; import com.qs.serve.modules.tzc.entity.qo.TzcRebateQuery; import com.qs.serve.modules.tzc.entity.vo.TzcRebateVo; +import com.qs.serve.modules.tzc.service.TzcRebateApplication4VerificationService; import com.qs.serve.modules.tzc.service.TzcRebateApplicationService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,6 +26,7 @@ import com.qs.serve.modules.tzc.entity.TzcRebate; import com.qs.serve.modules.tzc.service.TzcRebateService; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; /** @@ -38,7 +42,20 @@ public class TzcRebateController { private TzcRebateService tzcRebateService; private TzcRebateApplicationService tzcRebateApplicationService; + private TzcRebateApplication4VerificationService tzcRebateApplication4VerificationService; + @PostMapping("/getRebateInfo") + public R> getRebateByActivityId(@RequestBody List queryList){ + if (queryList == null){ + List result = new ArrayList<>(); + for (TzcGetActivityRebateQuery query : queryList) { + TzcRebateCalculateDTO dto = tzcRebateApplication4VerificationService.getActivityRebateAmount(query.getActivityId(),query.getDispatchAmount()); + result.add(dto); + } + return R.ok(result); + } + return R.ok(); + } /** * 翻页 diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4VerificationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4VerificationServiceImpl.java index 06eda7e..0623a1d 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4VerificationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4VerificationServiceImpl.java @@ -57,8 +57,10 @@ public class TzcRebateApplication4VerificationServiceImpl implements TzcRebateAp TzcRebateCalculateDTO calculateDTO = tzcRebateApplication4CostService.getHitRebateMaxLevel( dispatchAmt, sameDispatchAmt, activity.getRebatePeriodId()); if (calculateDTO != null){ + calculateDTO.setActivityId(activityId); List levelAmountList = tzcRebateApplication4CostService.calculateRebate( calculateDTO,dispatchAmt, sameDispatchAmt, TzcArgTypes.LevelReturn); + BigDecimal totalReturnAmt = BigDecimal.ZERO; // 计算已用的优惠 for (TzcRebateLevelAmountDTO amountDTO : levelAmountList) { // 返利金额 @@ -72,8 +74,10 @@ public class TzcRebateApplication4VerificationServiceImpl implements TzcRebateAp if (returnAmt.compareTo(surplusReturnAmt) > 0){ amountDTO.setReturnAmt(surplusReturnAmt); } + totalReturnAmt.add(amountDTO.getReturnAmt()); amountDTO.setVerificationAmt(verificationAmt); } + calculateDTO.setTotalReturnAmt(totalReturnAmt); calculateDTO.setLevelAmountList(levelAmountList); } return calculateDTO;