From e32fe26a1945fb44100d06b7049ccce865b11d4a Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期二, 03 九月 2024 14:14:38 +0800 Subject: [PATCH] add:用户成长值降级规则开发 --- src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java | 38 +++++++++++++++++++++++++++++++++++++- 1 files changed, 37 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java index a113506..2866b32 100644 --- a/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java @@ -14,6 +14,7 @@ import com.mzl.flower.entity.customer.Customer; import com.mzl.flower.entity.menber.Member; import com.mzl.flower.entity.menber.MemberGrowthRecord; +import com.mzl.flower.entity.payment.Order; import com.mzl.flower.mapper.customer.CustomerMapper; import com.mzl.flower.mapper.member.MemberGrowthRecordMapper; import com.mzl.flower.mapper.member.MemberMapper; @@ -77,7 +78,7 @@ //保存会员记录逻辑: if (Constants.GROWTH_SOURCE.consume.name().equals(memberGrowthRecordDTO.getSource())) { - //消费:成长值=消费金额/消费金额(元)*已消费产生的成长值 + //消费:成长值=消费金额/消费金额(元)*已消费产生的成长值C BigDecimal totalAmount = memberGrowthRecordDTO.getTotalAmount(); int consumptionAmount = memberBefore.getConsumptionAmount(); int growthValue = memberBefore.getGrowthValue(); @@ -169,4 +170,39 @@ page.setRecords(list); return page; } + + @Override + public void growthValueDeduct(Order order) { + //超过30天不到90天,每天处理当前会员等级的成长值 + CustomerDTO customerDTO = customerMapper.getCurrentCustomer(order.getCreateBy()); + Customer customer = customerMapper.selectById(customerDTO.getId()); + Member member = memberMapper.selectById(customer.getLevelId()); + if(ObjectUtils.isEmpty(member)){ + throw new ValidationException("用户会员等级未维护"); + } + int deductGrowthValue = member.getDowngradeValue(); + Integer sumGrowthByUserId = memberGrowthRecordMapper.getSumGrowthByUsertId(order.getCreateBy()); + + //当前成长值如果是等于0不需要走扣除逻辑 + if (sumGrowthByUserId != 0) { + int waitDeductGrowthValue = 0; + + //判断当前用户的成长值是够扣除,如果够扣除直接减去成长值,如果不够扣除则全部减去 + if (sumGrowthByUserId - deductGrowthValue > 0) { + waitDeductGrowthValue = deductGrowthValue; + } else { + waitDeductGrowthValue = sumGrowthByUserId; + } + + //保存会员成长记录到记录表 + MemberGrowthRecordDTO memberGrowthRecordDTO = new MemberGrowthRecordDTO(); + memberGrowthRecordDTO.setUserId(order.getCreateBy()); + memberGrowthRecordDTO.setRecordDate(new Date()); + memberGrowthRecordDTO.setGrowth(-waitDeductGrowthValue); + memberGrowthRecordDTO.setSource(Constants.GROWTH_SOURCE.downgrading.name()); + memberGrowthRecordDTO.setType(Constants.GROWTH_TYPE.reduce.name()); + memberGrowthRecordDTO.setRemarks("自动扣除"); + saveMemberGrowthRecord(memberGrowthRecordDTO); + } + } } -- Gitblit v1.9.3