From 8fe5f041dc11630bfdc36e6698f0dc67616cf91d Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 15 一月 2026 10:45:15 +0800
Subject: [PATCH] 经销商管理
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java | 98 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 91 insertions(+), 7 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index 83df9aa..ae76be3 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -11,6 +11,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.dto.CouponDTO;
import com.doumee.dao.web.dto.MemberCouponDTO;
import com.doumee.dao.web.request.PayDetailRequest;
@@ -173,20 +174,39 @@
IPage<MemberCoupon> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<MemberCoupon> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
-
queryWrapper.selectAll(MemberCoupon.class);
queryWrapper.selectAs(Member::getNickname,MemberCoupon::getNikeName);
-
+ queryWrapper.selectAs(Goodsorder::getCode,MemberCoupon::getOrderCode);
+ queryWrapper.selectAs(Goodsorder::getCouponPrice,MemberCoupon::getCouponPrice);//浼樻儬閲戦
+ queryWrapper.selectAs(SystemUser::getUsername,MemberCoupon::getCreatorName);
queryWrapper.leftJoin(Member.class,Member::getId,MemberCoupon::getMemberId);
-
+ queryWrapper.leftJoin(Goodsorder.class,Goodsorder::getId,MemberCoupon::getOrderId);
+ queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,MemberCoupon::getCreator);
queryWrapper.eq(MemberCoupon::getIsdeleted, Constants.ZERO);
- queryWrapper.eq(pageWrap.getModel().getStatus()!=null,MemberCoupon::getStatus, pageWrap.getModel().getStatus());
+ if(pageWrap.getModel().getStatus()!=null && pageWrap.getModel().getStatus()!=2){
+ queryWrapper.eq(pageWrap.getModel().getStatus()!=null,MemberCoupon::getStatus, pageWrap.getModel().getStatus());
+ } else if (pageWrap.getModel().getStatus()!=null && pageWrap.getModel().getStatus()==2) {
+ //鏌ヨ宸茶繃鏈�(鏈娇鐢紝鍒囧凡杩囦簡浣跨敤鏈熼檺锛�
+ queryWrapper.eq( MemberCoupon::getStatus, Constants.ZERO);
+ queryWrapper.lt( MemberCoupon::getEndDate, new Date());
+ }
+ queryWrapper.eq(pageWrap.getModel().getOrderCode()!=null,Goodsorder::getCode, pageWrap.getModel().getOrderCode());
queryWrapper.eq(pageWrap.getModel().getGetMethod()!=null,MemberCoupon::getGetMethod, pageWrap.getModel().getGetMethod());
queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNikeName()),ms -> ms.like( Member::getNickname, pageWrap.getModel().getNikeName()).
or().eq( Member::getName, pageWrap.getModel().getNikeName()).
or().eq( Member::getPhone, pageWrap.getModel().getNikeName()));
queryWrapper.orderByDesc(MemberCoupon::getCreateDate);
IPage<MemberCoupon> result = memberCouponJoinMapper.selectJoinPage(page, MemberCoupon.class, queryWrapper);
+ if(result!=null && result.getRecords()!=null){
+ for(MemberCoupon model :result.getRecords()){
+ if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)
+ && model.getEndDate()!=null
+ && model.getEndDate().before(new Date())){
+ //宸茶繃鏈�
+ model.setStatus(Constants.TWO);
+ }
+ }
+ }
return PageData.from(result);
}
@@ -252,7 +272,6 @@
}
}
}
-
return memberCouponResponse;
}
@@ -379,7 +398,6 @@
if(CollectionUtils.isEmpty(goodsSkuList)||!Constants.equalsInteger(goodsSkuList.size(),requestList.size())){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU淇℃伅閿欒,璇峰埛鏂伴噸璇�");
}
-
//鏌ヨ鍟嗗搧鍒楄〃
List<Goods> goodsList = goodsMapper.selectJoinList(Goods.class,
new MPJLambdaWrapper<Goods>()
@@ -391,7 +409,6 @@
if(Objects.isNull(goodsList)){
return memberCouponList;
}
-
//鑾峰彇閫夋嫨鐨勫晢鍝佹�婚噾棰� 涓� 鍗曚釜鍟嗗搧閲戦
BigDecimal totalAmount = BigDecimal.ZERO;
for (Goods goods:goodsList) {
@@ -437,6 +454,73 @@
}
+ public void couponIsValid(List<PayDetailRequest> requestList,MemberCoupon memberCoupon){
+ if(Objects.isNull(memberCoupon)
+ || Constants.equalsInteger(memberCoupon.getStatus(),Constants.ONE)
+ ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浼樻儬鍒镐俊鎭棤鏁堟垨宸茶浣跨敤");
+ }
+ if(memberCoupon.getStartDate().getTime() > System.currentTimeMillis()){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浼樻儬鍒告湭鐢熸晥");
+ }
+ if(memberCoupon.getEndDate().getTime() < System.currentTimeMillis()){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浼樻儬鍒稿凡杩囨湡");
+ }
+ List<GoodsSku> goodsSkuList = goodsSkuMapper.selectList(new QueryWrapper<GoodsSku>()
+ .lambda()
+ .eq(GoodsSku::getIsdeleted,Constants.ZERO)
+ .in(GoodsSku::getId,requestList.stream().map(i->i.getGoodsSkuId()).collect(Collectors.toList()))
+ );
+ if(CollectionUtils.isEmpty(goodsSkuList)||!Constants.equalsInteger(goodsSkuList.size(),requestList.size())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU淇℃伅閿欒,璇峰埛鏂伴噸璇�");
+ }
+ //鏌ヨ鍟嗗搧鍒楄〃
+ List<Goods> goodsList = goodsMapper.selectJoinList(Goods.class,
+ new MPJLambdaWrapper<Goods>()
+ .selectAs(GoodsSku::getPrice,Goods::getSkuPrice)
+ .selectAs(GoodsSku::getId,Goods::getSkuId)
+ .leftJoin(GoodsSku.class,GoodsSku::getGoodsId,Goods::getId)
+ .in(GoodsSku::getId,requestList.stream().map(i->i.getGoodsSkuId()).collect(Collectors.toList())));
+ if(Objects.isNull(goodsList)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU鍟嗗搧淇℃伅閿欒,璇峰埛鏂伴噸璇�");
+ }
+ //鑾峰彇閫夋嫨鐨勫晢鍝佹�婚噾棰� 涓� 鍗曚釜鍟嗗搧閲戦
+ BigDecimal totalAmount = BigDecimal.ZERO;
+ for (Goods goods:goodsList) {
+ List<PayDetailRequest> request = requestList.stream().filter(i->Constants.equalsInteger(i.getGoodsSkuId(), goods.getSkuId())).collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(request)){
+ goods.setSkuAmount(goods.getSkuPrice().multiply(new BigDecimal(request.get(Constants.ZERO).getGoodsNum()+"")));
+ totalAmount = totalAmount.add(goods.getSkuAmount());
+ }
+ }
+ List<OrderGoodsCalculateResponse> goodsCalculateList = ListUtil.copyProperties(goodsList,OrderGoodsCalculateResponse::new);
+ if(totalAmount.compareTo(memberCoupon.getLimitPrice())<Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鍟嗗搧閲戦鏈弧瓒冲彲浣跨敤闂ㄦ");
+ }
+ //閫傜敤绫诲瀷锛�0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧
+ if(Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ZERO)){
+ memberCoupon.setValidAmount(memberCoupon.getPrice());
+ }else{
+ List<String> applyIdList = Arrays.asList(memberCoupon.getApplyIds().split(","));
+ //鑾峰彇鏈夋晥鍙互浣跨敤浼樻儬鍒哥殑鏁版嵁
+ isVaildUse(applyIdList,goodsCalculateList,
+ Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO);
+ BigDecimal skuAmount = goodsCalculateList.stream().filter(i->i.getUseCoupon()).map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ if(skuAmount.compareTo(memberCoupon.getLimitPrice())>=Constants.ZERO){
+ //鏍规嵁閲戦璁$畻瀹為檯鎶樻墸閲戦
+ BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("100"),2, RoundingMode.HALF_UP);
+ //鎶樻墸閲戦澶т簬鏈�澶у彲鎶樻墸閲戦 鍒欎娇鐢ㄦ渶澶у彲鎶樻墸閲戦
+ memberCoupon.setValidAmount(couponPrice.compareTo(memberCoupon.getMaxPrice())>Constants.ZERO?memberCoupon.getMaxPrice():couponPrice);
+ }
+ }
+ }
+
+
+
+
+
+
+
/**
* 璁$畻褰撳墠宸查�夋嫨浼樻儬鍒告瘡涓晢鍝佸崰姣旈噾棰�
* @param coupon 浼樻儬鍒镐俊鎭�
--
Gitblit v1.9.3