Просмотр исходного кода

//offline

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
e6823a4e7e
6 измененных файлов: 37 добавлений и 7 удалений
  1. +2
    -0
      mallinkAdmin/src/main/resources/db/migration/V202503000000001.sql
  2. +6
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineGantItemStatistics.java
  4. +13
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  5. +13
    -6
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java
  6. +2
    -1
      mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml

+ 2
- 0
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`;

+ 6
- 0
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-分担)
*/


+ 1
- 0
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;

}

+ 13
- 0
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<String,Object> 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);


+ 13
- 6
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemStatisticsServiceImpl.java Просмотреть файл

@@ -175,14 +175,21 @@ public class WxOfflineActivityItemStatisticsServiceImpl implements WxOfflineActi
List<OfflineGantItemStatistics> awardsItemStatistics = wxOfflineActivityGrantItemMapper.awardsItemStatistics(activityItemStatisticsBo);
if(awardsItemStatistics != null && !awardsItemStatistics.isEmpty()){
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())){
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());
}


+ 2
- 1
mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml Просмотреть файл

@@ -17,6 +17,7 @@
<result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/>
<result property="cashBackRatio" column="cash_back_ratio" 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="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/>
<result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/>
@@ -27,7 +28,7 @@
<sql id="allColumns">
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
</sql>


Загрузка…
Отмена
Сохранить