| @@ -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; | |||
| /** | |||
| * 订单占比 | |||
| @@ -49,6 +49,7 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| continue; | |||
| } | |||
| for (WxOfflineActivityGrantItem wxOfflineActivityGrantItem : activityItem.getActivityGrantItemList()) { | |||
| List<WxOfflineActivityGrantSettlement> 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); | |||
| } | |||
| } | |||
| @@ -16,10 +16,9 @@ | |||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||
| <result property="awardItamId" column="award_itam_id" jdbcType="BIGINT"/> | |||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||
| <result property="grantMoney" column="grant_money" jdbcType="INTEGER"/> | |||
| <result property="grantPrice" column="grant_price" jdbcType="INTEGER"/> | |||
| <result property="mallSharePrice" column="mall_share_price" jdbcType="INTEGER"/> | |||
| <result property="merchantSharePrice" column="merchant_share_price" jdbcType="INTEGER"/> | |||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="orderRatio" column="order_ratio" jdbcType="DECIMAL"/> | |||
| <result property="realGrantPrice" column="real_grant_price" jdbcType="INTEGER"/> | |||
| <result property="realMallSharePrice" column="real_mall_share_price" jdbcType="INTEGER"/> | |||
| @@ -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 | |||
| </sql> | |||
| @@ -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}) | |||
| </foreach> | |||