diff --git a/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql b/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql index a4b2a9ece..7aea3bfd9 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202501000000001.sql @@ -62,3 +62,41 @@ CREATE TABLE `wx_offline_activity_grant_item_record` ( ALTER TABLE `wx_offline_activity_grant_cash_back` DROP COLUMN `calculation_mode`; + + +ALTER TABLE `wx_offline_activity_grant_item` + ADD COLUMN `grant_awards_mode` smallint(1) NULL COMMENT '发放奖励模式' AFTER `grant_id`; + +update wx_offline_activity_grant_item set grant_awards_mode = 2 + where award_itam_id in (select id from wx_offline_activity_awards_item where `type` = 2); +update wx_offline_activity_grant_item set grant_awards_mode = 1 where award_itam_id is null ; + +ALTER TABLE `wx_offline_activity_grant_item` + MODIFY COLUMN `grant_awards_mode` smallint(1) NOT NULL COMMENT '发放奖励模式' AFTER `grant_id`; + + +ALTER TABLE `wx_offline_activity_grant_settlement` + ADD COLUMN `grant_item_id` bigint(20) NULL COMMENT '发放奖励记录id' AFTER `grant_id`, + ADD COLUMN `grant_awards_mode` smallint(20) NULL COMMENT '发放奖励模式' AFTER `grant_item_id`; + +update wx_offline_activity_grant_settlement gs + left join wx_offline_activity_grant_item gi + on gs.grant_id = gi.grant_id and gs.activity_item_id = gi.activity_item_id and gs.award_itam_id = gi.award_itam_id + set gs.grant_item_id = gi.id,gs.grant_awards_mode = gi.grant_awards_mode + where gi.record_id is null; + +update wx_offline_activity_grant_settlement gs + left join wx_offline_activity_grant_item gi + on gs.grant_id = gi.grant_id and gs.activity_item_id = gi.activity_item_id and gs.award_itam_id = gi.award_itam_id and gs.record_id = gi.record_id + set gs.grant_item_id = gi.id,gs.grant_awards_mode = gi.grant_awards_mode + where gi.record_id is not null; + +ALTER TABLE `wx_offline_activity_grant_settlement` + MODIFY COLUMN `grant_item_id` bigint(20) NOT NULL COMMENT '发放奖励记录id' AFTER `grant_id`, + MODIFY COLUMN `grant_awards_mode` smallint(20) NOT NULL COMMENT '发放奖励模式' AFTER `grant_item_id`; + + + + + + diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index 2aacca789..d29579981 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -34,6 +34,12 @@ public class WxOfflineActivityGrantItem extends TenantEntity { @TableField(value = "grant_id") private Long grantId; + /** + * 发放奖励模式 + */ + @TableField(value = "grant_awards_mode") + private Integer grantAwardsMode; + /** * 活动id */ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index 0cd97296f..ea4e04d2e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -85,6 +85,18 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "grant_id") private Long grantId; + /** + * 发放奖励记录id + */ + @TableField(value = "grant_item_id") + private Long grantItemId; + + /** + * 发放奖励模式 + */ + @TableField(value = "grant_awards_mode") + private Integer grantAwardsMode; + /** * 发放总价值 */ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java index a0bf4f0e6..ef401075a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityItemStatistics.java @@ -22,7 +22,7 @@ public class OfflineActivityItemStatistics implements Serializable { private BigDecimal mallSumPrice;//商场承担 private BigDecimal merchantSumPrice;//商户承担 - private BigDecimal cashSumMoney;//订单返现* + private BigDecimal cashSumMoney;//金额返现* private BigDecimal cashSecondSumMoney;//联单返现* } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java index 0d41b696e..069ba754d 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOfflineActivityAwardsItemType.java @@ -1,37 +1,37 @@ -package com.iformall.enums; - - -/** - * @author gongbiao - */ -public enum EnumOfflineActivityAwardsItemType { - - FIRST(1, "基本奖项"), - SECOND(2, "第二奖项"), - ; - - public static EnumOfflineActivityAwardsItemType getEnum(Integer code) { - for (EnumOfflineActivityAwardsItemType value : values()) { - if (value.getCode().equals(code)) { - return value; - } - } - return null; - } - - private Integer code; - private String message; - - EnumOfflineActivityAwardsItemType(Integer code, String message) { - this.code = code; - this.message = message; - } - - public Integer getCode() { - return code; - } - - public String getMessage() { - return message; - } -} +//package com.iformall.enums; +// +// +///** +// * @author gongbiao +// */ +//public enum EnumOfflineActivityAwardsItemType { +// +// FIRST(1, "基本奖项"), +// SECOND(2, "第二奖项"), +// ; +// +// public static EnumOfflineActivityAwardsItemType getEnum(Integer code) { +// for (EnumOfflineActivityAwardsItemType value : values()) { +// if (value.getCode().equals(code)) { +// return value; +// } +// } +// return null; +// } +// +// private Integer code; +// private String message; +// +// EnumOfflineActivityAwardsItemType(Integer code, String message) { +// this.code = code; +// this.message = message; +// } +// +// public Integer getCode() { +// return code; +// } +// +// public String getMessage() { +// return message; +// } +//} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index 30145209a..10584bff5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -3,7 +3,7 @@ package com.iformall.service.impl; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxOfflineActivityAwardsItem; import com.iformall.domain.po.WxOfflineActivityItem; -import com.iformall.enums.EnumOfflineActivityAwardsItemType; +import com.iformall.enums.EnumOfflineActivityAwardsModeType; import com.iformall.enums.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityAwardsItemService; import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; @@ -43,7 +43,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity } awaItem.updateTenantInfo(activityItem); awaItem.setActivityItemId(activityItem.getId()); - awaItem.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); + awaItem.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ awaItem.setCashBackRatio(BigDecimal.ZERO); @@ -73,7 +73,7 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity } secondAwaItem.updateTenantInfo(activityItem); secondAwaItem.setActivityItemId(activityItem.getId()); - secondAwaItem.setType(EnumOfflineActivityAwardsItemType.SECOND.getCode()); + secondAwaItem.setType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); if(secondAwaItem.getCreateDate() == null){ secondAwaItem.setCreateDate(activityItem.getUpdateDate()); 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 ddd44d151..b64f59a32 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -219,7 +219,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); //处理发放奖项 - handleGiftAwards(activityItem,activityItem.getRecordList()); + handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList()); activityItem.setIsMeet(true); if(activityItem.getActivityGrantItemList() == null || activityItem.getActivityGrantItemList().isEmpty()){ activityItem.setIsMeet(false); @@ -230,8 +230,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity BigDecimal cashBackPriceTotal = BigDecimal.ZERO; List grantItemList = new ArrayList<>(); - BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ @@ -285,7 +283,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } }else{ -// BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); // if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ // if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ // orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() @@ -312,13 +310,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } - Integer jointCount = getJointCount(activityItem,activityItem.getRecordList()); + Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ Map jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); WxOfflineActivityAwardsItem grantAwardsSecondItem = jointCountMap.get(jointCount); if(grantAwardsSecondItem != null){ //计算返现金额 - BigDecimal cashBackPrice = orderMoneySum + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -408,6 +406,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } + //这里是联单, 按选择的订单计算 Integer jointCount = getJointCount(activityItem,recordList); if(jointCount != 0){ Map jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); @@ -425,6 +424,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } private void handleGiftAwards(WxOfflineActivityItem activityItem, List recordList){ + List grantItem = new ArrayList<>(); Map grantItemMap = new HashMap<>(); Map awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getGrade, Function.identity())); @@ -442,27 +442,28 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity break; } WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(awardsGrade); + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); if(wxOfflineActivityGrantItem != null){ wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); + wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount()))); }else{ - WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); if(awardsItem != null){ - wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); + wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem); grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); } } } }else{ BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); -// if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ -// if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ -// orderMoneySum = recordList.stream() -// .filter(record -> activityItem.getRecordIds().contains(record.getId())) -// .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); -// }else{ -// orderMoneySum = BigDecimal.ZERO; -// } -// } + if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ + if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ + orderMoneySum = recordList.stream() + .filter(record -> activityItem.getRecordIds().contains(record.getId())) + .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + }else{ + orderMoneySum = BigDecimal.ZERO; + } + } Integer awardsGrade = null; for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ if((activityAwardsModel.getMinAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMinAmount()) >= 0) @@ -473,33 +474,46 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(awardsGrade != null){ WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); if(awardsItem != null){ - WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); + WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem); grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); } } } + if(!grantItemMap.isEmpty()){ + grantItem.addAll(grantItemMap.values()); + } + + //这里是联单, 按所有订单计算 + WxOfflineActivityGrantItem wxOfflineActivityGrantItem = null; Integer jointCount = getJointCount(activityItem,recordList); if(jointCount != 0){ Map jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); if(activityAwardsModel != null && activityAwardsModel.getAwardsGrade() != null){ - WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade()); - if(wxOfflineActivityGrantItem != null){ - wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); - }else{ - WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); - if(awardsItem != null){ - wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); - grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem); - } + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); + if(awardsItem != null){ + wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, EnumOfflineActivityAwardsModeType.COUNT,awardsItem); } + +// WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade()); +// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); +// if(wxOfflineActivityGrantItem != null){ +// wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); +// wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount()))); +// }else{ +// if(awardsItem != null){ +// wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); +// grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem); +// } +// } } } - if(!grantItemMap.isEmpty()){ - activityItem.setActivityGrantItemList(new ArrayList<>(grantItemMap.values())); + if(wxOfflineActivityGrantItem != null){ + grantItem.add(wxOfflineActivityGrantItem); } + activityItem.setActivityGrantItemList(grantItem); } private Integer getJointCount(WxOfflineActivityItem activityItem, List recordList){ @@ -519,8 +533,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return jointCount; } - private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem grantAwardsItem){ + private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivityAwardsItem grantAwardsItem){ WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); + grantItem.setGrantAwardsMode(modeType.getCode()); grantItem.setActivityItemId(activityItem.getId()); grantItem.setActivityItemName(activityItem.getName()); grantItem.setActivityItemType(activityItem.getType()); @@ -702,8 +717,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityGrantItemList = grantActivityItem.getActivityGrantItemList(); } - if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType()) - || EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ continue; } @@ -711,12 +725,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity // 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, "请检查活动奖项存在重复"); - } +// boolean isRepeat = activityGrantItemList.stream() +// .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) +// .entrySet().stream().anyMatch(e -> e.getValue() > 1); +// if(isRepeat){ +// throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); +// } for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { if(grantGrantItem.getAwardItamId() == null){ @@ -726,45 +740,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(awardsItem == null){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); } - + grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); } activityItem.setActivityGrantItemList(activityGrantItemList); } -// else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ -// if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ -// continue; -// } -// -// boolean isRepeat = activityGrantItemList.stream() -// .collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) -// .entrySet().stream().anyMatch(e -> e.getValue() > 1); -// if(isRepeat){ -// throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); -// } -// -// for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { -// if(grantGrantItem.getAwardItamId() == null){ -// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); -// } -// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); -// if(awardsItem == null){ -// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); -// } -// -// handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); -// } -// -// activityItem.setActivityGrantItemList(activityGrantItemList); -// -// } + else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList()); + if(activityItem.getActivityGrantItemList().isEmpty()){ + continue; + } + + for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { + WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); + handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); + } + } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { BigDecimal cashBackPriceTotal = BigDecimal.ZERO; activityGrantItemList = new ArrayList<>(); - BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); //单笔订单计算 if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ @@ -779,6 +775,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(grantAwardsItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); grantGrantItem.setRecordId(record.getId()); + grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); //计算返现金额 BigDecimal cashBackPrice = record.getOrderMoney() .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); @@ -793,7 +790,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } }else{ -// BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); // if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ // if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ // orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() @@ -813,6 +810,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } if(grantAwardsItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); //计算返现金额 BigDecimal cashBackPrice = orderMoneySum .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); @@ -824,14 +822,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } } - Integer jointCount = getJointCount(activityItem,activityItem.getRecordList()); + Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ Map jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); WxOfflineActivityAwardsItem awardsSecondItem = jointCountMap.get(jointCount); if(awardsSecondItem != null){ WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); + grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.COUNT.getCode()); //计算返现金额 - BigDecimal cashBackPrice = orderMoneySum + BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); awardsSecondItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index ee94af6a4..956ed7de6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -116,6 +116,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); + settlement.setGrantItemId(wxOfflineActivityGrantItem.getId()); + settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode()); settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); @@ -145,6 +147,8 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); + settlement.setGrantItemId(wxOfflineActivityGrantItem.getId()); + settlement.setGrantAwardsMode(wxOfflineActivityGrantItem.getGrantAwardsMode()); settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java index 925e4ffaa..8eb84fe7f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -6,7 +6,6 @@ import com.iformall.domain.po.WxOfflineActivityAwardsItem; import com.iformall.domain.po.WxOfflineActivityAwardsModel; import com.iformall.domain.po.WxOfflineActivityItem; import com.iformall.enums.EnumOfflineActivityAwardsModeType; -import com.iformall.enums.EnumOfflineActivityAwardsItemType; import com.iformall.enums.EnumOfflineActivityAwardsRule; import com.iformall.enums.EnumOfflineActivityType; import com.iformall.service.WxOfflineActivityAwardsItemService; @@ -93,8 +92,8 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe List activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId); if(EnumOfflineActivityType.CASHBACK.getCode().equals(item.getType())){ Map> collect = activityAwardsItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityAwardsItem::getType)); - item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsItemType.FIRST.getCode())); - item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsItemType.SECOND.getCode())); + item.setActivityAwardsItemList(collect.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); + item.setActivityAwardsItemSecondList(collect.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); }else{ item.setActivityAwardsItemList(activityAwardsItemList); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java index 6c8e0dc83..f64b6aa1b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java @@ -3,7 +3,7 @@ package com.iformall.service.impl; import com.iformall.common.Result; import com.iformall.domain.po.*; import com.iformall.domain.vo.*; -import com.iformall.enums.EnumOfflineActivityAwardsItemType; +import com.iformall.enums.EnumOfflineActivityAwardsModeType; import com.iformall.enums.EnumOfflineActivityType; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -78,7 +78,7 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi WxOfflineActivityAwardsItem activityAwardsItemQ = new WxOfflineActivityAwardsItem(); activityAwardsItemQ.updateTenantInfo(activityItemStatisticsBo); activityAwardsItemQ.setActivityItemId(activityItemStatisticsBo.getActivityItemId()); - activityAwardsItemQ.setType(EnumOfflineActivityAwardsItemType.FIRST.getCode()); + activityAwardsItemQ.setType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); List activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQ); if(activityAwardsItemList != null && !activityAwardsItemList.isEmpty()) { return activityAwardsItemList.stream().map(WxOfflineActivityAwardsItem::getId).collect(Collectors.toList()); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 86d5c2508..e7c0bebf8 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -9,6 +9,8 @@ + + @@ -34,7 +36,7 @@ id,tenant_id,parent_tenant_id, - grant_id,activity_id,activity_name, + grant_id,grant_awards_mode,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, award_itam_id,award_name,award_grade, award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, @@ -61,6 +63,10 @@ and `grant_id` = #{grantId} + + and `grant_awards_mode` = #{grantAwardsMode} + + and `activity_id` = #{activityId} @@ -92,7 +98,7 @@ insert into wx_offline_activity_grant_item (id, - grant_id,activity_id,activity_name, + grant_id,grant_awards_mode,activity_id,activity_name, activity_item_id,activity_item_name,activity_item_type, award_itam_id,award_name,award_grade, award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio, @@ -102,7 +108,7 @@ values (#{item.id,jdbcType=BIGINT}, - #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, + #{item.grantId,jdbcType=BIGINT},#{item.grantAwardsMode,jdbcType=INTEGER},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, #{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 1652f5857..7a607b0a8 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -16,6 +16,8 @@ + + @@ -32,7 +34,7 @@ id,tenant_id,parent_tenant_id, record_id,order_no,order_money, merchant_id,activity_id,activity_item_id, - award_itam_id,grant_id,grant_price, + award_itam_id,grant_id,grant_item_id,grant_awards_mode,grant_price, mall_share_rate,merchant_share_rate,order_ratio, real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date @@ -74,6 +76,12 @@ and `grant_id` = #{grantId} + + and `grant_item_id` = #{grantItemId} + + + and `grant_awards_mode` = #{grantAwardsMode} + and `create_date` >= #{createDateBegin} @@ -110,7 +118,7 @@ (id, record_id,order_no,order_money, merchant_id,activity_id,activity_item_id, - award_itam_id,grant_id,grant_price, + award_itam_id,grant_id,grant_item_id,grant_awards_mode,grant_price, mall_share_rate,merchant_share_rate,order_ratio, real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date) @@ -119,7 +127,7 @@ (#{item.id,jdbcType=BIGINT}, #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL}, #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, - #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL}, + #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantItemId,jdbcType=BIGINT},#{item.grantAwardsMode,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL}, #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, #{item.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP})