Commit 228eadd4 by guanchen

添加代理商结算

parent da2cdfa8
...@@ -123,6 +123,12 @@ public class Constants { ...@@ -123,6 +123,12 @@ public class Constants {
public static final int PARTNER_ACCOUNT_LOG_TYPE_TAX = 70; public static final int PARTNER_ACCOUNT_LOG_TYPE_TAX = 70;
public static final String PARTNER_ACCOUNT_LOG_TYPE_TAX_REMARK = "代扣个人所得税"; public static final String PARTNER_ACCOUNT_LOG_TYPE_TAX_REMARK = "代扣个人所得税";
/**
* 代理商奖励类型
*/
public static final int AGENT_REWARD_TYPE_PURCHASE = 300;
public static final int AGENT_REWARD_TYPE_SHARE = 60;
static { static {
/** /**
* 代理商平推奖励比例配置 * 代理商平推奖励比例配置
......
...@@ -66,4 +66,14 @@ public class AgentController { ...@@ -66,4 +66,14 @@ public class AgentController {
result.setData("异步,正在执行刷新......"); result.setData("异步,正在执行刷新......");
return result; return result;
} }
/**
* 测试使用 结算单个代理商
*/
@RequestMapping(value = "/finance", method = RequestMethod.POST)
public Result<String> doFinanceSettle(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("doFinanceSettle userId:{},header:{},time:{}", agent.getAgentId(), headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.doFinanceSettle(agent.getAgentId());
}
} }
package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.manager.PartnerManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import javax.validation.Valid;import java.time.LocalDateTime; /** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerManager partnerManager; @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<PartnerResponse> getPartnerLevel(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.getPartnerLevel(partner.getUserId()); } /** * 测试使用 结算单个用户 */ @RequestMapping(value = "/finance", method = RequestMethod.POST) public Result<PartnerResponse> doFinanceSettle(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("doFinanceSettle userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.doFinanceSettle(partner.getUserId()); }} package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.manager.PartnerManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import javax.validation.Valid;import java.time.LocalDateTime; /** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerManager partnerManager; @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<PartnerResponse> getPartnerLevel(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.getPartnerLevel(partner.getUserId()); } /** * 测试使用 结算单个用户 */ @RequestMapping(value = "/finance", method = RequestMethod.POST) public Result<String> doFinanceSettle(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("doFinanceSettle userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.doFinanceSettle(partner.getUserId()); }}
\ No newline at end of file \ No newline at end of file
......
package com.lanren.huhu.partner.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lanren.huhu.partner.domain.AgentAccount;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface AgentAccountMapper extends BaseMapper<AgentAccount> {
int updateBatch(List<AgentAccount> list);
int batchInsert(@Param("list") List<AgentAccount> list);
int insertOrUpdate(AgentAccount record);
int insertOrUpdateSelective(AgentAccount record);
AgentAccount getOneByUserIdForUpdate(Integer agentId);
}
\ No newline at end of file
...@@ -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.AgentIncomeSummary; import com.lanren.huhu.partner.domain.AgentIncomeSummary;
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 AgentIncomeSummaryMapper extends BaseMapper<AgentIncomeSummary> { public interface AgentIncomeSummaryMapper extends BaseMapper<AgentIncomeSummary> {
int updateBatch(List<AgentIncomeSummary> list); int updateBatch(List<AgentIncomeSummary> list);
......
package com.lanren.huhu.partner.dao; package com.lanren.huhu.partner.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanren.huhu.partner.domain.AgentReward; import com.lanren.huhu.partner.domain.AgentReward;
import java.util.List; import com.lanren.huhu.partner.model.AgentSettle;
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 AgentRewardMapper extends BaseMapper<AgentReward> { public interface AgentRewardMapper extends BaseMapper<AgentReward> {
int updateBatch(List<AgentReward> list); int updateBatch(List<AgentReward> list);
...@@ -15,4 +19,14 @@ public interface AgentRewardMapper extends BaseMapper<AgentReward> { ...@@ -15,4 +19,14 @@ public interface AgentRewardMapper extends BaseMapper<AgentReward> {
int insertOrUpdate(AgentReward record); int insertOrUpdate(AgentReward record);
int insertOrUpdateSelective(AgentReward record); int insertOrUpdateSelective(AgentReward record);
IPage<AgentSettle> selectAgentSettlePageByTs(Page<AgentSettle> page, long beginTs, long endTs);
AgentSettle selectAgentSettleByTsAndAgentId(long beginTs, long endTs, Integer agentId);
IPage<AgentReward> selectOrderRewardPageByTs(Page<AgentReward> page, long beginTs, long endTs);
IPage<AgentReward> selectOrderRewardPageByTsAndAgentId(Page<AgentReward> page, long beginTs, long endTs, int agentId);
int updateRewardStatusByAgentIdAndTs(int agentId, long beginTs, long endTs);
} }
\ No newline at end of file
package com.lanren.huhu.partner.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;
@Data
@TableName(value = "agent_account")
public class AgentAccount implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 关联用户id
*/
@TableField(value = "user_id")
private Integer userId;
/**
* 代理商id
*/
@TableField(value = "agent_id")
private Integer agentId;
/**
* 账户类型 10开头现金账户 其他带添加
*/
@TableField(value = "account_type")
private Integer accountType;
/**
* 账户总额
*/
@TableField(value = "balance")
private BigDecimal balance;
/**
* 冻结余额
*/
@TableField(value = "frozen_balance")
private BigDecimal frozenBalance;
/**
* 收入冻结
*/
@TableField(value = "income_freeze")
private BigDecimal incomeFreeze;
/**
* 出款冻结
*/
@TableField(value = "pay_freeze")
private BigDecimal payFreeze;
/**
* 可用余额
*/
@TableField(value = "free_balance")
private BigDecimal freeBalance;
/**
* 账户收入总额
*/
@TableField(value = "income_balance")
private BigDecimal incomeBalance;
/**
* 在线充值收入
*/
@TableField(value = "recharge_income")
private BigDecimal rechargeIncome;
/**
* 账户开卡收入
*/
@TableField(value = "opencard_income")
private BigDecimal opencardIncome;
@TableField(value = "created_at")
private Long createdAt;
@TableField(value = "updated_at")
private Long updatedAt;
@TableField(value = "deleted_at")
private Long deletedAt;
/**
* 提现总额
*/
@TableField(value = "withdraw_balance")
private BigDecimal withdrawBalance;
/**
* 消费总额
*/
@TableField(value = "consume_balance")
private BigDecimal consumeBalance;
/**
* 版本号
*/
@TableField(value = "account_version")
private Long accountVersion;
/**
* 状态 100默认正常 99禁用
*/
@TableField(value = "account_status")
private Integer accountStatus;
/**
* 创建时间戳
*/
@TableField(value = "create_time")
private LocalDateTime createTime;
private static final long serialVersionUID = 1L;
public static final String COL_USER_ID = "user_id";
public static final String COL_AGENT_ID = "agent_id";
public static final String COL_ACCOUNT_TYPE = "account_type";
public static final String COL_BALANCE = "balance";
public static final String COL_FROZEN_BALANCE = "frozen_balance";
public static final String COL_INCOME_FREEZE = "income_freeze";
public static final String COL_PAY_FREEZE = "pay_freeze";
public static final String COL_FREE_BALANCE = "free_balance";
public static final String COL_INCOME_BALANCE = "income_balance";
public static final String COL_RECHARGE_INCOME = "recharge_income";
public static final String COL_OPENCARD_INCOME = "opencard_income";
public static final String COL_CREATED_AT = "created_at";
public static final String COL_UPDATED_AT = "updated_at";
public static final String COL_DELETED_AT = "deleted_at";
public static final String COL_WITHDRAW_BALANCE = "withdraw_balance";
public static final String COL_CONSUME_BALANCE = "consume_balance";
public static final String COL_ACCOUNT_VERSION = "account_version";
public static final String COL_ACCOUNT_STATUS = "account_status";
public static final String COL_CREATE_TIME = "create_time";
}
\ No newline at end of file
...@@ -12,7 +12,7 @@ import lombok.Data; ...@@ -12,7 +12,7 @@ import lombok.Data;
@Data @Data
@TableName(value = "agent_account_log") @TableName(value = "agent_account_log")
public class AgentAccountLog implements Serializable { public class AgentAccountLog implements Serializable {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
/** /**
...@@ -88,7 +88,7 @@ public class AgentAccountLog implements Serializable { ...@@ -88,7 +88,7 @@ public class AgentAccountLog implements Serializable {
private Boolean payType; private Boolean payType;
/** /**
* 类型描述 与pay_type 对应 * 类型描述 与pay_type 对应
*/ */
@TableField(value = "pay_remark") @TableField(value = "pay_remark")
private String payRemark; private String payRemark;
...@@ -111,6 +111,12 @@ public class AgentAccountLog implements Serializable { ...@@ -111,6 +111,12 @@ public class AgentAccountLog implements Serializable {
@TableField(value = "modify_time") @TableField(value = "modify_time")
private LocalDateTime modifyTime; private LocalDateTime modifyTime;
/**
* 变更前的快照
*/
@TableField(value = "snapshot")
private String snapshot;
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";
...@@ -146,4 +152,6 @@ public class AgentAccountLog implements Serializable { ...@@ -146,4 +152,6 @@ public class AgentAccountLog implements Serializable {
public static final String COL_CREATE_TIME = "create_time"; public static final String COL_CREATE_TIME = "create_time";
public static final String COL_MODIFY_TIME = "modify_time"; public static final String COL_MODIFY_TIME = "modify_time";
public static final String COL_SNAPSHOT = "snapshot";
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import lombok.Data; ...@@ -9,6 +9,7 @@ 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.time.LocalDateTime;
import java.util.Date;
@Data @Data
@TableName(value = "agent_reward") @TableName(value = "agent_reward")
...@@ -89,7 +90,7 @@ public class AgentReward implements Serializable { ...@@ -89,7 +90,7 @@ public class AgentReward implements Serializable {
* 用户充值时间 * 用户充值时间
*/ */
@TableField(value = "recharge_time") @TableField(value = "recharge_time")
private LocalDateTime rechargeTime; private Date rechargeTime;
/** /**
* 可分红总额 * 可分红总额
......
...@@ -6,6 +6,7 @@ import com.lanren.huhu.partner.model.AgentResponse; ...@@ -6,6 +6,7 @@ import com.lanren.huhu.partner.model.AgentResponse;
import com.lanren.huhu.partner.model.AgentRewardMessage; import com.lanren.huhu.partner.model.AgentRewardMessage;
import com.lanren.huhu.partner.model.ParentAgent; import com.lanren.huhu.partner.model.ParentAgent;
import com.lanren.huhu.partner.result.Result; import com.lanren.huhu.partner.result.Result;
import com.lanren.huhu.partner.schedule.AgentSettleTask;
import com.lanren.huhu.partner.service.UserAgentService; import com.lanren.huhu.partner.service.UserAgentService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -31,6 +32,8 @@ public class AgentManager { ...@@ -31,6 +32,8 @@ public class AgentManager {
UserAgentService userAgentService; UserAgentService userAgentService;
@Autowired @Autowired
StringRedisTemplate redisTemplate; StringRedisTemplate redisTemplate;
@Autowired
AgentSettleTask agentSettleTask;
/*** /***
* * 获取代理商等级 1 总代, 2 大区, 3 省, 4 市 * * 获取代理商等级 1 总代, 2 大区, 3 省, 4 市
...@@ -98,4 +101,14 @@ public class AgentManager { ...@@ -98,4 +101,14 @@ public class AgentManager {
result.setData(parentAgents); result.setData(parentAgents);
return result; return result;
} }
public Result<String> doFinanceSettle(int agentId) {
Result<String> result = new Result<String>();
if (agentSettleTask.doOneAgentSettle(agentId)) {
result.setCode(200);
} else {
result.setCode(500);
}
return result;
}
} }
package com.lanren.huhu.partner.manager; import com.lanren.huhu.partner.domain.PartnerAccount;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import com.lanren.huhu.partner.schedule.PartnerSettleTask;import com.lanren.huhu.partner.service.PartnerAccountService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */@Componentpublic class PartnerManager { private static Logger logger = LoggerFactory.getLogger(PartnerManager.class); @Autowired private PartnerAccountService partnerAccountService; @Autowired private PartnerSettleTask partnerSettleTask; /*** * 获取合伙人账户信息 * @param userId * @return */ public Result<PartnerAccount> findByUserId(Integer userId) { Result<PartnerAccount> result = new Result<>(); if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager findByUserId userId:{},time:{}", userId, LocalDateTime.now()); } PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); result.setData(partnerAccount); return result; } /*** * 获取合伙人等级 10 普通, 20 高级, 30 超级 * @param userId * @return */ public Result<PartnerResponse> getPartnerLevel(Integer userId) { if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager getPartnerLevel userId:{},time:{}", userId, LocalDateTime.now()); } Result<PartnerResponse> result = new Result<>(); PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); if (null != partnerAccount) { int partnerLevel; if (partnerAccount.getIsSuperPartner() == 1) { partnerLevel = 30; } else { partnerLevel = partnerAccount.getPartnerLevel(); } result.setData(new PartnerResponse(partnerLevel)); } else { result.setCode(601); } return result; } public Result<PartnerResponse> doFinanceSettle(int userId) { Result<PartnerResponse> result = new Result<>(); if (partnerSettleTask.doOneUserSettle(userId)) { result.setCode(200); } else { result.setCode(500); } return result; }} package com.lanren.huhu.partner.manager; import com.lanren.huhu.partner.domain.PartnerAccount;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import com.lanren.huhu.partner.schedule.PartnerSettleTask;import com.lanren.huhu.partner.service.PartnerAccountService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */@Componentpublic class PartnerManager { private static Logger logger = LoggerFactory.getLogger(PartnerManager.class); @Autowired private PartnerAccountService partnerAccountService; @Autowired private PartnerSettleTask partnerSettleTask; /*** * 获取合伙人账户信息 * @param userId * @return */ public Result<PartnerAccount> findByUserId(Integer userId) { Result<PartnerAccount> result = new Result<>(); if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager findByUserId userId:{},time:{}", userId, LocalDateTime.now()); } PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); result.setData(partnerAccount); return result; } /*** * 获取合伙人等级 10 普通, 20 高级, 30 超级 * @param userId * @return */ public Result<PartnerResponse> getPartnerLevel(Integer userId) { if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager getPartnerLevel userId:{},time:{}", userId, LocalDateTime.now()); } Result<PartnerResponse> result = new Result<>(); PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); if (null != partnerAccount) { int partnerLevel; if (partnerAccount.getIsSuperPartner() == 1) { partnerLevel = 30; } else { partnerLevel = partnerAccount.getPartnerLevel(); } result.setData(new PartnerResponse(partnerLevel)); } else { result.setCode(601); } return result; } public Result<String> doFinanceSettle(int userId) { Result<String> result = new Result<>(); if (partnerSettleTask.doOneUserSettle(userId)) { result.setCode(200); } else { result.setCode(500); } return result; }}
\ No newline at end of file \ No newline at end of file
......
package com.lanren.huhu.partner.model;
import com.lanren.huhu.partner.model.base.BaseModel;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author chen
* @title: AgentSettle
* @projectName partner
* @package com.lanren.huhu.partner.model
* @date 2019-07-23 10:35
*/
@Data
public class AgentSettle extends BaseModel {
private int userId;
private int agentId;
private int agentLevel;
private BigDecimal balance;
private BigDecimal techCharge;
private BigDecimal opencardBalance;
private BigDecimal rechargeBalance;
private BigDecimal upgradeBalance;
private BigDecimal upgradeSuperBalance;
private BigDecimal shareBalance;
private BigDecimal zigoushengBalance;
private BigDecimal pingtuiBalance;
}
package com.lanren.huhu.partner.model;
import com.lanren.huhu.partner.model.base.BaseModel;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author chen
* @title: AgentSnapshot
* @projectName partner
* @package com.lanren.huhu.partner.model
* @date 2019-07-23 17:48
*/
@Data
public class AgentSnapshot extends BaseModel {
private int agentId;
private BigDecimal balance;
}
...@@ -12,6 +12,7 @@ import com.lanren.huhu.partner.service.AgentRewardService; ...@@ -12,6 +12,7 @@ import com.lanren.huhu.partner.service.AgentRewardService;
import com.lanren.huhu.partner.service.PartnerAccountService; import com.lanren.huhu.partner.service.PartnerAccountService;
import com.lanren.huhu.partner.service.UserAgentService; import com.lanren.huhu.partner.service.UserAgentService;
import com.lanren.huhu.partner.service.UserService; import com.lanren.huhu.partner.service.UserService;
import com.lanren.huhu.partner.util.DateUtils;
import com.lanren.huhu.partner.util.LockUtil; import com.lanren.huhu.partner.util.LockUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -28,8 +29,6 @@ import org.springframework.transaction.TransactionStatus; ...@@ -28,8 +29,6 @@ import org.springframework.transaction.TransactionStatus;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -228,7 +227,7 @@ public class AgentRewardQueueTask { ...@@ -228,7 +227,7 @@ public class AgentRewardQueueTask {
int sourceUserLevel = partnerAccountService.getOneByUserId(message.getSourceUserId()).getPartnerLevel(); int sourceUserLevel = partnerAccountService.getOneByUserId(message.getSourceUserId()).getPartnerLevel();
AgentReward agentReward = new AgentReward(); AgentReward agentReward = new AgentReward();
agentReward.setRewardType(message.getRewardType()); agentReward.setRewardType(message.getRewardType());
agentReward.setRechargeTime(LocalDateTime.parse(message.getRechargeTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); agentReward.setRechargeTime(DateUtils.parse(message.getRechargeTime(), DateUtils.FORMAT_SHORT));
agentReward.setSourceUserId(message.getSourceUserId()); agentReward.setSourceUserId(message.getSourceUserId());
agentReward.setReferenceId(Long.parseLong(message.getReferenceId())); agentReward.setReferenceId(Long.parseLong(message.getReferenceId()));
agentReward.setAgentId(agent.getAgentId()); agentReward.setAgentId(agent.getAgentId());
......
package com.lanren.huhu.partner.schedule;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanren.huhu.partner.constants.Constants;
import com.lanren.huhu.partner.domain.*;
import com.lanren.huhu.partner.model.AgentSettle;
import com.lanren.huhu.partner.model.AgentSnapshot;
import com.lanren.huhu.partner.service.*;
import com.lanren.huhu.partner.util.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import static org.springframework.util.StringUtils.isEmpty;
/**
* @author chen
* @title: AgentSettleTask
* @projectName partner
* @description: 代理商结算
* @package com.lanren.huhu.partner.schedule
* @date 2019-07-23 10:31
*/
@Component
public class AgentSettleTask {
private static Logger logger = LoggerFactory.getLogger(AgentSettleTask.class);
private static final int PAGE_SIZE = 1000;
private static final BigDecimal ZERO = new BigDecimal(0);
@Autowired
AgentRewardService agentRewardService;
@Autowired
OrdersActiveService ordersActiveService;
@Autowired
OrderTaobaoJdCommissionService orderTaobaoJdCommissionService;
@Autowired
OrderTaobaoJdGoodsCommissionService orderTaobaoJdGoodsCommissionService;
@Autowired
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
@Autowired
AgentAccountService agentAccountService;
@Autowired
AgentIncomeSummaryService agentIncomeSummaryService;
@Autowired
AgentAccountLogService agentAccountLogService;
public void runScheduledTask() {
logger.info("run AgentSettleTask");
try {
long input = DateUtils.getLastMonth1stTimestamp(System.currentTimeMillis());
long beginTs = DateUtils.getMonth1stTimestamp(input) / 1000L;
long endTs = DateUtils.getMonthLastTimestamp(input) / 1000L;
updateAll(beginTs, endTs);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
private void updateAll(long beginTs, long endTs) {
updateOrderCommission(beginTs, endTs, 0, 0);
doSettle(beginTs, endTs);
}
private void doSettle(long beginTs, long endTs) {
AgentSettle errAgentSettle = null;
try {
int pageNo = 1;
while (true) {
Page<AgentSettle> page = new Page<AgentSettle>(pageNo, PAGE_SIZE);
page.setOptimizeCountSql(false);
page.setSearchCount(false);
IPage<AgentSettle> ipage = agentRewardService.selectAgentSettlePageByTs(page, beginTs, endTs);
List<AgentSettle> agentSettleList = ipage.getRecords();
if (agentSettleList != null && agentSettleList.size() > 0) {
for (AgentSettle agentSettle : agentSettleList) {
errAgentSettle = agentSettle;
if (!doDbUpdate(agentSettle, beginTs, endTs)) {
logger.error("doDbUpdate failed for agent {}", agentSettle.getAgentId());
}
}
pageNo++;
} else {
break;
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
logger.error("errAgentSettle is {}", errAgentSettle);
}
}
/**
* 自购省和分享赚的奖励金额 需要根据最终的实际原始佣金 重新计算
* @param beginTs
* @param endTs
*/
private void updateOrderCommission(long beginTs, long endTs, int runType, int agentId) {
AgentReward errAgentReward = null;
try {
int pageNo = 1;
while (true) {
Page<AgentReward> page = new Page<AgentReward>(pageNo, PAGE_SIZE);
page.setOptimizeCountSql(false);
page.setSearchCount(false);
IPage<AgentReward> ipage;
if (runType == 0) {
ipage = agentRewardService.selectOrderRewardPageByTs(page, beginTs, endTs);
} else {
ipage = agentRewardService.selectOrderRewardPageByTsAndAgentId(page, beginTs, endTs, agentId);
}
List<AgentReward> agentRewardList = ipage.getRecords();
if (agentRewardList != null && agentRewardList.size() > 0) {
/**
* 循环处理每条奖励
*/
for (AgentReward agentReward : agentRewardList) {
errAgentReward = agentReward;
/**
* 自购省奖励: reward_type: 300 或 750, settle_state > 0 且 != 300
* 需要根据订单号查找最终的真实的原始佣金 并 按比例快照重新计算奖励金额,
* 更新字段: all_money_ori cash commission_account
* 如果订单失效: 更新settle_state, all_money_ori/cash/commission_account 抹平, 跳过处理, 循环到下一条
*/
if ( (agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_PURCHASE || agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SELF_ORDER)
&& agentReward.getSettleState() > 0
&& agentReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getRatioAll())) {
/**
* 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额
*/
} else {
/**
* 有订单号 和 比例快照 可以更新金额
*/
OrdersActive ordersActive = ordersActiveService.getOneByOrderSn(agentReward.getOrderType(), agentReward.getOrderSn());
OrderTaobaoJdCommission order = orderTaobaoJdCommissionService.getOneByOrderSn(agentReward.getOrderType(), agentReward.getOrderSn());
if (null == ordersActive || null == order) {
/**
* 如果没有找到active 或者 没有找到commission
* 不更新奖励金额
*/
} else {
/**
* 订单状态只有三种: -3, 1, 3
*/
if (order.getStatus() == Constants.ORDER_STATE_FAILED) {
/**
* 订单失效 订单付款 跳过, 处理下一条奖励
*/
updateReward2Failed(agentReward);
continue;
} else if (order.getStatus() == Constants.ORDER_STATE_PAID) {
/**
* 订单还是付款状态 更新奖励时间 下个月再处理
*/
long newRechargeTime = DateUtils.getNextMonth1stTimestamp(agentReward.getRechargeTime().getTime());
agentReward.setRechargeTime(new Date(newRechargeTime));
agentRewardService.updateById(agentReward);
continue;
} else if (order.getStatus() == Constants.ORDER_STATE_SETTLED) {
/**
* 订单结算 更新金额
*/
if (ordersActive.getIsForNew() == 1) {
/**
* 新人专享订单 不给合伙人奖励 跳过
*/
updateReward2Failed(agentReward);
continue;
} else {
/**
* 正常订单 更新原始佣金
* all_money_ori: 原始佣金
* cash: all_money_ori 乘以 ratio_all中的每个比例
* commission_account: cash 乘以 commission_rate
*/
updateRewardCommission(agentReward, order.getAllMoney());
}
}
}
}
}
/**
* 分享赚订单: 按子订单号更新奖励金额 60 或 760
*/
if ( (agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SHARE || agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SHARE_ORDER)
&& agentReward.getSettleState() > 0
&& agentReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getSubOrderSn())
|| isEmpty(agentReward.getRatioAll())) {
/**
* 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额
*/
} else {
/**
* 有订单号 和 比例快照 可以更新金额
*/
OrderTaobaoJdGoodsCommission subOrder = orderTaobaoJdGoodsCommissionService.getOneByOrderSn(agentReward.getOrderType(), agentReward.getOrderSn(), agentReward.getSubOrderSn());
if (null == subOrder) {
/**
* 如果没有找到子订单
* 不更新奖励金额
*/
} else {
/**
* 订单状态只有三种: -3, 1, 3
*/
if (subOrder.getOrderState() == Constants.ORDER_STATE_FAILED) {
/**
* 订单失效 订单付款 跳过, 处理下一条奖励
*/
updateReward2Failed(agentReward);
} else if (subOrder.getOrderState() == Constants.ORDER_STATE_PAID) {
/**
* 订单还是付款状态 更新奖励时间 下个月再处理
*/
long newRechargeTime = DateUtils.getNextMonth1stTimestamp(agentReward.getRechargeTime().getTime());
agentReward.setRechargeTime(new Date(newRechargeTime));
agentRewardService.updateById(agentReward);
continue;
} else if (subOrder.getOrderState() == Constants.ORDER_STATE_SETTLED) {
/**
* 正常订单 更新原始佣金
* all_money_ori: 原始佣金
* cash: all_money_ori 乘以 ratio_all中的每个比例
* commission_account: cash 乘以 commission_rate
*/
updateRewardCommission(agentReward, subOrder.getAllMoney());
}
}
}
}
}
pageNo++;
} else {
break;
}
}
} catch (Exception e) {
logger.error(e.getMessage(),e);
logger.error("errAgentReward is {}", errAgentReward);
}
}
private void updateRewardCommission(AgentReward agentReward, BigDecimal allMoney) {
agentReward.setAllMoneyOri(allMoney);
String ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\],\"]", "");
String[] strs = ratioAllStr.split(",");
BigDecimal cash = allMoney;
for (String s : strs) {
BigDecimal ratio = new BigDecimal(s);
cash = cash.multiply(ratio);
}
agentReward.setMoney(cash);
agentReward.setCommissionAcount(cash);
BigDecimal commission = cash.multiply(agentReward.getCommissionRate());
agentReward.setAmount(commission);
agentReward.setCommission(commission);
agentReward.setSettleState(Constants.SETTLE_STATE_DONE);
agentRewardService.updateById(agentReward);
}
/**
* money 面额(message里, 需要上供的代理商自己获得的奖励)
* commission_account 面额
* amount 奖励金额
* commission 奖励金额
* cash_code 支付金额
*/
private void updateReward2Failed(AgentReward agentReward) {
agentReward.setAllMoneyOri(ZERO);
agentReward.setMoney(ZERO);
agentReward.setCommissionAcount(ZERO);
agentReward.setCommission(ZERO);
agentReward.setCashCode("0");
agentReward.setSettleState(Constants.SETTLE_STATE_FAILED);
agentReward.setRewardStatus(Constants.REWARD_STATUS_SETTLE);
agentRewardService.updateById(agentReward);
}
public boolean doOneAgentSettle(Integer agentId) {
long input = DateUtils.getLastMonth1stTimestamp(System.currentTimeMillis());
long beginTs = DateUtils.getMonth1stTimestamp(input) / 1000L;
long endTs = DateUtils.getMonthLastTimestamp(input) / 1000L;
AgentSettle errAgentSettle = null;
try {
updateOrderCommission(beginTs, endTs, 1, agentId);
AgentSettle agentSettle = agentRewardService.selectAgentSettleByTsAndAgentId(beginTs, endTs, agentId);
errAgentSettle = agentSettle;
return doDbUpdate(agentSettle, beginTs, endTs);
} catch (Exception e) {
logger.error(e.getMessage(), e);
logger.error("agentId is {}, errAgentSettle is {}", agentId, errAgentSettle);
return false;
}
}
private boolean doDbUpdate(AgentSettle agentSettle, long beginTs, long endTs) {
TransactionStatus transactionStatus = null;
try {
logger.info("agentSettle is {}", agentSettle);
/**
* 开启事务
*/
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
/**
* 获取合伙人账户 锁定行
*/
AgentAccount agentAccount = agentAccountService.getOneByUserIdForUpdate(agentSettle.getAgentId());
/**
* 插入变更记录
*/
insertIntoAgentAccountLog(agentSettle, agentAccount);
updateAgentAccount(agentSettle, agentAccount);
updateAgentRewardStatus(agentSettle.getAgentId(), beginTs, endTs);
insertAgentIncomeSummary(agentSettle, beginTs);
insertAgentSalary(agentSettle);
/**
* 提交事务
*/
dataSourceTransactionManager.commit(transactionStatus);
// dataSourceTransactionManager.rollback(transactionStatus);
return true;
} catch (Exception e) {
logger.error(e.getMessage(), e);
/**
* 回滚事务
*/
if (transactionStatus != null) {
logger.info("do settle failed, rollback");
dataSourceTransactionManager.rollback(transactionStatus);
}
return false;
}
}
private void insertAgentSalary(AgentSettle agentSettle) {
}
private void insertAgentIncomeSummary(AgentSettle agentSettle, long beginTs) {
Date now = new Date(beginTs * 1000L);
int yeartime = Integer.parseInt(DateUtils.getYear(now));
int monthtime = Integer.parseInt(DateUtils.getMonth(now));
AgentIncomeSummary agentIncomeSummary = agentIncomeSummaryService.getOneByAgentidYearMonth(agentSettle.getAgentId(), yeartime, monthtime);
if (null == agentIncomeSummary) {
agentIncomeSummary = new AgentIncomeSummary();
agentIncomeSummary.setUserId(agentSettle.getUserId());
agentIncomeSummary.setAgentId(agentSettle.getAgentId());
agentIncomeSummary.setYeartime(yeartime);
agentIncomeSummary.setMonthtime(monthtime);
agentIncomeSummary.setIncome(ZERO);
agentIncomeSummary.setContent("");
agentIncomeSummary.setState(15);
agentIncomeSummaryService.save(agentIncomeSummary);
} else {
agentIncomeSummary.setState(15);
agentIncomeSummaryService.updateById(agentIncomeSummary);
}
}
private int updateAgentRewardStatus(int agentId, long beginTs, long endTs) {
return agentRewardService.updateRewardStatusByUidAndTs(agentId, beginTs, endTs);
}
private void updateAgentAccount(AgentSettle agentSettle, AgentAccount agentAccount) {
/**
* 更新合伙人账户金额
*/
agentAccount.setBalance(agentAccount.getBalance()
.add(agentSettle.getBalance())
.subtract(agentSettle.getTechCharge()));
agentAccountService.updateById(agentAccount);
}
private void insertIntoAgentAccountLog(AgentSettle agentSettle, AgentAccount agentAccount) {
/**
* 月结发钱
*/
AgentSnapshot snapshot = new AgentSnapshot();
snapshot.setAgentId(agentAccount.getAgentId());
snapshot.setBalance(agentAccount.getBalance());
BigDecimal changeNum = agentSettle.getBalance();
BigDecimal changedAmount = agentAccount.getBalance().add(changeNum);
AgentAccountLog log = createNewAgentAccountLog(agentSettle,
Constants.PARTNER_ACCOUNT_LOG_TYPE_SETTLE,
changeNum,
changedAmount,
Constants.PARTNER_ACCOUNT_LOG_TYPE_SETTLE_REMARK,
snapshot.toString());
agentAccountLogService.save(log);
/**
* 平台技术服务费
*/
if (agentSettle.getTechCharge().compareTo(ZERO) > 0) {
changeNum = agentSettle.getTechCharge().negate();
changedAmount = changedAmount.add(changeNum);
log = createNewAgentAccountLog(agentSettle,
Constants.PARTNER_ACCOUNT_LOG_TYPE_TECH_CHARGE,
changeNum,
changedAmount,
Constants.PARTNER_ACCOUNT_LOG_TYPE_TECH_CHARGE_REMARK,
"");
agentAccountLogService.save(log);
}
}
private AgentAccountLog createNewAgentAccountLog(AgentSettle agentSettle, int type, BigDecimal changeNum, BigDecimal changedAmount, String payRemark, String snapshot) {
Date now = new Date();
int yeartime = Integer.parseInt(DateUtils.getYear(now));
int monthtime = Integer.parseInt(DateUtils.getMonth(now));
int daytime = Integer.parseInt(DateUtils.getDay(now));
AgentAccountLog log = new AgentAccountLog();
log.setUserId(agentSettle.getUserId());
log.setAgentId(agentSettle.getAgentId());
log.setType(type);
log.setChangeNum(changeNum);
log.setChangedAmount(changedAmount);
log.setPayRemark(payRemark);
log.setPayType(false);
log.setYeartime(yeartime);
log.setMonthtime(monthtime);
log.setDaytime(daytime);
log.setSnapshot(snapshot);
return log;
}
}
...@@ -80,10 +80,7 @@ public class PartnerSettleTask { ...@@ -80,10 +80,7 @@ public class PartnerSettleTask {
PartnerSettle errPartnerSettle = null; PartnerSettle errPartnerSettle = null;
try { try {
updateOrderCommission(beginTs, endTs, 1, userId); updateOrderCommission(beginTs, endTs, 1, userId);
if (partnerRewardService == null) { PartnerSettle partnerSettle = partnerRewardService.selectPartnerSettleByTsAndUid(beginTs, endTs, userId);
logger.info("partnerRewardService is nuull");
}
PartnerSettle partnerSettle = partnerRewardService.selectPartnerSettlePageByTsAndUid(beginTs, endTs, userId);
errPartnerSettle = partnerSettle; errPartnerSettle = partnerSettle;
if (setIncomeAndTax(partnerSettle)) { if (setIncomeAndTax(partnerSettle)) {
return doDbUpdate(partnerSettle, beginTs, endTs); return doDbUpdate(partnerSettle, beginTs, endTs);
...@@ -185,8 +182,8 @@ public class PartnerSettleTask { ...@@ -185,8 +182,8 @@ public class PartnerSettleTask {
} }
} }
private void updatePartnerRewardStatus(int userId, long beginTs, long endTs) { private int updatePartnerRewardStatus(int userId, long beginTs, long endTs) {
partnerRewardService.updateRewardStatusByUidAndTs(userId, beginTs, endTs); return partnerRewardService.updateRewardStatusByUidAndTs(userId, beginTs, endTs);
} }
private void updatePartnerAccount(PartnerSettle partnerSettle, PartnerAccount partnerAccount) { private void updatePartnerAccount(PartnerSettle partnerSettle, PartnerAccount partnerAccount) {
...@@ -275,8 +272,8 @@ public class PartnerSettleTask { ...@@ -275,8 +272,8 @@ public class PartnerSettleTask {
BigDecimal ratio = new BigDecimal(s); BigDecimal ratio = new BigDecimal(s);
cash = cash.multiply(ratio); cash = cash.multiply(ratio);
} }
BigDecimal commission = cash.multiply(partnerReward.getCommissionRate());
partnerReward.setCash(cash); partnerReward.setCash(cash);
BigDecimal commission = cash.multiply(partnerReward.getCommissionRate());
partnerReward.setCommissionAcount(commission); partnerReward.setCommissionAcount(commission);
partnerReward.setSettleState(Constants.SETTLE_STATE_DONE); partnerReward.setSettleState(Constants.SETTLE_STATE_DONE);
partnerRewardService.updateById(partnerReward); partnerRewardService.updateById(partnerReward);
......
package com.lanren.huhu.partner.service; package com.lanren.huhu.partner.service;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentAccountLog;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** import com.lanren.huhu.partner.domain.AgentAccountLog;
* @title: ${NAME}
* @projectName partner import java.util.List;
* @description: TODO
* @author chen /**
* @package ${PACKAGE_NAME} * @author chen
* @date 2019-07-16 15:38 * @title: ${NAME}
*/ * @projectName partner
public interface AgentAccountLogService extends IService<AgentAccountLog>{ * @package ${PACKAGE_NAME}
* @date 2019-07-16 15:38
*/
public interface AgentAccountLogService extends IService<AgentAccountLog> {
int updateBatch(List<AgentAccountLog> list); int updateBatch(List<AgentAccountLog> list);
...@@ -23,3 +24,4 @@ public interface AgentAccountLogService extends IService<AgentAccountLog>{ ...@@ -23,3 +24,4 @@ public interface AgentAccountLogService extends IService<AgentAccountLog>{
int insertOrUpdateSelective(AgentAccountLog record); int insertOrUpdateSelective(AgentAccountLog record);
} }
package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.AgentAccount;
import java.util.List;
/**
* @title: ${NAME}
* @projectName partner
* @author chen
* @package ${PACKAGE_NAME}
* @date 2019-07-23 16:55
*/
public interface AgentAccountService extends IService<AgentAccount>{
int updateBatch(List<AgentAccount> list);
int batchInsert(List<AgentAccount> list);
int insertOrUpdate(AgentAccount record);
int insertOrUpdateSelective(AgentAccount record);
AgentAccount getOneByUserIdForUpdate(Integer agentId);
}
package com.lanren.huhu.partner.service; package com.lanren.huhu.partner.service;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentIncomeSummary;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.AgentIncomeSummary;
import java.util.List;
/** /**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
...@@ -22,4 +23,5 @@ public interface AgentIncomeSummaryService extends IService<AgentIncomeSummary>{ ...@@ -22,4 +23,5 @@ public interface AgentIncomeSummaryService extends IService<AgentIncomeSummary>{
int insertOrUpdateSelective(AgentIncomeSummary record); int insertOrUpdateSelective(AgentIncomeSummary record);
AgentIncomeSummary getOneByAgentidYearMonth(int agentId, int yeartime, int monthtime);
} }
package com.lanren.huhu.partner.service; package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.AgentReward; import com.lanren.huhu.partner.domain.AgentReward;
import com.lanren.huhu.partner.model.AgentSettle;
import java.util.List; import java.util.List;
...@@ -29,6 +32,16 @@ public interface AgentRewardService extends IService<AgentReward> { ...@@ -29,6 +32,16 @@ public interface AgentRewardService extends IService<AgentReward> {
AgentReward getOneBySubOrderSn(String orderType, String orderSn, String subOrderSn); AgentReward getOneBySubOrderSn(String orderType, String orderSn, String subOrderSn);
int insertOne(AgentReward record); int insertOne(AgentReward record);
AgentSettle selectAgentSettleByTsAndAgentId(long beginTs, long endTs, Integer agentId);
IPage<AgentReward> selectOrderRewardPageByTs(Page<AgentReward> page, long beginTs, long endTs);
IPage<AgentReward> selectOrderRewardPageByTsAndAgentId(Page<AgentReward> page, long beginTs, long endTs, int agentId);
int updateRewardStatusByUidAndTs(int agentId, long beginTs, long endTs);
IPage<AgentSettle> selectAgentSettlePageByTs(Page<AgentSettle> page, long beginTs, long endTs);
} }
......
...@@ -41,7 +41,7 @@ public interface PartnerRewardService extends IService<PartnerReward> { ...@@ -41,7 +41,7 @@ public interface PartnerRewardService extends IService<PartnerReward> {
/** /**
* 获取单个合伙人的汇总收入 * 获取单个合伙人的汇总收入
*/ */
PartnerSettle selectPartnerSettlePageByTsAndUid(Long beginTs, Long endTs, Integer userId); PartnerSettle selectPartnerSettleByTsAndUid(Long beginTs, Long endTs, Integer userId);
/** /**
* 更新奖励状态 * 更新奖励状态
*/ */
......
package com.lanren.huhu.partner.service.impl; package com.lanren.huhu.partner.service.impl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentAccountLog;
import com.lanren.huhu.partner.dao.AgentAccountLogMapper; import com.lanren.huhu.partner.dao.AgentAccountLogMapper;
import com.lanren.huhu.partner.domain.AgentAccountLog;
import com.lanren.huhu.partner.service.AgentAccountLogService; import com.lanren.huhu.partner.service.AgentAccountLogService;
/** import org.springframework.stereotype.Service;
* @title: ${NAME}
* @projectName partner import java.util.List;
* @description: TODO
* @author chen /**
* @package ${PACKAGE_NAME} * @author chen
* @date 2019-07-16 15:38 * @title: ${NAME}
*/ * @projectName partner
* @package ${PACKAGE_NAME}
* @date 2019-07-16 15:38
*/
@Service @Service
public class AgentAccountLogServiceImpl extends ServiceImpl<AgentAccountLogMapper, AgentAccountLog> implements AgentAccountLogService{ public class AgentAccountLogServiceImpl extends ServiceImpl<AgentAccountLogMapper, AgentAccountLog> implements AgentAccountLogService {
@Override @Override
public int updateBatch(List<AgentAccountLog> list) { public int updateBatch(List<AgentAccountLog> list) {
return baseMapper.updateBatch(list); return baseMapper.updateBatch(list);
} }
@Override @Override
public int batchInsert(List<AgentAccountLog> list) { public int batchInsert(List<AgentAccountLog> list) {
return baseMapper.batchInsert(list); return baseMapper.batchInsert(list);
} }
@Override @Override
public int insertOrUpdate(AgentAccountLog record) { public int insertOrUpdate(AgentAccountLog record) {
return baseMapper.insertOrUpdate(record); return baseMapper.insertOrUpdate(record);
} }
@Override @Override
public int insertOrUpdateSelective(AgentAccountLog record) { public int insertOrUpdateSelective(AgentAccountLog record) {
return baseMapper.insertOrUpdateSelective(record); return baseMapper.insertOrUpdateSelective(record);
} }
} }
package com.lanren.huhu.partner.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.AgentAccountMapper;
import com.lanren.huhu.partner.domain.AgentAccount;
import com.lanren.huhu.partner.service.AgentAccountService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @title: ${NAME}
* @projectName partner
* @author chen
* @package ${PACKAGE_NAME}
* @date 2019-07-23 16:55
*/
@Service
public class AgentAccountServiceImpl extends ServiceImpl<AgentAccountMapper, AgentAccount> implements AgentAccountService{
@Override
public int updateBatch(List<AgentAccount> list) {
return baseMapper.updateBatch(list);
}
@Override
public int batchInsert(List<AgentAccount> list) {
return baseMapper.batchInsert(list);
}
@Override
public int insertOrUpdate(AgentAccount record) {
return baseMapper.insertOrUpdate(record);
}
@Override
public int insertOrUpdateSelective(AgentAccount record) {
return baseMapper.insertOrUpdateSelective(record);
}
@Override
public AgentAccount getOneByUserIdForUpdate(Integer agentId) {
return baseMapper.getOneByUserIdForUpdate(agentId);
}
}
package com.lanren.huhu.partner.service.impl; package com.lanren.huhu.partner.service.impl;
import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import com.lanren.huhu.partner.dao.AgentIncomeSummaryMapper; import com.lanren.huhu.partner.dao.AgentIncomeSummaryMapper;
import com.lanren.huhu.partner.domain.AgentIncomeSummary; import com.lanren.huhu.partner.domain.AgentIncomeSummary;
import com.lanren.huhu.partner.service.AgentIncomeSummaryService; import com.lanren.huhu.partner.service.AgentIncomeSummaryService;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
...@@ -35,4 +35,11 @@ public class AgentIncomeSummaryServiceImpl extends ServiceImpl<AgentIncomeSummar ...@@ -35,4 +35,11 @@ public class AgentIncomeSummaryServiceImpl extends ServiceImpl<AgentIncomeSummar
public int insertOrUpdateSelective(AgentIncomeSummary record) { public int insertOrUpdateSelective(AgentIncomeSummary record) {
return baseMapper.insertOrUpdateSelective(record); return baseMapper.insertOrUpdateSelective(record);
} }
@Override
public AgentIncomeSummary getOneByAgentidYearMonth(int agentId, int yeartime, int monthtime) {
QueryWrapper<AgentIncomeSummary> wrapper = new QueryWrapper<AgentIncomeSummary>();
wrapper.eq("agent_id", agentId).eq("yeartime", yeartime).eq("monthtime", monthtime);
return baseMapper.selectOne(wrapper);
}
} }
package com.lanren.huhu.partner.service.impl; package com.lanren.huhu.partner.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.AgentRewardMapper; import com.lanren.huhu.partner.dao.AgentRewardMapper;
import com.lanren.huhu.partner.domain.AgentReward; import com.lanren.huhu.partner.domain.AgentReward;
import com.lanren.huhu.partner.model.AgentSettle;
import com.lanren.huhu.partner.service.AgentRewardService; import com.lanren.huhu.partner.service.AgentRewardService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -56,6 +59,31 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent ...@@ -56,6 +59,31 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent
list.add(record); list.add(record);
return batchInsert(list); return batchInsert(list);
} }
@Override
public AgentSettle selectAgentSettleByTsAndAgentId(long beginTs, long endTs, Integer agentId) {
return baseMapper.selectAgentSettleByTsAndAgentId(beginTs, endTs, agentId);
}
@Override
public IPage<AgentReward> selectOrderRewardPageByTs(Page<AgentReward> page, long beginTs, long endTs) {
return baseMapper.selectOrderRewardPageByTs(page, beginTs, endTs);
}
@Override
public IPage<AgentReward> selectOrderRewardPageByTsAndAgentId(Page<AgentReward> page, long beginTs, long endTs, int agentId) {
return baseMapper.selectOrderRewardPageByTsAndAgentId(page, beginTs, endTs, agentId);
}
@Override
public int updateRewardStatusByUidAndTs(int agentId, long beginTs, long endTs) {
return baseMapper.updateRewardStatusByAgentIdAndTs(agentId, beginTs, endTs);
}
@Override
public IPage<AgentSettle> selectAgentSettlePageByTs(Page<AgentSettle> page, long beginTs, long endTs) {
return baseMapper.selectAgentSettlePageByTs(page, beginTs, endTs);
}
} }
......
...@@ -58,7 +58,7 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P ...@@ -58,7 +58,7 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P
} }
@Override @Override
public PartnerSettle selectPartnerSettlePageByTsAndUid(Long beginTs, Long endTs, Integer userId) { public PartnerSettle selectPartnerSettleByTsAndUid(Long beginTs, Long endTs, Integer userId) {
return baseMapper.selectPartnerSettleByTsAndUid(beginTs, endTs, userId); return baseMapper.selectPartnerSettleByTsAndUid(beginTs, endTs, userId);
} }
......
...@@ -21,12 +21,13 @@ ...@@ -21,12 +21,13 @@
<result column="reference_id" property="referenceId" /> <result column="reference_id" property="referenceId" />
<result column="create_time" property="createTime" /> <result column="create_time" property="createTime" />
<result column="modify_time" property="modifyTime" /> <result column="modify_time" property="modifyTime" />
<result column="snapshot" property="snapshot" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
id, user_id, agent_id, yeartime, monthtime, daytime, `type`, change_num, changed_amount, id, user_id, agent_id, yeartime, monthtime, daytime, `type`, change_num, changed_amount,
change_time, pay_state, pay_platform, pay_type, pay_remark, pay_info, reference_id, change_time, pay_state, pay_platform, pay_type, pay_remark, pay_info, reference_id,
create_time, modify_time create_time, modify_time, snapshot
</sql> </sql>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -117,6 +118,11 @@ ...@@ -117,6 +118,11 @@
when id = #{item.id} then #{item.modifyTime} when id = #{item.id} then #{item.modifyTime}
</foreach> </foreach>
</trim> </trim>
<trim prefix="snapshot = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.snapshot}
</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=", ">
...@@ -128,13 +134,13 @@ ...@@ -128,13 +134,13 @@
insert into agent_account_log insert into agent_account_log
(user_id, agent_id, yeartime, monthtime, daytime, `type`, change_num, changed_amount, (user_id, agent_id, yeartime, monthtime, daytime, `type`, change_num, changed_amount,
change_time, pay_state, pay_platform, pay_type, pay_remark, pay_info, reference_id, change_time, pay_state, pay_platform, pay_type, pay_remark, pay_info, reference_id,
create_time, modify_time) create_time, modify_time, snapshot)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.agentId}, #{item.yeartime}, #{item.monthtime}, #{item.daytime}, (#{item.userId}, #{item.agentId}, #{item.yeartime}, #{item.monthtime}, #{item.daytime},
#{item.type}, #{item.changeNum}, #{item.changedAmount}, #{item.changeTime}, #{item.payState}, #{item.type}, #{item.changeNum}, #{item.changedAmount}, #{item.changeTime}, #{item.payState},
#{item.payPlatform}, #{item.payType}, #{item.payRemark}, #{item.payInfo}, #{item.referenceId}, #{item.payPlatform}, #{item.payType}, #{item.payRemark}, #{item.payInfo}, #{item.referenceId},
#{item.createTime}, #{item.modifyTime}) #{item.createTime}, #{item.modifyTime}, #{item.snapshot})
</foreach> </foreach>
</insert> </insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentAccountLog" useGeneratedKeys="true"> <insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentAccountLog" useGeneratedKeys="true">
...@@ -161,6 +167,7 @@ ...@@ -161,6 +167,7 @@
reference_id, reference_id,
create_time, create_time,
modify_time, modify_time,
snapshot,
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -184,6 +191,7 @@ ...@@ -184,6 +191,7 @@
#{referenceId}, #{referenceId},
#{createTime}, #{createTime},
#{modifyTime}, #{modifyTime},
#{snapshot},
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -207,6 +215,7 @@ ...@@ -207,6 +215,7 @@
reference_id = #{referenceId}, reference_id = #{referenceId},
create_time = #{createTime}, create_time = #{createTime},
modify_time = #{modifyTime}, modify_time = #{modifyTime},
snapshot = #{snapshot},
</trim> </trim>
</insert> </insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentAccountLog" useGeneratedKeys="true"> <insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentAccountLog" useGeneratedKeys="true">
...@@ -267,6 +276,9 @@ ...@@ -267,6 +276,9 @@
<if test="modifyTime != null"> <if test="modifyTime != null">
modify_time, modify_time,
</if> </if>
<if test="snapshot != null">
snapshot,
</if>
</trim> </trim>
values values
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
...@@ -324,6 +336,9 @@ ...@@ -324,6 +336,9 @@
<if test="modifyTime != null"> <if test="modifyTime != null">
#{modifyTime}, #{modifyTime},
</if> </if>
<if test="snapshot != null">
#{snapshot},
</if>
</trim> </trim>
on duplicate key update on duplicate key update
<trim suffixOverrides=","> <trim suffixOverrides=",">
...@@ -381,6 +396,9 @@ ...@@ -381,6 +396,9 @@
<if test="modifyTime != null"> <if test="modifyTime != null">
modify_time = #{modifyTime}, modify_time = #{modifyTime},
</if> </if>
<if test="snapshot != null">
snapshot = #{snapshot},
</if>
</trim> </trim>
</insert> </insert>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lanren.huhu.partner.dao.AgentAccountMapper">
<resultMap id="BaseResultMap" type="com.lanren.huhu.partner.domain.AgentAccount">
<!--@mbg.generated-->
<id column="id" property="id" />
<result column="user_id" property="userId" />
<result column="agent_id" property="agentId" />
<result column="account_type" property="accountType" />
<result column="balance" property="balance" />
<result column="frozen_balance" property="frozenBalance" />
<result column="income_freeze" property="incomeFreeze" />
<result column="pay_freeze" property="payFreeze" />
<result column="free_balance" property="freeBalance" />
<result column="income_balance" property="incomeBalance" />
<result column="recharge_income" property="rechargeIncome" />
<result column="opencard_income" property="opencardIncome" />
<result column="created_at" property="createdAt" />
<result column="updated_at" property="updatedAt" />
<result column="deleted_at" property="deletedAt" />
<result column="withdraw_balance" property="withdrawBalance" />
<result column="consume_balance" property="consumeBalance" />
<result column="account_version" property="accountVersion" />
<result column="account_status" property="accountStatus" />
<result column="create_time" property="createTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, user_id, agent_id, account_type, balance, frozen_balance, income_freeze, pay_freeze,
free_balance, income_balance, recharge_income, opencard_income, created_at, updated_at,
deleted_at, withdraw_balance, consume_balance, account_version, account_status, create_time
</sql>
<update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated-->
update agent_account
<trim prefix="set" suffixOverrides=",">
<trim prefix="user_id = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.userId}
</foreach>
</trim>
<trim prefix="agent_id = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.agentId}
</foreach>
</trim>
<trim prefix="account_type = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.accountType}
</foreach>
</trim>
<trim prefix="balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.balance}
</foreach>
</trim>
<trim prefix="frozen_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.frozenBalance}
</foreach>
</trim>
<trim prefix="income_freeze = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.incomeFreeze}
</foreach>
</trim>
<trim prefix="pay_freeze = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.payFreeze}
</foreach>
</trim>
<trim prefix="free_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.freeBalance}
</foreach>
</trim>
<trim prefix="income_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.incomeBalance}
</foreach>
</trim>
<trim prefix="recharge_income = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.rechargeIncome}
</foreach>
</trim>
<trim prefix="opencard_income = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.opencardIncome}
</foreach>
</trim>
<trim prefix="created_at = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.createdAt}
</foreach>
</trim>
<trim prefix="updated_at = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.updatedAt}
</foreach>
</trim>
<trim prefix="deleted_at = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.deletedAt}
</foreach>
</trim>
<trim prefix="withdraw_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.withdrawBalance}
</foreach>
</trim>
<trim prefix="consume_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.consumeBalance}
</foreach>
</trim>
<trim prefix="account_version = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.accountVersion}
</foreach>
</trim>
<trim prefix="account_status = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.accountStatus}
</foreach>
</trim>
<trim prefix="create_time = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.createTime}
</foreach>
</trim>
</trim>
where id in
<foreach close=")" collection="list" item="item" open="(" separator=", ">
#{item.id}
</foreach>
</update>
<insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into agent_account
(user_id, agent_id, account_type, balance, frozen_balance, income_freeze, pay_freeze,
free_balance, income_balance, recharge_income, opencard_income, created_at, updated_at,
deleted_at, withdraw_balance, consume_balance, account_version, account_status,
create_time)
values
<foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.agentId}, #{item.accountType}, #{item.balance}, #{item.frozenBalance},
#{item.incomeFreeze}, #{item.payFreeze}, #{item.freeBalance}, #{item.incomeBalance},
#{item.rechargeIncome}, #{item.opencardIncome}, #{item.createdAt}, #{item.updatedAt},
#{item.deletedAt}, #{item.withdrawBalance}, #{item.consumeBalance}, #{item.accountVersion},
#{item.accountStatus}, #{item.createTime})
</foreach>
</insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentAccount" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into agent_account
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
user_id,
agent_id,
account_type,
balance,
frozen_balance,
income_freeze,
pay_freeze,
free_balance,
income_balance,
recharge_income,
opencard_income,
created_at,
updated_at,
deleted_at,
withdraw_balance,
consume_balance,
account_version,
account_status,
create_time,
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id},
</if>
#{userId},
#{agentId},
#{accountType},
#{balance},
#{frozenBalance},
#{incomeFreeze},
#{payFreeze},
#{freeBalance},
#{incomeBalance},
#{rechargeIncome},
#{opencardIncome},
#{createdAt},
#{updatedAt},
#{deletedAt},
#{withdrawBalance},
#{consumeBalance},
#{accountVersion},
#{accountStatus},
#{createTime},
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="id != null">
id = #{id},
</if>
user_id = #{userId},
agent_id = #{agentId},
account_type = #{accountType},
balance = #{balance},
frozen_balance = #{frozenBalance},
income_freeze = #{incomeFreeze},
pay_freeze = #{payFreeze},
free_balance = #{freeBalance},
income_balance = #{incomeBalance},
recharge_income = #{rechargeIncome},
opencard_income = #{opencardIncome},
created_at = #{createdAt},
updated_at = #{updatedAt},
deleted_at = #{deletedAt},
withdraw_balance = #{withdrawBalance},
consume_balance = #{consumeBalance},
account_version = #{accountVersion},
account_status = #{accountStatus},
create_time = #{createTime},
</trim>
</insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentAccount" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into agent_account
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="userId != null">
user_id,
</if>
<if test="agentId != null">
agent_id,
</if>
<if test="accountType != null">
account_type,
</if>
<if test="balance != null">
balance,
</if>
<if test="frozenBalance != null">
frozen_balance,
</if>
<if test="incomeFreeze != null">
income_freeze,
</if>
<if test="payFreeze != null">
pay_freeze,
</if>
<if test="freeBalance != null">
free_balance,
</if>
<if test="incomeBalance != null">
income_balance,
</if>
<if test="rechargeIncome != null">
recharge_income,
</if>
<if test="opencardIncome != null">
opencard_income,
</if>
<if test="createdAt != null">
created_at,
</if>
<if test="updatedAt != null">
updated_at,
</if>
<if test="deletedAt != null">
deleted_at,
</if>
<if test="withdrawBalance != null">
withdraw_balance,
</if>
<if test="consumeBalance != null">
consume_balance,
</if>
<if test="accountVersion != null">
account_version,
</if>
<if test="accountStatus != null">
account_status,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id},
</if>
<if test="userId != null">
#{userId},
</if>
<if test="agentId != null">
#{agentId},
</if>
<if test="accountType != null">
#{accountType},
</if>
<if test="balance != null">
#{balance},
</if>
<if test="frozenBalance != null">
#{frozenBalance},
</if>
<if test="incomeFreeze != null">
#{incomeFreeze},
</if>
<if test="payFreeze != null">
#{payFreeze},
</if>
<if test="freeBalance != null">
#{freeBalance},
</if>
<if test="incomeBalance != null">
#{incomeBalance},
</if>
<if test="rechargeIncome != null">
#{rechargeIncome},
</if>
<if test="opencardIncome != null">
#{opencardIncome},
</if>
<if test="createdAt != null">
#{createdAt},
</if>
<if test="updatedAt != null">
#{updatedAt},
</if>
<if test="deletedAt != null">
#{deletedAt},
</if>
<if test="withdrawBalance != null">
#{withdrawBalance},
</if>
<if test="consumeBalance != null">
#{consumeBalance},
</if>
<if test="accountVersion != null">
#{accountVersion},
</if>
<if test="accountStatus != null">
#{accountStatus},
</if>
<if test="createTime != null">
#{createTime},
</if>
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="id != null">
id = #{id},
</if>
<if test="userId != null">
user_id = #{userId},
</if>
<if test="agentId != null">
agent_id = #{agentId},
</if>
<if test="accountType != null">
account_type = #{accountType},
</if>
<if test="balance != null">
balance = #{balance},
</if>
<if test="frozenBalance != null">
frozen_balance = #{frozenBalance},
</if>
<if test="incomeFreeze != null">
income_freeze = #{incomeFreeze},
</if>
<if test="payFreeze != null">
pay_freeze = #{payFreeze},
</if>
<if test="freeBalance != null">
free_balance = #{freeBalance},
</if>
<if test="incomeBalance != null">
income_balance = #{incomeBalance},
</if>
<if test="rechargeIncome != null">
recharge_income = #{rechargeIncome},
</if>
<if test="opencardIncome != null">
opencard_income = #{opencardIncome},
</if>
<if test="createdAt != null">
created_at = #{createdAt},
</if>
<if test="updatedAt != null">
updated_at = #{updatedAt},
</if>
<if test="deletedAt != null">
deleted_at = #{deletedAt},
</if>
<if test="withdrawBalance != null">
withdraw_balance = #{withdrawBalance},
</if>
<if test="consumeBalance != null">
consume_balance = #{consumeBalance},
</if>
<if test="accountVersion != null">
account_version = #{accountVersion},
</if>
<if test="accountStatus != null">
account_status = #{accountStatus},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
</trim>
</insert>
<select id="getOneByUserIdForUpdate" resultMap="BaseResultMap">
SELECT * FROM agent_account WHERE agent_id = #{agentId}
</select>
</mapper>
\ No newline at end of file
...@@ -661,4 +661,102 @@ ...@@ -661,4 +661,102 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<select id="selectAgentSettlePageByTs" resultType="com.lanren.huhu.partner.model.AgentSettle">
SELECT
b.user_id,
a.agent_id,
b.agent_level,
a.balance,
a.techCharge,
a.opencardBalance,
a.rechargeBalance,
a.upgradeBalance,
a.upgradeSuperBalance,
a.shareBalance,
a.zigoushengBalance,
a.pingtuiBalance
FROM (
SELECT
agent_id,
SUM(amount) balance,
SUM(case when agent_level=4 then amount * 0.06 else 0 end) techCharge,
SUM(case when reward_type in (40) then amount else 0 end) opencardBalance,
SUM(case when reward_type in (50,740) then amount else 0 end) rechargeBalance,
SUM(case when reward_type in (30,710,720) then amount else 0 end) upgradeBalance,
SUM(case when reward_type in (20,730) then amount else 0 end) upgradeSuperBalance,
SUM(case when reward_type in (60,760) then amount else 0 end) shareBalance,
SUM(case when reward_type in (300,750) then amount else 0 end) zigoushengBalance,
SUM(0) pingtuiBalance
FROM agent_reward
WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status=100
GROUP BY 1
ORDER BY 1
) a
JOIN user_agent b ON a.agent_id=b.agent_id
ORDER BY 1,2,3
</select>
<select id="selectAgentSettleByTsAndAgentId" resultType="com.lanren.huhu.partner.model.AgentSettle">
SELECT
b.user_id,
a.agent_id,
b.agent_level,
a.balance,
a.techCharge,
a.opencardBalance,
a.rechargeBalance,
a.upgradeBalance,
a.upgradeSuperBalance,
a.shareBalance,
a.zigoushengBalance,
a.pingtuiBalance
FROM (
SELECT
agent_id,
SUM(amount) balance,
SUM(case when agent_level=4 then amount * 0.06 else 0 end) techCharge,
SUM(case when reward_type in (40) then amount else 0 end) opencardBalance,
SUM(case when reward_type in (50,740) then amount else 0 end) rechargeBalance,
SUM(case when reward_type in (30,710,720) then amount else 0 end) upgradeBalance,
SUM(case when reward_type in (20,730) then amount else 0 end) upgradeSuperBalance,
SUM(case when reward_type in (60,760) then amount else 0 end) shareBalance,
SUM(case when reward_type in (300,750) then amount else 0 end) zigoushengBalance,
SUM(0) pingtuiBalance
FROM agent_reward
WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100
AND agent_id = #{agentId}
GROUP BY 1
ORDER BY 1
) a
JOIN user_agent b ON a.agent_id = b.agent_id
ORDER BY 1,2,3
</select>
<select id="selectOrderRewardPageByTs" resultMap="BaseResultMap">
SELECT *
FROM agent_reward
WHERE recharge_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100
AND reward_type in (60,760,300,750)
ORDER BY id
</select>
<select id="selectOrderRewardPageByTsAndAgentId" resultMap="BaseResultMap">
SELECT *
FROM agent_reward
WHERE recharge_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100
AND agent_id = #{agentId}
AND reward_type in (60,760,300,750)
ORDER BY id
</select>
<update id="updateRewardStatusByAgentIdAndTs">
UPDATE agent_reward
SET reward_status=120, settle_state=case when settle_state>=0 then 300 else settle_state end
WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND agent_id = #{agentId}
AND reward_status=100
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -645,13 +645,13 @@ ...@@ -645,13 +645,13 @@
<select id="selectPartnerSettlePageByTs" resultType="com.lanren.huhu.partner.model.PartnerSettle"> <select id="selectPartnerSettlePageByTs" resultType="com.lanren.huhu.partner.model.PartnerSettle">
SELECT SELECT
user_id, user_id,
SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END ELSE 0 END) sum_order_commission, SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END
SUM(CASE WHEN reward_type=60 THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END ELSE 0 END) sum_redpack, ELSE 0 END) sum_order_commission,
SUM(CASE WHEN reward_type=60 THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END
ELSE 0 END) sum_redpack,
SUM(CASE WHEN reward_type NOT IN (60,110,120) THEN commission_acount ELSE 0 END) sum_others, SUM(CASE WHEN reward_type NOT IN (60,110,120) THEN commission_acount ELSE 0 END) sum_others,
SUM(CASE SUM(CASE WHEN reward_type IN (60, 110, 120) 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 (60, 110, 120) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 1 END ELSE 0 END) tech_charge,
ELSE 0 END
) tech_charge,
0 wx_income, 0 wx_income,
0 wx_tax, 0 wx_tax,
0 bank_income, 0 bank_income,
...@@ -667,12 +667,13 @@ ...@@ -667,12 +667,13 @@
<select id="selectPartnerSettleByTsAndUid" resultType="com.lanren.huhu.partner.model.PartnerSettle"> <select id="selectPartnerSettleByTsAndUid" resultType="com.lanren.huhu.partner.model.PartnerSettle">
SELECT SELECT
user_id, user_id,
SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END ELSE 0 END) sum_order_commission, SUM(CASE WHEN reward_type IN (110,120) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END
SUM(CASE WHEN reward_type=60 THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END ELSE 0 END) sum_redpack, ELSE 0 END) sum_order_commission,
SUM(CASE WHEN reward_type=60 THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.97 WHEN user_partner_level=20 THEN 0.94 ELSE 1 END
ELSE 0 END) sum_redpack,
SUM(CASE WHEN reward_type NOT IN (60,110,120) THEN commission_acount ELSE 0 END) sum_others, SUM(CASE WHEN reward_type NOT IN (60,110,120) THEN commission_acount ELSE 0 END) sum_others,
SUM(CASE SUM(CASE WHEN reward_type IN (60, 110, 120) 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 (60, 110, 120) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 1 END ELSE 0 END
ELSE 0 END
) tech_charge, ) tech_charge,
0 wx_income, 0 wx_income,
0 wx_tax, 0 wx_tax,
......
ALTER TABLE `huhu`.`partner_account_log` ALTER TABLE `huhu`.`partner_account_log`
ADD COLUMN `snapshot` varchar(512) NULL COMMENT '变更前的快照' AFTER `modify_time`; ADD COLUMN `snapshot` varchar(512) NULL COMMENT '变更前的快照' AFTER `modify_time`;
ALTER TABLE `huhu`.`agent_salary`
MODIFY COLUMN `balance` decimal(20, 6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '总金额' AFTER `month`,
MODIFY COLUMN `opencard_balance` decimal(20, 6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '开卡奖励金额' AFTER `balance`,
MODIFY COLUMN `recharge_balance` decimal(20, 6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '充值奖励金额' AFTER `opencard_balance`,
MODIFY COLUMN `upgrade_balance` decimal(20, 6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '购买VIP会员奖励金额' AFTER `recharge_balance`,
MODIFY COLUMN `upgrade_super_balance` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '购买超级VIP会员奖励金额' AFTER `upgrade_balance`,
ADD COLUMN `share_balance` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '分享赚奖励' AFTER `upgrade_super_balance`,
ADD COLUMN `zigousheng_balance` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '自购省奖励' AFTER `share_balance`,
ADD COLUMN `pingtui_balance` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '推荐分成奖励' AFTER `zigousheng_balance`,
ADD COLUMN `tech_charge` decimal(20, 6) NOT NULL COMMENT '技术服务费' AFTER `pingtui_balance`,
MODIFY COLUMN `tax_balance` decimal(20, 6) UNSIGNED NOT NULL DEFAULT 0 COMMENT '缴税金额' AFTER `upgrade_super_balance`;
ALTER TABLE `huhu`.`agent_reward`
MODIFY COLUMN `reward_type` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员 60 分享赚 300 自购省 得的购买年-VIP; 720 城市代理商所得的购买半年-VIP; 730 城市代理商所得的购买超级VIP收益; 740 城市代理商的红包收益; 750 城市代理商的自购省收益; 760 城市代理商的分享赚收益 ' AFTER `user_id`;
ALTER TABLE `huhu`.`agent_account_log`
ADD COLUMN `snapshot` varchar(255) NOT NULL DEFAULT '' COMMENT '变更前的快照' AFTER `modify_time`;
\ 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