Browse Source

//cashback

release_toaliyun_real
xiaohu 1 year ago
parent
commit
26d35f09d8
8 changed files with 95 additions and 20 deletions
  1. +12
    -0
      mallinkAdmin/src/main/resources/db/migration/V202504000000001.sql
  2. +6
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java
  3. +19
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java
  4. +4
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java
  5. +34
    -11
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  6. +5
    -3
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml
  7. +14
    -6
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml
  8. +1
    -0
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml

+ 12
- 0
mallinkAdmin/src/main/resources/db/migration/V202504000000001.sql View File

@@ -0,0 +1,12 @@
ALTER TABLE `mallink`.`wx_offline_activity_grant_item`
ADD COLUMN `starting_tax_point` decimal(10, 2) NULL COMMENT '税点金额起点' AFTER `award_count`,
ADD COLUMN `tax_points` decimal(10, 2) NULL COMMENT '税点比例' AFTER `starting_tax_point`,
ADD COLUMN `tax_points_amount` decimal(10, 2) NULL COMMENT '税点金额' AFTER `tax_points`;

ALTER TABLE `mallink`.`wx_offline_activity_grant_cash_back`
ADD COLUMN `activity_item_mode_type` smallint(1) NULL COMMENT '活动项模式' AFTER `activity_item_type`;

update wx_offline_activity_grant_cash_back set activity_item_mode_type = 2;

ALTER TABLE `mallink`.`wx_offline_activity_grant_cash_back`
MODIFY COLUMN `activity_item_mode_type` smallint(1) NOT NULL COMMENT '活动项模式' AFTER `activity_item_type`;

+ 6
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantCashBack.java View File

@@ -62,6 +62,12 @@ public class WxOfflineActivityGrantCashBack extends TenantEntity {
@TableField(value = "activity_item_type")
private Integer activityItemType;

/**
* 活动项类型
*/
@TableField(value = "activity_item_mode_type")
private Integer activityItemModeType;

/**
* 返现奖项计算规则(0代表无规则)
*/


+ 19
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java View File

@@ -124,6 +124,25 @@ public class WxOfflineActivityGrantItem extends TenantEntity {
@TableField(value = "award_count")
private Integer awardCount;

/**
* 返现起征税点金额
*/
@TableField(value = "starting_tax_point")
private BigDecimal startingTaxPoint;

/**
* 返现税点比例
*/
@TableField(value = "tax_points")
private BigDecimal taxPoints;

/**
* 税收
*/
@TableField(value = "tax_points_amount")
private BigDecimal taxPointsAmount;


/**
* 分担规则(0-商管 1-商户 2-分担)
*/


+ 4
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java View File

@@ -34,6 +34,10 @@ public class OfflineActivityGrantItemVo extends TenantEntity {
private BigDecimal awardPrice;
private Integer awardCount;

private BigDecimal startingTaxPoint;
private BigDecimal taxPoints;
private BigDecimal taxPointsAmount;

private BigDecimal mallShareRate;
private BigDecimal merchantShareRate;



+ 34
- 11
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java View File

@@ -426,6 +426,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
}
}

}else{
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);

@@ -454,7 +455,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
}
}
//联单
Integer jointCount = getJointCount(activityItem,recordList);
if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){
Map<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity()));
@@ -477,12 +478,12 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
}

//计算返现金额最大限制
BigDecimal prop = BigDecimal.ONE;
if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){
prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP);
cashBackPriceTotal = activityItem.getMaxAmount();
}

if(prop.compareTo(BigDecimal.ONE) < 0){
for (WxOfflineActivityGrantItem grantItem:grantItemList){
grantItem.setAwardPrice(awardsRulePrice(grantItem.getAwardPrice().multiply(prop),activityItem.getAwardsItemRule()));
@@ -493,25 +494,47 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
grantItem.setMerchantSharePrice(grantItem.getAwardPrice().subtract(grantItem.getMallSharePrice()));
}
}
activityItem.setActivityGrantItemList(grantItemList);

//计算税点,单笔订单按单笔计算,订单总额按总额计算
WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack();
activityGrantCashBack.setActivityId(activity.getId());
activityGrantCashBack.setActivityName(activity.getName());
activityGrantCashBack.setActivityItemId(activityItem.getId());
activityGrantCashBack.setActivityItemName(activityItem.getName());
activityGrantCashBack.setActivityItemType(activityItem.getType());
activityGrantCashBack.setActivityItemModeType(activityItem.getModeType());
activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule());
activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount());
activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint());
activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints());
activityGrantCashBack.setCashBackPrice(cashBackPriceTotal);
activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO);
if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0
&& activityGrantCashBack.getTaxPoints() != null){
activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints())
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP));
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){
BigDecimal cashBackPrice = BigDecimal.ZERO;
BigDecimal taxPointsAmount = BigDecimal.ZERO;
for(WxOfflineActivityGrantItem grantItem:grantItemList){
grantItem.setStartingTaxPoint(activityItem.getStartingTaxPoint());
grantItem.setTaxPoints(activityItem.getTaxPoints());
grantItem.setTaxPointsAmount(BigDecimal.ZERO);
if(grantItem.getStartingTaxPoint() != null && grantItem.getAwardPrice().compareTo(grantItem.getStartingTaxPoint()) > 0
&& grantItem.getTaxPoints() != null){
grantItem.setTaxPointsAmount(grantItem.getAwardPrice().multiply(grantItem.getTaxPoints())
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP));
}
cashBackPrice = cashBackPrice.add(grantItem.getAwardPrice());
taxPointsAmount = taxPointsAmount.add(grantItem.getTaxPointsAmount());
}
activityGrantCashBack.setCashBackPrice(cashBackPrice);
activityGrantCashBack.setTaxPointsAmount(taxPointsAmount);
}else{
activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint());
activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints());
activityGrantCashBack.setCashBackPrice(cashBackPriceTotal);
activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO);
if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0
&& activityGrantCashBack.getTaxPoints() != null){
activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints())
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP));
}
}
activityItem.setActivityGrantItemList(grantItemList);

activityItem.setActivityGrantCashBack(activityGrantCashBack);
//实际展示返现金额
activityItem.setCashBackPrice(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPointsAmount()));


+ 5
- 3
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantCashBackMapper.xml View File

@@ -14,6 +14,7 @@
<result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/>
<result property="activityItemName" column="activity_item_name" jdbcType="INTEGER"/>
<result property="activityItemType" column="activity_item_type" jdbcType="SMALLINT"/>
<result property="activityItemModeType" column="activity_item_mode_type" jdbcType="SMALLINT"/>

<result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/>

@@ -29,7 +30,8 @@
<sql id="allColumns">
id,tenant_id,parent_tenant_id,
grant_id,activity_id,activity_name,
activity_item_id,activity_item_name,activity_item_type,awards_item_rule,
activity_item_id,activity_item_name,activity_item_type,activity_item_mode_type,
awards_item_rule,
create_date,update_date,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount
</sql>

@@ -76,7 +78,7 @@
insert into wx_offline_activity_grant_cash_back
(id,
grant_id,activity_id,activity_name,
activity_item_id,activity_item_name,activity_item_type,
activity_item_id,activity_item_name,activity_item_type,activity_item_mode_type,
awards_item_rule,
create_date,update_date
,max_amount,starting_tax_point,tax_points,cash_back_price,tax_points_amount)
@@ -84,7 +86,7 @@
<foreach collection="cashBackList" item="item" index="index" separator=",">
(#{item.id,jdbcType=BIGINT},
#{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},
#{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER},
#{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER},#{item.activityItemModeType,jdbcType=INTEGER},
#{item.awardsItemRule,jdbcType=INTEGER},
#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP},
#{item.maxAmount,jdbcType=DECIMAL},#{item.startingTaxPoint,jdbcType=DECIMAL},#{item.taxPoints,jdbcType=DECIMAL},#{item.cashBackPrice,jdbcType=DECIMAL},#{item.taxPointsAmount,jdbcType=DECIMAL})


+ 14
- 6
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml View File

@@ -25,6 +25,11 @@
<result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/>
<result property="awardPrice" column="award_price" jdbcType="DECIMAL"/>
<result property="awardCount" column="award_count" jdbcType="INTEGER"/>

<result property="startingTaxPoint" column="starting_tax_point" jdbcType="DECIMAL"/>
<result property="taxPoints" column="tax_points" jdbcType="DECIMAL"/>
<result property="taxPointsAmount" column="tax_points_amount" 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"/>
@@ -40,8 +45,9 @@
activity_item_id,activity_item_name,activity_item_type,
award_itam_id,award_name,award_grade,
award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio,
award_price,award_count,money_rule,
mall_share_rate,merchant_share_rate,
award_price,award_count,
starting_tax_point,tax_points,tax_points_amount,
money_rule,mall_share_rate,merchant_share_rate,
create_date,update_date,record_id
</sql>

@@ -102,8 +108,9 @@
activity_item_id,activity_item_name,activity_item_type,
award_itam_id,award_name,award_grade,
award_min_amount,award_max_amount,awards_item_rule,cash_back_ratio,
award_price,award_count,money_rule,
mall_share_rate,merchant_share_rate,
award_price,award_count,
starting_tax_point,tax_points,tax_points_amount,
money_rule,mall_share_rate,merchant_share_rate,
create_date,update_date,record_id)
values
<foreach collection="grantItemList" item="item" index="index" separator=",">
@@ -112,8 +119,9 @@
#{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER},
#{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER},
#{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL},
#{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER},
#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},
#{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},
#{item.startingTaxPoint,jdbcType=DECIMAL},,#{item.taxPoints,jdbcType=DECIMAL},,#{item.taxPointsAmount,jdbcType=DECIMAL},
#{item.moneyRule,jdbcType=INTEGER},#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},
#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP},#{item.recordId,jdbcType=BIGINT})
</foreach>
</insert>


+ 1
- 0
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml View File

@@ -307,6 +307,7 @@
gi.activity_item_id,gi.activity_item_name,
gi.award_itam_id,gi.award_name,
gi.cash_back_ratio,gi.award_price,gi.award_count,
gi.starting_tax_point,gi.tax_points,gi.tax_points_amount,
gi.mall_share_rate,gi.merchant_share_rate,
gi.record_id,
gs.order_no,gs.order_money,


Loading…
Cancel
Save