diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index 73b20e091..6fd5018d3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -77,13 +77,6 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "grant_id") private Long grantId; - - /** - * 发放订单总金额 - */ - @TableField(value = "grant_money") - private Integer grantMoney; - /** * 发放总价值 */ @@ -93,14 +86,14 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 商管承担总金额 */ - @TableField(value = "mall_share_price") - private Integer mallSharePrice; + @TableField(value = "mall_share_rate") + private BigDecimal mallShareRate; /** * 商户承担总金额 */ - @TableField(value = "merchant_share_price") - private Integer merchantSharePrice; + @TableField(value = "merchant_share_rate") + private BigDecimal merchantShareRate; /** * 订单占比 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 8167f692d..21db14b54 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -49,6 +49,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct continue; } for (WxOfflineActivityGrantItem wxOfflineActivityGrantItem : activityItem.getActivityGrantItemList()) { + List itemSettlementList = new ArrayList<>(); for (WxOfflineActivityRecord record : recordDescList){ WxOfflineActivityGrantSettlement settlement = new WxOfflineActivityGrantSettlement(); settlement.setId(idWorker.nextId()); @@ -63,14 +64,33 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct settlement.setActivityItemId(wxOfflineActivityGrantItem.getActivityItemId()); settlement.setAwardItamId(wxOfflineActivityGrantItem.getAwardItamId()); settlement.setGrantId(wxOfflineActivityGrantItem.getGrantId()); - settlement.setGrantMoney(wxOfflineActivityGrantAward.getOrderMoneySum()); settlement.setGrantPrice(wxOfflineActivityGrantItem.getAwardPrice()); - settlement.setMallSharePrice(wxOfflineActivityGrantItem.getMallSharePrice()); - settlement.setMerchantSharePrice(wxOfflineActivityGrantItem.getMerchantSharePrice()); -//todo + settlement.setMallShareRate(wxOfflineActivityGrantItem.getMallShareRate()); + settlement.setMerchantShareRate(wxOfflineActivityGrantItem.getMerchantShareRate()); + settlement.setOrderRatio(record.getOrderRatio()); - settlementList.add(settlement); + settlement.setCreateDate(now); + settlement.setUpdateDate(now); + itemSettlementList.add(settlement); } + //计算订单分担金额,(占比最少的订单用减法,尽量减少误差) + int itemSize = itemSettlementList.size() - 1; + Integer lastGrantPrice = wxOfflineActivityGrantItem.getAwardPrice(); + for (int i = 0; i < itemSize; i++) { + WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); + int realGrantPrice = new BigDecimal(wxOfflineActivityGrantItem.getAwardPrice()).multiply(settlement.getOrderRatio()).setScale(0, RoundingMode.HALF_UP).intValue(); + settlement.setRealGrantPrice(realGrantPrice); + settlement.setRealMallSharePrice(new BigDecimal(settlement.getRealGrantPrice()).multiply(settlement.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice() - settlement.getRealMallSharePrice()); + + lastGrantPrice = lastGrantPrice - realGrantPrice; + } + WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); + lastSettlement.setRealGrantPrice(lastGrantPrice); + lastSettlement.setRealMallSharePrice(new BigDecimal(lastSettlement.getRealGrantPrice()).multiply(lastSettlement.getMallShareRate()).setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice() - lastSettlement.getRealMallSharePrice()); + + settlementList.addAll(itemSettlementList); } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index dd10576e3..2f0546e3f 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -16,10 +16,9 @@ - - - + + @@ -32,8 +31,8 @@ id,tenant_id,parent_tenant_id, record_id,order_no,order_money, merchant_id,activity_id,activity_item_id, - award_itam_id,grant_id,grant_money,grant_price, - mall_share_price,merchant_share_price,order_ratio, + award_itam_id,grant_id,grant_price, + mall_share_rate,merchant_share_rate,order_ratio, real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date @@ -43,8 +42,8 @@ (id,tenant_id,parent_tenant_id, record_id,order_no,order_money, merchant_id,activity_id,activity_item_id, - award_itam_id,grant_id,grant_money,grant_price, - mall_share_price,merchant_share_price,order_ratio, + award_itam_id,grant_id,grant_price, + mall_share_rate,merchant_share_rate,order_ratio, real_grant_price,real_mall_share_price,real_merchant_share_price, create_date,update_date) values @@ -52,8 +51,8 @@ (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, - #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantMoney,jdbcType=INTEGER},#{item.grantPrice,jdbcType=INTEGER}, - #{item.mallSharePrice,jdbcType=INTEGER},#{item.merchantSharePrice,jdbcType=INTEGER},#{item.orderRatio,jdbcType=DECIMAL}, + #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=INTEGER}, + #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, #{item.realGrantPrice,jdbcType=INTEGER},#{item.realMallSharePrice,jdbcType=INTEGER},#{item.realMerchantSharePrice,jdbcType=INTEGER}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP})