Commit 1a9bd326 by guanchen

添加逻辑处理 重复发送的revoke记录, 如果存在120的revoke 不再做处理

revoke添加settle_time字段
parent a8770582
...@@ -2,10 +2,11 @@ package com.lanren.huhu.partner.dao; ...@@ -2,10 +2,11 @@ package com.lanren.huhu.partner.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lanren.huhu.partner.domain.AgentRevokeRecords; import com.lanren.huhu.partner.domain.AgentRevokeRecords;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper @Mapper
public interface AgentRevokeRecordsMapper extends BaseMapper<AgentRevokeRecords> { public interface AgentRevokeRecordsMapper extends BaseMapper<AgentRevokeRecords> {
int updateBatch(List<AgentRevokeRecords> list); int updateBatch(List<AgentRevokeRecords> list);
...@@ -15,4 +16,6 @@ public interface AgentRevokeRecordsMapper extends BaseMapper<AgentRevokeRecords> ...@@ -15,4 +16,6 @@ public interface AgentRevokeRecordsMapper extends BaseMapper<AgentRevokeRecords>
int insertOrUpdate(AgentRevokeRecords record); int insertOrUpdate(AgentRevokeRecords record);
int insertOrUpdateSelective(AgentRevokeRecords record); int insertOrUpdateSelective(AgentRevokeRecords record);
int getSuccessExisting(String refId, Integer revokeType);
} }
\ No newline at end of file
...@@ -8,7 +8,6 @@ import lombok.Data; ...@@ -8,7 +8,6 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
@Data @Data
...@@ -39,7 +38,7 @@ public class AgentReward implements Serializable { ...@@ -39,7 +38,7 @@ public class AgentReward implements Serializable {
private Integer userId; private Integer userId;
/** /**
* 奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员 60 分享赚 300 自购省 * 奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员 60 分享赚 300 自购省 得的购买年-VIP; 720 城市代理商所得的购买半年-VIP; 730 城市代理商所得的购买超级VIP收益; 740 城市代理商的红包收益; 750 城市代理商的自购省收益; 760 城市代理商的分享赚收益
*/ */
@TableField(value = "reward_type") @TableField(value = "reward_type")
private Integer rewardType; private Integer rewardType;
...@@ -189,7 +188,7 @@ public class AgentReward implements Serializable { ...@@ -189,7 +188,7 @@ public class AgentReward implements Serializable {
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_time") @TableField(value = "create_time")
private LocalDateTime createTime; private Date createTime;
/** /**
* 来源基础金额 * 来源基础金额
...@@ -203,6 +202,18 @@ public class AgentReward implements Serializable { ...@@ -203,6 +202,18 @@ public class AgentReward implements Serializable {
@TableField(value = "ratio_all") @TableField(value = "ratio_all")
private String ratioAll; private String ratioAll;
/**
* 结算奖励的时间: 淘宝客/京东联盟为确认收货时间, 其他类型奖励同于recharge_time
*/
@TableField(value = "settle_time")
private Date settleTime;
/**
* 是否提前结算: 1是,0否
*/
@TableField(value = "settle_in_advance")
private Integer settleInAdvance;
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";
...@@ -268,4 +279,8 @@ public class AgentReward implements Serializable { ...@@ -268,4 +279,8 @@ public class AgentReward implements Serializable {
public static final String COL_ALL_MONEY_ORI = "all_money_ori"; public static final String COL_ALL_MONEY_ORI = "all_money_ori";
public static final String COL_RATIO_ALL = "ratio_all"; public static final String COL_RATIO_ALL = "ratio_all";
public static final String COL_SETTLE_TIME = "settle_time";
public static final String COL_SETTLE_IN_ADVANCE = "settle_in_advance";
} }
\ No newline at end of file
...@@ -15,6 +15,7 @@ import org.springframework.transaction.TransactionStatus; ...@@ -15,6 +15,7 @@ import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import static com.lanren.huhu.partner.constants.Constants.*; import static com.lanren.huhu.partner.constants.Constants.*;
...@@ -76,6 +77,16 @@ public class RevokeAgentRewardTask { ...@@ -76,6 +77,16 @@ public class RevokeAgentRewardTask {
return; return;
} }
/** /**
* 如果存在已成功扣除的记录
* 不再重复处理, 写190
*/
int existingCnt = agentRevokeRecordsService.getSuccessExisting(revokeRecord.getRefId(), revokeRecord.getRevokeType());
if (existingCnt > 0) {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
agentRevokeRecordsService.updateById(revokeRecord);
return;
}
/**
* 开启事务 * 开启事务
*/ */
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
...@@ -95,9 +106,11 @@ public class RevokeAgentRewardTask { ...@@ -95,9 +106,11 @@ public class RevokeAgentRewardTask {
*/ */
if (null != agentRewardList && agentRewardList.size() > 0) { if (null != agentRewardList && agentRewardList.size() > 0) {
for (AgentReward agentReward : agentRewardList) { for (AgentReward agentReward : agentRewardList) {
if (agentReward.getSettleState() == SETTLE_STATE_DONE) { if (agentReward.getSettleState() == SETTLE_STATE_DONE &&
agentReward.getAmount().compareTo(BigDecimal.ZERO) > 0) {
agentReward.setAmount(agentReward.getAmount().negate()); agentReward.setAmount(agentReward.getAmount().negate());
agentReward.setCommission(agentReward.getCommission().negate()); agentReward.setCommission(agentReward.getAmount().negate());
agentReward.setSettleTime(new Date());
insertList.add(agentReward); insertList.add(agentReward);
} else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) { } else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) {
agentReward.setAmount(new BigDecimal(0)); agentReward.setAmount(new BigDecimal(0));
......
...@@ -23,4 +23,6 @@ public interface AgentRevokeRecordsService extends IService<AgentRevokeRecords>{ ...@@ -23,4 +23,6 @@ public interface AgentRevokeRecordsService extends IService<AgentRevokeRecords>{
int insertOrUpdateSelective(AgentRevokeRecords record); int insertOrUpdateSelective(AgentRevokeRecords record);
List<AgentRevokeRecords> getAllPending(); List<AgentRevokeRecords> getAllPending();
int getSuccessExisting(String refId, Integer revokeType);
} }
...@@ -43,4 +43,9 @@ public class AgentRevokeRecordsServiceImpl extends ServiceImpl<AgentRevokeRecord ...@@ -43,4 +43,9 @@ public class AgentRevokeRecordsServiceImpl extends ServiceImpl<AgentRevokeRecord
wrapper.eq("state", REVOKE_STATE_PENDING).orderByAsc("updated_at"); wrapper.eq("state", REVOKE_STATE_PENDING).orderByAsc("updated_at");
return baseMapper.selectList(wrapper); return baseMapper.selectList(wrapper);
} }
@Override
public int getSuccessExisting(String refId, Integer revokeType) {
return baseMapper.getSuccessExisting(refId, revokeType);
}
} }
...@@ -92,3 +92,4 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent ...@@ -92,3 +92,4 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent
...@@ -254,4 +254,9 @@ ...@@ -254,4 +254,9 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<select id="getSuccessExisting" resultType="int">
SELECT count(*)
FROM agent_revoke_records
WHERE state=120 and ref_id=#{refId} and revoke_type=#{revokeType}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
<result column="create_time" property="createTime" /> <result column="create_time" property="createTime" />
<result column="all_money_ori" property="allMoneyOri" /> <result column="all_money_ori" property="allMoneyOri" />
<result column="ratio_all" property="ratioAll" /> <result column="ratio_all" property="ratioAll" />
<result column="settle_time" property="settleTime" />
<result column="settle_in_advance" property="settleInAdvance" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -43,7 +45,8 @@ ...@@ -43,7 +45,8 @@
reward_remark, reward_status, money, amount, cash_code, recharge_time, commission_acount, reward_remark, reward_status, money, amount, cash_code, recharge_time, commission_acount,
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 created_at, updated_at, deleted_at, create_time, all_money_ori, ratio_all, settle_time,
settle_in_advance
</sql> </sql>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -209,6 +212,16 @@ ...@@ -209,6 +212,16 @@
when id = #{item.id} then #{item.ratioAll} when id = #{item.id} then #{item.ratioAll}
</foreach> </foreach>
</trim> </trim>
<trim prefix="settle_time = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.settleTime}
</foreach>
</trim>
<trim prefix="settle_in_advance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.settleInAdvance}
</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=", ">
...@@ -222,7 +235,8 @@ ...@@ -222,7 +235,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) updated_at, deleted_at, create_time, all_money_ori, ratio_all, settle_time, settle_in_advance
)
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},
...@@ -232,7 +246,7 @@ ...@@ -232,7 +246,7 @@
#{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.ratioAll}, #{item.settleTime}, #{item.settleInAdvance})
</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">
...@@ -274,6 +288,8 @@ ...@@ -274,6 +288,8 @@
create_time, create_time,
all_money_ori, all_money_ori,
ratio_all, ratio_all,
settle_time,
settle_in_advance,
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -312,6 +328,8 @@ ...@@ -312,6 +328,8 @@
#{createTime}, #{createTime},
#{allMoneyOri}, #{allMoneyOri},
#{ratioAll}, #{ratioAll},
#{settleTime},
#{settleInAdvance},
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -350,6 +368,8 @@ ...@@ -350,6 +368,8 @@
create_time = #{createTime}, create_time = #{createTime},
all_money_ori = #{allMoneyOri}, all_money_ori = #{allMoneyOri},
ratio_all = #{ratioAll}, ratio_all = #{ratioAll},
settle_time = #{settleTime},
settle_in_advance = #{settleInAdvance},
</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">
...@@ -455,6 +475,12 @@ ...@@ -455,6 +475,12 @@
<if test="ratioAll != null"> <if test="ratioAll != null">
ratio_all, ratio_all,
</if> </if>
<if test="settleTime != null">
settle_time,
</if>
<if test="settleInAdvance != null">
settle_in_advance,
</if>
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -557,6 +583,12 @@ ...@@ -557,6 +583,12 @@
<if test="ratioAll != null"> <if test="ratioAll != null">
#{ratioAll}, #{ratioAll},
</if> </if>
<if test="settleTime != null">
#{settleTime},
</if>
<if test="settleInAdvance != null">
#{settleInAdvance},
</if>
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -659,6 +691,12 @@ ...@@ -659,6 +691,12 @@
<if test="ratioAll != null"> <if test="ratioAll != null">
ratio_all = #{ratioAll}, ratio_all = #{ratioAll},
</if> </if>
<if test="settleTime != null">
settle_time = #{settleTime},
</if>
<if test="settleInAdvance != null">
settle_in_advance = #{settleInAdvance},
</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">
...@@ -871,7 +909,7 @@ ...@@ -871,7 +909,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 else settle_state end SET reward_status=120, settle_state=case when settle_state&gt;=0 then 300 else settle_state end
WHERE recharge_time WHERE recharge_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}
......
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