From 3d237ccfcc5aa5534bda80131287e1562e2e0ad3 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期五, 30 八月 2024 15:51:32 +0800
Subject: [PATCH] 会员价展示
---
src/main/java/com/mzl/flower/service/BaseService.java | 39 +++++++++++++
src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java | 11 +++
src/main/java/com/mzl/flower/service/payment/OrderService.java | 13 ++++
src/main/java/com/mzl/flower/dto/response/flower/FlowerShowListDTO.java | 5 +
src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java | 6 ++
src/main/java/com/mzl/flower/service/flower/FlowerService.java | 50 +++++++++++-----
src/main/java/com/mzl/flower/dto/response/flower/FlowerShowDTO.java | 5 +
src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListWrapDTO.java | 2
src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListDTO.java | 6 ++
9 files changed, 120 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListDTO.java
index 4063993..74e15a2 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListDTO.java
@@ -26,4 +26,10 @@
private Long paramId;
private Integer realSales;//真实销量
+
+ @ApiModelProperty(value = "会员价")
+ private BigDecimal priceMember;
+
+ @ApiModelProperty(value = "会员价总价")
+ private BigDecimal totalMember;
}
diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListWrapDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListWrapDTO.java
index fe52698..e14e221 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListWrapDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCartListWrapDTO.java
@@ -14,7 +14,7 @@
@ApiModelProperty(value = "供应商名称")
private String supplierName;
- @ApiModelProperty(value = "供应商名称")
+ @ApiModelProperty(value = "商品列表")
private List<FlowerCartListDTO> flowerList;
}
diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java
index 047dc51..93ababc 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java
@@ -51,6 +51,12 @@
@ApiModelProperty(value = "最高价")
private BigDecimal priceHigh;
+ @ApiModelProperty(value = "最低价(会员)")
+ private BigDecimal priceLowMember;
+
+ @ApiModelProperty(value = "最高价(会员)")
+ private BigDecimal priceHighMember;
+
@ApiModelProperty(value = "库存")
private Integer stock;
diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowDTO.java
index 76ace54..9eeced2 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowDTO.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
+
@Data
public class FlowerShowDTO extends FlowerSupplierDTO {
@@ -29,4 +31,7 @@
private Integer shopnum;
private Integer realSales;//真实销量
+
+ @ApiModelProperty(value = "会员价")
+ private BigDecimal priceMember;
}
diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowListDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowListDTO.java
index 1526929..d2d6d6f 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerShowListDTO.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.math.BigDecimal;
+
@Data
public class FlowerShowListDTO extends FlowerSupplierListDTO {
@@ -24,4 +26,7 @@
@ApiModelProperty(value = "是否推荐")
private Boolean recommend;
+
+ @ApiModelProperty(value = "会员价")
+ private BigDecimal priceMember;
}
diff --git a/src/main/java/com/mzl/flower/service/BaseService.java b/src/main/java/com/mzl/flower/service/BaseService.java
index bd1d2cb..b796271 100644
--- a/src/main/java/com/mzl/flower/service/BaseService.java
+++ b/src/main/java/com/mzl/flower/service/BaseService.java
@@ -10,6 +10,7 @@
import com.mzl.flower.dto.response.payment.OrderSalesItemChargeDTO;
import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.flower.*;
+import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.partner.Partner;
import com.mzl.flower.entity.payment.FeeService;
import com.mzl.flower.entity.payment.OrderItemSales;
@@ -17,6 +18,7 @@
import com.mzl.flower.entity.supplier.Supplier;
import com.mzl.flower.mapper.customer.CustomerMapper;
import com.mzl.flower.mapper.flower.FlowerCategoryMapper;
+import com.mzl.flower.mapper.member.MemberMapper;
import com.mzl.flower.mapper.partner.PartnerMapper;
import com.mzl.flower.mapper.supplier.SupplierMapper;
import com.mzl.flower.mapper.system.UserMapper;
@@ -25,6 +27,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
@@ -56,6 +59,13 @@
@Autowired
private FlowerCategoryMapper flowerCategoryMapper;
+
+ @Autowired
+ private MemberMapper memberMapper;
+
+ protected Member getMember(Long levelId){
+ return memberMapper.selectById(levelId);
+ }
protected double getServiceFeeRate(List<FeeService> fees, Integer saleCount){
int sc = saleCount == null ? 0 : saleCount;
@@ -463,6 +473,35 @@
return p;
}
+ /**
+ * 计算会员单价
+ *
+ * @param price
+ * @param member
+ * @return
+ */
+ protected BigDecimal calculateMemberPrice(BigDecimal price, Member member){
+ if(price == null || member == null){
+ return price;
+ }
+ BigDecimal r = price;
+
+ String discountType = member.getDiscountType();
+ if(Constants.DISCOUNT_TYPE.ratio.name().equals(discountType)){
+ BigDecimal discountRatio = getAmount(member.getDiscountRatio());
+ r = price.multiply(discountRatio).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
+ } else if (Constants.DISCOUNT_TYPE.amount.name().equals(discountType)){
+ BigDecimal discountAmount = getAmount(member.getDiscountAmount());
+ r = price.subtract(discountAmount);
+ }
+
+ if(r.doubleValue() < 0){
+ r = new BigDecimal(0);
+ }
+
+ return r;
+ }
+
protected Customer getCustomerByUserId(String userId){
Customer p = customerMapper.selectOne(new QueryWrapper<Customer>()
.eq("user_id", userId));
diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java b/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java
index 3000ec0..41f590e 100644
--- a/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java
+++ b/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java
@@ -13,12 +13,15 @@
import com.mzl.flower.dto.response.flower.FlowerCategoryDTO;
import com.mzl.flower.dto.response.flower.FlowerCategoryShowDTO;
import com.mzl.flower.dto.response.flower.FlowerCategoryTreeDTO;
+import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.flower.Flower;
import com.mzl.flower.entity.flower.FlowerCategory;
import com.mzl.flower.entity.flower.FlowerCategoryDaily;
+import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.mapper.flower.FlowerCategoryDailyMapper;
import com.mzl.flower.mapper.flower.FlowerCategoryMapper;
import com.mzl.flower.mapper.flower.FlowerMapper;
+import com.mzl.flower.mapper.member.MemberMapper;
import com.mzl.flower.service.BaseService;
import com.mzl.flower.utils.TreeBuilderUtil;
import io.micrometer.core.instrument.util.StringUtils;
@@ -154,7 +157,11 @@
List<FlowerCategoryTreeDTO> treeList = new ArrayList<>();
List<FlowerCategoryTreeDTO> result = new ArrayList<>();
if(tLs != null && tLs.size() > 0){
- Long partnerId = getCurrentCustomerPartner();
+ Customer p = getCurrentCustomerWithoutCheck();
+ Long partnerId = p == null ? null : p.getPartnerId();
+ Long levelId = p == null ? null : p.getLevelId();
+ Member member = getMember(levelId);
+
for(FlowerCategoryTreeDTO t : tLs){
if(t.getParentId() != null && t.getFlowerCount() == 0){
continue;
@@ -165,6 +172,8 @@
JSONObject o = parseObject(ppp, JSONObject.class);
t.setPriceLow(o.getBigDecimal("priceLow"));
t.setPriceHigh(o.getBigDecimal("priceHigh"));
+ t.setPriceLowMember(calculateMemberPrice(t.getPriceLow(), member));
+ t.setPriceHighMember(calculateMemberPrice(t.getPriceHigh(), member));
}
treeList.add(t);
diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerService.java b/src/main/java/com/mzl/flower/service/flower/FlowerService.java
index 77dbb9c..9c63b20 100644
--- a/src/main/java/com/mzl/flower/service/flower/FlowerService.java
+++ b/src/main/java/com/mzl/flower/service/flower/FlowerService.java
@@ -11,6 +11,7 @@
import com.mzl.flower.entity.customer.Collect;
import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.flower.*;
+import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.payment.Cart;
import com.mzl.flower.entity.payment.Order;
import com.mzl.flower.entity.payment.OrderItem;
@@ -467,20 +468,7 @@
dto.setUserId(SecurityUtils.getUserId());
dto.setParamId(paramService.getParamIdByCategoryId(dto.getCategory()));
List<FlowerShowListDTO> ls = flowerMapper.selectFlowerShowList(page, dto);
- if(ls != null && ls.size() > 0){
- Long partnerId = getCurrentCustomerPartner();
- for(FlowerShowListDTO s : ls){
- BigDecimal price = getFinalPrice(partnerId, s.getCategory()
- , s.getId(), s.getPrice(), s.getLevel());
- s.setPrice(price);
- s.setCollection(s.getCollectCount() > 0);
- s.setShopnum(s.getShopnum() == null ? 0 : s.getShopnum());
-
- if(s.getSales() != null && s.getRealSales() != null){
- s.setSales(s.getSales() + s.getRealSales());
- }
- }
- }
+ prepareShowList(ls);
page.setRecords(ls);
@@ -507,10 +495,14 @@
if(pId == null){
pId = getCurrentCustomerPartner();
}
+ Customer p = getCurrentCustomerWithoutCheck();
+ Long levelId = p == null ? null : p.getLevelId();
+ Member member = getMember(levelId);
BigDecimal price = getFinalPrice(pId, dto.getCategory()
, s.getId(), dto.getPrice(), dto.getLevel());
dto.setPrice(price);
+ dto.setPriceMember(calculateMemberPrice(price, member));
String userId = SecurityUtils.getUserId();
if(StringUtils.isNotEmpty(userId)) {
@@ -611,8 +603,33 @@
dto.setParamId(paramService.getParamIdByCategoryId(dto.getCategory()));
List<FlowerShowListDTO> flowerShowListDTOS = flowerMapper.myCollect(page, dto);
+ prepareShowList(flowerShowListDTOS);
+
page.setRecords(flowerShowListDTOS);
return page;
+ }
+
+ private void prepareShowList(List<FlowerShowListDTO> ls){
+ if(ls != null && ls.size() > 0){
+ Customer p = getCurrentCustomerWithoutCheck();
+ Long partnerId = p == null ? null : p.getPartnerId();
+ Long levelId = p == null ? null : p.getLevelId();
+ Member member = getMember(levelId);
+
+ for(FlowerShowListDTO s : ls){
+ BigDecimal price = getFinalPrice(partnerId, s.getCategory()
+ , s.getId(), s.getPrice(), s.getLevel());
+ s.setPrice(price);
+ s.setPriceMember(calculateMemberPrice(price, member));
+
+ s.setCollection(s.getCollectCount() > 0);
+ s.setShopnum(s.getShopnum() == null ? 0 : s.getShopnum());
+
+ if(s.getSales() != null && s.getRealSales() != null){
+ s.setSales(s.getSales() + s.getRealSales());
+ }
+ }
+ }
}
public Page<FlowerShowListDTO> myBrowseHistory(Page page, FlowerShowQueryDTO dto) {
@@ -626,6 +643,8 @@
}*/
dto.setParamId(paramService.getParamIdByCategoryId(dto.getCategory()));
List<FlowerShowListDTO> flowerShowListDTOS = flowerMapper.myBrowseHistory(page, dto);
+ prepareShowList(flowerShowListDTOS);
+
page.setRecords(flowerShowListDTOS);
return page;
}
@@ -634,7 +653,8 @@
if(dto.getZoneId()!=null && dto.getZoneId().size()>0){//添加专区
for (Long zoneId : dto.getZoneId()) {
for(Long flowerId : dto.getIds()) {
- FlowerZoneMap fzp = flowerZoneMapMapper.selectOne(new QueryWrapper<FlowerZoneMap>().eq("flower_id", flowerId).eq("zone_id", zoneId));
+ FlowerZoneMap fzp = flowerZoneMapMapper.selectOne(new QueryWrapper<FlowerZoneMap>()
+ .eq("flower_id", flowerId).eq("zone_id", zoneId));
if(fzp==null){
fzp = new FlowerZoneMap();
fzp.setFlowerId(flowerId);
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 5866419..c9bab5f 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -24,6 +24,7 @@
import com.mzl.flower.entity.customer.Address;
import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.flower.FlowerSupplierSaleNum;
+import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.partner.Partner;
import com.mzl.flower.entity.payment.*;
import com.mzl.flower.entity.supplier.Station;
@@ -211,13 +212,18 @@
if (ls != null && ls.size() > 0) {
Customer customer = getCurrentCustomer();
Long partnerId = customer.getPartnerId();
+ Long levelId = customer.getLevelId();
+ Member member = getMember(levelId);
Map<Long, FlowerCartListWrapDTO> map = new HashMap<>();
for (FlowerCartListDTO c : ls) {
BigDecimal price = getFinalPrice(partnerId, c.getCategory()
, c.getId(), c.getPrice(), c.getLevel());
c.setPrice(price);
+ c.setPriceMember(calculateMemberPrice(price, member));
+
c.setTotal(price.multiply(new BigDecimal(c.getNum())));
+ c.setTotalMember(c.getPriceMember().multiply(new BigDecimal(c.getNum())));
if (c.getSales() != null && c.getRealSales() != null) {
c.setSales(c.getSales() + c.getRealSales());
@@ -265,6 +271,8 @@
List<FlowerCartListDTO> ls = flowerMapper.selectFlowerOrderList(ids);
Customer customer = getCurrentCustomer();
Long partnerId = customer.getPartnerId();
+ Long levelId = customer.getLevelId();
+ Member member = getMember(levelId);
double totalWeight = 0D;
int num = 0;
@@ -288,7 +296,10 @@
, c.getId(), c.getPrice(), c.getLevel());
BigDecimal price = priceDTO.getPrice();
c.setPrice(price);
+ c.setPriceMember(calculateMemberPrice(price, member));
+
c.setTotal(price.multiply(new BigDecimal(c.getNum())));
+ c.setTotalMember(c.getPriceMember().multiply(new BigDecimal(c.getNum())));//使用会员价计算总价
if (priceMap != null) {
priceMap.put(c.getId(), priceDTO);
@@ -348,6 +359,8 @@
deliveryName = d.getName();
}
+ //TODO 优惠券和会员价相关修改
+
String userId = SecurityUtils.getUserId();
Order order = new Order();
order.setId(UUIDGenerator.getUUID());
--
Gitblit v1.9.3