Commit 97e19480 by guanchen

预付款订单按rewad中记录的原始佣金

按比例分别结算定金 和 尾款奖励
parent 2608110a
...@@ -214,6 +214,24 @@ public class AgentReward implements Serializable { ...@@ -214,6 +214,24 @@ public class AgentReward implements Serializable {
@TableField(value = "settle_in_advance") @TableField(value = "settle_in_advance")
private Integer settleInAdvance; private Integer settleInAdvance;
/**
* 失效时间 针对各种失效状态
*/
@TableField(value = "invalid_time")
private Date invalidTime;
/**
* 二次激活订单号
*/
@TableField(value = "tail_order_sn")
private String tailOrderSn;
/**
* 二次激活订单 定金和尾款订单 的 分成比例
*/
@TableField(value = "deposite_tail_rate")
private BigDecimal depositeTailRate;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final String COL_AGENT_ID = "agent_id"; public static final String COL_AGENT_ID = "agent_id";
...@@ -283,4 +301,10 @@ public class AgentReward implements Serializable { ...@@ -283,4 +301,10 @@ public class AgentReward implements Serializable {
public static final String COL_SETTLE_TIME = "settle_time"; public static final String COL_SETTLE_TIME = "settle_time";
public static final String COL_SETTLE_IN_ADVANCE = "settle_in_advance"; public static final String COL_SETTLE_IN_ADVANCE = "settle_in_advance";
public static final String COL_INVALID_TIME = "invalid_time";
public static final String COL_TAIL_ORDER_SN = "tail_order_sn";
public static final String COL_DEPOSITE_TAIL_RATE = "deposite_tail_rate";
} }
\ No newline at end of file
...@@ -38,7 +38,7 @@ public class PartnerReward implements Serializable { ...@@ -38,7 +38,7 @@ public class PartnerReward implements Serializable {
private Integer userPartnerLevel; private Integer userPartnerLevel;
/** /**
* 合伙人奖励类型 60 用户在线充值 70 升高开户充值,80邀请奖励,90下单奖励,100购买超级VIP会员,110购物奖励 * 合伙人奖励类型 60 用户在线充值 70 升高开户充值,80邀请奖励,90下单奖励,100购买超级VIP会员,110购物奖励,120分享赚,130平台额外奖励
*/ */
@TableField(value = "reward_type") @TableField(value = "reward_type")
private Integer rewardType; private Integer rewardType;
...@@ -209,11 +209,29 @@ public class PartnerReward implements Serializable { ...@@ -209,11 +209,29 @@ public class PartnerReward implements Serializable {
private Date settleTime; private Date settleTime;
/** /**
* 失效时间 针对各种失效订单
*/
@TableField(value = "invalid_time")
private Date invalidTime;
/**
* 是否提前结算: 1是,0否 * 是否提前结算: 1是,0否
*/ */
@TableField(value = "settle_in_advance") @TableField(value = "settle_in_advance")
private Integer settleInAdvance; private Integer settleInAdvance;
/**
* 二次激活订单号
*/
@TableField(value = "tail_order_sn")
private String tailOrderSn;
/**
* 二次激活订单 定金和尾款订单 的 分成比例
*/
@TableField(value = "deposite_tail_rate")
private BigDecimal depositeTailRate;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final String COL_USER_ID = "user_id"; public static final String COL_USER_ID = "user_id";
...@@ -282,5 +300,11 @@ public class PartnerReward implements Serializable { ...@@ -282,5 +300,11 @@ public class PartnerReward implements Serializable {
public static final String COL_SETTLE_TIME = "settle_time"; public static final String COL_SETTLE_TIME = "settle_time";
public static final String COL_INVALID_TIME = "invalid_time";
public static final String COL_SETTLE_IN_ADVANCE = "settle_in_advance"; public static final String COL_SETTLE_IN_ADVANCE = "settle_in_advance";
public static final String COL_TAIL_ORDER_SN = "tail_order_sn";
public static final String COL_DEPOSITE_TAIL_RATE = "deposite_tail_rate";
} }
\ No newline at end of file
...@@ -395,7 +395,13 @@ public class AgentSettleTask { ...@@ -395,7 +395,13 @@ public class AgentSettleTask {
private void add2UpdateRewardCommission(AgentReward agentReward, BigDecimal allMoney, List<AgentReward> updateCommisionList) { private void add2UpdateRewardCommission(AgentReward agentReward, BigDecimal allMoney, List<AgentReward> updateCommisionList) {
String ratioAllStr = ""; String ratioAllStr = "";
try { try {
agentReward.setAllMoneyOri(allMoney); BigDecimal allMoneyOri;
if (agentReward.getDepositeTailRate().compareTo(BigDecimal.ZERO) > 0) {
allMoneyOri = allMoney.multiply(agentReward.getDepositeTailRate());
} else {
allMoneyOri = allMoney;
}
agentReward.setAllMoneyOri(allMoneyOri);
ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\]\"]", ""); ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\]\"]", "");
/** /**
* 时间点之前的 需要乘比例数组 之后 再乘commission_rate * 时间点之前的 需要乘比例数组 之后 再乘commission_rate
...@@ -405,7 +411,7 @@ public class AgentSettleTask { ...@@ -405,7 +411,7 @@ public class AgentSettleTask {
if (!isEmpty(ratioAllStr)) { if (!isEmpty(ratioAllStr)) {
String[] strs = ratioAllStr.split(","); String[] strs = ratioAllStr.split(",");
if (strs.length > 0) { if (strs.length > 0) {
BigDecimal cash = allMoney; BigDecimal cash = allMoneyOri;
for (String s : strs) { for (String s : strs) {
BigDecimal ratio = new BigDecimal(s); BigDecimal ratio = new BigDecimal(s);
cash = cash.multiply(ratio); cash = cash.multiply(ratio);
...@@ -421,9 +427,9 @@ public class AgentSettleTask { ...@@ -421,9 +427,9 @@ public class AgentSettleTask {
} }
} }
} else { } else {
agentReward.setMoney(allMoney); agentReward.setMoney(allMoneyOri);
agentReward.setCommissionAcount(allMoney); agentReward.setCommissionAcount(allMoneyOri);
BigDecimal commission = allMoney.multiply(agentReward.getCommissionRate()); BigDecimal commission = allMoneyOri.multiply(agentReward.getCommissionRate());
agentReward.setAmount(commission); agentReward.setAmount(commission);
agentReward.setCommission(commission); agentReward.setCommission(commission);
agentReward.setSettleState(Constants.SETTLE_STATE_DONE); agentReward.setSettleState(Constants.SETTLE_STATE_DONE);
......
...@@ -346,7 +346,13 @@ public class PartnerSettleTask { ...@@ -346,7 +346,13 @@ public class PartnerSettleTask {
private void add2UpdateRewardCommission(PartnerReward partnerReward, BigDecimal allMoney, List<PartnerReward> updateCommisionList) { private void add2UpdateRewardCommission(PartnerReward partnerReward, BigDecimal allMoney, List<PartnerReward> updateCommisionList) {
try { try {
partnerReward.setAllMoneyOri(allMoney); BigDecimal allMoneyOri;
if (partnerReward.getDepositeTailRate().compareTo(BigDecimal.ZERO) > 0) {
allMoneyOri = allMoney.multiply(partnerReward.getDepositeTailRate());
} else {
allMoneyOri = allMoney;
}
partnerReward.setAllMoneyOri(allMoneyOri);
String ratioAllStr = partnerReward.getRatioAll().replaceAll("[\\[\\]\"]", ""); String ratioAllStr = partnerReward.getRatioAll().replaceAll("[\\[\\]\"]", "");
/** /**
* 时间点之前的 需要乘比例数组 之后 再乘commission_rate * 时间点之前的 需要乘比例数组 之后 再乘commission_rate
...@@ -356,7 +362,7 @@ public class PartnerSettleTask { ...@@ -356,7 +362,7 @@ public class PartnerSettleTask {
if (! isEmpty(ratioAllStr)) { if (! isEmpty(ratioAllStr)) {
String[] strs = ratioAllStr.split(","); String[] strs = ratioAllStr.split(",");
if (strs.length > 0) { if (strs.length > 0) {
BigDecimal cash = allMoney; BigDecimal cash = allMoneyOri;
for (String s : strs) { for (String s : strs) {
BigDecimal ratio = new BigDecimal(s); BigDecimal ratio = new BigDecimal(s);
cash = cash.multiply(ratio); cash = cash.multiply(ratio);
...@@ -371,8 +377,8 @@ public class PartnerSettleTask { ...@@ -371,8 +377,8 @@ public class PartnerSettleTask {
} }
} }
} else { } else {
partnerReward.setCash(allMoney); partnerReward.setCash(allMoneyOri);
BigDecimal commission = allMoney.multiply(partnerReward.getCommissionRate()); BigDecimal commission = allMoneyOri.multiply(partnerReward.getCommissionRate());
partnerReward.setCommissionAcount(commission); partnerReward.setCommissionAcount(commission);
partnerReward.setSettleState(Constants.SETTLE_STATE_DONE); partnerReward.setSettleState(Constants.SETTLE_STATE_DONE);
partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L); partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
......
...@@ -38,6 +38,9 @@ ...@@ -38,6 +38,9 @@
<result column="ratio_all" property="ratioAll" /> <result column="ratio_all" property="ratioAll" />
<result column="settle_time" property="settleTime" /> <result column="settle_time" property="settleTime" />
<result column="settle_in_advance" property="settleInAdvance" /> <result column="settle_in_advance" property="settleInAdvance" />
<result column="invalid_time" property="invalidTime" />
<result column="tail_order_sn" property="tailOrderSn" />
<result column="deposite_tail_rate" property="depositeTailRate" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -46,7 +49,7 @@ ...@@ -46,7 +49,7 @@
commission_rate, commission, reference_id, settle_state, source_order, source_user_id, commission_rate, commission, reference_id, settle_state, source_order, source_user_id,
source_user_level, goods_id, title, order_type, order_sn, sub_order_sn, reward_extend, source_user_level, goods_id, title, order_type, order_sn, sub_order_sn, reward_extend,
created_at, updated_at, deleted_at, create_time, all_money_ori, ratio_all, settle_time, created_at, updated_at, deleted_at, create_time, all_money_ori, ratio_all, settle_time,
settle_in_advance settle_in_advance, invalid_time, tail_order_sn, deposite_tail_rate
</sql> </sql>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -222,6 +225,21 @@ ...@@ -222,6 +225,21 @@
when id = #{item.id} then #{item.settleInAdvance} when id = #{item.id} then #{item.settleInAdvance}
</foreach> </foreach>
</trim> </trim>
<trim prefix="invalid_time = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.invalidTime}
</foreach>
</trim>
<trim prefix="tail_order_sn = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.tailOrderSn}
</foreach>
</trim>
<trim prefix="deposite_tail_rate = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.depositeTailRate}
</foreach>
</trim>
</trim> </trim>
where id in where id in
<foreach close=")" collection="list" item="item" open="(" separator=", "> <foreach close=")" collection="list" item="item" open="(" separator=", ">
...@@ -235,8 +253,8 @@ ...@@ -235,8 +253,8 @@
reward_status, money, amount, cash_code, recharge_time, commission_acount, commission_rate, reward_status, money, amount, cash_code, recharge_time, commission_acount, commission_rate,
commission, reference_id, settle_state, source_order, source_user_id, source_user_level, commission, reference_id, settle_state, source_order, source_user_id, source_user_level,
goods_id, title, order_type, order_sn, sub_order_sn, reward_extend, created_at, goods_id, title, order_type, order_sn, sub_order_sn, reward_extend, created_at,
updated_at, deleted_at, create_time, all_money_ori, ratio_all, settle_time, settle_in_advance updated_at, deleted_at, create_time, all_money_ori, ratio_all, settle_time, settle_in_advance,
) invalid_time, tail_order_sn, deposite_tail_rate)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.agentId}, #{item.agentLevel}, #{item.userId}, #{item.rewardType}, #{item.rewardTypeChild}, (#{item.agentId}, #{item.agentLevel}, #{item.userId}, #{item.rewardType}, #{item.rewardTypeChild},
...@@ -246,7 +264,8 @@ ...@@ -246,7 +264,8 @@
#{item.sourceOrder}, #{item.sourceUserId}, #{item.sourceUserLevel}, #{item.goodsId}, #{item.sourceOrder}, #{item.sourceUserId}, #{item.sourceUserLevel}, #{item.goodsId},
#{item.title}, #{item.orderType}, #{item.orderSn}, #{item.subOrderSn}, #{item.rewardExtend}, #{item.title}, #{item.orderType}, #{item.orderSn}, #{item.subOrderSn}, #{item.rewardExtend},
#{item.createdAt}, #{item.updatedAt}, #{item.deletedAt}, #{item.createTime}, #{item.allMoneyOri}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt}, #{item.createTime}, #{item.allMoneyOri},
#{item.ratioAll}, #{item.settleTime}, #{item.settleInAdvance}) #{item.ratioAll}, #{item.settleTime}, #{item.settleInAdvance}, #{item.invalidTime},
#{item.tailOrderSn}, #{item.depositeTailRate})
</foreach> </foreach>
</insert> </insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentReward" useGeneratedKeys="true"> <insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentReward" useGeneratedKeys="true">
...@@ -290,6 +309,9 @@ ...@@ -290,6 +309,9 @@
ratio_all, ratio_all,
settle_time, settle_time,
settle_in_advance, settle_in_advance,
invalid_time,
tail_order_sn,
deposite_tail_rate,
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -330,6 +352,9 @@ ...@@ -330,6 +352,9 @@
#{ratioAll}, #{ratioAll},
#{settleTime}, #{settleTime},
#{settleInAdvance}, #{settleInAdvance},
#{invalidTime},
#{tailOrderSn},
#{depositeTailRate},
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -370,6 +395,9 @@ ...@@ -370,6 +395,9 @@
ratio_all = #{ratioAll}, ratio_all = #{ratioAll},
settle_time = #{settleTime}, settle_time = #{settleTime},
settle_in_advance = #{settleInAdvance}, settle_in_advance = #{settleInAdvance},
invalid_time = #{invalidTime},
tail_order_sn = #{tailOrderSn},
deposite_tail_rate = #{depositeTailRate},
</trim> </trim>
</insert> </insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentReward" useGeneratedKeys="true"> <insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentReward" useGeneratedKeys="true">
...@@ -481,6 +509,15 @@ ...@@ -481,6 +509,15 @@
<if test="settleInAdvance != null"> <if test="settleInAdvance != null">
settle_in_advance, settle_in_advance,
</if> </if>
<if test="invalidTime != null">
invalid_time,
</if>
<if test="tailOrderSn != null">
tail_order_sn,
</if>
<if test="depositeTailRate != null">
deposite_tail_rate,
</if>
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -589,6 +626,15 @@ ...@@ -589,6 +626,15 @@
<if test="settleInAdvance != null"> <if test="settleInAdvance != null">
#{settleInAdvance}, #{settleInAdvance},
</if> </if>
<if test="invalidTime != null">
#{invalidTime},
</if>
<if test="tailOrderSn != null">
#{tailOrderSn},
</if>
<if test="depositeTailRate != null">
#{depositeTailRate},
</if>
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -697,6 +743,15 @@ ...@@ -697,6 +743,15 @@
<if test="settleInAdvance != null"> <if test="settleInAdvance != null">
settle_in_advance = #{settleInAdvance}, settle_in_advance = #{settleInAdvance},
</if> </if>
<if test="invalidTime != null">
invalid_time = #{invalidTime},
</if>
<if test="tailOrderSn != null">
tail_order_sn = #{tailOrderSn},
</if>
<if test="depositeTailRate != null">
deposite_tail_rate = #{depositeTailRate},
</if>
</trim> </trim>
</insert> </insert>
<select id="selectAgentSettlePageByTs" resultType="com.lanren.huhu.partner.model.AgentSettle"> <select id="selectAgentSettlePageByTs" resultType="com.lanren.huhu.partner.model.AgentSettle">
...@@ -862,7 +917,10 @@ ...@@ -862,7 +917,10 @@
all_money_ori, all_money_ori,
ratio_all, ratio_all,
settle_time, settle_time,
settle_in_advance settle_in_advance,
invalid_time,
tail_order_sn,
deposite_tail_rate
FROM agent_reward FROM agent_reward
WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100 AND reward_status = 100
...@@ -906,7 +964,10 @@ ...@@ -906,7 +964,10 @@
all_money_ori, all_money_ori,
ratio_all, ratio_all,
settle_time, settle_time,
settle_in_advance settle_in_advance,
invalid_time,
tail_order_sn,
deposite_tail_rate
FROM agent_reward FROM agent_reward
WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100 AND reward_status = 100
...@@ -917,7 +978,7 @@ ...@@ -917,7 +978,7 @@
</select> </select>
<update id="updateRewardStatusByAgentIdAndTs"> <update id="updateRewardStatusByAgentIdAndTs">
UPDATE agent_reward UPDATE agent_reward
SET reward_status=120, settle_state=CASE WHEN settle_state>0 THEN 300 WHEN settle_state&lt;0 THEN settle_state ELSE 0 END SET reward_status=120, settle_state=CASE WHEN settle_state&gt;0 THEN 300 WHEN settle_state&lt;0 THEN settle_state ELSE 0 END
WHERE settle_time WHERE settle_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND agent_id = #{agentId} AND agent_id = #{agentId}
......
...@@ -37,7 +37,10 @@ ...@@ -37,7 +37,10 @@
<result column="is_show_on_client" property="isShowOnClient" /> <result column="is_show_on_client" property="isShowOnClient" />
<result column="tech_fee_rate" property="techFeeRate" /> <result column="tech_fee_rate" property="techFeeRate" />
<result column="settle_time" property="settleTime" /> <result column="settle_time" property="settleTime" />
<result column="invalid_time" property="invalidTime" />
<result column="settle_in_advance" property="settleInAdvance" /> <result column="settle_in_advance" property="settleInAdvance" />
<result column="tail_order_sn" property="tailOrderSn" />
<result column="deposite_tail_rate" property="depositeTailRate" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -46,7 +49,7 @@ ...@@ -46,7 +49,7 @@
source_user_level, invite_user_id, invite_user_level, invite_user_is_super, created_at, source_user_level, invite_user_id, invite_user_level, invite_user_is_super, created_at,
updated_at, create_time, source_type, reward_times, settle_state, goods_id, title, updated_at, create_time, source_type, reward_times, settle_state, goods_id, title,
order_type, order_sn, sub_order_sn, all_money_ori, ratio_all, is_show_on_client, order_type, order_sn, sub_order_sn, all_money_ori, ratio_all, is_show_on_client,
tech_fee_rate, settle_time, settle_in_advance tech_fee_rate, settle_time, invalid_time, settle_in_advance, tail_order_sn, deposite_tail_rate
</sql> </sql>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -217,11 +220,26 @@ ...@@ -217,11 +220,26 @@
when id = #{item.id} then #{item.settleTime} when id = #{item.id} then #{item.settleTime}
</foreach> </foreach>
</trim> </trim>
<trim prefix="invalid_time = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.invalidTime}
</foreach>
</trim>
<trim prefix="settle_in_advance = case" suffix="end,"> <trim prefix="settle_in_advance = case" suffix="end,">
<foreach collection="list" index="index" item="item"> <foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.settleInAdvance} when id = #{item.id} then #{item.settleInAdvance}
</foreach> </foreach>
</trim> </trim>
<trim prefix="tail_order_sn = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.tailOrderSn}
</foreach>
</trim>
<trim prefix="deposite_tail_rate = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.depositeTailRate}
</foreach>
</trim>
</trim> </trim>
where id in where id in
<foreach close=")" collection="list" item="item" open="(" separator=", "> <foreach close=")" collection="list" item="item" open="(" separator=", ">
...@@ -236,7 +254,8 @@ ...@@ -236,7 +254,8 @@
source_user_level, invite_user_id, invite_user_level, invite_user_is_super, created_at, source_user_level, invite_user_id, invite_user_level, invite_user_is_super, created_at,
updated_at, create_time, source_type, reward_times, settle_state, goods_id, title, updated_at, create_time, source_type, reward_times, settle_state, goods_id, title,
order_type, order_sn, sub_order_sn, all_money_ori, ratio_all, is_show_on_client, order_type, order_sn, sub_order_sn, all_money_ori, ratio_all, is_show_on_client,
tech_fee_rate, settle_time, settle_in_advance) tech_fee_rate, settle_time, invalid_time, settle_in_advance, tail_order_sn, deposite_tail_rate
)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.userIsSuper}, #{item.userPartnerLevel}, #{item.rewardType}, (#{item.userId}, #{item.userIsSuper}, #{item.userPartnerLevel}, #{item.rewardType},
...@@ -246,7 +265,8 @@ ...@@ -246,7 +265,8 @@
#{item.createdAt}, #{item.updatedAt}, #{item.createTime}, #{item.sourceType}, #{item.rewardTimes}, #{item.createdAt}, #{item.updatedAt}, #{item.createTime}, #{item.sourceType}, #{item.rewardTimes},
#{item.settleState}, #{item.goodsId}, #{item.title}, #{item.orderType}, #{item.orderSn}, #{item.settleState}, #{item.goodsId}, #{item.title}, #{item.orderType}, #{item.orderSn},
#{item.subOrderSn}, #{item.allMoneyOri}, #{item.ratioAll}, #{item.isShowOnClient}, #{item.subOrderSn}, #{item.allMoneyOri}, #{item.ratioAll}, #{item.isShowOnClient},
#{item.techFeeRate}, #{item.settleTime}, #{item.settleInAdvance}) #{item.techFeeRate}, #{item.settleTime}, #{item.invalidTime}, #{item.settleInAdvance},
#{item.tailOrderSn}, #{item.depositeTailRate})
</foreach> </foreach>
</insert> </insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.PartnerReward" useGeneratedKeys="true"> <insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.PartnerReward" useGeneratedKeys="true">
...@@ -289,7 +309,10 @@ ...@@ -289,7 +309,10 @@
is_show_on_client, is_show_on_client,
tech_fee_rate, tech_fee_rate,
settle_time, settle_time,
invalid_time,
settle_in_advance, settle_in_advance,
tail_order_sn,
deposite_tail_rate,
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -329,7 +352,10 @@ ...@@ -329,7 +352,10 @@
#{isShowOnClient}, #{isShowOnClient},
#{techFeeRate}, #{techFeeRate},
#{settleTime}, #{settleTime},
#{invalidTime},
#{settleInAdvance}, #{settleInAdvance},
#{tailOrderSn},
#{depositeTailRate},
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -369,7 +395,10 @@ ...@@ -369,7 +395,10 @@
is_show_on_client = #{isShowOnClient}, is_show_on_client = #{isShowOnClient},
tech_fee_rate = #{techFeeRate}, tech_fee_rate = #{techFeeRate},
settle_time = #{settleTime}, settle_time = #{settleTime},
invalid_time = #{invalidTime},
settle_in_advance = #{settleInAdvance}, settle_in_advance = #{settleInAdvance},
tail_order_sn = #{tailOrderSn},
deposite_tail_rate = #{depositeTailRate},
</trim> </trim>
</insert> </insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.PartnerReward" useGeneratedKeys="true"> <insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.PartnerReward" useGeneratedKeys="true">
...@@ -478,9 +507,18 @@ ...@@ -478,9 +507,18 @@
<if test="settleTime != null"> <if test="settleTime != null">
settle_time, settle_time,
</if> </if>
<if test="invalidTime != null">
invalid_time,
</if>
<if test="settleInAdvance != null"> <if test="settleInAdvance != null">
settle_in_advance, settle_in_advance,
</if> </if>
<if test="tailOrderSn != null">
tail_order_sn,
</if>
<if test="depositeTailRate != null">
deposite_tail_rate,
</if>
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -586,9 +624,18 @@ ...@@ -586,9 +624,18 @@
<if test="settleTime != null"> <if test="settleTime != null">
#{settleTime}, #{settleTime},
</if> </if>
<if test="invalidTime != null">
#{invalidTime},
</if>
<if test="settleInAdvance != null"> <if test="settleInAdvance != null">
#{settleInAdvance}, #{settleInAdvance},
</if> </if>
<if test="tailOrderSn != null">
#{tailOrderSn},
</if>
<if test="depositeTailRate != null">
#{depositeTailRate},
</if>
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -694,9 +741,18 @@ ...@@ -694,9 +741,18 @@
<if test="settleTime != null"> <if test="settleTime != null">
settle_time = #{settleTime}, settle_time = #{settleTime},
</if> </if>
<if test="invalidTime != null">
invalid_time = #{invalidTime},
</if>
<if test="settleInAdvance != null"> <if test="settleInAdvance != null">
settle_in_advance = #{settleInAdvance}, settle_in_advance = #{settleInAdvance},
</if> </if>
<if test="tailOrderSn != null">
tail_order_sn = #{tailOrderSn},
</if>
<if test="depositeTailRate != null">
deposite_tail_rate = #{depositeTailRate},
</if>
</trim> </trim>
</insert> </insert>
<select id="selectOrderRewardPageByTs" resultType="com.lanren.huhu.partner.domain.PartnerReward"> <select id="selectOrderRewardPageByTs" resultType="com.lanren.huhu.partner.domain.PartnerReward">
...@@ -735,7 +791,10 @@ ...@@ -735,7 +791,10 @@
is_show_on_client, is_show_on_client,
tech_fee_rate, tech_fee_rate,
settle_time, settle_time,
settle_in_advance invalid_time,
settle_in_advance,
tail_order_sn,
deposite_tail_rate
FROM partner_reward FROM partner_reward
WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100 AND reward_status = 100
...@@ -779,7 +838,10 @@ ...@@ -779,7 +838,10 @@
is_show_on_client, is_show_on_client,
tech_fee_rate, tech_fee_rate,
settle_time, settle_time,
settle_in_advance invalid_time,
settle_in_advance,
tail_order_sn,
deposite_tail_rate
FROM partner_reward FROM partner_reward
WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) WHERE settle_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100 AND reward_status = 100
...@@ -793,7 +855,7 @@ ...@@ -793,7 +855,7 @@
user_id, user_id,
SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount ELSE 0 END) - SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount ELSE 0 END) -
SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
WHEN reward_type IN (110, 120) AND tech_fee_rate > 0 THEN all_money_ori * tech_fee_rate WHEN reward_type IN (110, 120) AND tech_fee_rate &gt; 0 THEN all_money_ori * tech_fee_rate
ELSE 0 ELSE 0
END) sum_order_commission, END) sum_order_commission,
SUM(CASE WHEN reward_type=60 THEN commission_acount ELSE 0 END) - SUM(CASE WHEN reward_type=60 THEN commission_acount ELSE 0 END) -
...@@ -803,7 +865,7 @@ ...@@ -803,7 +865,7 @@
SUM(CASE WHEN recharge_time &lt; '2019-08-16 12:03:50' AND reward_type IN (60) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END SUM(CASE WHEN recharge_time &lt; '2019-08-16 12:03:50' AND reward_type IN (60) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
ELSE 0 END) tech_charge_redpack, ELSE 0 END) tech_charge_redpack,
SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
WHEN reward_type IN (110, 120) AND tech_fee_rate > 0 THEN all_money_ori * tech_fee_rate WHEN reward_type IN (110, 120) AND tech_fee_rate &gt; 0 THEN all_money_ori * tech_fee_rate
ELSE 0 ELSE 0
END) tech_charge_order, END) tech_charge_order,
0 wx_income, 0 wx_income,
...@@ -835,7 +897,7 @@ ...@@ -835,7 +897,7 @@
user_id, user_id,
SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount ELSE 0 END) - SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount ELSE 0 END) -
SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
WHEN reward_type IN (110, 120) AND tech_fee_rate > 0 THEN all_money_ori * tech_fee_rate WHEN reward_type IN (110, 120) AND tech_fee_rate &gt; 0 THEN all_money_ori * tech_fee_rate
ELSE 0 ELSE 0
END) sum_order_commission, END) sum_order_commission,
SUM(CASE WHEN reward_type=60 THEN commission_acount ELSE 0 END) - SUM(CASE WHEN reward_type=60 THEN commission_acount ELSE 0 END) -
...@@ -845,7 +907,7 @@ ...@@ -845,7 +907,7 @@
SUM(CASE WHEN recharge_time &lt; '2019-08-16 12:03:50' AND reward_type IN (60) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END SUM(CASE WHEN recharge_time &lt; '2019-08-16 12:03:50' AND reward_type IN (60) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
ELSE 0 END) tech_charge_redpack, ELSE 0 END) tech_charge_redpack,
SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END SUM(CASE WHEN reward_type IN (110, 120) AND recharge_time &lt; '2019-08-16 12:03:50' THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
WHEN reward_type IN (110, 120) AND tech_fee_rate > 0 THEN all_money_ori * tech_fee_rate WHEN reward_type IN (110, 120) AND tech_fee_rate &gt; 0 THEN all_money_ori * tech_fee_rate
ELSE 0 ELSE 0
END) tech_charge_order, END) tech_charge_order,
0 wx_income, 0 wx_income,
...@@ -883,7 +945,7 @@ ...@@ -883,7 +945,7 @@
AND reward_type != 130 AND reward_type != 130
AND settle_in_advance = 0 AND settle_in_advance = 0
</update> </update>
<!--&lt;select id="getPartnerSummaryContentByUidAndTime" resultType="com.lanren.huhu.partner.model.PartnerSummaryContent"&gt;--> <!--&amp;amp;lt;select id="getPartnerSummaryContentByUidAndTime" resultType="com.lanren.huhu.partner.model.PartnerSummaryContent"&amp;amp;gt;-->
<!--SELECT--> <!--SELECT-->
<!--SUM(if(reward_type=60 AND is_show_on_client=1, commission_acount, 0)) AS cash,--> <!--SUM(if(reward_type=60 AND is_show_on_client=1, commission_acount, 0)) AS cash,-->
<!--COUNT(reward_type=60 OR NULL) AS num,--> <!--COUNT(reward_type=60 OR NULL) AS num,-->
...@@ -901,5 +963,5 @@ ...@@ -901,5 +963,5 @@
<!--AND reward_status=120--> <!--AND reward_status=120-->
<!--AND reward_type != 130--> <!--AND reward_type != 130-->
<!--AND user_id=#{userId}--> <!--AND user_id=#{userId}-->
<!--&lt;/select&gt;--> <!--&amp;amp;lt;/select&amp;amp;gt;-->
</mapper> </mapper>
\ No newline at end of file
...@@ -248,3 +248,137 @@ where settle_time>='2019-09-01 00:00:00' ...@@ -248,3 +248,137 @@ where settle_time>='2019-09-01 00:00:00'
and ratio_all like '%0.03]' and ratio_all like '%0.03]'
and ratio_all not like ',0.03]' and ratio_all not like ',0.03]'
and ratio_all='["1","0.04500000","0.01"0.03]'; and ratio_all='["1","0.04500000","0.01"0.03]';
结算前洗数据
ALTER TABLE `huhu_finance`.`agent_reward`
ADD COLUMN `tail_order_sn` varchar(64) NULL DEFAULT '' COMMENT '二次激活订单号' AFTER `invalid_time`;
ALTER TABLE `huhu_finance`.`agent_reward`
ADD COLUMN `deposite_tail_rate` decimal(11, 8) NULL DEFAULT 0 COMMENT '二次激活订单 定金和尾款订单 的 分成比例' AFTER `tail_order_sn`;
ALTER TABLE `huhu_finance`.`partner_reward`
ADD COLUMN `tail_order_sn` varchar(64) NULL DEFAULT '' COMMENT '二次激活订单号' AFTER `settle_in_advance`;
ALTER TABLE `huhu_finance`.`partner_reward`
ADD COLUMN `deposite_tail_rate` decimal(11, 8) NULL DEFAULT 0 COMMENT '二次激活订单 定金和尾款订单 的 分成比例' AFTER `tail_order_sn`;
ALTER TABLE `huhu_finance`.`agent_reward`
ADD INDEX `idx_ref`(`reference_id`) USING BTREE;
create table update_partner_agent_tail_order_reward(
type varchar(12),
order_type varchar(32),
order_sn varchar(64),
tail_order_sn varchar(64),
order_id varchar(32),
cnt_tail_order_sn int(11),
all_money decimal(20,6),
sum_all_money decimal(20,6),
deposite_tail_rate decimal(11,8)
);
ALTER TABLE `huhu_finance`.`update_partner_agent_tail_order_reward`
ADD PRIMARY KEY (`type`, `order_type`, `order_sn`, `tail_order_sn`, `order_id`);
INSERT INTO update_partner_agent_tail_order_reward(type,order_type,order_sn,tail_order_sn,order_id,all_money)
SELECT
DISTINCT
'partner',
a.order_type,
a.order_sn,
b.tail_order_sn_,
a.reference_id,
a.all_money_ori
FROM partner_reward a
JOIN
(SELECT
order_id,
max(REPLACE(order_sn,CONCAT(SUBSTRING_INDEX(order_sn,'_',1),'_'),'')) order_sn_,
max(type) order_type_,
max(order_sn) tail_order_sn_
FROM orders_active
WHERE order_sn like '%\_%' and settle_time between '2019-11-01 00:00:00' and '2019-11-30 23:59:59'
GROUP BY 1
) b on a.reference_id=b.order_id
WHERE a.reward_type=110 and a.settle_time between '2019-11-01 00:00:00' and '2019-11-30 23:59:59';
INSERT INTO update_partner_agent_tail_order_reward(type,order_type,order_sn,tail_order_sn,order_id,all_money)
SELECT
DISTINCT
'partner',
a.order_type,
a.order_sn,
'' tail_order_sn_,
a.reference_id,
a.all_money_ori
FROM partner_reward a
JOIN update_partner_agent_tail_order_reward b on a.reward_type=110 and a.order_type=b.order_type and a.order_sn=b.order_sn and b.type='partner'
WHERE a.reference_id<>b.order_id;
INSERT INTO update_partner_agent_tail_order_reward(type,order_type,order_sn,tail_order_sn,order_id,all_money)
SELECT
DISTINCT
'agent',
a.order_type,
a.order_sn,
b.tail_order_sn_,
a.reference_id,
a.all_money_ori
FROM agent_reward a
JOIN
(SELECT
order_id,
max(REPLACE(order_sn,CONCAT(SUBSTRING_INDEX(order_sn,'_',1),'_'),'')) order_sn_,
max(type) order_type_,
max(order_sn) tail_order_sn_
FROM orders_active
WHERE order_sn like '%\_%' and settle_time between '2019-11-01 00:00:00' and '2019-11-30 23:59:59'
GROUP BY 1
) b on a.reference_id=b.order_id
WHERE a.reward_type in (300,750) and a.settle_time between '2019-11-01 00:00:00' and '2019-11-30 23:59:59';
INSERT INTO update_partner_agent_tail_order_reward(type,order_type,order_sn,tail_order_sn,order_id,all_money)
SELECT
DISTINCT
'agent',
a.order_type,
a.order_sn,
'' tail_order_sn_,
a.reference_id,
a.all_money_ori
FROM agent_reward a
JOIN update_partner_agent_tail_order_reward b on a.reward_type in (300,750) and a.order_type=b.order_type and a.order_sn=b.order_sn and b.type='agent'
WHERE a.reference_id<>b.order_id;
UPDATE update_partner_agent_tail_order_reward a
JOIN
(SELECT
type,
order_type,
order_sn,
count(distinct tail_order_sn) cnt_tail_order_sn_,
sum(all_money) sum_all_money_
FROM update_partner_agent_tail_order_reward
GROUP BY 1,2,3
) b on a.type=b.type and a.order_type=b.order_type and a.order_sn=b.order_sn
SET a.cnt_tail_order_sn=b.cnt_tail_order_sn_,a.sum_all_money=b.sum_all_money_;
DELETE FROM update_partner_agent_tail_order_reward WHERE cnt_tail_order_sn=1;
UPDATE update_partner_agent_tail_order_reward SET deposite_tail_rate=all_money/sum_all_money;
UPDATE partner_reward a
JOIN update_partner_agent_tail_order_reward b on a.reward_type=110 and a.reference_id=b.order_id
SET a.tail_order_sn=b.tail_order_sn,a.deposite_tail_rate=b.deposite_tail_rate;
UPDATE agent_reward a
JOIN update_partner_agent_tail_order_reward b on a.reward_type in (300,750) and a.reference_id=b.order_id
SET a.tail_order_sn=b.tail_order_sn,a.deposite_tail_rate=b.deposite_tail_rate;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment