Commit ea68f2c1 by guanchen

添加修复已结算数据逻辑

parent f4966870
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 com.lanren.huhu.partner.schedule.PartnerSettleTask;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; @Autowired private PartnerSettleTask partnerSettleTask; @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()); } /** * 结算全部用户 */ @RequestMapping(value = "/finance", method = RequestMethod.GET) public Result<String> doFinanceSettle(@RequestHeader HttpHeaders headers) { partnerSettleTask.runScheduledTask(); logger.info("============>" + Thread.currentThread().getName()); Result<String> result = new Result<String>(); result.setData("异步,正在执行刷新......"); return result; }} 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 com.lanren.huhu.partner.schedule.PartnerSettleTask;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; @Autowired private PartnerSettleTask partnerSettleTask; @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()); } /** * 结算全部用户 */ @RequestMapping(value = "/finance", method = RequestMethod.GET) public Result<String> doFinanceSettle(@RequestHeader HttpHeaders headers) { partnerSettleTask.runSettle(); logger.info("============>" + Thread.currentThread().getName()); Result<String> result = new Result<String>(); result.setData("异步,正在执行刷新......"); return result; } /** * 汇总合伙人已结算数据 */ @RequestMapping(value = "/summary/{dateStr}/{uid}", method = RequestMethod.GET) public Result<String> doSummarySettled(@PathVariable("dateStr") String dateStr, @PathVariable("uid") int uid, @RequestHeader HttpHeaders headers) { return partnerManager.runSummary(dateStr, uid); }}
\ No newline at end of file \ 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.PartnerAccountLog; import com.lanren.huhu.partner.domain.PartnerAccountLog;
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 PartnerAccountLogMapper extends BaseMapper<PartnerAccountLog> { public interface PartnerAccountLogMapper extends BaseMapper<PartnerAccountLog> {
int updateBatch(List<PartnerAccountLog> list); int updateBatch(List<PartnerAccountLog> list);
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanren.huhu.partner.domain.PartnerReward; import com.lanren.huhu.partner.domain.PartnerReward;
import com.lanren.huhu.partner.model.PartnerSettle; import com.lanren.huhu.partner.model.PartnerSettle;
import com.lanren.huhu.partner.model.PartnerSummaryContent;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -29,4 +30,6 @@ public interface PartnerRewardMapper extends BaseMapper<PartnerReward> { ...@@ -29,4 +30,6 @@ public interface PartnerRewardMapper extends BaseMapper<PartnerReward> {
PartnerSettle selectPartnerSettleByTsAndUid(Long beginTs, Long endTs, Integer userId); PartnerSettle selectPartnerSettleByTsAndUid(Long beginTs, Long endTs, Integer userId);
int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs); int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs);
PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
} }
\ No newline at end of file
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(0); } 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(0); } else { result.setCode(500); } return result; } public Result<String> runSummary(String dateStr, int userId) { Result<String> result = new Result<>(); if (partnerSettleTask.runSummary(dateStr, userId)) { result.setCode(0); } else { result.setCode(500); } return result; }}
\ No newline at end of file \ No newline at end of file
......
...@@ -32,17 +32,27 @@ public class AgentRewardMessage extends BaseModel { ...@@ -32,17 +32,27 @@ public class AgentRewardMessage extends BaseModel {
String rewardTypeChild; String rewardTypeChild;
String orderRateArray; String orderRateArray;
String sourceOrder; String sourceOrder;
// public AgentRewardMessage(int rewardType, String rechargeTime, int sourceUserId, String referenceId, int agentId, BigDecimal agentReward, int settleState, String orderType, String orderSn, String subOrderSn, BigDecimal orderCommission) {
// this.rewardType = rewardType; @Override
// this.rechargeTime = rechargeTime; public AgentRewardMessage clone() {
// this.sourceUserId = sourceUserId; AgentRewardMessage one = new AgentRewardMessage();
// this.referenceId = referenceId; one.rewardType = this.rewardType;
// this.agentId = agentId; one.rechargeTime = this.rechargeTime;
// this.agentReward = agentReward; one.sourceUserId = this.sourceUserId;
// this.settleState = settleState; one.referenceId = this.referenceId;
// this.orderType = orderType; one.agentId = this.agentId;
// this.orderSn = orderSn; one.agentReward = this.agentReward;
// this.subOrderSn = subOrderSn; one.settleState = this.settleState;
// this.orderCommission = orderCommission; one.orderType = this.orderType;
// } one.orderSn = this.orderSn;
one.subOrderSn = this.subOrderSn;
one.orderCommission = this.orderCommission;
one.sourceUserPayment = this.sourceUserPayment;
one.orderGoodsId = this.orderGoodsId;
one.orderTitle = this.orderTitle;
one.rewardTypeChild = this.rewardTypeChild;
one.orderRateArray = this.orderRateArray;
one.sourceOrder = this.sourceOrder;
return one;
}
} }
package com.lanren.huhu.partner.model;
import com.lanren.huhu.partner.model.base.BaseModel;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author chen
* @title: PartnerSummaryContent
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.model
* @date 2019-07-26 17:35
*/
@Data
public class PartnerSummaryContent extends BaseModel {
private BigDecimal cash;
private int num;
private BigDecimal upCash;
private int upNum;
private BigDecimal icash;
private int inum;
private BigDecimal pcash;
private int pnum;
private BigDecimal scash;
private int snum;
private BigDecimal rcash;
}
...@@ -115,7 +115,8 @@ public class AgentRewardQueueTask { ...@@ -115,7 +115,8 @@ public class AgentRewardQueueTask {
logger.info("代理商id: {} 不存在, 跳过不处理", message); logger.info("代理商id: {} 不存在, 跳过不处理", message);
return; return;
} }
if (userAgent.getAgentLevel() != AGENT_LEVEL_4 && (rewardType == AGENT_REWARD_TYPE_SELF_ORDER || rewardType == AGENT_REWARD_TYPE_SHARE_ORDER) ) { if (userAgent.getAgentLevel() != AGENT_LEVEL_4 &&
(rewardType == AGENT_REWARD_TYPE_SELF_ORDER || rewardType == AGENT_REWARD_TYPE_SHARE_ORDER || rewardType == AGENT_REWARD_TYPE_REDPACK) ) {
logger.info("奖励类型{}, 代理商id: {} 不是城市代理, 跳过不处理", rewardType, message); logger.info("奖励类型{}, 代理商id: {} 不是城市代理, 跳过不处理", rewardType, message);
return; return;
} }
...@@ -148,6 +149,10 @@ public class AgentRewardQueueTask { ...@@ -148,6 +149,10 @@ public class AgentRewardQueueTask {
break; break;
} }
} }
if (rewardList.size() > 3) {
logger.error("代理商推荐奖励处理异常 奖励人数超出3人, 奖励消息: {}", message);
return;
}
/** /**
* 如果上面检查通过, 证明代理商关系没问题, 后面处理只看rewardList的size * 如果上面检查通过, 证明代理商关系没问题, 后面处理只看rewardList的size
* 决定比例怎么分: 1个人-拿3份; 2个人-第二个拿后2份; 3个人-各1份 * 决定比例怎么分: 1个人-拿3份; 2个人-第二个拿后2份; 3个人-各1份
...@@ -174,9 +179,12 @@ public class AgentRewardQueueTask { ...@@ -174,9 +179,12 @@ public class AgentRewardQueueTask {
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
for (int i=0; i<rewardList.size(); i++) { for (int i=0; i<rewardList.size(); i++) {
BigDecimal commissionRate = rateList.get(i); BigDecimal commissionRate = rateList.get(i);
AgentReward reward = doInsert(commissionRate, rewardList.get(i), message); AgentReward reward = doInsert(commissionRate, rewardList.get(i), message.clone());
if (reward != null) { if (reward != null) {
pushList.add(reward); pushList.add(reward);
if (reward.getAgentLevel() == AGENT_LEVEL_4) {
pushRewardQueue(reward, message);
}
} }
} }
/** /**
...@@ -214,6 +222,13 @@ public class AgentRewardQueueTask { ...@@ -214,6 +222,13 @@ public class AgentRewardQueueTask {
} }
} }
private void pushRewardQueue(AgentReward reward, AgentRewardMessage message) {
// message.setAgentId(reward.getAgentId());
// message.setAgentReward(reward.getAmount());
// message.setOrderRateArray(reward.getRatioAll());
return;
}
private AgentReward doInsert(BigDecimal commissionRate, ParentAgent agent, AgentRewardMessage message) { private AgentReward doInsert(BigDecimal commissionRate, ParentAgent agent, AgentRewardMessage message) {
try { try {
int rewardType = message.getRewardType(); int rewardType = message.getRewardType();
......
package com.lanren.huhu.partner.schedule; package com.lanren.huhu.partner.schedule;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanren.huhu.partner.constants.Constants; import com.lanren.huhu.partner.constants.Constants;
import com.lanren.huhu.partner.domain.*; import com.lanren.huhu.partner.domain.*;
import com.lanren.huhu.partner.model.PartnerSettle; import com.lanren.huhu.partner.model.PartnerSettle;
import com.lanren.huhu.partner.model.PartnerSnapshot; import com.lanren.huhu.partner.model.PartnerSnapshot;
import com.lanren.huhu.partner.model.PartnerSummaryContent;
import com.lanren.huhu.partner.service.*; import com.lanren.huhu.partner.service.*;
import com.lanren.huhu.partner.util.DateUtils; import com.lanren.huhu.partner.util.DateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -18,6 +20,7 @@ import org.springframework.transaction.TransactionDefinition; ...@@ -18,6 +20,7 @@ import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -57,7 +60,7 @@ public class PartnerSettleTask { ...@@ -57,7 +60,7 @@ public class PartnerSettleTask {
PartnerIncomeSummaryService partnerIncomeSummaryService; PartnerIncomeSummaryService partnerIncomeSummaryService;
@Async @Async
public void runScheduledTask() { public void runSettle() {
logger.info("run PartnerSettleTask"); logger.info("run PartnerSettleTask");
try { try {
long input = DateUtils.getLastMonth1stTimestamp(System.currentTimeMillis()); long input = DateUtils.getLastMonth1stTimestamp(System.currentTimeMillis());
...@@ -516,4 +519,61 @@ public class PartnerSettleTask { ...@@ -516,4 +519,61 @@ public class PartnerSettleTask {
return false; return false;
} }
} }
public boolean runSummary(String dateStr, int userId) {
try {
/**
* partner_account_log 跑结算日期
*/
Date dat = DateUtils.parse(dateStr, "yyyy-MM-dd");
int yeartime = Integer.parseInt(DateUtils.getYear(dat));
int monthtime = Integer.parseInt(DateUtils.getMonth(dat));
int daytime = Integer.parseInt(DateUtils.format(dat, "dd"));
PartnerAccountLog partnerAccountLog = partnerAccountLogService.getOneByUidAndDay(userId, yeartime, monthtime, daytime);
/**
* partner_income_summary 结算的数据月份 比dat早一个月
*/
long beginTs = DateUtils.getLastMonth1stTimestamp(dat.getTime()) / 1000L;
long endTs = DateUtils.getMonthLastTimestamp(dat.getTime()) / 1000L;
Date dat2 = new Date(beginTs * 1000L);
int yeartime2 = Integer.parseInt(DateUtils.getYear(dat2));
int monthtime2 = Integer.parseInt(DateUtils.getMonth(dat2));
PartnerIncomeSummary partnerIncomeSummary = partnerIncomeSummaryService.getOneByUidYearMonth(userId, yeartime2, monthtime2);
/**
* 获取显示的汇总数据
*/
PartnerSummaryContent partnerSummaryContent = partnerRewardService.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs);
/**
* 补差额
*/
BigDecimal sum = partnerSummaryContent.getCash()
.add(partnerSummaryContent.getUpCash())
.add(partnerSummaryContent.getIcash())
.add(partnerSummaryContent.getPcash())
.add(partnerSummaryContent.getScash())
.add(partnerSummaryContent.getRcash());
BigDecimal delta = partnerAccountLog.getChangeNum().subtract(sum);
partnerSummaryContent.setRcash(partnerSummaryContent.getRcash().add(delta));
/**
* 显示精度
*/
partnerSummaryContent.setCash(partnerSummaryContent.getCash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setUpCash(partnerSummaryContent.getUpCash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setIcash(partnerSummaryContent.getIcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setPcash(partnerSummaryContent.getPcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setScash(partnerSummaryContent.getScash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setRcash(partnerSummaryContent.getRcash().setScale(2, RoundingMode.HALF_UP));
/**
* 更新数据
*/
partnerIncomeSummary.setContent(JSON.toJSONString(partnerSummaryContent));
partnerIncomeSummary.setIncome(partnerAccountLog.getChangeNum());
partnerIncomeSummaryService.updateById(partnerIncomeSummary);
return true;
} catch (Exception e) {
logger.error(e.getMessage(), e);
return false;
}
}
} }
...@@ -24,6 +24,7 @@ public interface PartnerAccountLogService extends IService<PartnerAccountLog> { ...@@ -24,6 +24,7 @@ public interface PartnerAccountLogService extends IService<PartnerAccountLog> {
int insertOrUpdateSelective(PartnerAccountLog record); int insertOrUpdateSelective(PartnerAccountLog record);
PartnerAccountLog getOneByUidAndDay(int userId, int yeartime, int monthtime, int daytime);
} }
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -5,6 +5,7 @@ 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.PartnerReward; import com.lanren.huhu.partner.domain.PartnerReward;
import com.lanren.huhu.partner.model.PartnerSettle; import com.lanren.huhu.partner.model.PartnerSettle;
import com.lanren.huhu.partner.model.PartnerSummaryContent;
import java.util.List; import java.util.List;
...@@ -46,5 +47,7 @@ public interface PartnerRewardService extends IService<PartnerReward> { ...@@ -46,5 +47,7 @@ public interface PartnerRewardService extends IService<PartnerReward> {
* 更新奖励状态 * 更新奖励状态
*/ */
int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs); int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs);
PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
} }
package com.lanren.huhu.partner.service.impl; package com.lanren.huhu.partner.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.PartnerAccountLogMapper; import com.lanren.huhu.partner.dao.PartnerAccountLogMapper;
import com.lanren.huhu.partner.domain.PartnerAccountLog; import com.lanren.huhu.partner.domain.PartnerAccountLog;
...@@ -37,6 +38,22 @@ public class PartnerAccountLogServiceImpl extends ServiceImpl<PartnerAccountLogM ...@@ -37,6 +38,22 @@ public class PartnerAccountLogServiceImpl extends ServiceImpl<PartnerAccountLogM
public int insertOrUpdateSelective(PartnerAccountLog record) { public int insertOrUpdateSelective(PartnerAccountLog record) {
return baseMapper.insertOrUpdateSelective(record); return baseMapper.insertOrUpdateSelective(record);
} }
@Override
public PartnerAccountLog getOneByUidAndDay(int userId, int yeartime, int monthtime, int daytime) {
// SELECT user_id,change_num
// FROM huhu_finance.partner_account_log
// WHERE yeartime=#{yeartime} AND monthtime=#{monthtime} AND daytime=#{daytime}
// AND user_id = #{userId}
// AND type=50
QueryWrapper<PartnerAccountLog> wrapper = new QueryWrapper<PartnerAccountLog>();
wrapper.eq("user_id", userId)
.eq("yeartime", yeartime)
.eq("monthtime", monthtime)
.eq("daytime", daytime)
.eq("type", 50);
return baseMapper.selectOne(wrapper);
}
} }
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.PartnerRewardMapper; import com.lanren.huhu.partner.dao.PartnerRewardMapper;
import com.lanren.huhu.partner.domain.PartnerReward; import com.lanren.huhu.partner.domain.PartnerReward;
import com.lanren.huhu.partner.model.PartnerSettle; import com.lanren.huhu.partner.model.PartnerSettle;
import com.lanren.huhu.partner.model.PartnerSummaryContent;
import com.lanren.huhu.partner.service.PartnerRewardService; import com.lanren.huhu.partner.service.PartnerRewardService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -66,5 +67,10 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P ...@@ -66,5 +67,10 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P
public int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs) { public int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs) {
return baseMapper.updateRewardStatusByUidAndTs(userId, beginTs, endTs); return baseMapper.updateRewardStatusByUidAndTs(userId, beginTs, endTs);
} }
@Override
public PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs) {
return baseMapper.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs);
}
} }
...@@ -679,7 +679,7 @@ ...@@ -679,7 +679,7 @@
SELECT SELECT
agent_id, agent_id,
SUM(amount) balance, SUM(amount) balance,
SUM(case when agent_level=4 and reward_type in (50,740,60,760,300,750) then amount * 0.06 else 0 end) techCharge, SUM(case when agent_level=4 and reward_type in (50,740,60,760,300,750) AND settle_state>=0 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 (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 (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 (30,710,720) then amount else 0 end) upgradeBalance,
...@@ -715,7 +715,7 @@ ...@@ -715,7 +715,7 @@
SELECT SELECT
agent_id, agent_id,
SUM(amount) balance, SUM(amount) balance,
SUM(case when agent_level=4 and reward_type in (50,740,60,760,300,750) then amount * 0.06 else 0 end) techCharge, SUM(case when agent_level=4 and reward_type in (50,740,60,760,300,750) AND settle_state>=0 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 (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 (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 (30,710,720) then amount else 0 end) upgradeBalance,
......
...@@ -714,7 +714,7 @@ ...@@ -714,7 +714,7 @@
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 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_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 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 SUM(CASE WHEN reward_type IN (60, 110, 120) AND settle_state>0 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, ELSE 0 END) tech_charge,
0 wx_income, 0 wx_income,
0 wx_tax, 0 wx_tax,
...@@ -736,7 +736,7 @@ ...@@ -736,7 +736,7 @@
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 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_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 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 SUM(CASE WHEN reward_type IN (60, 110, 120) AND settle_state>=0 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 ELSE 0 END
) tech_charge, ) tech_charge,
0 wx_income, 0 wx_income,
...@@ -753,11 +753,29 @@ ...@@ -753,11 +753,29 @@
</select> </select>
<update id="updateRewardStatusByUidAndTs"> <update id="updateRewardStatusByUidAndTs">
UPDATE partner_reward UPDATE partner_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>=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 user_id = #{userId} AND user_id = #{userId}
AND reward_status=100 AND reward_status=100
AND reward_type != 130 AND reward_type != 130
</update> </update>
<select id="getPartnerSummaryContentByUidAndTime" resultType="com.lanren.huhu.partner.model.PartnerSummaryContent">
SELECT
SUM(if(reward_type=60 AND is_show_on_client=1, commission_acount, 0)) AS cash,
COUNT(reward_type=60 OR NULL) AS num,
SUM(if(reward_type IN (70, 100) AND is_show_on_client=1,commission_acount, 0)) AS upCash,
COUNT(reward_type IN (70, 100)OR NULL) AS upNum,
SUM(if(reward_type=80 AND is_show_on_client=1, commission_acount, 0)) AS icash,
COUNT(reward_type=80 OR NULL) AS inum,
SUM(if(reward_type=90 AND is_show_on_client=1, commission_acount, 0)) AS pcash,
COUNT(reward_type=90 OR NULL) AS pnum,
SUM(if(reward_type IN(110, 120) AND is_show_on_client=1,commission_acount, 0)) AS scash,
COUNT(reward_type IN(110, 120) OR NULL) AS snum,
SUM(if(is_show_on_client=0, commission_acount, 0)) AS rcash
FROM partner_reward
WHERE recharge_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status=120
AND user_id=#{userId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -38,21 +38,21 @@ WHERE a.recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59' ...@@ -38,21 +38,21 @@ WHERE a.recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59'
AND a.agent_level=0; AND a.agent_level=0;
测试 测试
select * from agent_salary where agent_id=29 and yeartime=2019 and monthtime=6; select * from agent_salary where agent_id=1648 and yeartime=2019 and monthtime=6;
select * from agent_account_log where agent_id=29; select * from agent_account_log where agent_id=1648;
select * from agent_reward where agent_id=29 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59'; select * from agent_reward where agent_id=1648 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59';
select * from agent_income_summary where agent_id=29 and yeartime=2019 and monthtime=6; select * from agent_income_summary where agent_id=1648 and yeartime=2019 and monthtime=6;
delete from agent_salary where agent_id=29 and yeartime=2019 and monthtime=6; delete from agent_salary where agent_id=1648 and yeartime=2019 and monthtime=6;
delete from agent_account_log where agent_id=29; delete from agent_account_log where agent_id=1648;
update agent_reward set reward_status=100,settle_state=case when settle_state=300 then 200 else settle_state end where agent_id=29 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59' ; update agent_reward set reward_status=100,settle_state=case when settle_state=300 then 200 else settle_state end where agent_id=1648 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59' ;
delete from agent_income_summary where agent_id=29 and yeartime=2019 and monthtime=6; delete from agent_income_summary where agent_id=1648 and yeartime=2019 and monthtime=6;
select * from partner_account_log where user_id=89 order by id desc; select * from partner_account_log where user_id=1648 order by id desc;
select * from partner_reward where user_id=89 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59'; select * from partner_reward where user_id=1648 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59';
select * from partner_income_summary where user_id=89 and yeartime=2019 and monthtime=6; select * from partner_income_summary where user_id=1648 and yeartime=2019 and monthtime=6;
delete from partner_account_log where user_id=89 and yeartime=2019 and monthtime=6; delete from partner_account_log where user_id=1648 and yeartime=2019 and monthtime=6;
update partner_reward set reward_status=100,settle_state=case when settle_state=300 then 200 else settle_state end where user_id=89 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59' ; update partner_reward set reward_status=100,settle_state=case when settle_state=300 then 200 else settle_state end where user_id=1648 and recharge_time BETWEEN '2019-06-01 00:00:00' and '2019-06-30 23:59:59' ;
delete from partner_income_summary where user_id=89 and yeartime=2019 and monthtime=6; delete from partner_income_summary where user_id=1648 and yeartime=2019 and monthtime=6;
\ No newline at end of file \ 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