Commit cfc9a1c7 by guanchen

更新 代理商 和 合伙人 结算逻辑

parent 07c1474a
......@@ -69,7 +69,7 @@ public class Constants {
*/
public static final int REWARD_STATUS_UNSETTLE = 100;
public static final int REWARD_STATUS_SETTLE = 120;
public static final int REWARD_STATUS_FAILED = 99;
// public static final int REWARD_STATUS_FAILED = 99;
/**
* 最小奖励金额 小于此不写入
*/
......
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
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
......
......@@ -2,10 +2,11 @@ package com.lanren.huhu.partner.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lanren.huhu.partner.domain.AgentExpandDaily;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.UpdateProvider;
import com.lanren.huhu.partner.service.AgentExpandDailyService;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> {
......@@ -19,4 +20,6 @@ public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> {
@UpdateProvider(type = AgentExpandDailySqlProvider.class, method = "updateByDatByDetail")
int updateByDatByDetail(String datStr);
Integer getMonthCntByAgent(int agentId, long beginTs, long endTs);
}
\ No newline at end of file
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanren.huhu.partner.domain.PartnerReward;
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.Param;
......@@ -31,5 +30,5 @@ public interface PartnerRewardMapper extends BaseMapper<PartnerReward> {
int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs);
PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
// PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
}
\ No newline at end of file
......@@ -8,7 +8,6 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
@Data
......@@ -78,25 +77,25 @@ public class AgentSalary implements Serializable {
private BigDecimal upgradeSuperBalance;
/**
* 缴税金额
*/
@TableField(value = "tax_balance")
private BigDecimal taxBalance;
/**
* 分享赚奖励
*/
@TableField(value = "share_balance")
private BigDecimal shareBalance;
/**
* 自购省奖励
* 缴税金额
*/
@TableField(value = "tax_balance")
private BigDecimal taxBalance;
/**
* 自购省奖励金额
*/
@TableField(value = "zigousheng_balance")
private BigDecimal zigoushengBalance;
/**
* 推荐分成奖励
* 来自城市代理商的平推奖励
*/
@TableField(value = "pingtui_balance")
private BigDecimal pingtuiBalance;
......@@ -108,6 +107,18 @@ public class AgentSalary implements Serializable {
private BigDecimal techCharge;
/**
* 红包技术服务费
*/
@TableField(value = "tech_charge_redpack")
private BigDecimal techChargeRedpack;
/**
* 佣金技术服务费
*/
@TableField(value = "tech_charge_order")
private BigDecimal techChargeOrder;
/**
* 姓名或许公司名称
*/
@TableField(value = "bank_account")
......@@ -153,7 +164,7 @@ public class AgentSalary implements Serializable {
* 提现时间
*/
@TableField(value = "modify_time")
private LocalDateTime modifyTime;
private Date modifyTime;
@TableField(value = "created_at")
private Long createdAt;
......@@ -186,16 +197,20 @@ public class AgentSalary implements Serializable {
public static final String COL_UPGRADE_SUPER_BALANCE = "upgrade_super_balance";
public static final String COL_TAX_BALANCE = "tax_balance";
public static final String COL_SHARE_BALANCE = "share_balance";
public static final String COL_TAX_BALANCE = "tax_balance";
public static final String COL_ZIGOUSHENG_BALANCE = "zigousheng_balance";
public static final String COL_PINGTUI_BALANCE = "pingtui_balance";
public static final String COL_TECH_CHARGE = "tech_charge";
public static final String COL_TECH_CHARGE_REDPACK = "tech_charge_redpack";
public static final String COL_TECH_CHARGE_ORDER = "tech_charge_order";
public static final String COL_BANK_ACCOUNT = "bank_account";
public static final String COL_BANK_CARD_NUMBER = "bank_card_number";
......
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
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
......
......@@ -19,6 +19,8 @@ public class AgentSettle extends BaseModel {
private int agentLevel;
private BigDecimal balance;
private BigDecimal techCharge;
private BigDecimal techChargeRedpack;
private BigDecimal techChargeOrder;
private BigDecimal opencardBalance;
private BigDecimal rechargeBalance;
private BigDecimal upgradeBalance;
......@@ -26,4 +28,17 @@ public class AgentSettle extends BaseModel {
private BigDecimal shareBalance;
private BigDecimal zigoushengBalance;
private BigDecimal pingtuiBalance;
private BigDecimal tax;
private BigDecimal cashPlace;
private int numPlace;
private BigDecimal cashRecharge;
private int numRecharge;
private BigDecimal cashOpenCard;
private int numOpenCard;
private BigDecimal cashUpgradePartner;
private int numUpgradePartner;
private BigDecimal marketPerformance;
private BigDecimal cashUpgradeMarket;
private BigDecimal cashRechargeMarket;
}
package com.lanren.huhu.partner.model;
import com.lanren.huhu.partner.model.base.BaseModel;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author chen
* @title: AgentSummaryContent
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.model
* @date 2019-08-21 16:26
*/
@Data
public class AgentSummaryContent extends BaseModel {
private BigDecimal cashPlace;
private int numPlace;
private BigDecimal cashRecharge;
private int numRecharge;
private BigDecimal cashOpenCard;
private int numOpenCard;
private BigDecimal cashUpgradePartner;
private int numUpgradePartner;
private BigDecimal marketPerformance;
private BigDecimal cashUpgradeMarket;
private BigDecimal cashRechargeMarket;
private int expandUsers;
}
package com.lanren.huhu.partner.model;
import com.lanren.huhu.partner.model.base.BaseModel;
import lombok.Data;
/**
* @author chen
* @title: OrderParam
* @projectName partner
* @package com.lanren.huhu.partner.model
* @date 2019-08-20 19:50
*/
@Data
public class OrderParam extends BaseModel {
private String orderType;
private String orderSn;
@Override
public boolean equals(Object obj) {
if(obj==null) {
return false;
}
if(this==obj) {
return true;
}
if(obj instanceof OrderParam){
OrderParam orderParam = (OrderParam) obj;
if(orderParam.orderType.equals(this.orderType) &&
orderParam.orderSn.equals(this.orderSn)) {
return true;
} else {
return false;
}
}
return false;
}
}
......@@ -16,12 +16,51 @@ import java.math.BigDecimal;
@Data
public class PartnerSettle extends BaseModel {
private int userId;
/**
* 扣除技术服务费后的购物奖励 包含 平台额外奖励部分
*/
private BigDecimal sumOrderCommission;
/**
* 扣除技术服务费后的在线充值奖励 包含 平台额外奖励部分
*/
private BigDecimal sumRedpack;
/**
* 其他全部奖励
*/
private BigDecimal sumOthers;
private BigDecimal techCharge;
private BigDecimal techChargeRedpack;
private BigDecimal techChargeOrder;
private BigDecimal wxIncome;
private BigDecimal wxTax;
private BigDecimal bankIncome;
private BigDecimal bankTax;
/**
* 在线充值
*/
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;
}
......@@ -26,4 +26,15 @@ public class PartnerSummaryContent extends BaseModel {
private BigDecimal scash;
private int snum;
private BigDecimal rcash;
private BigDecimal techChargeRedpack;
private BigDecimal techChargeOrder;
private BigDecimal sumOrderCommission;
private BigDecimal sumRedpack;
private BigDecimal sumOthers;
private BigDecimal wxIncome;
private BigDecimal wxTax;
private BigDecimal wxFreeBalance;
private BigDecimal bankIncome;
private BigDecimal bankTax;
private BigDecimal bankFreeBalance;
}
package com.lanren.huhu.partner.model;
import com.lanren.huhu.partner.model.base.BaseModel;
import lombok.Data;
/**
* @author chen
* @title: SubSubOrderParam
* @projectName partner
* @package com.lanren.huhu.partner.model
* @date 2019-08-20 19:51
*/
@Data
public class SubOrderParam extends BaseModel {
private String orderType;
private String orderSn;
private String subOrderSn;
@Override
public boolean equals(Object obj) {
if(obj==null) {
return false;
}
if(this==obj) {
return true;
}
if(obj instanceof SubOrderParam){
SubOrderParam orderParam = (SubOrderParam) obj;
if(orderParam.orderType.equals(this.orderType) &&
orderParam.orderSn.equals(this.orderSn) &&
orderParam.subOrderSn.equals(this.subOrderSn)) {
return true;
} else {
return false;
}
}
return false;
}
}
......@@ -63,11 +63,19 @@ public class AgentDailyExpandTask {
Date dat = DateUtils.parse(datStr, DateUtils.FORMAT_SHORT);
int now = (int)(System.currentTimeMillis() / 1000L);
int pageNo = 1;
int total = 0;
int totalPage = 0;
int cnt = 0;
long beginTs = DateUtils.parse(datStr, DateUtils.FORMAT_SHORT).getTime() / 1000L;
long endTs = beginTs + 24 * 60 * 60L - 1L;
while (true) {
Page<PartnerInviteRelation> page = new Page<PartnerInviteRelation>(pageNo, PAGE_SIZE);
IPage<PartnerInviteRelation> ipage = partnerInviteRelationService.selectPageByTs(page, beginTs, endTs);
if (total == 0) {
total = (int) ipage.getTotal();
totalPage = total % PAGE_SIZE == 0 ? total / PAGE_SIZE : total / PAGE_SIZE + 1;
logger.info("totalPage is {} ", totalPage);
}
List<PartnerInviteRelation> partnerInviteRelationList = ipage.getRecords();
if (partnerInviteRelationList != null && partnerInviteRelationList.size() > 0) {
for (PartnerInviteRelation partnerInviteRelation : partnerInviteRelationList) {
......@@ -83,15 +91,18 @@ public class AgentDailyExpandTask {
detail.setUpdatedAt(now);
agentExpandDetailService.insertOrUpdate(detail);
}
cnt++;
}
if (partnerInviteRelationList.size() > 0) {
agentExpandDailyService.updateByDatByDetail(datStr);
}
pageNo++;
} else {
}
if (pageNo >= totalPage) {
break;
}
pageNo++;
}
logger.info("cnt is {}", cnt);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
......
......@@ -7,11 +7,15 @@ import com.lanren.huhu.partner.service.AgentRewardService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import static com.lanren.huhu.partner.constants.Constants.*;
......@@ -32,6 +36,10 @@ public class RevokeAgentRewardTask {
AgentRevokeRecordsService agentRevokeRecordsService;
@Autowired
AgentRewardService agentRewardService;
@Autowired
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
@Scheduled(fixedDelay = 5000L)
public void runScheduledTask() {
......@@ -62,46 +70,67 @@ public class RevokeAgentRewardTask {
}
}
public void process(AgentRevokeRecords revokeRecord) {
int revokeType = revokeRecord.getRevokeType();
if (!AGENT_REVOKE_TYPE_MAP.keySet().contains(revokeType)) {
logger.info("未知的奖励类型 跳过不处理: {}", revokeRecord);
return;
}
AgentReward agentReward = null;
if (revokeType == AGENT_REVOKE_TYPE_ACTIVATION || revokeType == AGENT_REVOKE_TYPE_SELF_ORDER) {
agentReward = agentRewardService.getOneByRefId(revokeRecord.getRefId());
} else if (revokeType == AGENT_REVOKE_TYPE_SHARE_ORDER) {
agentReward = agentRewardService.getOneBySubOrderSn(revokeRecord.getOrderType(), revokeRecord.getOrderSn(), revokeRecord.getSubOrderSn());
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
}
/**
* 已结算状态 插负, 未结算状态 抹平
*/
if (null != agentReward) {
if (agentReward.getSettleState() == SETTLE_STATE_DONE) {
agentReward.setAmount(agentReward.getAmount().negate());
agentReward.setCommission(agentReward.getCommission().negate());
if (agentRewardService.insertOne(agentReward) > 0) {
revokeRecord.setState(REVOKE_STATE_DONE);
} else {
revokeRecord.setState(REVOKE_STATE_FAILED);
private void process(AgentRevokeRecords revokeRecord) {
TransactionStatus transactionStatus = null;
try {
int revokeType = revokeRecord.getRevokeType();
if (!AGENT_REVOKE_TYPE_MAP.keySet().contains(revokeType)) {
logger.info("未知的奖励类型 跳过不处理: {}", revokeRecord);
return;
}
/**
* 开启事务
*/
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
List<AgentReward> agentRewardList = null;
List<AgentReward> insertList = new ArrayList<AgentReward>();
List<AgentReward> updateList = new ArrayList<AgentReward>();
if (revokeType == AGENT_REVOKE_TYPE_ACTIVATION || revokeType == AGENT_REVOKE_TYPE_SELF_ORDER) {
agentRewardList = agentRewardService.getListByRefId(revokeRecord.getRefId());
} else if (revokeType == AGENT_REVOKE_TYPE_SHARE_ORDER) {
agentRewardList = agentRewardService.getListBySubOrderSn(revokeRecord.getOrderType(), revokeRecord.getOrderSn(), revokeRecord.getSubOrderSn());
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
}
/**
* 已结算状态 插负, 未结算状态 抹平
*/
if (null != agentRewardList && agentRewardList.size() > 0) {
for (AgentReward agentReward : agentRewardList) {
if (agentReward.getSettleState() == SETTLE_STATE_DONE) {
agentReward.setAmount(agentReward.getAmount().negate());
agentReward.setCommission(agentReward.getCommission().negate());
insertList.add(agentReward);
} else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) {
agentReward.setAmount(new BigDecimal(0));
agentReward.setCommission(new BigDecimal(0));
updateList.add(agentReward);
}
}
if (updateList.size() > 0) {
agentRewardService.updateBatch(updateList);
}
} else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) {
agentReward.setAmount(new BigDecimal(0));
agentReward.setCommission(new BigDecimal(0));
if (agentRewardService.updateById(agentReward)) {
revokeRecord.setState(REVOKE_STATE_DONE);
} else {
revokeRecord.setState(REVOKE_STATE_FAILED);
if (insertList.size() > 0) {
agentRewardService.batchInsert(insertList);
}
revokeRecord.setState(REVOKE_STATE_DONE);
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
}
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
agentRevokeRecordsService.updateById(revokeRecord);
/**
* 提交事务
*/
dataSourceTransactionManager.commit(transactionStatus);
} catch (Exception e) {
/**
* 回滚事务
*/
dataSourceTransactionManager.rollback(transactionStatus);
logger.error(e.getMessage(), e);
revokeRecord.setState(REVOKE_STATE_FAILED);
agentRevokeRecordsService.updateById(revokeRecord);
}
agentRevokeRecordsService.updateById(revokeRecord);
}
}
package com.lanren.huhu.partner.service;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentExpandDaily;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.AgentExpandDaily;
import java.util.List;
/**
* @author chen
......@@ -24,6 +25,8 @@ public interface AgentExpandDailyService extends IService<AgentExpandDaily> {
int insertOrUpdateSelective(AgentExpandDaily record);
int updateByDatByDetail(String datStr);
Integer getMonthCntByAgent(int agentId, long beginTs, long endTs);
}
......@@ -27,9 +27,9 @@ public interface AgentRewardService extends IService<AgentReward> {
int insertOrUpdateSelective(AgentReward record);
AgentReward getOneByRefId(String refId);
List<AgentReward> getListByRefId(String refId);
AgentReward getOneBySubOrderSn(String orderType, String orderSn, String subOrderSn);
List<AgentReward> getListBySubOrderSn(String orderType, String orderSn, String subOrderSn);
int insertOne(AgentReward record);
......
......@@ -27,3 +27,4 @@ public interface AgentSalaryService extends IService<AgentSalary> {
int insert(AgentSalary agentSalary);
}
......@@ -2,8 +2,10 @@ package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission;
import com.lanren.huhu.partner.model.OrderParam;
import java.util.List;
import java.util.Set;
/**
* @author houseme
......@@ -23,6 +25,6 @@ public interface OrderTaobaoJdCommissionService extends IService<OrderTaobaoJdCo
int insertOrUpdateSelective(OrderTaobaoJdCommission record);
OrderTaobaoJdCommission getOneByOrderSn(String orderType, String orderSn);
List<OrderTaobaoJdCommission> selectListByOrderParamSet(Set<OrderParam> orderParamSet);
}
......@@ -2,9 +2,12 @@ package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.OrderTaobaoJdGoodsCommission;
import com.lanren.huhu.partner.model.SubOrderParam;
import java.util.List;
/**
import java.util.Set;
/**
* @title: ${NAME}
* @projectName partner
* @description: TODO
......@@ -23,5 +26,5 @@ public interface OrderTaobaoJdGoodsCommissionService extends IService<OrderTaoba
int insertOrUpdateSelective(OrderTaobaoJdGoodsCommission record);
OrderTaobaoJdGoodsCommission getOneByOrderSn(String orderType, String orderSn, String subOrderSn);
List<OrderTaobaoJdGoodsCommission> selectListBySubOrderParamsSet(Set<SubOrderParam> subOrderParamsSet);
}
......@@ -2,9 +2,12 @@ package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.OrdersActive;
import com.lanren.huhu.partner.model.OrderParam;
import java.util.List;
/**
import java.util.Set;
/**
* @title: ${NAME}
* @projectName partner
* @description: TODO
......@@ -23,5 +26,5 @@ public interface OrdersActiveService extends IService<OrdersActive>{
int insertOrUpdateSelective(OrdersActive record);
OrdersActive getOneByOrderSn(String type, String orderSn);
List<OrdersActive> selectListByOrderParamSet(Set<OrderParam> orderParamSet);
}
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.PartnerReward;
import com.lanren.huhu.partner.model.PartnerSettle;
import com.lanren.huhu.partner.model.PartnerSummaryContent;
import java.util.List;
......@@ -48,6 +47,6 @@ public interface PartnerRewardService extends IService<PartnerReward> {
*/
int updateRewardStatusByUidAndTs(Integer userId, Long beginTs, Long endTs);
PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
// PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
}
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.lanren.huhu.partner.dao.AgentExpandDailyMapper;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentExpandDaily;
import com.lanren.huhu.partner.service.AgentExpandDailyService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author chen
......@@ -44,6 +43,11 @@ public class AgentExpandDailyServiceImpl extends ServiceImpl<AgentExpandDailyMap
public int updateByDatByDetail(String datStr) {
return baseMapper.updateByDatByDetail(datStr);
}
@Override
public Integer getMonthCntByAgent(int agentId, long beginTs, long endTs) {
return baseMapper.getMonthCntByAgent(agentId, beginTs, endTs);
}
}
package com.lanren.huhu.partner.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -44,15 +45,18 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent
}
@Override
public AgentReward getOneByRefId(String refId) {
return null;
public List<AgentReward> getListByRefId(String refId) {
QueryWrapper<AgentReward> wrapper = new QueryWrapper<AgentReward>();
wrapper.eq("reference_id", refId).gt("settle_state", 0);
return baseMapper.selectList(wrapper);
}
@Override
public AgentReward getOneBySubOrderSn(String orderType, String orderSn, String subOrderSn) {
return null;
public List<AgentReward> getListBySubOrderSn(String orderType, String orderSn, String subOrderSn) {
QueryWrapper<AgentReward> wrapper = new QueryWrapper<AgentReward>();
wrapper.eq("order_type", orderType).eq("order_sn", orderSn).eq("sub_order_sn", subOrderSn)
.gt("settle_state", 0);
return baseMapper.selectList(wrapper);
}
@Override
public int insertOne(AgentReward record) {
List<AgentReward> list = new ArrayList<AgentReward>();
......
......@@ -39,6 +39,7 @@ public class AgentSalaryServiceImpl extends ServiceImpl<AgentSalaryMapper, Agent
public int insertOrUpdateSelective(AgentSalary record) {
return baseMapper.insertOrUpdateSelective(record);
}
@Override
@Options(useGeneratedKeys = true, keyProperty = "agentSalary", keyColumn = "id")
public int insert(AgentSalary agentSalary) {
......@@ -46,3 +47,4 @@ public class AgentSalaryServiceImpl extends ServiceImpl<AgentSalaryMapper, Agent
}
}
......@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.OrderTaobaoJdCommissionMapper;
import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission;
import com.lanren.huhu.partner.model.OrderParam;
import com.lanren.huhu.partner.service.OrderTaobaoJdCommissionService;
import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* @author houseme
......@@ -40,10 +43,18 @@ public class OrderTaobaoJdCommissionServiceImpl extends ServiceImpl<OrderTaobaoJ
}
@Override
public OrderTaobaoJdCommission getOneByOrderSn(String orderType, String orderSn) {
public List<OrderTaobaoJdCommission> selectListByOrderParamSet(Set<OrderParam> orderParamSet) {
QueryWrapper<OrderTaobaoJdCommission> wrapper = new QueryWrapper<OrderTaobaoJdCommission>();
wrapper.eq("type", orderType).eq("order_sn", orderSn);
return baseMapper.selectOne(wrapper);
Iterator<OrderParam> iterator = orderParamSet.iterator();
for (int idx = 0; idx < orderParamSet.size(); idx++) {
OrderParam order = iterator.next();
wrapper.nested(i -> i.eq("type", order.getOrderType())
.eq("order_sn", order.getOrderSn()));
if (idx < orderParamSet.size() - 1) {
wrapper.or();
}
}
return baseMapper.selectList(wrapper);
}
}
......@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.OrderTaobaoJdGoodsCommissionMapper;
import com.lanren.huhu.partner.domain.OrderTaobaoJdGoodsCommission;
import com.lanren.huhu.partner.model.SubOrderParam;
import com.lanren.huhu.partner.service.OrderTaobaoJdGoodsCommissionService;
import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List;
/**
import java.util.Set;
/**
* @title: ${NAME}
* @projectName partner
* @description: TODO
......@@ -36,9 +40,18 @@ public class OrderTaobaoJdGoodsCommissionServiceImpl extends ServiceImpl<OrderTa
return baseMapper.insertOrUpdateSelective(record);
}
@Override
public OrderTaobaoJdGoodsCommission getOneByOrderSn(String orderType, String orderSn, String subOrderSn) {
public List<OrderTaobaoJdGoodsCommission> selectListBySubOrderParamsSet(Set<SubOrderParam> subOrderParamsSet) {
QueryWrapper<OrderTaobaoJdGoodsCommission> wrapper = new QueryWrapper<OrderTaobaoJdGoodsCommission>();
wrapper.eq("type", orderType).eq("order_sn", orderSn).eq("sub_order_sn", subOrderSn);
return baseMapper.selectOne(wrapper);
Iterator<SubOrderParam> iterator = subOrderParamsSet.iterator();
for (int idx = 0; idx < subOrderParamsSet.size(); idx++) {
SubOrderParam order = iterator.next();
wrapper.nested(i -> i.eq("type", order.getOrderType())
.eq("order_sn", order.getOrderSn())
.eq("sub_order_sn", order.getSubOrderSn()));
if (idx < subOrderParamsSet.size() - 1) {
wrapper.or();
}
}
return baseMapper.selectList(wrapper);
}
}
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.lanren.huhu.partner.dao.OrdersActiveMapper;
import com.lanren.huhu.partner.domain.OrdersActive;
import com.lanren.huhu.partner.model.OrderParam;
import com.lanren.huhu.partner.service.OrdersActiveService;
import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List;
/**
import java.util.Set;
/**
* @title: ${NAME}
* @projectName partner
* @description: TODO
......@@ -36,7 +41,17 @@ public class OrdersActiveServiceImpl extends ServiceImpl<OrdersActiveMapper, Ord
}
@Override
public OrdersActive getOneByOrderSn(String type, String orderSn) {
return baseMapper.selectOneByOrderSn(type, orderSn);
public List<OrdersActive> selectListByOrderParamSet(Set<OrderParam> orderParamSet) {
QueryWrapper<OrdersActive> wrapper = new QueryWrapper<OrdersActive>();
Iterator<OrderParam> iterator = orderParamSet.iterator();
for (int idx = 0; idx < orderParamSet.size(); idx++) {
OrderParam order = iterator.next();
wrapper.nested(i -> i.eq("type", order.getOrderType())
.eq("order_sn", order.getOrderSn()));
if (idx < orderParamSet.size() - 1) {
wrapper.or();
}
}
return baseMapper.selectList(wrapper);
}
}
......@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.PartnerRewardMapper;
import com.lanren.huhu.partner.domain.PartnerReward;
import com.lanren.huhu.partner.model.PartnerSettle;
import com.lanren.huhu.partner.model.PartnerSummaryContent;
import com.lanren.huhu.partner.service.PartnerRewardService;
import org.springframework.stereotype.Service;
......@@ -68,9 +67,9 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P
return baseMapper.updateRewardStatusByUidAndTs(userId, beginTs, endTs);
}
@Override
public PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs) {
return baseMapper.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs);
}
// @Override
// public PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs) {
// return baseMapper.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs);
// }
}
......@@ -179,4 +179,10 @@
</if>
</trim>
</insert>
<select id="getMonthCntByAgent" resultType="int">
SELECT SUM(cnt_expand) cnt
FROM agent_expand_daily
WHERE agent_id=#{agentId}
AND dat BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
</select>
</mapper>
\ No newline at end of file
......@@ -668,31 +668,57 @@
b.agent_level,
a.balance,
a.techCharge,
a.techChargeRedpack,
a.techChargeOrder,
a.opencardBalance,
a.rechargeBalance,
a.upgradeBalance,
a.upgradeSuperBalance,
a.shareBalance,
a.zigoushengBalance,
a.pingtuiBalance
a.pingtuiBalance,
0 tax,
a.cash_place,
a.num_place,
a.cash_recharge,
a.num_recharge,
a.cash_open_card,
a.num_open_card,
a.cash_upgrade_partner,
a.num_upgrade_partner,
a.marketPerformance,
a.cash_upgrade_market,
a.cash_recharge_market
FROM (
SELECT
agent_id,
SUM(amount) balance,
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 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) then amount * 0.06 else 0 end) techChargeRedpack,
SUM(case when agent_level=4 and reward_type in (60,760,300,750) then amount * 0.06 else 0 end) techChargeOrder,
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
SUM(0) pingtuiBalance,
SUM(if(reward_type IN (60, 750, 300, 760),amount, 0)) AS cash_place,
COUNT(reward_type IN (60, 750, 300, 760) OR NULL) AS num_place,
SUM(if(reward_type IN (50, 740),amount, 0)) AS cash_recharge,
COUNT(reward_type IN (50, 740) OR NULL) AS num_recharge,
SUM(if(reward_type=40, amount, 0)) AS cash_open_card,
COUNT(reward_type=40 OR NULL) AS num_open_card,
SUM(if(reward_type IN (30, 20, 710, 720, 730),amount, 0)) AS cash_upgrade_partner,
COUNT(reward_type IN (30, 20, 710, 720, 730) OR NULL) AS num_upgrade_partner,
SUM(if(reward_type IN (50, 30, 20),cash_code, 0)) AS marketPerformance,
SUM(if(reward_type IN (30, 20),cash_code, 0)) AS cash_upgrade_market,
SUM(if(reward_type=50, cash_code, 0)) AS cash_recharge_market
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
......@@ -704,32 +730,58 @@
b.agent_level,
a.balance,
a.techCharge,
a.techChargeRedpack,
a.techChargeOrder,
a.opencardBalance,
a.rechargeBalance,
a.upgradeBalance,
a.upgradeSuperBalance,
a.shareBalance,
a.zigoushengBalance,
a.pingtuiBalance
a.pingtuiBalance,
0 tax,
a.cash_place,
a.num_place,
a.cash_recharge,
a.num_recharge,
a.cash_open_card,
a.num_open_card,
a.cash_upgrade_partner,
a.num_upgrade_partner,
a.marketPerformance,
a.cash_upgrade_market,
a.cash_recharge_market
FROM (
SELECT
agent_id,
SUM(amount) balance,
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 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) then amount * 0.06 else 0 end) techChargeRedpack,
SUM(case when agent_level=4 and reward_type in (60,760,300,750) then amount * 0.06 else 0 end) techChargeOrder,
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
SUM(0) pingtuiBalance,
SUM(if(reward_type IN (60, 750, 300, 760),amount, 0)) AS cash_place,
COUNT(reward_type IN (60, 750, 300, 760) OR NULL) AS num_place,
SUM(if(reward_type IN (50, 740),amount, 0)) AS cash_recharge,
COUNT(reward_type IN (50, 740) OR NULL) AS num_recharge,
SUM(if(reward_type=40, amount, 0)) AS cash_open_card,
COUNT(reward_type=40 OR NULL) AS num_open_card,
SUM(if(reward_type IN (30, 20, 710, 720, 730),amount, 0)) AS cash_upgrade_partner,
COUNT(reward_type IN (30, 20, 710, 720, 730) OR NULL) AS num_upgrade_partner,
SUM(if(reward_type IN (50, 30, 20),cash_code, 0)) AS marketPerformance,
SUM(if(reward_type IN (30, 20),cash_code, 0)) AS cash_upgrade_market,
SUM(if(reward_type=50, cash_code, 0)) AS cash_recharge_market
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
......
......@@ -14,11 +14,13 @@
<result column="recharge_balance" property="rechargeBalance" />
<result column="upgrade_balance" property="upgradeBalance" />
<result column="upgrade_super_balance" property="upgradeSuperBalance" />
<result column="tax_balance" property="taxBalance" />
<result column="share_balance" property="shareBalance" />
<result column="tax_balance" property="taxBalance" />
<result column="zigousheng_balance" property="zigoushengBalance" />
<result column="pingtui_balance" property="pingtuiBalance" />
<result column="tech_charge" property="techCharge" />
<result column="tech_charge_redpack" property="techChargeRedpack" />
<result column="tech_charge_order" property="techChargeOrder" />
<result column="bank_account" property="bankAccount" />
<result column="bank_card_number" property="bankCardNumber" />
<result column="bank_name" property="bankName" />
......@@ -34,9 +36,10 @@
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, user_id, agent_id, yeartime, monthtime, `month`, balance, opencard_balance, recharge_balance,
upgrade_balance, upgrade_super_balance, tax_balance, share_balance, zigousheng_balance,
pingtui_balance, tech_charge, bank_account, bank_card_number, bank_name, branch_name,
reference_id, `status`, create_time, modify_time, created_at, updated_at, deleted_at
upgrade_balance, upgrade_super_balance, share_balance, tax_balance, zigousheng_balance,
pingtui_balance, tech_charge, tech_charge_redpack, tech_charge_order, bank_account,
bank_card_number, bank_name, branch_name, reference_id, `status`, create_time, modify_time,
created_at, updated_at, deleted_at
</sql>
<update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated-->
......@@ -92,14 +95,14 @@
when id = #{item.id} then #{item.upgradeSuperBalance}
</foreach>
</trim>
<trim prefix="tax_balance = case" suffix="end,">
<trim prefix="share_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.taxBalance}
when id = #{item.id} then #{item.shareBalance}
</foreach>
</trim>
<trim prefix="share_balance = case" suffix="end,">
<trim prefix="tax_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.shareBalance}
when id = #{item.id} then #{item.taxBalance}
</foreach>
</trim>
<trim prefix="zigousheng_balance = case" suffix="end,">
......@@ -117,6 +120,16 @@
when id = #{item.id} then #{item.techCharge}
</foreach>
</trim>
<trim prefix="tech_charge_redpack = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.techChargeRedpack}
</foreach>
</trim>
<trim prefix="tech_charge_order = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.techChargeOrder}
</foreach>
</trim>
<trim prefix="bank_account = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.bankAccount}
......@@ -182,18 +195,19 @@
<!--@mbg.generated-->
insert into agent_salary
(user_id, agent_id, yeartime, monthtime, `month`, balance, opencard_balance, recharge_balance,
upgrade_balance, upgrade_super_balance, tax_balance, share_balance, zigousheng_balance,
pingtui_balance, tech_charge, bank_account, bank_card_number, bank_name, branch_name,
reference_id, `status`, create_time, modify_time, created_at, updated_at, deleted_at
)
upgrade_balance, upgrade_super_balance, share_balance, tax_balance, zigousheng_balance,
pingtui_balance, tech_charge, tech_charge_redpack, tech_charge_order, bank_account,
bank_card_number, bank_name, branch_name, reference_id, `status`, create_time,
modify_time, created_at, updated_at, deleted_at)
values
<foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.agentId}, #{item.yeartime}, #{item.monthtime}, #{item.month},
#{item.balance}, #{item.opencardBalance}, #{item.rechargeBalance}, #{item.upgradeBalance},
#{item.upgradeSuperBalance}, #{item.taxBalance}, #{item.shareBalance}, #{item.zigoushengBalance},
#{item.pingtuiBalance}, #{item.techCharge}, #{item.bankAccount}, #{item.bankCardNumber},
#{item.bankName}, #{item.branchName}, #{item.referenceId}, #{item.status}, #{item.createTime},
#{item.modifyTime}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt})
#{item.upgradeSuperBalance}, #{item.shareBalance}, #{item.taxBalance}, #{item.zigoushengBalance},
#{item.pingtuiBalance}, #{item.techCharge}, #{item.techChargeRedpack}, #{item.techChargeOrder},
#{item.bankAccount}, #{item.bankCardNumber}, #{item.bankName}, #{item.branchName},
#{item.referenceId}, #{item.status}, #{item.createTime}, #{item.modifyTime}, #{item.createdAt},
#{item.updatedAt}, #{item.deletedAt})
</foreach>
</insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentSalary" useGeneratedKeys="true">
......@@ -213,11 +227,13 @@
recharge_balance,
upgrade_balance,
upgrade_super_balance,
tax_balance,
share_balance,
tax_balance,
zigousheng_balance,
pingtui_balance,
tech_charge,
tech_charge_redpack,
tech_charge_order,
bank_account,
bank_card_number,
bank_name,
......@@ -245,11 +261,13 @@
#{rechargeBalance},
#{upgradeBalance},
#{upgradeSuperBalance},
#{taxBalance},
#{shareBalance},
#{taxBalance},
#{zigoushengBalance},
#{pingtuiBalance},
#{techCharge},
#{techChargeRedpack},
#{techChargeOrder},
#{bankAccount},
#{bankCardNumber},
#{bankName},
......@@ -277,11 +295,13 @@
recharge_balance = #{rechargeBalance},
upgrade_balance = #{upgradeBalance},
upgrade_super_balance = #{upgradeSuperBalance},
tax_balance = #{taxBalance},
share_balance = #{shareBalance},
tax_balance = #{taxBalance},
zigousheng_balance = #{zigoushengBalance},
pingtui_balance = #{pingtuiBalance},
tech_charge = #{techCharge},
tech_charge_redpack = #{techChargeRedpack},
tech_charge_order = #{techChargeOrder},
bank_account = #{bankAccount},
bank_card_number = #{bankCardNumber},
bank_name = #{bankName},
......@@ -332,12 +352,12 @@
<if test="upgradeSuperBalance != null">
upgrade_super_balance,
</if>
<if test="taxBalance != null">
tax_balance,
</if>
<if test="shareBalance != null">
share_balance,
</if>
<if test="taxBalance != null">
tax_balance,
</if>
<if test="zigoushengBalance != null">
zigousheng_balance,
</if>
......@@ -347,6 +367,12 @@
<if test="techCharge != null">
tech_charge,
</if>
<if test="techChargeRedpack != null">
tech_charge_redpack,
</if>
<if test="techChargeOrder != null">
tech_charge_order,
</if>
<if test="bankAccount != null">
bank_account,
</if>
......@@ -416,12 +442,12 @@
<if test="upgradeSuperBalance != null">
#{upgradeSuperBalance},
</if>
<if test="taxBalance != null">
#{taxBalance},
</if>
<if test="shareBalance != null">
#{shareBalance},
</if>
<if test="taxBalance != null">
#{taxBalance},
</if>
<if test="zigoushengBalance != null">
#{zigoushengBalance},
</if>
......@@ -431,6 +457,12 @@
<if test="techCharge != null">
#{techCharge},
</if>
<if test="techChargeRedpack != null">
#{techChargeRedpack},
</if>
<if test="techChargeOrder != null">
#{techChargeOrder},
</if>
<if test="bankAccount != null">
#{bankAccount},
</if>
......@@ -500,12 +532,12 @@
<if test="upgradeSuperBalance != null">
upgrade_super_balance = #{upgradeSuperBalance},
</if>
<if test="taxBalance != null">
tax_balance = #{taxBalance},
</if>
<if test="shareBalance != null">
share_balance = #{shareBalance},
</if>
<if test="taxBalance != null">
tax_balance = #{taxBalance},
</if>
<if test="zigoushengBalance != null">
zigousheng_balance = #{zigoushengBalance},
</if>
......@@ -515,6 +547,12 @@
<if test="techCharge != null">
tech_charge = #{techCharge},
</if>
<if test="techChargeRedpack != null">
tech_charge_redpack = #{techChargeRedpack},
</if>
<if test="techChargeOrder != null">
tech_charge_order = #{techChargeOrder},
</if>
<if test="bankAccount != null">
bank_account = #{bankAccount},
</if>
......
......@@ -714,12 +714,25 @@
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 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,
SUM(CASE WHEN reward_type IN (60) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
ELSE 0 END) tech_charge_redpack,
SUM(CASE WHEN reward_type IN (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
ELSE 0 END) tech_charge_order,
0 wx_income,
0 wx_tax,
0 bank_income,
0 bank_tax
0 bank_tax,
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})
......@@ -736,13 +749,27 @@
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 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
SUM(CASE WHEN reward_type IN (60) THEN commission_acount * CASE WHEN user_is_super=1 THEN 0.03 WHEN user_partner_level=20 THEN 0.06 ELSE 0 END
ELSE 0 END
) tech_charge,
) tech_charge_redpack,
SUM(CASE WHEN reward_type IN (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
ELSE 0 END
) tech_charge_order,
0 wx_income,
0 wx_tax,
0 bank_income,
0 bank_tax
0 bank_tax,
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})
......@@ -760,22 +787,23 @@
AND reward_status=100
AND reward_type != 130
</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>
<!--<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 reward_type != 130-->
<!--AND user_id=#{userId}-->
<!--</select>-->
</mapper>
\ No newline at end of file
......@@ -79,4 +79,132 @@ set self_rate=0.864
where type in (10,30) and self_role=30;
ALTER TABLE `huhu`.`partner_reward`
ADD COLUMN `tech_fee_rate` decimal(11, 6) NOT NULL DEFAULT 0 COMMENT '技术服务费扣除比例' AFTER `ratio_all`;
\ No newline at end of file
ADD COLUMN `tech_fee_rate` decimal(11, 6) NOT NULL DEFAULT 0 COMMENT '技术服务费扣除比例' AFTER `ratio_all`;
ALTER TABLE `huhu`.`agent_salary`
MODIFY COLUMN `pingtui_balance` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '来自城市代理商的平推奖励' AFTER `zigousheng_balance`,
MODIFY COLUMN `tech_charge` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '技术服务费' AFTER `pingtui_balance`,
ADD COLUMN `tech_charge_redpack` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '红包技术服务费' AFTER `tech_charge`,
ADD COLUMN `tech_charge_order` decimal(20, 6) NOT NULL DEFAULT 0 COMMENT '佣金技术服务费' AFTER `tech_charge_redpack`;
ALTER TABLE `huhu`.`agent_income_summary`
MODIFY COLUMN `income` decimal(20, 6) NOT NULL DEFAULT 0.0000 COMMENT '结算金额' AFTER `monthtime`;
结算后核对SQL:
代理商:
1. agent_account_log
select
a.agent_id,
a.结算前余额,
a.月结发钱,
a.平台技术服务费,
a.代扣个人所得税,
a.结算前余额+a.月结发钱+a.平台技术服务费+a.代扣个人所得税 '预估结算后余额',
b.changed_amount '显示结算后余额'
from
(select
agent_id,
max(case when pay_remark='2019-07月结发钱' then REPLACE(substr(`snapshot`,INSTR(`snapshot`,'balance=')+8),')','') else '0' end) '结算前余额',
sum(case when pay_remark='2019-07月结发钱' then change_num else 0 end) '月结发钱',
sum(case when pay_remark='2019-07平台技术服务费' then change_num else 0 end) '平台技术服务费',
sum(case when pay_remark='2019-07代扣个人所得税' then change_num else 0 end) '代扣个人所得税',
max(id) m_id
from agent_account_log a
where yeartime=2019 and monthtime=8 and daytime=21
group by 1
) a
join agent_account_log b on a.m_id=b.id
where round(a.结算前余额+a.月结发钱+a.平台技术服务费+a.代扣个人所得税,2)
<>
round(b.changed_amount ,2);
2. agent_income_summary
select
income,
JSON_EXTRACT(content, '$.cashPlace')+
JSON_EXTRACT(content, '$.cashOpenCard')+
JSON_EXTRACT(content, '$.cashRecharge')+
JSON_EXTRACT(content, '$.cashUpgradePartner') 'income2',
content
from agent_income_summary
where yeartime=2019 and monthtime=7
and round(income,1)
<>
round(JSON_EXTRACT(content, '$.cashPlace')+JSON_EXTRACT(content, '$.cashOpenCard')+JSON_EXTRACT(content, '$.cashRecharge')+JSON_EXTRACT(content, '$.cashUpgradePartner'),1)
3. agent_salary
select
agent_id,
balance,
recharge_balance 'redpack_balance',
zigousheng_balance+share_balance 'order_balance',
opencard_balance+upgrade_balance+upgrade_super_balance+pingtui_balance 'others',
balance-zigousheng_balance-share_balance-tech_charge_redpack 'tax_base',
case when (balance-zigousheng_balance-share_balance-tech_charge_redpack-800)*0.1 > 0 then (balance-zigousheng_balance-share_balance-tech_charge_redpack-800)*0.1 else 0 end 'tax',
tax_balance
from agent_salary
where yeartime=2019 and monthtime=7
and case when (balance-zigousheng_balance-share_balance-tech_charge_redpack-800)*0.1 > 0 then (balance-zigousheng_balance-share_balance-tech_charge_redpack-800)*0.1 else 0 end
<>
tax_balance
4. agent_account
select
agent_id,
balance
from agent_account
合伙人:
select
a.user_id,
c.wx_free_balance 结算前余额,
a.月结发钱,
a.平台技术服务费,
a.代扣个人所得税,
c.wx_free_balance+a.月结发钱+a.平台技术服务费+a.代扣个人所得税 '预估结算后余额',
b.changed_amount '显示结算后余额'
from
(select
user_id,
max(REPLACE(substr(`snapshot`,INSTR(`snapshot`,'wxFreeBalance=')+14),')','')),
sum(case when pay_remark='2019-07月结发钱' then change_num else 0 end) '月结发钱',
sum(case when pay_remark='2019-07平台技术服务费' then change_num else 0 end) '平台技术服务费',
sum(case when pay_remark='2019-07代扣个人所得税' then change_num else 0 end) '代扣个人所得税',
max(id) m_id
from partner_account_log a
where yeartime=2019 and monthtime=8 and daytime=21
group by 1
) a
join partner_account_log b on a.m_id=b.id
join partner_account_copy1 c on a.user_id=c.user_id
where round(c.wx_free_balance+a.月结发钱+a.平台技术服务费+a.代扣个人所得税,2)
=
round(b.changed_amount ,2);
select
income,
JSON_EXTRACT(content, '$.cash')+
JSON_EXTRACT(content, '$.upCash')+
JSON_EXTRACT(content, '$.icash')+
JSON_EXTRACT(content, '$.pcash')+
JSON_EXTRACT(content, '$.scash')+
JSON_EXTRACT(content, '$.rcash')
'income2'
from partner_income_summary
where yeartime=2019 and monthtime=7
and round(income,1)
<>
round(JSON_EXTRACT(content, '$.cash')+JSON_EXTRACT(content, '$.upCash')+JSON_EXTRACT(content, '$.icash')+JSON_EXTRACT(content, '$.pcash')+JSON_EXTRACT(content, '$.scash')+JSON_EXTRACT(content, '$.rcash'),1)
select
user_id,
wx_free_balance
from partner_account
\ 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