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

//activity v.

release_toaliyun_real
xiaohu 10 месяцев назад
Родитель
Сommit
a792d6da6b
8 измененных файлов: 109 добавлений и 32 удалений
  1. +12
    -7
      mallinkService/src/main/java/com/iformall/domain/po/WxLegionActivityOrder.java
  2. +4
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java
  4. +21
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxLegionActivityOrderServiceImpl.java
  5. +14
    -7
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityGrantSettlementServiceImpl.java
  6. +15
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoActivityOrderServiceImpl.java
  7. +34
    -14
      mallinkService/src/main/java/com/iformall/service/impl/WxVtwoCashBackGrantAwardServiceImpl.java
  8. +7
    -0
      mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml

+ 12
- 7
mallinkService/src/main/java/com/iformall/domain/po/WxLegionActivityOrder.java Просмотреть файл

@@ -52,7 +52,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 订单金额 * 订单金额
*/ */
@io.swagger.annotations.ApiModelProperty(value="订单金额",name="orderMoney") @io.swagger.annotations.ApiModelProperty(value="订单金额",name="orderMoney")
@Excel(name = "订单金额", width = 20, orderNum = "12")
@Excel(name = "订单金额", width = 20, orderNum = "13")
@TableField(value = "order_money") @TableField(value = "order_money")
private BigDecimal orderMoney; private BigDecimal orderMoney;


@@ -110,6 +110,9 @@ public class WxLegionActivityOrder extends TenantEntity {
private String merchantName; private String merchantName;
@TableField(exist = false) @TableField(exist = false)
private List<Long> merchantIdList; private List<Long> merchantIdList;
@Excel(name = "商铺号", width = 20, orderNum = "8")
@TableField(exist = false)
private String merchantShopNum;


/** /**
* 军团ID * 军团ID
@@ -117,7 +120,7 @@ public class WxLegionActivityOrder extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="军团ID",name="legionId") @io.swagger.annotations.ApiModelProperty(value="军团ID",name="legionId")
@TableField(value = "legion_id") @TableField(value = "legion_id")
private Long legionId; private Long legionId;
@Excel(name = "所属军团", width = 20, orderNum = "8")
@Excel(name = "所属军团", width = 20, orderNum = "9")
@TableField(exist = false) @TableField(exist = false)
private String legionName; private String legionName;


@@ -130,14 +133,14 @@ public class WxLegionActivityOrder extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="联盟id",name="unionId") @io.swagger.annotations.ApiModelProperty(value="联盟id",name="unionId")
@TableField(value = "union_id") @TableField(value = "union_id")
private Long unionId; private Long unionId;
@Excel(name = "所属联盟", width = 20, orderNum = "9")
@Excel(name = "所属联盟", width = 20, orderNum = "10")
@TableField(exist = false) @TableField(exist = false)
private String unionName; private String unionName;


// /** // /**
// * 卡属派系 // * 卡属派系
// */ // */
// @Excel(name = "所属派系", width = 20, orderNum = "10", replace = {"原联盟_1", "非联盟_2"})
// @Excel(name = "所属派系", width = 20, orderNum = "11", replace = {"原联盟_1", "非联盟_2"})
// @TableField(exist = false) // @TableField(exist = false)
// private Integer unionType; // private Integer unionType;


@@ -151,7 +154,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单 * 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单
*/ */
@io.swagger.annotations.ApiModelProperty(value="带单类型 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单",name="orderType") @io.swagger.annotations.ApiModelProperty(value="带单类型 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单",name="orderType")
@Excel(name = "带单类型", width = 20, orderNum = "13", replace = {"签单_0", "外部军团带单_1", "内部军团不同联盟带单_2", "内部军团相同联盟带单_3", "内部军团无联盟带单_4"})
@Excel(name = "带单类型", width = 20, orderNum = "14", replace = {"签单_0", "外部军团带单_1", "内部军团不同联盟带单_2", "内部军团相同联盟带单_3", "内部军团无联盟带单_4"})
@TableField(value = "order_type") @TableField(value = "order_type")
private Integer orderType; private Integer orderType;
@TableField(exist = false) @TableField(exist = false)
@@ -194,7 +197,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 0:审核中, 1:已审批, 2:已驳回, 3:已失效 * 0:审核中, 1:已审批, 2:已驳回, 3:已失效
*/ */
@io.swagger.annotations.ApiModelProperty(value="审批状态 0:审核中, 1:已审批, 2:已驳回, 3:已失效",name="auditStatus") @io.swagger.annotations.ApiModelProperty(value="审批状态 0:审核中, 1:已审批, 2:已驳回, 3:已失效",name="auditStatus")
@Excel(name = "审核状态", width = 20, orderNum = "11", replace = {"审核中_0", "已审批_1", "已驳回_2", "已失效_3"})
@Excel(name = "审核状态", width = 20, orderNum = "12", replace = {"审核中_0", "已审批_1", "已驳回_2", "已失效_3"})
@TableField(value = "audit_status") @TableField(value = "audit_status")
private Integer auditStatus; private Integer auditStatus;


@@ -210,7 +213,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 审核时间 * 审核时间
*/ */
@io.swagger.annotations.ApiModelProperty(value="审核时间",name="auditTime") @io.swagger.annotations.ApiModelProperty(value="审核时间",name="auditTime")
@Excel(name = "审核时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "14")
@Excel(name = "审核时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "15")
@TableField(value = "audit_time") @TableField(value = "audit_time")
private Date auditTime; private Date auditTime;


@@ -223,6 +226,7 @@ public class WxLegionActivityOrder extends TenantEntity {
/** /**
* 抽奖券编码 * 抽奖券编码
*/ */
@Excel(name = "抽奖券编码", width = 20, orderNum = "8")
@TableField(exist = false) @TableField(exist = false)
private String lotteryNum; private String lotteryNum;
@TableField(exist = false) @TableField(exist = false)
@@ -241,6 +245,7 @@ public class WxLegionActivityOrder extends TenantEntity {
/** /**
* 抽奖券数量 * 抽奖券数量
*/ */
@Excel(name = "抽奖券数量", width = 20, orderNum = "8")
@TableField(exist = false) @TableField(exist = false)
private Integer lotteryCount; private Integer lotteryCount;




+ 4
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxVtwoActivityOrder.java Просмотреть файл

@@ -105,6 +105,9 @@ public class WxVtwoActivityOrder extends TenantEntity {
@TableField(value = "from_order_id") @TableField(value = "from_order_id")
private Long fromOrderId; private Long fromOrderId;


@TableField(exist = false)
private List<Long> fromOrderIds;

/** /**
* 订单号 * 订单号
*/ */
@@ -214,7 +217,7 @@ public class WxVtwoActivityOrder extends TenantEntity {
/** /**
* 审核时间 * 审核时间
*/ */
@Excel(name = "提交时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13")
@Excel(name = "审核时间", format = "yyyy-MM-dd HH:mm:ss", width = 20, orderNum = "13")
@TableField(value = "audit_time") @TableField(value = "audit_time")
private Date auditTime; private Date auditTime;




+ 2
- 0
mallinkService/src/main/java/com/iformall/service/WxVtwoActivityOrderService.java Просмотреть файл

@@ -59,4 +59,6 @@ public interface WxVtwoActivityOrderService extends IService<WxVtwoActivityOrder
List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo); List<WxVtwoOrderCountStatistics> orderCountStatisticsChart(WxVtwoActivityStatisticsVo statisticsVo);


List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo); List<WxVtwoOrderBusinessStatistics> orderBusinessStatistics(WxVtwoActivityStatisticsVo statisticsVo);

Map<Long, WxVtwoActivityOrder> findFromMap(WxVtwoActivityOrder record);
} }

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

@@ -77,6 +77,9 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
@Autowired @Autowired
private WxLegionActivityConfigMapper wxLegionActivityConfigMapper; private WxLegionActivityConfigMapper wxLegionActivityConfigMapper;


@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Override @Override
public PageInfo<WxLegionActivityOrder> listAsPage(WxLegionActivityOrder wxLegionActivityOrder, Integer pageNum, Integer pageSize) { public PageInfo<WxLegionActivityOrder> listAsPage(WxLegionActivityOrder wxLegionActivityOrder, Integer pageNum, Integer pageSize) {
handlerQuery(wxLegionActivityOrder); handlerQuery(wxLegionActivityOrder);
@@ -124,17 +127,26 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
if (wxLegionActivityOrders == null || wxLegionActivityOrders.isEmpty()) { if (wxLegionActivityOrders == null || wxLegionActivityOrders.isEmpty()) {
return; return;
} }
List<Long> ids = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getId).collect(Collectors.toList());
List<Long> merchantIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); List<Long> merchantIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getMerchantId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
List<Long> adminUserIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList()); List<Long> adminUserIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getAuditBy).filter(Objects::nonNull).distinct().collect(Collectors.toList());
List<Long> userIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); List<Long> userIds = wxLegionActivityOrders.stream().map(WxLegionActivityOrder::getCusId).filter(Objects::nonNull).distinct().collect(Collectors.toList());


Map<Long, WxMerchant> merchantMap = new HashMap<>(); Map<Long, WxMerchant> merchantMap = new HashMap<>();
Map<Long,String> merchantShopNumberMap = new HashMap<>();
if(!merchantIds.isEmpty()){ if(!merchantIds.isEmpty()){
WxMerchant merchantQ = new WxMerchant(); WxMerchant merchantQ = new WxMerchant();
merchantQ.updateTenantInfo(wxLegionActivityOrder); merchantQ.updateTenantInfo(wxLegionActivityOrder);
merchantQ.setIds(merchantIds); merchantQ.setIds(merchantIds);
merchantMap = wxMerchantService.findMerchantMap(merchantQ); merchantMap = wxMerchantService.findMerchantMap(merchantQ);
merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(wxLegionActivityOrder, merchantIds, EnumYesOrNo.NO.getCode());
}
Map<Long,WxVtwoActivityOrder> vtwoActivityOrderMap = new HashMap<>();
if(!ids.isEmpty()){
WxVtwoActivityOrder vtwoActivityOrderQ = new WxVtwoActivityOrder();
vtwoActivityOrderQ.updateTenantInfo(wxLegionActivityOrder);
vtwoActivityOrderQ.setFromOrderIds(ids);
vtwoActivityOrderMap = wxVtwoActivityOrderService.findFromMap(vtwoActivityOrderQ);
} }
Map<Long, MallUserInfo> userMap = new HashMap<>(); Map<Long, MallUserInfo> userMap = new HashMap<>();
if(!adminUserIds.isEmpty()){ if(!adminUserIds.isEmpty()){
@@ -155,9 +167,17 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ); Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ);


for (WxLegionActivityOrder legionActivityOrder : wxLegionActivityOrders) { for (WxLegionActivityOrder legionActivityOrder : wxLegionActivityOrders) {
WxVtwoActivityOrder vtwoActivityOrder = vtwoActivityOrderMap.get(legionActivityOrder.getId());
if(vtwoActivityOrder != null){
legionActivityOrder.setLotteryNum(vtwoActivityOrder.getLotteryNum());
legionActivityOrder.setLotteryCount(vtwoActivityOrder.getLotteryCount());
legionActivityOrder.setAnniversaryLotteryNum(vtwoActivityOrder.getAnniversaryLotteryNum());
}

if(legionActivityOrder.getMerchantId() != null){ if(legionActivityOrder.getMerchantId() != null){
WxMerchant merchant = merchantMap.get(legionActivityOrder.getMerchantId()); WxMerchant merchant = merchantMap.get(legionActivityOrder.getMerchantId());
legionActivityOrder.setMerchantName(merchant.getName()); legionActivityOrder.setMerchantName(merchant.getName());
legionActivityOrder.setMerchantShopNum(merchantShopNumberMap.get(legionActivityOrder.getMerchantId()));
} }
if(legionActivityOrder.getAuditBy() != null){ if(legionActivityOrder.getAuditBy() != null){
legionActivityOrder.setAuditByName(userMap.get(legionActivityOrder.getAuditBy()).getName()); legionActivityOrder.setAuditByName(userMap.get(legionActivityOrder.getAuditBy()).getName());


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

@@ -115,17 +115,24 @@ public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl<WxVtwo


private void handleOrderRatio(List<WxVtwoActivityOrder> orderList){ private void handleOrderRatio(List<WxVtwoActivityOrder> orderList){
BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
int size = orderList.size() - 1;
BigDecimal lastRatio = new BigDecimal(100);
for(int i=0; i<size; i++){
WxVtwoActivityOrder order = orderList.get(i);
for (WxVtwoActivityOrder order : orderList){
BigDecimal orderRatio = order.getOrderMoney() BigDecimal orderRatio = order.getOrderMoney()
.divide(orderSumMoney,4, RoundingMode.HALF_UP)
.divide(orderSumMoney,6, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)); .multiply(new BigDecimal(100));
order.setOrderRatio(orderRatio); order.setOrderRatio(orderRatio);
lastRatio = lastRatio.subtract(orderRatio);
} }
orderList.get(size).setOrderRatio(lastRatio);

// int size = orderList.size() - 1;
// BigDecimal lastRatio = new BigDecimal(100);
// for(int i=0; i<size; i++){
// WxVtwoActivityOrder order = orderList.get(i);
// BigDecimal orderRatio = order.getOrderMoney()
// .divide(orderSumMoney,4, RoundingMode.HALF_UP)
// .multiply(new BigDecimal(100));
// order.setOrderRatio(orderRatio);
// lastRatio = lastRatio.subtract(orderRatio);
// }
// orderList.get(size).setOrderRatio(lastRatio);
} }






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

@@ -173,8 +173,12 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr
if(activityOrder.getAuditStatus() == null){ if(activityOrder.getAuditStatus() == null){
activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); activityOrder.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode());
} }
activityOrder.setCreateDate(now);
activityOrder.setUpdateDate(now);
if(activityOrder.getCreateDate() == null){
activityOrder.setCreateDate(now);
}
if (activityOrder.getUpdateDate() == null){
activityOrder.setUpdateDate(now);
}
wxVtwoActivityOrderMapper.insert(activityOrder); wxVtwoActivityOrderMapper.insert(activityOrder);
} }
else{ else{
@@ -500,6 +504,15 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr
return Collections.emptyList(); return Collections.emptyList();
} }


@Override
public Map<Long, WxVtwoActivityOrder> findFromMap(WxVtwoActivityOrder record) {
List<WxVtwoActivityOrder> list = wxVtwoActivityOrderMapper.findList(record);
if(list != null && !list.isEmpty()){
return list.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getFromOrderId, Function.identity()));
}
return Collections.emptyMap();
}

} }






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

@@ -59,7 +59,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
&& cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){ && cashBackAward.getCashBackLimit().compareTo(cashBackPrice) < 0 ){
cashBackPrice = cashBackAward.getCashBackLimit(); cashBackPrice = cashBackAward.getCashBackLimit();
} }
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());
cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode());
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice); cashBackTotal = cashBackTotal.add(cashBackPrice);
WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward(); WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward();
@@ -86,7 +86,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
} }
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100)));
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());
cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode());


if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice); cashBackTotal = cashBackTotal.add(cashBackPrice);
@@ -110,7 +110,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){ if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100))); BigDecimal cashBackPrice = orderMoneySum.multiply(cashBackAward.getCashBackRatio().divide(new BigDecimal(100)));
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());
cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode());


if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice); cashBackTotal = cashBackTotal.add(cashBackPrice);
@@ -126,20 +126,34 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
} }
} }


//计算返现金额最大限制
BigDecimal prop = BigDecimal.ONE;
//返现金额
cashBackTotal = awardsRulePrice(cashBackTotal,cashBackActivity.getCashBackRule());
if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){ if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){
prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,4, RoundingMode.HALF_UP);
}

if(prop.compareTo(BigDecimal.ONE) < 0){
cashBackTotal = awardsRulePrice(cashBackActivity.getCashBackLimit(),cashBackActivity.getCashBackRule());
//按返现金额进行分摊
BigDecimal sumCashBack = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add);
for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule()));
BigDecimal cashBackRatio = grantAward.getCashBack()
.divide(sumCashBack,6, RoundingMode.HALF_UP);
grantAward.setCashBack(awardsRulePrice(cashBackTotal.multiply(cashBackRatio),EnumOfflineActivityAwardsRule.DEF.getCode()));
} }
} }
BigDecimal realCashBackTotal = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add);

// BigDecimal prop = BigDecimal.ONE;
// if(cashBackTotal.compareTo(cashBackActivity.getCashBackLimit()) >= 0){
// prop = cashBackActivity.getCashBackLimit().divide(cashBackTotal,6, RoundingMode.HALF_UP);
// }
//
// if(prop.compareTo(BigDecimal.ONE) < 0){
// for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
// grantAward.setCashBack(awardsRulePrice(grantAward.getCashBack().multiply(prop),cashBackActivity.getCashBackRule()));
// }
// }

// BigDecimal realCashBackTotal = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add);

activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit()); activityGrant.setCashBackLimit(cashBackActivity.getCashBackLimit());
activityGrant.setCashBack(realCashBackTotal);
activityGrant.setCashBack(cashBackTotal);


if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){ if(EnumOfflineActivityMode.ONE.getCode().equals(cashBackActivity.getAmountModel())){
//单独算税点 //单独算税点
@@ -166,10 +180,16 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP));
} }
//税点分摊到发奖上面 //税点分摊到发奖上面
BigDecimal sumCashBack = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add);
for (WxVtwoCashBackGrantAward grantAward:grantAwardList){ for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);;
grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP));
BigDecimal cashBackRatio = grantAward.getCashBack()
.divide(sumCashBack,6, RoundingMode.HALF_UP);
grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(cashBackRatio).setScale(2, RoundingMode.HALF_UP));
} }
// for (WxVtwoCashBackGrantAward grantAward:grantAwardList){
// BigDecimal taxAmountProp = grantAward.getCashBack().divide(activityGrant.getCashBack(),4,RoundingMode.HALF_UP);;
// grantAward.setTaxAmount(activityGrant.getTaxAmount().multiply(taxAmountProp).setScale(2, RoundingMode.HALF_UP));
// }
} }


activityGrant.setGrantAwardList(grantAwardList); activityGrant.setGrantAwardList(grantAwardList);


+ 7
- 0
mallinkService/src/main/resources/mapper/WxVtwoActivityOrderMapper.xml Просмотреть файл

@@ -94,6 +94,13 @@
and `audit_status` = #{auditStatus} and `audit_status` = #{auditStatus}
</if> </if>


<if test=" null != fromOrderIds ">
and from_order_id in
<foreach collection="fromOrderIds" index="index" item="foidItem" open="(" separator="," close=")">
#{foidItem}
</foreach>
</if>

<if test=" null != merchantIdList "> <if test=" null != merchantIdList ">
and merchant_id in and merchant_id in
<foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")">


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