| @@ -0,0 +1,2 @@ | |||||
| ALTER TABLE `mallink`.`wx_offline_activity_awards_item` | |||||
| ADD COLUMN `limit_price` decimal(10, 2) NULL COMMENT '奖项价值限额' AFTER `price`; | |||||
| @@ -80,6 +80,12 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { | |||||
| @TableField(value = "price") | @TableField(value = "price") | ||||
| private BigDecimal price; | private BigDecimal price; | ||||
| /** | |||||
| * 奖项价值限制 | |||||
| */ | |||||
| @TableField(value = "limit_price") | |||||
| private BigDecimal limitPrice; | |||||
| /** | /** | ||||
| * 分担规则(0-商管 1-商户 2-分担) | * 分担规则(0-商管 1-商户 2-分担) | ||||
| */ | */ | ||||
| @@ -18,5 +18,6 @@ public class OfflineGantItemStatistics implements Serializable { | |||||
| private BigDecimal sumPrice; | private BigDecimal sumPrice; | ||||
| private Double priceRatio; | private Double priceRatio; | ||||
| private Double countRatio; | |||||
| } | } | ||||
| @@ -247,6 +247,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = record.getOrderMoney() | BigDecimal cashBackPrice = record.getOrderMoney() | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .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); | cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); | ||||
| } | } | ||||
| @@ -782,6 +786,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| //计算返现金额 | //计算返现金额 | ||||
| BigDecimal cashBackPrice = record.getOrderMoney() | BigDecimal cashBackPrice = record.getOrderMoney() | ||||
| .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); | .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); | grantAwardsItem.setPrice(cashBackPrice); | ||||
| handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); | ||||
| @@ -1115,6 +1123,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||||
| Map<String,Object> orderMap = new HashMap<>(); | Map<String,Object> orderMap = new HashMap<>(); | ||||
| orderMap.put("orderNo",offlineActivityGrantRecord.getOrderNo()); | orderMap.put("orderNo",offlineActivityGrantRecord.getOrderNo()); | ||||
| orderMap.put("orderMoney",offlineActivityGrantRecord.getOrderMoney()); | orderMap.put("orderMoney",offlineActivityGrantRecord.getOrderMoney()); | ||||
| orderMap.put("orderAddress",offlineActivityGrantRecord.getCusAddress()); | |||||
| orderMap.put("merchantName",offlineActivityGrantRecord.getMerchantId()!=null?merchantMap.get(offlineActivityGrantRecord.getMerchantId()):""); | orderMap.put("merchantName",offlineActivityGrantRecord.getMerchantId()!=null?merchantMap.get(offlineActivityGrantRecord.getMerchantId()):""); | ||||
| orderMap.put("shopNumber",offlineActivityGrantRecord.getMerchantId()!=null?merchantShopNumberMap.get(offlineActivityGrantRecord.getMerchantId()):""); | orderMap.put("shopNumber",offlineActivityGrantRecord.getMerchantId()!=null?merchantShopNumberMap.get(offlineActivityGrantRecord.getMerchantId()):""); | ||||
| orderMap.put("businessName",offlineActivityGrantRecord.getBusinessId()!=null?bussinessMap.get(offlineActivityGrantRecord.getBusinessId()).getTitle():""); | 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); | entity13_list.add(entity13_1); | ||||
| ExcelExportEntity entity13_2 = new ExcelExportEntity("订单金额","orderMoney",20); | ExcelExportEntity entity13_2 = new ExcelExportEntity("订单金额","orderMoney",20); | ||||
| entity13_list.add(entity13_2); | entity13_list.add(entity13_2); | ||||
| ExcelExportEntity entity13_2_ = new ExcelExportEntity("订单地址","orderAddress",20); | |||||
| entity13_list.add(entity13_2_); | |||||
| ExcelExportEntity entity13_3 = new ExcelExportEntity("商户名称","merchantName",20); | ExcelExportEntity entity13_3 = new ExcelExportEntity("商户名称","merchantName",20); | ||||
| entity13_list.add(entity13_3); | entity13_list.add(entity13_3); | ||||
| ExcelExportEntity entity13_4 = new ExcelExportEntity("铺位号","shopNumber",20); | ExcelExportEntity entity13_4 = new ExcelExportEntity("铺位号","shopNumber",20); | ||||
| @@ -175,14 +175,21 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi | |||||
| List<OfflineGantItemStatistics> awardsItemStatistics = wxOfflineActivityGrantItemMapper.awardsItemStatistics(activityItemStatisticsBo); | List<OfflineGantItemStatistics> awardsItemStatistics = wxOfflineActivityGrantItemMapper.awardsItemStatistics(activityItemStatisticsBo); | ||||
| if(awardsItemStatistics != null && !awardsItemStatistics.isEmpty()){ | if(awardsItemStatistics != null && !awardsItemStatistics.isEmpty()){ | ||||
| Map<Long,WxOfflineActivityAwardsItem> awardsItemMap = wxOfflineActivityAwardsItemService.findAwardsItemMap(activityItemStatisticsBo.getActivityItemId(), activityItemStatisticsBo.getTenantId()); | Map<Long,WxOfflineActivityAwardsItem> 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())){ | 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()); | return awardsItemStatistics.stream().sorted(Comparator.comparing(OfflineGantItemStatistics::getPriceRatio).reversed()).collect(Collectors.toList()); | ||||
| } | } | ||||
| @@ -17,6 +17,7 @@ | |||||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | ||||
| <result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | <result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | ||||
| <result property="price" column="price" jdbcType="DECIMAL"/> | <result property="price" column="price" jdbcType="DECIMAL"/> | ||||
| <result property="limitPrice" column="limit_price" jdbcType="DECIMAL"/> | |||||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | ||||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | ||||
| @@ -27,7 +28,7 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| id,tenant_id,parent_tenant_id, | id,tenant_id,parent_tenant_id, | ||||
| activity_item_id,`type`,`name`,grade,merchant_count, | 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, | money_rule,mall_share_rate,merchant_share_rate, | ||||
| create_date,update_date | create_date,update_date | ||||
| </sql> | </sql> | ||||