From 232771e7777bec65c9f65c3dce1dcaeb50b3b6f3 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Sat, 9 Nov 2024 04:49:24 +0800 Subject: [PATCH] //offlineActivity --- .../WxOfflineActivityGrantCashBackMapper.java | 2 +- ...xOfflineActivityGrantAwardServiceImpl.java | 92 ++++++++++--------- ...OfflineActivityRecordGrantServiceImpl.java | 4 +- .../WxOfflineActivityGrantCashBackMapper.xml | 4 +- 4 files changed, 54 insertions(+), 48 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java index 5e71f76b2..33e4abe2d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantCashBackMapper.java @@ -18,7 +18,7 @@ public interface WxOfflineActivityGrantCashBackMapper extends CommonMapper findList(WxOfflineActivityGrantCashBack offlineActivityGrantCashBack); - void insertList(List cashBackList); + void insertList(@Param("cashBackList")List cashBackList); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 499738466..a5cf1ac7a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -505,40 +505,37 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(wxOfflineActivityGrantAward.getActivityItemList() == null){ throw new MallinkException(Result.ERROR, "请检查活动项参数"); } + Map grantActivityItemMap = wxOfflineActivityGrantAward.getActivityItemList().stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); List activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); - Map activityItemMap = activityItemList.stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); int i = 0;//检查活动奖项 - for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { - if(grantActivityItem.getId() == null){ - throw new MallinkException(Result.ERROR, "请检查活动项参数"); - } - WxOfflineActivityItem activityItem = activityItemMap.get(grantActivityItem.getId()); - if(activityItem == null){ - throw new MallinkException(Result.ERROR, "请检查活动项参数"); - } - List activityGrantItemList = grantActivityItem.getActivityGrantItemList(); -// if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ -// continue; -//// throw new MallinkException(Result.ERROR, "请检查活动奖项参数"); -// } - boolean isRepeat = activityGrantItemList.stream() - .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) - .entrySet().stream().anyMatch(e -> e.getValue() > 1); - if(isRepeat){ - throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); - } - - Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + for (WxOfflineActivityItem activityItem : activityItemList) { + Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); + //获取奖项 + WxOfflineActivityItem grantActivityItem = grantActivityItemMap.get(activityItem.getId()); + List activityGrantItemList = null; + if(grantActivityItem != null){ + activityGrantItemList = grantActivityItem.getActivityGrantItemList(); + } if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - + if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ + continue; + } if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); } + + boolean isRepeat = activityGrantItemList.stream() + .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) + .entrySet().stream().anyMatch(e -> e.getValue() > 1); + if(isRepeat){ + throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); + } + //奖项限制数量 int limitCount = 0; if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ @@ -564,9 +561,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); } + activityItem.setActivityGrantItemList(activityGrantItemList); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ + continue; + } + if(activityGrantItemList.size() != 1){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); } @@ -588,10 +590,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + activityItem.setActivityGrantItemList(activityGrantItemList); + } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { BigDecimal cashBackPriceTotal = BigDecimal.ZERO; - List grantItemList = new ArrayList<>(); + activityGrantItemList = new ArrayList<>(); List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 @@ -614,7 +618,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - grantItemList.add(grantGrantItem); + activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -637,7 +641,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); - grantItemList.add(grantGrantItem); + activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -646,16 +650,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ List merchantIds = wxOfflineActivityGrantAward.getRecordList().stream().map(WxOfflineActivityRecord::getMerchantId).distinct().collect(toList()); Map collect = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); - WxOfflineActivityAwardsItem grantAwardsSecondItem = collect.get(merchantIds.size()); - if(grantAwardsSecondItem != null){ + WxOfflineActivityAwardsItem awardsSecondItem = collect.get(merchantIds.size()); + if(awardsSecondItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); //计算返现金额 BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() - .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); - grantAwardsSecondItem.setPrice(cashBackPrice); - handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsSecondItem); + .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); + awardsSecondItem.setPrice(cashBackPrice); + handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem); - grantItemList.add(grantGrantItem); + activityGrantItemList.add(grantGrantItem); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -663,7 +667,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity BigDecimal prop = BigDecimal.ONE; if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ - prop = activityItem.getMaxAmount().divide(cashBackPriceTotal).setScale(4, RoundingMode.HALF_UP);; + prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP); cashBackPriceTotal = activityItem.getMaxAmount(); } if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ @@ -674,18 +678,19 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); } - for (WxOfflineActivityGrantItem grantItem:grantItemList){ + for (WxOfflineActivityGrantItem grantItem:activityGrantItemList){ if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).setScale(0, RoundingMode.HALF_UP)); + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(0, RoundingMode.HALF_UP)); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ - grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).multiply(prop).divide(new BigDecimal(10)) + grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).divide(new BigDecimal(10)) .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); } } - grantActivityItem.setActivityGrantItemList(grantItemList); + activityItem.setActivityGrantItemList(activityGrantItemList); + WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); activityGrantCashBack.setActivityId(activity.getId()); activityGrantCashBack.setActivityName(activity.getName()); @@ -704,20 +709,18 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); } - grantActivityItem.setActivityGrantCashBack(activityGrantCashBack); - + activityItem.setActivityGrantCashBack(activityGrantCashBack); } - for (WxOfflineActivityGrantItem grantGrantItem : grantActivityItem.getActivityGrantItemList()) { + for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { i++; - if(grantGrantItem.getAwardCount() == null){ - grantGrantItem.setAwardCount(1); - } } } if(i == 0){ throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); } + + wxOfflineActivityGrantAward.setActivityItemList(activityItemList); } private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ @@ -734,6 +737,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantGrantItem.setAwardMaxAmount(awardsItem.getMaxAmount()); grantGrantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); grantGrantItem.setCashBackRatio(awardsItem.getCashBackRatio()); + if(grantGrantItem.getAwardCount() == null){ + grantGrantItem.setAwardCount(1); + } grantGrantItem.setAwardPrice(awardsItem.getPrice() .multiply(new BigDecimal(grantGrantItem.getAwardCount())) .setScale(2, RoundingMode.HALF_UP)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java index de2e4df9e..3ea904648 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordGrantServiceImpl.java @@ -25,11 +25,11 @@ public class WxOfflineActivityRecordGrantServiceImpl implements WxOfflineActivit @Override public void insertFromGrantAward(WxOfflineActivityGrantAward wxOfflineActivityGrantAward) { List recordGrantList = new ArrayList<>(); - wxOfflineActivityGrantAward.getRecordIds().forEach(recordId ->{ + wxOfflineActivityGrantAward.getRecordList().forEach(record ->{ WxOfflineActivityRecordGrant recordGrant = new WxOfflineActivityRecordGrant(); recordGrant.updateTenantInfo(wxOfflineActivityGrantAward); recordGrant.setActivityId(wxOfflineActivityGrantAward.getActivityId()); - recordGrant.setRecordId(recordId); + recordGrant.setRecordId(record.getId()); recordGrant.setGrantId(wxOfflineActivityGrantAward.getId()); recordGrantList.add(recordGrant); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml index dd4820cd0..c78fce734 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml @@ -74,7 +74,7 @@ - insert into wx_offline_activity_grant_item + insert into wx_offline_activity_grant_cash_back (id, grant_id,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, @@ -82,7 +82,7 @@ create_date,update_date ,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount) values - + (#{item.id,jdbcType=BIGINT}, #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER},