diff --git a/mallinkAdmin/src/main/resources/db/migration/V202503000000001.sql b/mallinkAdmin/src/main/resources/db/migration/V202503000000001.sql new file mode 100644 index 000000000..7fe898fed --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202503000000001.sql @@ -0,0 +1,2 @@ +ALTER TABLE `mallink`.`wx_offline_activity_awards_item` + ADD COLUMN `limit_price` decimal(10, 2) NULL COMMENT '奖项价值限额' AFTER `price`; \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index 50d9e9dcf..c92542fc3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -80,6 +80,12 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { @TableField(value = "price") private BigDecimal price; + /** + * 奖项价值限制 + */ + @TableField(value = "limit_price") + private BigDecimal limitPrice; + /** * 分担规则(0-商管 1-商户 2-分担) */ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java index ed1788062..213134bf2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java @@ -18,5 +18,6 @@ public class OfflineGantItemStatistics implements Serializable { private BigDecimal sumPrice; private Double priceRatio; + private Double countRatio; } 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 2da3597bd..ff56c439e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -247,6 +247,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = record.getOrderMoney() .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + if(grantAwardsItem.getLimitPrice() != null && grantAwardsItem.getLimitPrice().compareTo(BigDecimal.ZERO) > 0 + && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ + cashBackPrice = grantAwardsItem.getLimitPrice(); + } cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); } @@ -782,6 +786,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity //计算返现金额 BigDecimal cashBackPrice = record.getOrderMoney() .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); + if(grantAwardsItem.getLimitPrice() != null && grantAwardsItem.getLimitPrice().compareTo(BigDecimal.ZERO) > 0 + && grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ + cashBackPrice = grantAwardsItem.getLimitPrice(); + } grantAwardsItem.setPrice(cashBackPrice); handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); @@ -1115,6 +1123,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity Map orderMap = new HashMap<>(); orderMap.put("orderNo",offlineActivityGrantRecord.getOrderNo()); orderMap.put("orderMoney",offlineActivityGrantRecord.getOrderMoney()); + orderMap.put("orderAddress",offlineActivityGrantRecord.getCusAddress()); orderMap.put("merchantName",offlineActivityGrantRecord.getMerchantId()!=null?merchantMap.get(offlineActivityGrantRecord.getMerchantId()):""); orderMap.put("shopNumber",offlineActivityGrantRecord.getMerchantId()!=null?merchantShopNumberMap.get(offlineActivityGrantRecord.getMerchantId()):""); orderMap.put("businessName",offlineActivityGrantRecord.getBusinessId()!=null?bussinessMap.get(offlineActivityGrantRecord.getBusinessId()).getTitle():""); @@ -1354,6 +1363,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity entity13_list.add(entity13_1); ExcelExportEntity entity13_2 = new ExcelExportEntity("订单金额","orderMoney",20); entity13_list.add(entity13_2); + + ExcelExportEntity entity13_2_ = new ExcelExportEntity("订单地址","orderAddress",20); + entity13_list.add(entity13_2_); + ExcelExportEntity entity13_3 = new ExcelExportEntity("商户名称","merchantName",20); entity13_list.add(entity13_3); ExcelExportEntity entity13_4 = new ExcelExportEntity("铺位号","shopNumber",20); 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 f64b6aa1b..79dc17b41 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java @@ -175,14 +175,21 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi List awardsItemStatistics = wxOfflineActivityGrantItemMapper.awardsItemStatistics(activityItemStatisticsBo); if(awardsItemStatistics != null && !awardsItemStatistics.isEmpty()){ Map awardsItemMap = wxOfflineActivityAwardsItemService.findAwardsItemMap(activityItemStatisticsBo.getActivityItemId(), activityItemStatisticsBo.getTenantId()); - BigDecimal total = awardsItemStatistics.stream().map(OfflineGantItemStatistics::getSumPrice).reduce(BigDecimal.ZERO, BigDecimal::add); - for (OfflineGantItemStatistics ItemStatistics : awardsItemStatistics) { - WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = awardsItemMap.get(ItemStatistics.getAwardItamId()); - ItemStatistics.setAwardItamName(wxOfflineActivityAwardsItem==null?"":wxOfflineActivityAwardsItem.getName()); + for (OfflineGantItemStatistics itemStatistics : awardsItemStatistics) { + WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = awardsItemMap.get(itemStatistics.getAwardItamId()); + itemStatistics.setAwardItamName(wxOfflineActivityAwardsItem==null?"":wxOfflineActivityAwardsItem.getName()); if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItemStatisticsBo.getActivityItemType())){ - ItemStatistics.setCashBackRatio(wxOfflineActivityAwardsItem==null?BigDecimal.ZERO:wxOfflineActivityAwardsItem.getCashBackRatio()); + itemStatistics.setCashBackRatio(wxOfflineActivityAwardsItem==null?BigDecimal.ZERO:wxOfflineActivityAwardsItem.getCashBackRatio()); + BigDecimal total = awardsItemStatistics.stream().map(OfflineGantItemStatistics::getSumPrice).reduce(BigDecimal.ZERO, BigDecimal::add); + itemStatistics.setPriceRatio(itemStatistics.getSumPrice().divide(total,4, RoundingMode.HALF_UP).doubleValue()); + }else{ + Integer total = awardsItemStatistics.stream().map(OfflineGantItemStatistics::getAwardItamCount).reduce(0, Integer::sum); + itemStatistics.setCountRatio(new BigDecimal(itemStatistics.getAwardItamCount()).divide(new BigDecimal(total),4, RoundingMode.HALF_UP).doubleValue()); + } + //兼容前端 + if (itemStatistics.getPriceRatio() == null) { + itemStatistics.setPriceRatio(itemStatistics.getCountRatio()); } - ItemStatistics.setPriceRatio(ItemStatistics.getSumPrice().divide(total,4, RoundingMode.HALF_UP).doubleValue()); } return awardsItemStatistics.stream().sorted(Comparator.comparing(OfflineGantItemStatistics::getPriceRatio).reversed()).collect(Collectors.toList()); } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index 9165e9dec..675ce7eb5 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -17,6 +17,7 @@ + @@ -27,7 +28,7 @@ id,tenant_id,parent_tenant_id, activity_item_id,`type`,`name`,grade,merchant_count, - min_amount,max_amount,cash_back_ratio,price, + min_amount,max_amount,cash_back_ratio,price,limit_price, money_rule,mall_share_rate,merchant_share_rate, create_date,update_date