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

//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")
@Excel(name = "订单金额", width = 20, orderNum = "12")
@Excel(name = "订单金额", width = 20, orderNum = "13")
@TableField(value = "order_money")
private BigDecimal orderMoney;

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

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

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

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

@@ -151,7 +154,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 0:签单, 1:外部军团带单1, 2:内部军团不同联盟带单, 3:内部军团相同联盟带单, 4:内部军团无联盟带单
*/
@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")
private Integer orderType;
@TableField(exist = false)
@@ -194,7 +197,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 0:审核中, 1:已审批, 2:已驳回, 3:已失效
*/
@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")
private Integer auditStatus;

@@ -210,7 +213,7 @@ public class WxLegionActivityOrder extends TenantEntity {
* 审核时间
*/
@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")
private Date auditTime;

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

@Autowired
private WxVtwoActivityOrderService wxVtwoActivityOrderService;

@Override
public PageInfo<WxLegionActivityOrder> listAsPage(WxLegionActivityOrder wxLegionActivityOrder, Integer pageNum, Integer pageSize) {
handlerQuery(wxLegionActivityOrder);
@@ -124,17 +127,26 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
if (wxLegionActivityOrders == null || wxLegionActivityOrders.isEmpty()) {
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> 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());

Map<Long, WxMerchant> merchantMap = new HashMap<>();
Map<Long,String> merchantShopNumberMap = new HashMap<>();
if(!merchantIds.isEmpty()){
WxMerchant merchantQ = new WxMerchant();
merchantQ.updateTenantInfo(wxLegionActivityOrder);
merchantQ.setIds(merchantIds);
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<>();
if(!adminUserIds.isEmpty()){
@@ -155,9 +167,17 @@ public class WxLegionActivityOrderServiceImpl implements WxLegionActivityOrderSe
Map<Long, String> legionConfigMap = wxLegionActivityConfigService.getLegionConfigMap(legionConfigQ);

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){
WxMerchant merchant = merchantMap.get(legionActivityOrder.getMerchantId());
legionActivityOrder.setMerchantName(merchant.getName());
legionActivityOrder.setMerchantShopNum(merchantShopNumberMap.get(legionActivityOrder.getMerchantId()));
}
if(legionActivityOrder.getAuditBy() != null){
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){
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()
.divide(orderSumMoney,4, RoundingMode.HALF_UP)
.divide(orderSumMoney,6, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
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){
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);
}
else{
@@ -500,6 +504,15 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr
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 ){
cashBackPrice = cashBackAward.getCashBackLimit();
}
cashBackPrice = awardsRulePrice(cashBackPrice,cashBackActivity.getCashBackRule());
cashBackPrice = awardsRulePrice(cashBackPrice,EnumOfflineActivityAwardsRule.DEF.getCode());
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){
cashBackTotal = cashBackTotal.add(cashBackPrice);
WxVtwoCashBackGrantAward grantAward = new WxVtwoCashBackGrantAward();
@@ -86,7 +86,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
}
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
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){
cashBackTotal = cashBackTotal.add(cashBackPrice);
@@ -110,7 +110,7 @@ public class WxVtwoCashBackGrantAwardServiceImpl extends ServiceImpl<WxVtwoCashB
if(cashBackAward != null && cashBackAward.getCashBackRatio() != null){
BigDecimal orderMoneySum = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
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){
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){
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){
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.setCashBack(realCashBackTotal);
activityGrant.setCashBack(cashBackTotal);

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));
}
//税点分摊到发奖上面
BigDecimal sumCashBack = grantAwardList.stream().map(WxVtwoCashBackGrantAward::getCashBack).reduce(BigDecimal.ZERO, BigDecimal::add);
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);


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

@@ -94,6 +94,13 @@
and `audit_status` = #{auditStatus}
</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 ">
and merchant_id in
<foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")">


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