From 24e21f8ce1a28a78a58f9a95cc6438b4a9c737a6 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期六, 12 十月 2024 11:09:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master-v2' into master-v2
---
src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java | 85 +++++++++++++++++++++++++++++++++++++-----
1 files changed, 75 insertions(+), 10 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 719d57a..defb2a4 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
@@ -5,15 +5,14 @@
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
-import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO;
-import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO;
-import com.mzl.flower.dto.request.menber.TargetMemberDTO;
-import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO;
+import com.mzl.flower.dto.request.menber.*;
import com.mzl.flower.dto.response.customer.CustomerDTO;
import com.mzl.flower.dto.response.member.MemberGrowthRecordVO;
+import com.mzl.flower.dto.response.member.UserGrowthRecordVO;
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 +76,7 @@
//保存会员记录逻辑:
if (Constants.GROWTH_SOURCE.consume.name().equals(memberGrowthRecordDTO.getSource())) {
- //消费:成长值=消费金额/消费金额(元)*已消费产生的成长值
+ //消费:成长值=消费金额/消费金额(元)*已消费产生的成长值C
BigDecimal totalAmount = memberGrowthRecordDTO.getTotalAmount();
int consumptionAmount = memberBefore.getConsumptionAmount();
int growthValue = memberBefore.getGrowthValue();
@@ -129,9 +128,6 @@
@Override
public void deleteMemberGrowthRecord(String id) {
- if(id.equals(Constants.DEFAULT_MEMBER_ID)){
- throw new ValidationException("默认普通会员只能编辑,不能删除");
- }
MemberGrowthRecord memberGrowthRecord = memberGrowthRecordMapper.selectById(id);
if (memberGrowthRecord == null) {
throw new ValidationException("成长记录信息不存在");
@@ -147,8 +143,24 @@
Integer sumGrowth = memberGrowthRecordMapper.getSumGrowthByUsertId(userId);
userGrowthRecordDTO.setCurrentGrowthValue(sumGrowth);
//查询当前会员等级
- Member member = memberMapper.getMemberByGrowthValue(sumGrowth);
+ Member member = new Member();
+ member = memberMapper.getMemberByGrowthValue(sumGrowth);
+ if (ObjectUtils.isEmpty(member)) {
+ member = memberMapper.selectById(Constants.DEFAULT_MEMBER_ID);
+ }
userGrowthRecordDTO.setCurrentMemberLevel(member.getName());
+ userGrowthRecordDTO.setCurrentDiscountType(member.getDiscountType());
+ switch (member.getDiscountType()) {
+ case "ratio":
+ userGrowthRecordDTO.setCurrentDiscountTypeStr(Constants.DISCOUNT_TYPE.ratio.getDesc());
+ break;
+ case "amount":
+ userGrowthRecordDTO.setCurrentDiscountTypeStr(Constants.DISCOUNT_TYPE.amount.getDesc());
+ break;
+ }
+ userGrowthRecordDTO.setCurrentDiscountRatio(StringUtils.isEmpty(member.getDiscountRatio()) ? BigDecimal.valueOf(100) : member.getDiscountRatio());
+ userGrowthRecordDTO.setCurrentDiscountAmount(StringUtils.isEmpty(member.getDiscountAmount()) ? BigDecimal.ZERO : member.getDiscountAmount());
+ userGrowthRecordDTO.setCurrentGrowthValueDesc(member.getGrowthValueDesc());
//查询比当前等级高的会员等级信息
List<Member> memberList = memberMapper.getgtMembersByGrowthValue(sumGrowth);
if (!CollectionUtils.isEmpty(memberList)) {
@@ -157,7 +169,18 @@
targetMemberDTO.setTargetMemberLevel(m.getName());
targetMemberDTO.setTargetStartPoint(m.getStartPoint());
targetMemberDTO.setTargetGap(m.getStartPoint() - sumGrowth);
- targetMemberDTO.setTargetDiscountAmount(m.getDiscountAmount());
+ targetMemberDTO.setTargetDiscountAmount(StringUtils.isEmpty(m.getDiscountAmount()) ? BigDecimal.ZERO : m.getDiscountAmount());
+ targetMemberDTO.setTargetDiscountType(m.getDiscountType());
+ switch (m.getDiscountType()) {
+ case "ratio":
+ targetMemberDTO.setTargetDiscountTypeStr(Constants.DISCOUNT_TYPE.ratio.getDesc());
+ break;
+ case "amount":
+ targetMemberDTO.setTargetDiscountTypeStr(Constants.DISCOUNT_TYPE.amount.getDesc());
+ break;
+ }
+ targetMemberDTO.setTargetDiscountRatio(StringUtils.isEmpty(m.getDiscountRatio()) ? BigDecimal.valueOf(100) : m.getDiscountRatio());
+ targetMemberDTO.setTargetGrowthValueDesc(m.getGrowthValueDesc());
targetMemberDTOList.add(targetMemberDTO);
});
}
@@ -172,4 +195,46 @@
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);
+ }
+ }
+
+ @Override
+ public Page<UserGrowthRecordVO> queryUserPage(UserMemberRecordQueryDTO userMemberRecordQueryDTO, Page page) {
+ List<UserGrowthRecordVO> list = memberGrowthRecordMapper.queryUserPage(userMemberRecordQueryDTO, page);
+ page.setRecords(list);
+ return page;
+ }
}
--
Gitblit v1.9.3