Commit cfc9a1c7 by guanchen

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

parent 07c1474a
...@@ -69,7 +69,7 @@ public class Constants { ...@@ -69,7 +69,7 @@ public class Constants {
*/ */
public static final int REWARD_STATUS_UNSETTLE = 100; public static final int REWARD_STATUS_UNSETTLE = 100;
public static final int REWARD_STATUS_SETTLE = 120; 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); }} 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.AgentExpandDaily; 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 java.util.List;
import org.apache.ibatis.annotations.*;
@Mapper @Mapper
public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> { public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> {
...@@ -19,4 +20,6 @@ public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> { ...@@ -19,4 +20,6 @@ public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> {
@UpdateProvider(type = AgentExpandDailySqlProvider.class, method = "updateByDatByDetail") @UpdateProvider(type = AgentExpandDailySqlProvider.class, method = "updateByDatByDetail")
int updateByDatByDetail(String datStr); 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; ...@@ -5,7 +5,6 @@ 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;
...@@ -31,5 +30,5 @@ public interface PartnerRewardMapper extends BaseMapper<PartnerReward> { ...@@ -31,5 +30,5 @@ public interface PartnerRewardMapper extends BaseMapper<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); // PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
} }
\ No newline at end of file
...@@ -8,7 +8,6 @@ import lombok.Data; ...@@ -8,7 +8,6 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
@Data @Data
...@@ -78,25 +77,25 @@ public class AgentSalary implements Serializable { ...@@ -78,25 +77,25 @@ public class AgentSalary implements Serializable {
private BigDecimal upgradeSuperBalance; private BigDecimal upgradeSuperBalance;
/** /**
* 缴税金额
*/
@TableField(value = "tax_balance")
private BigDecimal taxBalance;
/**
* 分享赚奖励 * 分享赚奖励
*/ */
@TableField(value = "share_balance") @TableField(value = "share_balance")
private BigDecimal shareBalance; private BigDecimal shareBalance;
/** /**
* 自购省奖励 * 缴税金额
*/
@TableField(value = "tax_balance")
private BigDecimal taxBalance;
/**
* 自购省奖励金额
*/ */
@TableField(value = "zigousheng_balance") @TableField(value = "zigousheng_balance")
private BigDecimal zigoushengBalance; private BigDecimal zigoushengBalance;
/** /**
* 推荐分成奖励 * 来自城市代理商的平推奖励
*/ */
@TableField(value = "pingtui_balance") @TableField(value = "pingtui_balance")
private BigDecimal pingtuiBalance; private BigDecimal pingtuiBalance;
...@@ -108,6 +107,18 @@ public class AgentSalary implements Serializable { ...@@ -108,6 +107,18 @@ public class AgentSalary implements Serializable {
private BigDecimal techCharge; private BigDecimal techCharge;
/** /**
* 红包技术服务费
*/
@TableField(value = "tech_charge_redpack")
private BigDecimal techChargeRedpack;
/**
* 佣金技术服务费
*/
@TableField(value = "tech_charge_order")
private BigDecimal techChargeOrder;
/**
* 姓名或许公司名称 * 姓名或许公司名称
*/ */
@TableField(value = "bank_account") @TableField(value = "bank_account")
...@@ -153,7 +164,7 @@ public class AgentSalary implements Serializable { ...@@ -153,7 +164,7 @@ public class AgentSalary implements Serializable {
* 提现时间 * 提现时间
*/ */
@TableField(value = "modify_time") @TableField(value = "modify_time")
private LocalDateTime modifyTime; private Date modifyTime;
@TableField(value = "created_at") @TableField(value = "created_at")
private Long createdAt; private Long createdAt;
...@@ -186,16 +197,20 @@ public class AgentSalary implements Serializable { ...@@ -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_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_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_ZIGOUSHENG_BALANCE = "zigousheng_balance";
public static final String COL_PINGTUI_BALANCE = "pingtui_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 = "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_ACCOUNT = "bank_account";
public static final String COL_BANK_CARD_NUMBER = "bank_card_number"; 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; }} 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
......
...@@ -19,6 +19,8 @@ public class AgentSettle extends BaseModel { ...@@ -19,6 +19,8 @@ public class AgentSettle extends BaseModel {
private int agentLevel; private int agentLevel;
private BigDecimal balance; private BigDecimal balance;
private BigDecimal techCharge; private BigDecimal techCharge;
private BigDecimal techChargeRedpack;
private BigDecimal techChargeOrder;
private BigDecimal opencardBalance; private BigDecimal opencardBalance;
private BigDecimal rechargeBalance; private BigDecimal rechargeBalance;
private BigDecimal upgradeBalance; private BigDecimal upgradeBalance;
...@@ -26,4 +28,17 @@ public class AgentSettle extends BaseModel { ...@@ -26,4 +28,17 @@ public class AgentSettle extends BaseModel {
private BigDecimal shareBalance; private BigDecimal shareBalance;
private BigDecimal zigoushengBalance; private BigDecimal zigoushengBalance;
private BigDecimal pingtuiBalance; 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; ...@@ -16,12 +16,51 @@ import java.math.BigDecimal;
@Data @Data
public class PartnerSettle extends BaseModel { public class PartnerSettle extends BaseModel {
private int userId; private int userId;
/**
* 扣除技术服务费后的购物奖励 包含 平台额外奖励部分
*/
private BigDecimal sumOrderCommission; private BigDecimal sumOrderCommission;
/**
* 扣除技术服务费后的在线充值奖励 包含 平台额外奖励部分
*/
private BigDecimal sumRedpack; private BigDecimal sumRedpack;
/**
* 其他全部奖励
*/
private BigDecimal sumOthers; private BigDecimal sumOthers;
private BigDecimal techCharge; private BigDecimal techChargeRedpack;
private BigDecimal techChargeOrder;
private BigDecimal wxIncome; private BigDecimal wxIncome;
private BigDecimal wxTax; private BigDecimal wxTax;
private BigDecimal bankIncome; private BigDecimal bankIncome;
private BigDecimal bankTax; 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 { ...@@ -26,4 +26,15 @@ public class PartnerSummaryContent extends BaseModel {
private BigDecimal scash; private BigDecimal scash;
private int snum; private int snum;
private BigDecimal rcash; 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 { ...@@ -63,11 +63,19 @@ public class AgentDailyExpandTask {
Date dat = DateUtils.parse(datStr, DateUtils.FORMAT_SHORT); Date dat = DateUtils.parse(datStr, DateUtils.FORMAT_SHORT);
int now = (int)(System.currentTimeMillis() / 1000L); int now = (int)(System.currentTimeMillis() / 1000L);
int pageNo = 1; int pageNo = 1;
int total = 0;
int totalPage = 0;
int cnt = 0;
long beginTs = DateUtils.parse(datStr, DateUtils.FORMAT_SHORT).getTime() / 1000L; long beginTs = DateUtils.parse(datStr, DateUtils.FORMAT_SHORT).getTime() / 1000L;
long endTs = beginTs + 24 * 60 * 60L - 1L; long endTs = beginTs + 24 * 60 * 60L - 1L;
while (true) { while (true) {
Page<PartnerInviteRelation> page = new Page<PartnerInviteRelation>(pageNo, PAGE_SIZE); Page<PartnerInviteRelation> page = new Page<PartnerInviteRelation>(pageNo, PAGE_SIZE);
IPage<PartnerInviteRelation> ipage = partnerInviteRelationService.selectPageByTs(page, beginTs, endTs); 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(); List<PartnerInviteRelation> partnerInviteRelationList = ipage.getRecords();
if (partnerInviteRelationList != null && partnerInviteRelationList.size() > 0) { if (partnerInviteRelationList != null && partnerInviteRelationList.size() > 0) {
for (PartnerInviteRelation partnerInviteRelation : partnerInviteRelationList) { for (PartnerInviteRelation partnerInviteRelation : partnerInviteRelationList) {
...@@ -83,15 +91,18 @@ public class AgentDailyExpandTask { ...@@ -83,15 +91,18 @@ public class AgentDailyExpandTask {
detail.setUpdatedAt(now); detail.setUpdatedAt(now);
agentExpandDetailService.insertOrUpdate(detail); agentExpandDetailService.insertOrUpdate(detail);
} }
cnt++;
} }
if (partnerInviteRelationList.size() > 0) { if (partnerInviteRelationList.size() > 0) {
agentExpandDailyService.updateByDatByDetail(datStr); agentExpandDailyService.updateByDatByDetail(datStr);
} }
pageNo++; }
} else { if (pageNo >= totalPage) {
break; break;
} }
pageNo++;
} }
logger.info("cnt is {}", cnt);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
......
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.AgentSettle; import com.lanren.huhu.partner.model.*;
import com.lanren.huhu.partner.model.AgentSnapshot;
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,8 +18,8 @@ import org.springframework.transaction.TransactionDefinition; ...@@ -18,8 +18,8 @@ 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.util.Date; import java.math.RoundingMode;
import java.util.List; import java.util.*;
import static org.springframework.util.StringUtils.isEmpty; import static org.springframework.util.StringUtils.isEmpty;
...@@ -59,6 +59,8 @@ public class AgentSettleTask { ...@@ -59,6 +59,8 @@ public class AgentSettleTask {
AgentBankCardService agentBankCardService; AgentBankCardService agentBankCardService;
@Autowired @Autowired
AgentSalaryService agentSalaryService; AgentSalaryService agentSalaryService;
@Autowired
AgentExpandDailyService agentExpandDailyService;
@Async @Async
public void runScheduledTask() { public void runScheduledTask() {
...@@ -82,8 +84,9 @@ public class AgentSettleTask { ...@@ -82,8 +84,9 @@ public class AgentSettleTask {
private void doSettle(long beginTs, long endTs) { private void doSettle(long beginTs, long endTs) {
AgentSettle errAgentSettle = null; AgentSettle errAgentSettle = null;
try { try {
int pageNo = 1; int cnt = 0;
while (true) { while (true) {
int pageNo = 1;
Page<AgentSettle> page = new Page<AgentSettle>(pageNo, PAGE_SIZE); Page<AgentSettle> page = new Page<AgentSettle>(pageNo, PAGE_SIZE);
page.setOptimizeCountSql(false); page.setOptimizeCountSql(false);
page.setSearchCount(false); page.setSearchCount(false);
...@@ -91,23 +94,43 @@ public class AgentSettleTask { ...@@ -91,23 +94,43 @@ public class AgentSettleTask {
List<AgentSettle> agentSettleList = ipage.getRecords(); List<AgentSettle> agentSettleList = ipage.getRecords();
if (agentSettleList != null && agentSettleList.size() > 0) { if (agentSettleList != null && agentSettleList.size() > 0) {
for (AgentSettle agentSettle : agentSettleList) { for (AgentSettle agentSettle : agentSettleList) {
try {
updateTax(agentSettle);
errAgentSettle = agentSettle; errAgentSettle = agentSettle;
if (agentSettle != null) { if (agentSettle != null) {
if (!doDbUpdate(agentSettle, beginTs, endTs)) { if (!doDbUpdate(agentSettle, beginTs, endTs)) {
logger.error("doDbUpdate failed for agent {}", agentSettle.getAgentId()); logger.error("doDbUpdate failed for agent {}", agentSettle.getAgentId());
} }
} }
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
cnt++;
} }
pageNo++;
} else { } else {
break; break;
} }
} }
logger.info("cnt is {}", cnt);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
logger.error("errAgentSettle is {}", errAgentSettle); logger.error("errAgentSettle is {}", errAgentSettle);
} }
} }
private void updateTax(AgentSettle agentSettle) {
BigDecimal tax = agentSettle.getBalance()
.subtract(agentSettle.getZigoushengBalance())
.subtract(agentSettle.getShareBalance())
.subtract(agentSettle.getTechChargeRedpack())
.subtract(BigDecimal.valueOf(800L))
.multiply(BigDecimal.valueOf(0.1d));
if (tax.compareTo(BigDecimal.ZERO) <= 0) {
tax = BigDecimal.ZERO;
}
agentSettle.setTax(tax);
}
/** /**
* 自购省和分享赚的奖励金额 需要根据最终的实际原始佣金 重新计算 * 自购省和分享赚的奖励金额 需要根据最终的实际原始佣金 重新计算
* @param beginTs * @param beginTs
...@@ -117,22 +140,40 @@ public class AgentSettleTask { ...@@ -117,22 +140,40 @@ public class AgentSettleTask {
AgentReward errAgentReward = null; AgentReward errAgentReward = null;
try { try {
int pageNo = 1; int pageNo = 1;
int total = 0;
int totalPage = 0;
int cnt = 0;
while (true) { while (true) {
Page<AgentReward> page = new Page<AgentReward>(pageNo, PAGE_SIZE); Page<AgentReward> page = new Page<AgentReward>(pageNo, PAGE_SIZE);
page.setOptimizeCountSql(false); page.setOptimizeCountSql(false);
page.setSearchCount(false);
IPage<AgentReward> ipage; IPage<AgentReward> ipage;
if (runType == 0) { if (runType == 0) {
ipage = agentRewardService.selectOrderRewardPageByTs(page, beginTs, endTs); ipage = agentRewardService.selectOrderRewardPageByTs(page, beginTs, endTs);
} else { } else {
ipage = agentRewardService.selectOrderRewardPageByTsAndAgentId(page, beginTs, endTs, agentId); ipage = agentRewardService.selectOrderRewardPageByTsAndAgentId(page, beginTs, endTs, agentId);
} }
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<AgentReward> agentRewardList = ipage.getRecords(); List<AgentReward> agentRewardList = ipage.getRecords();
List<AgentReward> updateCommisionList = new ArrayList<AgentReward>();
List<AgentReward> update2FailedList = new ArrayList<AgentReward>();
if (agentRewardList != null && agentRewardList.size() > 0) { if (agentRewardList != null && agentRewardList.size() > 0) {
/** /**
* 加载ordersActiveMap orderMap subOrderMap
*/
Set<OrderParam> orderParamsSet = generateOrderParamsSet(agentRewardList);
Set<SubOrderParam> subOrderParamsSet = generateSubOrderParamsSet(agentRewardList);
Map<OrderParam, OrdersActive> ordersActiveMap = generateOrdersActiveMap(orderParamsSet);
Map<OrderParam, OrderTaobaoJdCommission> orderMap = generateOrderMap(orderParamsSet);
Map<SubOrderParam, OrderTaobaoJdGoodsCommission> subOrderMap = generateSubOrderMap(subOrderParamsSet);
/**
* 循环处理每条奖励 * 循环处理每条奖励
*/ */
for (AgentReward agentReward : agentRewardList) { for (AgentReward agentReward : agentRewardList) {
try {
errAgentReward = agentReward; errAgentReward = agentReward;
/** /**
* 自购省奖励: reward_type: 300 或 750, settle_state > 0 且 != 300 * 自购省奖励: reward_type: 300 或 750, settle_state > 0 且 != 300
...@@ -141,18 +182,22 @@ public class AgentSettleTask { ...@@ -141,18 +182,22 @@ public class AgentSettleTask {
* 如果订单失效: 更新settle_state, all_money_ori/cash/commission_account 抹平, 跳过处理, 循环到下一条 * 如果订单失效: 更新settle_state, all_money_ori/cash/commission_account 抹平, 跳过处理, 循环到下一条
*/ */
if ( (agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_PURCHASE || agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SELF_ORDER) if ( (agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_PURCHASE || agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SELF_ORDER)
&& agentReward.getSettleState() > 0
&& agentReward.getSettleState() != Constants.SETTLE_STATE_DONE) { && agentReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getRatioAll())) { if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getRatioAll())) {
/** /**
* 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额 * 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额
*/ */
} else if (agentReward.getSettleState() < 0) {
add2UpdateReward2Failed(agentReward, update2FailedList);
} else { } else {
/** /**
* 有订单号 和 比例快照 可以更新金额 * 有订单号 和 比例快照 可以更新金额
*/ */
OrdersActive ordersActive = ordersActiveService.getOneByOrderSn(agentReward.getOrderType(), agentReward.getOrderSn()); OrderParam orderParam = new OrderParam();
OrderTaobaoJdCommission order = orderTaobaoJdCommissionService.getOneByOrderSn(agentReward.getOrderType(), agentReward.getOrderSn()); orderParam.setOrderType(agentReward.getOrderType());
orderParam.setOrderSn(agentReward.getOrderSn());
OrdersActive ordersActive = ordersActiveMap.get(orderParam);
OrderTaobaoJdCommission order = orderMap.get(orderParam);
if (null == ordersActive || null == order) { if (null == ordersActive || null == order) {
/** /**
* 如果没有找到active 或者 没有找到commission * 如果没有找到active 或者 没有找到commission
...@@ -166,7 +211,7 @@ public class AgentSettleTask { ...@@ -166,7 +211,7 @@ public class AgentSettleTask {
/** /**
* 订单失效 订单付款 跳过, 处理下一条奖励 * 订单失效 订单付款 跳过, 处理下一条奖励
*/ */
updateReward2Failed(agentReward); add2UpdateReward2Failed(agentReward, update2FailedList);
continue; continue;
} else if (order.getStatus() == Constants.ORDER_STATE_PAID) { } else if (order.getStatus() == Constants.ORDER_STATE_PAID) {
/** /**
...@@ -185,7 +230,7 @@ public class AgentSettleTask { ...@@ -185,7 +230,7 @@ public class AgentSettleTask {
/** /**
* 新人专享订单 不给合伙人奖励 跳过 * 新人专享订单 不给合伙人奖励 跳过
*/ */
updateReward2Failed(agentReward); add2UpdateReward2Failed(agentReward, update2FailedList);
continue; continue;
} else { } else {
/** /**
...@@ -194,7 +239,7 @@ public class AgentSettleTask { ...@@ -194,7 +239,7 @@ public class AgentSettleTask {
* cash: all_money_ori 乘以 ratio_all中的每个比例 * cash: all_money_ori 乘以 ratio_all中的每个比例
* commission_account: cash 乘以 commission_rate * commission_account: cash 乘以 commission_rate
*/ */
updateRewardCommission(agentReward, order.getAllMoney()); add2UpdateRewardCommission(agentReward, order.getAllMoney(), updateCommisionList);
} }
} }
} }
...@@ -211,11 +256,17 @@ public class AgentSettleTask { ...@@ -211,11 +256,17 @@ public class AgentSettleTask {
/** /**
* 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额 * 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额
*/ */
} else if (agentReward.getSettleState() < 0) {
add2UpdateReward2Failed(agentReward, update2FailedList);
} else { } else {
/** /**
* 有订单号 和 比例快照 可以更新金额 * 有订单号 和 比例快照 可以更新金额
*/ */
OrderTaobaoJdGoodsCommission subOrder = orderTaobaoJdGoodsCommissionService.getOneByOrderSn(agentReward.getOrderType(), agentReward.getOrderSn(), agentReward.getSubOrderSn()); SubOrderParam subOrderParam = new SubOrderParam();
subOrderParam.setOrderType(agentReward.getOrderType());
subOrderParam.setOrderSn(agentReward.getOrderSn());
subOrderParam.setSubOrderSn(agentReward.getSubOrderSn());
OrderTaobaoJdGoodsCommission subOrder = subOrderMap.get(subOrderParam);
if (null == subOrder) { if (null == subOrder) {
/** /**
* 如果没有找到子订单 * 如果没有找到子订单
...@@ -229,7 +280,7 @@ public class AgentSettleTask { ...@@ -229,7 +280,7 @@ public class AgentSettleTask {
/** /**
* 订单失效 订单付款 跳过, 处理下一条奖励 * 订单失效 订单付款 跳过, 处理下一条奖励
*/ */
updateReward2Failed(agentReward); add2UpdateReward2Failed(agentReward, update2FailedList);
} else if (subOrder.getOrderState() == Constants.ORDER_STATE_PAID) { } else if (subOrder.getOrderState() == Constants.ORDER_STATE_PAID) {
/** /**
* 订单还是付款状态 更新奖励时间 下个月再处理 * 订单还是付款状态 更新奖励时间 下个月再处理
...@@ -246,27 +297,102 @@ public class AgentSettleTask { ...@@ -246,27 +297,102 @@ public class AgentSettleTask {
* cash: all_money_ori 乘以 ratio_all中的每个比例 * cash: all_money_ori 乘以 ratio_all中的每个比例
* commission_account: cash 乘以 commission_rate * commission_account: cash 乘以 commission_rate
*/ */
updateRewardCommission(agentReward, subOrder.getAllMoney()); add2UpdateRewardCommission(agentReward, subOrder.getAllMoney(), updateCommisionList);
} }
} }
} }
} }
} catch (Exception e) {
logger.error(e.getMessage(), e);
} }
pageNo++; cnt++;
} else { }
}
if (updateCommisionList.size() > 0) {
agentRewardService.updateBatch(updateCommisionList);
}
if (update2FailedList.size() > 0) {
agentRewardService.updateBatch(update2FailedList);
}
if (pageNo >= totalPage) {
break; break;
} }
pageNo++;
} }
logger.info("cnt is {}", cnt);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(),e); logger.error(e.getMessage(),e);
logger.error("errAgentReward is {}", errAgentReward); logger.error("errAgentReward is {}", errAgentReward);
} }
} }
private void updateRewardCommission(AgentReward agentReward, BigDecimal allMoney) { private Map<SubOrderParam, OrderTaobaoJdGoodsCommission> generateSubOrderMap(Set<SubOrderParam> subOrderParamsSet) {
Map<SubOrderParam, OrderTaobaoJdGoodsCommission> map = new HashMap<SubOrderParam, OrderTaobaoJdGoodsCommission>();
List<OrderTaobaoJdGoodsCommission> list = orderTaobaoJdGoodsCommissionService.selectListBySubOrderParamsSet(subOrderParamsSet);
for (OrderTaobaoJdGoodsCommission subOrder : list) {
SubOrderParam key = new SubOrderParam();
key.setOrderType(subOrder.getType());
key.setOrderSn(subOrder.getOrderSn());
key.setSubOrderSn(subOrder.getSubOrderSn());
map.put(key, subOrder);
}
return map;
}
private Map<OrderParam, OrderTaobaoJdCommission> generateOrderMap(Set<OrderParam> orderParamsSet) {
Map<OrderParam, OrderTaobaoJdCommission> map = new HashMap<OrderParam, OrderTaobaoJdCommission>();
List<OrderTaobaoJdCommission> list = orderTaobaoJdCommissionService.selectListByOrderParamSet(orderParamsSet);
for (OrderTaobaoJdCommission order : list) {
OrderParam key = new OrderParam();
key.setOrderType(order.getType());
key.setOrderSn(order.getOrderSn());
map.put(key, order);
}
return map;
}
private Map<OrderParam, OrdersActive> generateOrdersActiveMap(Set<OrderParam> orderParamSet) {
Map<OrderParam, OrdersActive> map = new HashMap<OrderParam, OrdersActive>();
List<OrdersActive> list = ordersActiveService.selectListByOrderParamSet(orderParamSet);
for (OrdersActive order : list) {
OrderParam key = new OrderParam();
key.setOrderType(order.getType());
key.setOrderSn(order.getOrderSn());
map.put(key, order);
}
return map;
}
private Set<SubOrderParam> generateSubOrderParamsSet(List<AgentReward> agentRewardList) {
Set<SubOrderParam> set = new HashSet<SubOrderParam>();
for (AgentReward reward : agentRewardList) {
SubOrderParam orderParam = new SubOrderParam();
orderParam.setOrderType(reward.getOrderType());
orderParam.setOrderSn(reward.getOrderSn());
orderParam.setSubOrderSn(reward.getSubOrderSn());
set.add(orderParam);
}
return set;
}
private Set<OrderParam> generateOrderParamsSet(List<AgentReward> agentRewardList) {
Set<OrderParam> set = new HashSet<OrderParam>();
for (AgentReward reward : agentRewardList) {
OrderParam orderParam = new OrderParam();
orderParam.setOrderType(reward.getOrderType());
orderParam.setOrderSn(reward.getOrderSn());
set.add(orderParam);
}
return set;
}
private void add2UpdateRewardCommission(AgentReward agentReward, BigDecimal allMoney, List<AgentReward> updateCommisionList) {
try {
agentReward.setAllMoneyOri(allMoney); agentReward.setAllMoneyOri(allMoney);
String ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\],\"]", ""); String ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\]\"]", "");
if (!isEmpty(ratioAllStr)) {
String[] strs = ratioAllStr.split(","); String[] strs = ratioAllStr.split(",");
if (strs.length > 0) {
BigDecimal cash = allMoney; BigDecimal cash = allMoney;
for (String s : strs) { for (String s : strs) {
BigDecimal ratio = new BigDecimal(s); BigDecimal ratio = new BigDecimal(s);
...@@ -279,7 +405,12 @@ public class AgentSettleTask { ...@@ -279,7 +405,12 @@ public class AgentSettleTask {
agentReward.setCommission(commission); agentReward.setCommission(commission);
agentReward.setSettleState(Constants.SETTLE_STATE_DONE); agentReward.setSettleState(Constants.SETTLE_STATE_DONE);
agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L); agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
agentRewardService.updateById(agentReward); updateCommisionList.add(agentReward);
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
} }
/** /**
...@@ -289,16 +420,16 @@ public class AgentSettleTask { ...@@ -289,16 +420,16 @@ public class AgentSettleTask {
* commission 奖励金额 * commission 奖励金额
* cash_code 支付金额 * cash_code 支付金额
*/ */
private void updateReward2Failed(AgentReward agentReward) { private void add2UpdateReward2Failed(AgentReward agentReward, List<AgentReward> update2FailedList) {
agentReward.setAllMoneyOri(ZERO); agentReward.setAllMoneyOri(ZERO);
agentReward.setMoney(ZERO); agentReward.setMoney(ZERO);
agentReward.setCommissionAcount(ZERO); agentReward.setCommissionAcount(ZERO);
agentReward.setAmount(ZERO);
agentReward.setCommission(ZERO); agentReward.setCommission(ZERO);
agentReward.setCashCode("0"); agentReward.setCashCode("0");
agentReward.setSettleState(Constants.SETTLE_STATE_FAILED); agentReward.setSettleState(Constants.SETTLE_STATE_FAILED);
agentReward.setRewardStatus(Constants.REWARD_STATUS_FAILED);
agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L); agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
agentRewardService.updateById(agentReward); update2FailedList.add(agentReward);
} }
public boolean doOneAgentSettle(Integer agentId) { public boolean doOneAgentSettle(Integer agentId) {
...@@ -309,8 +440,12 @@ public class AgentSettleTask { ...@@ -309,8 +440,12 @@ public class AgentSettleTask {
try { try {
updateOrderCommission(beginTs, endTs, 1, agentId); updateOrderCommission(beginTs, endTs, 1, agentId);
AgentSettle agentSettle = agentRewardService.selectAgentSettleByTsAndAgentId(beginTs, endTs, agentId); AgentSettle agentSettle = agentRewardService.selectAgentSettleByTsAndAgentId(beginTs, endTs, agentId);
/**
* 更新税
*/
errAgentSettle = agentSettle; errAgentSettle = agentSettle;
if (agentSettle != null) { if (agentSettle != null) {
updateTax(agentSettle);
return doDbUpdate(agentSettle, beginTs, endTs); return doDbUpdate(agentSettle, beginTs, endTs);
} else { } else {
logger.info("没有待奖励记录 跳过不处理, 代理商{}", agentId); logger.info("没有待奖励记录 跳过不处理, 代理商{}", agentId);
...@@ -343,7 +478,7 @@ public class AgentSettleTask { ...@@ -343,7 +478,7 @@ public class AgentSettleTask {
insertIntoAgentAccountLog(agentSettle, agentAccount, agentSalary, beginTs); insertIntoAgentAccountLog(agentSettle, agentAccount, agentSalary, beginTs);
updateAgentAccount(agentSettle, agentAccount); updateAgentAccount(agentSettle, agentAccount);
updateAgentRewardStatus(agentSettle.getAgentId(), beginTs, endTs); updateAgentRewardStatus(agentSettle.getAgentId(), beginTs, endTs);
insertAgentIncomeSummary(agentSettle, beginTs); insertAgentIncomeSummary(agentSettle, beginTs, endTs);
/** /**
* 提交事务 * 提交事务
*/ */
...@@ -379,11 +514,13 @@ public class AgentSettleTask { ...@@ -379,11 +514,13 @@ public class AgentSettleTask {
agentSalary.setRechargeBalance(agentSettle.getRechargeBalance()); agentSalary.setRechargeBalance(agentSettle.getRechargeBalance());
agentSalary.setUpgradeBalance(agentSettle.getUpgradeBalance()); agentSalary.setUpgradeBalance(agentSettle.getUpgradeBalance());
agentSalary.setUpgradeSuperBalance(agentSettle.getUpgradeSuperBalance()); agentSalary.setUpgradeSuperBalance(agentSettle.getUpgradeSuperBalance());
agentSalary.setTaxBalance(ZERO); agentSalary.setTaxBalance(agentSettle.getTax());
agentSalary.setShareBalance(agentSettle.getShareBalance()); agentSalary.setShareBalance(agentSettle.getShareBalance());
agentSalary.setZigoushengBalance(agentSettle.getZigoushengBalance()); agentSalary.setZigoushengBalance(agentSettle.getZigoushengBalance());
agentSalary.setPingtuiBalance(agentSettle.getPingtuiBalance()); agentSalary.setPingtuiBalance(agentSettle.getPingtuiBalance());
agentSalary.setTechCharge(agentSettle.getTechCharge()); agentSalary.setTechCharge(agentSettle.getTechCharge());
agentSalary.setTechChargeRedpack(agentSettle.getTechChargeRedpack());
agentSalary.setTechChargeOrder(agentSettle.getTechChargeOrder());
agentSalary.setBankAccount(agentBankCard == null ? "" : agentBankCard.getBankAccount()); agentSalary.setBankAccount(agentBankCard == null ? "" : agentBankCard.getBankAccount());
agentSalary.setBankCardNumber(agentBankCard == null ? "" : agentBankCard.getBankCardNumber()); agentSalary.setBankCardNumber(agentBankCard == null ? "" : agentBankCard.getBankCardNumber());
agentSalary.setBankName(agentBankCard == null ? "" : agentBankCard.getBankName()); agentSalary.setBankName(agentBankCard == null ? "" : agentBankCard.getBankName());
...@@ -398,28 +535,61 @@ public class AgentSettleTask { ...@@ -398,28 +535,61 @@ public class AgentSettleTask {
return agentSalary; return agentSalary;
} }
private void insertAgentIncomeSummary(AgentSettle agentSettle, long beginTs) { private void insertAgentIncomeSummary(AgentSettle agentSettle, long beginTs, long endTs) {
Date dat = new Date(beginTs * 1000L); Date dat = new Date(beginTs * 1000L);
int now = (int) (System.currentTimeMillis() / 1000L); int now = (int) (System.currentTimeMillis() / 1000L);
int yeartime = Integer.parseInt(DateUtils.getYear(dat)); int yeartime = Integer.parseInt(DateUtils.getYear(dat));
int monthtime = Integer.parseInt(DateUtils.getMonth(dat)); int monthtime = Integer.parseInt(DateUtils.getMonth(dat));
AgentIncomeSummary agentIncomeSummary = agentIncomeSummaryService.getOneByAgentidYearMonth(agentSettle.getAgentId(), yeartime, monthtime); AgentIncomeSummary agentIncomeSummary = agentIncomeSummaryService.getOneByAgentidYearMonth(agentSettle.getAgentId(), yeartime, monthtime);
/**
* 生成content字段
*/
AgentSummaryContent agentSummaryContent = new AgentSummaryContent();
agentSummaryContent.setCashPlace(agentSettle.getCashPlace().setScale(2, RoundingMode.HALF_UP));
agentSummaryContent.setNumPlace(agentSettle.getNumPlace());
agentSummaryContent.setCashRecharge(agentSettle.getCashRecharge().setScale(2, RoundingMode.HALF_UP));
agentSummaryContent.setNumRecharge(agentSettle.getNumRecharge());
agentSummaryContent.setCashOpenCard(agentSettle.getCashOpenCard().setScale(2, RoundingMode.HALF_UP));
agentSummaryContent.setNumOpenCard(agentSettle.getNumOpenCard());
agentSummaryContent.setCashUpgradePartner(agentSettle.getCashUpgradePartner().setScale(2, RoundingMode.HALF_UP));
agentSummaryContent.setNumUpgradePartner(agentSettle.getNumUpgradePartner());
agentSummaryContent.setMarketPerformance(agentSettle.getMarketPerformance().setScale(2, RoundingMode.HALF_UP));
agentSummaryContent.setCashUpgradeMarket(agentSettle.getCashUpgradeMarket().setScale(2, RoundingMode.HALF_UP));
agentSummaryContent.setCashRechargeMarket(agentSettle.getCashRechargeMarket().setScale(2, RoundingMode.HALF_UP));
Integer expandUsers = agentExpandDailyService.getMonthCntByAgent(agentSettle.getAgentId(), beginTs, endTs);
expandUsers = expandUsers == null ? 0 : expandUsers;
agentSummaryContent.setExpandUsers(expandUsers);
/**
* 生成income字段
*/
BigDecimal sum1 = agentSettle.getBalance();
BigDecimal sum2 = agentSettle.getCashPlace()
.add(agentSettle.getCashRecharge())
.add(agentSettle.getCashOpenCard())
.add(agentSettle.getCashUpgradePartner());
if (sum1.compareTo(sum2) != 0) {
logger.error("代理商奖励结算-对账异常: 求和1:{}, 求和2:{}, 奖励字段:{}", sum1, sum2, agentSettle);
throw new RuntimeException();
}
if (null == agentIncomeSummary) { if (null == agentIncomeSummary) {
agentIncomeSummary = new AgentIncomeSummary(); agentIncomeSummary = new AgentIncomeSummary();
agentIncomeSummary.setUserId(agentSettle.getUserId()); agentIncomeSummary.setUserId(agentSettle.getUserId());
agentIncomeSummary.setAgentId(agentSettle.getAgentId()); agentIncomeSummary.setAgentId(agentSettle.getAgentId());
agentIncomeSummary.setYeartime(yeartime); agentIncomeSummary.setYeartime(yeartime);
agentIncomeSummary.setMonthtime(monthtime); agentIncomeSummary.setMonthtime(monthtime);
agentIncomeSummary.setIncome(ZERO); agentIncomeSummary.setState(20);
agentIncomeSummary.setContent("");
agentIncomeSummary.setState(15);
agentIncomeSummary.setCreatedAt(now); agentIncomeSummary.setCreatedAt(now);
agentIncomeSummary.setUpdatedAt(now); agentIncomeSummary.setUpdatedAt(now);
agentIncomeSummary.setSettleTime(now); agentIncomeSummary.setSettleTime(now);
agentIncomeSummary.setContent(JSON.toJSONString(agentSummaryContent));
agentIncomeSummary.setIncome(sum2);
agentIncomeSummaryService.save(agentIncomeSummary); agentIncomeSummaryService.save(agentIncomeSummary);
} else { } else {
agentIncomeSummary.setState(15); agentIncomeSummary.setState(20);
agentIncomeSummary.setSettleTime(now);
agentIncomeSummary.setUpdatedAt(now); agentIncomeSummary.setUpdatedAt(now);
agentIncomeSummary.setContent(JSON.toJSONString(agentSummaryContent));
agentIncomeSummary.setIncome(sum2);
agentIncomeSummaryService.updateById(agentIncomeSummary); agentIncomeSummaryService.updateById(agentIncomeSummary);
} }
} }
...@@ -434,7 +604,9 @@ public class AgentSettleTask { ...@@ -434,7 +604,9 @@ public class AgentSettleTask {
*/ */
agentAccount.setBalance(agentAccount.getBalance() agentAccount.setBalance(agentAccount.getBalance()
.add(agentSettle.getBalance()) .add(agentSettle.getBalance())
.subtract(agentSettle.getTechCharge())); .subtract(agentSettle.getTechCharge())
.subtract(agentSettle.getTax())
);
agentAccountService.updateById(agentAccount); agentAccountService.updateById(agentAccount);
} }
...@@ -471,6 +643,21 @@ public class AgentSettleTask { ...@@ -471,6 +643,21 @@ public class AgentSettleTask {
agentSalary.getId()); agentSalary.getId());
agentAccountLogService.save(log); agentAccountLogService.save(log);
} }
/**
* 个人所得税
*/
changeNum = agentSettle.getTax().negate();
if (changeNum.compareTo(ZERO) < 0) {
changedAmount = changedAmount.add(changeNum);
log = createNewAgentAccountLog(agentSettle,
Constants.PARTNER_ACCOUNT_LOG_TYPE_TAX,
changeNum,
changedAmount,
DateUtils.format(dat, "yyyy-MM") + Constants.PARTNER_ACCOUNT_LOG_TYPE_TAX_REMARK,
"",
agentSalary.getId());
agentAccountLogService.save(log);
}
} }
private AgentAccountLog createNewAgentAccountLog(AgentSettle agentSettle, int type, BigDecimal changeNum, BigDecimal changedAmount, String payRemark, String snapshot, long agentSalaryId) { private AgentAccountLog createNewAgentAccountLog(AgentSettle agentSettle, int type, BigDecimal changeNum, BigDecimal changedAmount, String payRemark, String snapshot, long agentSalaryId) {
......
...@@ -5,9 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,9 +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.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.*;
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;
...@@ -21,8 +19,7 @@ import org.springframework.transaction.TransactionStatus; ...@@ -21,8 +19,7 @@ import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.Date; import java.util.*;
import java.util.List;
import static org.springframework.util.StringUtils.isEmpty; import static org.springframework.util.StringUtils.isEmpty;
...@@ -101,11 +98,18 @@ public class PartnerSettleTask { ...@@ -101,11 +98,18 @@ public class PartnerSettleTask {
} }
} }
/**
* 使用mybatisplus分页插件时需要注意:
* !!! 如果取出每一页的数据后, 在处理时更改了分页查询的一些字段, 那么后面翻页的时候 查出来的数据就会错乱了
* !!! 要么就是 在循环的时候不更新用于查询的字段
* !!! 要么就是 永远都只取第一页, 直到取不到数据
*/
private void doSettle(long beginTs, long endTs) { private void doSettle(long beginTs, long endTs) {
PartnerSettle errPartnerSettle = null; PartnerSettle errPartnerSettle = null;
try { try {
int pageNo = 1; int cnt = 0;
while (true) { while (true) {
int pageNo = 1;
Page<PartnerSettle> page = new Page<PartnerSettle>(pageNo, PAGE_SIZE); Page<PartnerSettle> page = new Page<PartnerSettle>(pageNo, PAGE_SIZE);
page.setOptimizeCountSql(false); page.setOptimizeCountSql(false);
page.setSearchCount(false); page.setSearchCount(false);
...@@ -113,18 +117,23 @@ public class PartnerSettleTask { ...@@ -113,18 +117,23 @@ public class PartnerSettleTask {
List<PartnerSettle> partnerSettleList = ipage.getRecords(); List<PartnerSettle> partnerSettleList = ipage.getRecords();
if (partnerSettleList != null && partnerSettleList.size() > 0) { if (partnerSettleList != null && partnerSettleList.size() > 0) {
for (PartnerSettle partnerSettle : partnerSettleList) { for (PartnerSettle partnerSettle : partnerSettleList) {
try {
errPartnerSettle = partnerSettle; errPartnerSettle = partnerSettle;
if (partnerSettle != null && setIncomeAndTax(partnerSettle)) { if (partnerSettle != null && setIncomeAndTax(partnerSettle)) {
if (!doDbUpdate(partnerSettle, beginTs, endTs)) { if (!doDbUpdate(partnerSettle, beginTs, endTs)) {
logger.error("doDbUpdate failed for user {}", partnerSettle.getUserId()); logger.error("doDbUpdate failed for user {}", partnerSettle.getUserId());
} }
} }
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
cnt++;
} }
pageNo++;
} else { } else {
break; break;
} }
} }
logger.info("cnt is {}", cnt);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
logger.error("errPartnerSettle is {}", errPartnerSettle); logger.error("errPartnerSettle is {}", errPartnerSettle);
...@@ -150,7 +159,7 @@ public class PartnerSettleTask { ...@@ -150,7 +159,7 @@ public class PartnerSettleTask {
insertIntoPartnerAccountLog(partnerSettle, partnerAccount, beginTs); insertIntoPartnerAccountLog(partnerSettle, partnerAccount, beginTs);
updatePartnerAccount(partnerSettle, partnerAccount); updatePartnerAccount(partnerSettle, partnerAccount);
updatePartnerRewardStatus(partnerSettle.getUserId(), beginTs, endTs); updatePartnerRewardStatus(partnerSettle.getUserId(), beginTs, endTs);
insertPartnerIncomeSummary(partnerSettle.getUserId(), beginTs); insertPartnerIncomeSummary(partnerSettle, partnerAccount, beginTs);
/** /**
* 提交事务 * 提交事务
*/ */
...@@ -170,27 +179,70 @@ public class PartnerSettleTask { ...@@ -170,27 +179,70 @@ public class PartnerSettleTask {
} }
} }
private void insertPartnerIncomeSummary(int userId, long beginTs) { private void insertPartnerIncomeSummary(PartnerSettle partnerSettle,PartnerAccount partnerAccount, long beginTs) {
Date dat = new Date(beginTs * 1000L); Date dat = new Date(beginTs * 1000L);
int now = (int) (System.currentTimeMillis() / 1000L); int now = (int) (System.currentTimeMillis() / 1000L);
int yeartime = Integer.parseInt(DateUtils.getYear(dat)); int yeartime = Integer.parseInt(DateUtils.getYear(dat));
int monthtime = Integer.parseInt(DateUtils.getMonth(dat)); int monthtime = Integer.parseInt(DateUtils.getMonth(dat));
PartnerIncomeSummary partnerIncomeSummary = partnerIncomeSummaryService.getOneByUidYearMonth(userId, yeartime, monthtime); PartnerIncomeSummary partnerIncomeSummary = partnerIncomeSummaryService.getOneByUidYearMonth(partnerSettle.getUserId(), yeartime, monthtime);
/**
* 生成content字段
*/
PartnerSummaryContent partnerSummaryContent = new PartnerSummaryContent();
partnerSummaryContent.setCash(partnerSettle.getCash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setUpCash(partnerSettle.getUpCash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setIcash(partnerSettle.getIcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setPcash(partnerSettle.getPcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setScash(partnerSettle.getScash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setRcash(partnerSettle.getRcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setTechChargeOrder(partnerSettle.getTechChargeOrder());
partnerSummaryContent.setTechChargeRedpack(partnerSettle.getTechChargeRedpack());
partnerSummaryContent.setWxIncome(partnerSettle.getWxIncome());
partnerSummaryContent.setWxTax(partnerSettle.getWxTax());
partnerSummaryContent.setBankIncome(partnerSettle.getBankIncome());
partnerSummaryContent.setBankTax(partnerSettle.getBankTax());
partnerSummaryContent.setWxFreeBalance(partnerAccount.getWxFreeBalance());
partnerSummaryContent.setBankFreeBalance(partnerAccount.getBankFreeBalance());
partnerSummaryContent.setSumOrderCommission(partnerSettle.getSumOrderCommission());
partnerSummaryContent.setSumRedpack(partnerSettle.getSumRedpack());
partnerSummaryContent.setSumOthers(partnerSettle.getSumOthers());
/**
* 生成income字段
*/
BigDecimal sum1 = partnerSettle.getCash()
.add(partnerSettle.getUpCash())
.add(partnerSettle.getIcash())
.add(partnerSettle.getPcash())
.add(partnerSettle.getScash())
.add(partnerSettle.getRcash());
BigDecimal sum2 = partnerSettle.getSumOrderCommission()
.add(partnerSettle.getSumRedpack())
.add(partnerSettle.getSumOthers())
.add(partnerSettle.getTechChargeOrder())
.add(partnerSettle.getTechChargeRedpack());
if (sum1.compareTo(sum2) != 0) {
logger.error("合伙人奖励结算-对账异常: 求和1:{}, 求和2:{}, 奖励字段:{}", sum1, sum2, partnerSettle);
}
if (null == partnerIncomeSummary) { if (null == partnerIncomeSummary) {
partnerIncomeSummary = new PartnerIncomeSummary(); partnerIncomeSummary = new PartnerIncomeSummary();
partnerIncomeSummary.setUserId(userId); partnerIncomeSummary.setUserId(partnerSettle.getUserId());
partnerIncomeSummary.setYeartime(yeartime); partnerIncomeSummary.setYeartime(yeartime);
partnerIncomeSummary.setMonthtime(monthtime); partnerIncomeSummary.setMonthtime(monthtime);
partnerIncomeSummary.setIncome(ZERO); partnerIncomeSummary.setState(20);
partnerIncomeSummary.setState(15);
partnerIncomeSummary.setCreatedAt(now); partnerIncomeSummary.setCreatedAt(now);
partnerIncomeSummary.setUpdatedAt(now); partnerIncomeSummary.setUpdatedAt(now);
partnerIncomeSummary.setSettleTime(now); partnerIncomeSummary.setSettleTime(now);
partnerIncomeSummary.setContent(""); partnerIncomeSummary.setContent(JSON.toJSONString(partnerSummaryContent));
partnerIncomeSummary.setIncome(sum2);
partnerIncomeSummaryService.save(partnerIncomeSummary); partnerIncomeSummaryService.save(partnerIncomeSummary);
} else { } else {
partnerIncomeSummary.setState(15); partnerIncomeSummary.setState(20);
partnerIncomeSummary.setUpdatedAt(now); partnerIncomeSummary.setUpdatedAt(now);
partnerIncomeSummary.setSettleTime(now);
partnerIncomeSummary.setContent(JSON.toJSONString(partnerSummaryContent));
partnerIncomeSummary.setIncome(sum2);
partnerIncomeSummaryService.updateById(partnerIncomeSummary); partnerIncomeSummaryService.updateById(partnerIncomeSummary);
} }
} }
...@@ -217,7 +269,11 @@ public class PartnerSettleTask { ...@@ -217,7 +269,11 @@ public class PartnerSettleTask {
/** /**
* 月结发钱 * 月结发钱
*/ */
BigDecimal changeNum = partnerSettle.getSumOrderCommission().add(partnerSettle.getSumRedpack()).add(partnerSettle.getSumOthers()).add(partnerSettle.getTechCharge()); BigDecimal changeNum = partnerSettle.getSumOrderCommission()
.add(partnerSettle.getSumRedpack())
.add(partnerSettle.getSumOthers())
.add(partnerSettle.getTechChargeRedpack())
.add(partnerSettle.getTechChargeOrder());
BigDecimal changedAmount = partnerAccount.getWxFreeBalance().add(partnerAccount.getBankFreeBalance()).add(changeNum); BigDecimal changedAmount = partnerAccount.getWxFreeBalance().add(partnerAccount.getBankFreeBalance()).add(changeNum);
PartnerSnapshot snapshot = new PartnerSnapshot(); PartnerSnapshot snapshot = new PartnerSnapshot();
snapshot.setUserId(partnerAccount.getUserId()); snapshot.setUserId(partnerAccount.getUserId());
...@@ -233,7 +289,9 @@ public class PartnerSettleTask { ...@@ -233,7 +289,9 @@ public class PartnerSettleTask {
/** /**
* 平台技术服务费 * 平台技术服务费
*/ */
changeNum = partnerSettle.getTechCharge().negate(); changeNum = partnerSettle.getTechChargeRedpack()
.add(partnerSettle.getTechChargeOrder())
.negate();
changedAmount = changedAmount.add(changeNum); changedAmount = changedAmount.add(changeNum);
if (changeNum.compareTo(ZERO) < 0) { if (changeNum.compareTo(ZERO) < 0) {
log = createNewPartnerAccountLog(partnerSettle.getUserId(), log = createNewPartnerAccountLog(partnerSettle.getUserId(),
...@@ -285,10 +343,13 @@ public class PartnerSettleTask { ...@@ -285,10 +343,13 @@ public class PartnerSettleTask {
return log; return log;
} }
private void updateRewardCommission(PartnerReward partnerReward, BigDecimal allMoney) { private void add2UpdateRewardCommission(PartnerReward partnerReward, BigDecimal allMoney, List<PartnerReward> updateCommisionList) {
try {
partnerReward.setAllMoneyOri(allMoney); partnerReward.setAllMoneyOri(allMoney);
String ratioAllStr = partnerReward.getRatioAll().replaceAll("[\\[\\],\"]", ""); String ratioAllStr = partnerReward.getRatioAll().replaceAll("[\\[\\]\"]", "");
if (! isEmpty(ratioAllStr)) {
String[] strs = ratioAllStr.split(","); String[] strs = ratioAllStr.split(",");
if (strs.length > 0) {
BigDecimal cash = allMoney; BigDecimal cash = allMoney;
for (String s : strs) { for (String s : strs) {
BigDecimal ratio = new BigDecimal(s); BigDecimal ratio = new BigDecimal(s);
...@@ -299,21 +360,28 @@ public class PartnerSettleTask { ...@@ -299,21 +360,28 @@ public class PartnerSettleTask {
partnerReward.setCommissionAcount(commission); partnerReward.setCommissionAcount(commission);
partnerReward.setSettleState(Constants.SETTLE_STATE_DONE); partnerReward.setSettleState(Constants.SETTLE_STATE_DONE);
partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L); partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
partnerRewardService.updateById(partnerReward); // partnerRewardService.updateById(partnerReward);
updateCommisionList.add(partnerReward);
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
logger.error("partnerReward id is {}", partnerReward.getId());
}
} }
/** /**
* 更新至 失效, 结算完成 * 更新至 失效, 结算完成
* 不再参与后续结算计算 * 不再参与后续结算计算
* @param partnerReward * @param partnerReward
*/ */
private void updateReward2Failed(PartnerReward partnerReward) { private void add2UpdateReward2Failed(PartnerReward partnerReward, List<PartnerReward> update2FailedList) {
partnerReward.setAllMoneyOri(ZERO); partnerReward.setAllMoneyOri(ZERO);
partnerReward.setCash(ZERO); partnerReward.setCash(ZERO);
partnerReward.setCommissionAcount(ZERO); partnerReward.setCommissionAcount(ZERO);
partnerReward.setSettleState(Constants.SETTLE_STATE_FAILED); partnerReward.setSettleState(Constants.SETTLE_STATE_FAILED);
partnerReward.setRewardStatus(Constants.REWARD_STATUS_FAILED);
partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L); partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
partnerRewardService.updateById(partnerReward); // partnerRewardService.updateById(partnerReward);
update2FailedList.add(partnerReward);
} }
/** /**
...@@ -325,22 +393,40 @@ public class PartnerSettleTask { ...@@ -325,22 +393,40 @@ public class PartnerSettleTask {
PartnerReward errPartnerReward = null; PartnerReward errPartnerReward = null;
try { try {
int pageNo = 1; int pageNo = 1;
int total = 0;
int totalPage = 0;
int cnt = 0;
while (true) { while (true) {
Page<PartnerReward> page = new Page<PartnerReward>(pageNo, PAGE_SIZE); Page<PartnerReward> page = new Page<PartnerReward>(pageNo, PAGE_SIZE);
page.setOptimizeCountSql(false); page.setOptimizeCountSql(false);
page.setSearchCount(false);
IPage<PartnerReward> ipage; IPage<PartnerReward> ipage;
if (runType == 0) { if (runType == 0) {
ipage = partnerRewardService.selectOrderRewardPageByTs(page, beginTs, endTs); ipage = partnerRewardService.selectOrderRewardPageByTs(page, beginTs, endTs);
} else { } else {
ipage = partnerRewardService.selectOrderRewardPageByTsAndUid(page, beginTs, endTs, userId); ipage = partnerRewardService.selectOrderRewardPageByTsAndUid(page, beginTs, endTs, userId);
} }
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<PartnerReward> partnerRewardList = ipage.getRecords(); List<PartnerReward> partnerRewardList = ipage.getRecords();
List<PartnerReward> updateCommisionList = new ArrayList<PartnerReward>();
List<PartnerReward> update2FailedList = new ArrayList<PartnerReward>();
if (partnerRewardList != null && partnerRewardList.size() > 0) { if (partnerRewardList != null && partnerRewardList.size() > 0) {
/** /**
* 加载ordersActiveMap orderMap subOrderMap
*/
Set<OrderParam> orderParamsList = generateOrderParamsSet(partnerRewardList);
Set<SubOrderParam> subOrderParamsList = generateSubOrderParamsSet(partnerRewardList);
Map<OrderParam, OrdersActive> ordersActiveMap = generateOrdersActiveMap(orderParamsList);
Map<OrderParam, OrderTaobaoJdCommission> orderMap = generateOrderMap(orderParamsList);
Map<SubOrderParam, OrderTaobaoJdGoodsCommission> subOrderMap = generateSubOrderMap(subOrderParamsList);
/**
* 循环处理每条奖励 * 循环处理每条奖励
*/ */
for (PartnerReward partnerReward : partnerRewardList) { for (PartnerReward partnerReward : partnerRewardList) {
try {
errPartnerReward = partnerReward; errPartnerReward = partnerReward;
/** /**
* 购物奖励: reward_type: 110, settle_state > 0 且 != 300 * 购物奖励: reward_type: 110, settle_state > 0 且 != 300
...@@ -354,12 +440,19 @@ public class PartnerSettleTask { ...@@ -354,12 +440,19 @@ public class PartnerSettleTask {
/** /**
* 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额 * 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额
*/ */
} else if (partnerReward.getSettleState() < 0) {
add2UpdateReward2Failed(partnerReward, update2FailedList);
} else { } else {
/** /**
* 有订单号 和 比例快照 可以更新金额 * 有订单号 和 比例快照 可以更新金额
*/ */
OrdersActive ordersActive = ordersActiveService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn()); // OrdersActive ordersActive = ordersActiveService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn());
OrderTaobaoJdCommission order = orderTaobaoJdCommissionService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn()); // OrderTaobaoJdCommission order = orderTaobaoJdCommissionService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn());
OrderParam orderParam = new OrderParam();
orderParam.setOrderType(partnerReward.getOrderType());
orderParam.setOrderSn(partnerReward.getOrderSn());
OrdersActive ordersActive = ordersActiveMap.get(orderParam);
OrderTaobaoJdCommission order = orderMap.get(orderParam);
if (null == ordersActive || null == order) { if (null == ordersActive || null == order) {
/** /**
* 如果没有找到active 或者 没有找到commission * 如果没有找到active 或者 没有找到commission
...@@ -373,7 +466,7 @@ public class PartnerSettleTask { ...@@ -373,7 +466,7 @@ public class PartnerSettleTask {
/** /**
* 订单失效 订单付款 跳过, 处理下一条奖励 * 订单失效 订单付款 跳过, 处理下一条奖励
*/ */
updateReward2Failed(partnerReward); add2UpdateReward2Failed(partnerReward, update2FailedList);
continue; continue;
} else if (order.getStatus() == Constants.ORDER_STATE_PAID) { } else if (order.getStatus() == Constants.ORDER_STATE_PAID) {
/** /**
...@@ -392,7 +485,7 @@ public class PartnerSettleTask { ...@@ -392,7 +485,7 @@ public class PartnerSettleTask {
/** /**
* 新人专享订单 不给合伙人奖励 跳过 * 新人专享订单 不给合伙人奖励 跳过
*/ */
updateReward2Failed(partnerReward); add2UpdateReward2Failed(partnerReward, update2FailedList);
continue; continue;
} else { } else {
/** /**
...@@ -401,7 +494,7 @@ public class PartnerSettleTask { ...@@ -401,7 +494,7 @@ public class PartnerSettleTask {
* cash: all_money_ori 乘以 ratio_all中的每个比例 * cash: all_money_ori 乘以 ratio_all中的每个比例
* commission_account: cash 乘以 commission_rate * commission_account: cash 乘以 commission_rate
*/ */
updateRewardCommission(partnerReward, order.getAllMoney()); add2UpdateRewardCommission(partnerReward, order.getAllMoney(), updateCommisionList);
} }
} }
} }
...@@ -417,11 +510,18 @@ public class PartnerSettleTask { ...@@ -417,11 +510,18 @@ public class PartnerSettleTask {
/** /**
* 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额 * 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额
*/ */
} else if (partnerReward.getSettleState() < 0) {
add2UpdateReward2Failed(partnerReward, update2FailedList);
} else { } else {
/** /**
* 有订单号 和 比例快照 可以更新金额 * 有订单号 和 比例快照 可以更新金额
*/ */
OrderTaobaoJdGoodsCommission subOrder = orderTaobaoJdGoodsCommissionService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn(), partnerReward.getSubOrderSn()); // OrderTaobaoJdGoodsCommission subOrder = orderTaobaoJdGoodsCommissionService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn(), partnerReward.getSubOrderSn());
SubOrderParam subOrderParam = new SubOrderParam();
subOrderParam.setOrderType(partnerReward.getOrderType());
subOrderParam.setOrderSn(partnerReward.getOrderSn());
subOrderParam.setSubOrderSn(partnerReward.getSubOrderSn());
OrderTaobaoJdGoodsCommission subOrder = subOrderMap.get(subOrderParam);
if (null == subOrder) { if (null == subOrder) {
/** /**
* 如果没有找到子订单 * 如果没有找到子订单
...@@ -435,7 +535,7 @@ public class PartnerSettleTask { ...@@ -435,7 +535,7 @@ public class PartnerSettleTask {
/** /**
* 订单失效 订单付款 跳过, 处理下一条奖励 * 订单失效 订单付款 跳过, 处理下一条奖励
*/ */
updateReward2Failed(partnerReward); add2UpdateReward2Failed(partnerReward, update2FailedList);
} else if (subOrder.getOrderState() == Constants.ORDER_STATE_PAID) { } else if (subOrder.getOrderState() == Constants.ORDER_STATE_PAID) {
/** /**
* 订单还是付款状态 更新奖励时间 下个月再处理 * 订单还是付款状态 更新奖励时间 下个月再处理
...@@ -452,23 +552,96 @@ public class PartnerSettleTask { ...@@ -452,23 +552,96 @@ public class PartnerSettleTask {
* cash: all_money_ori 乘以 ratio_all中的每个比例 * cash: all_money_ori 乘以 ratio_all中的每个比例
* commission_account: cash 乘以 commission_rate * commission_account: cash 乘以 commission_rate
*/ */
updateRewardCommission(partnerReward, subOrder.getAllMoney()); add2UpdateRewardCommission(partnerReward, subOrder.getAllMoney(), updateCommisionList);
} }
} }
} }
} }
} catch (Exception e) {
logger.error(e.getMessage(), e);
} }
pageNo++; cnt++;
} else { }
}
if (updateCommisionList.size() > 0) {
partnerRewardService.updateBatch(updateCommisionList);
}
if (update2FailedList.size() > 0) {
partnerRewardService.updateBatch(update2FailedList);
}
if (pageNo >= totalPage) {
break; break;
} }
pageNo++;
} }
logger.info("cnt is {}", cnt);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(),e); logger.error(e.getMessage(),e);
logger.error("errPartnerReward is {}", errPartnerReward); logger.error("errPartnerReward is {}", errPartnerReward);
} }
} }
private Set<OrderParam> generateOrderParamsSet(List<PartnerReward> partnerRewardList) {
Set<OrderParam> set = new HashSet<OrderParam>();
for (PartnerReward reward : partnerRewardList) {
OrderParam orderParam = new OrderParam();
orderParam.setOrderType(reward.getOrderType());
orderParam.setOrderSn(reward.getOrderSn());
set.add(orderParam);
}
return set;
}
private Set<SubOrderParam> generateSubOrderParamsSet(List<PartnerReward> partnerRewardList) {
Set<SubOrderParam> set = new HashSet<SubOrderParam>();
for (PartnerReward reward : partnerRewardList) {
SubOrderParam orderParam = new SubOrderParam();
orderParam.setOrderType(reward.getOrderType());
orderParam.setOrderSn(reward.getOrderSn());
orderParam.setSubOrderSn(reward.getSubOrderSn());
set.add(orderParam);
}
return set;
}
private Map<SubOrderParam, OrderTaobaoJdGoodsCommission> generateSubOrderMap(Set<SubOrderParam> subOrderParamsSet) {
Map<SubOrderParam, OrderTaobaoJdGoodsCommission> map = new HashMap<SubOrderParam, OrderTaobaoJdGoodsCommission>();
List<OrderTaobaoJdGoodsCommission> list = orderTaobaoJdGoodsCommissionService.selectListBySubOrderParamsSet(subOrderParamsSet);
for (OrderTaobaoJdGoodsCommission subOrder : list) {
SubOrderParam key = new SubOrderParam();
key.setOrderType(subOrder.getType());
key.setOrderSn(subOrder.getOrderSn());
key.setSubOrderSn(subOrder.getSubOrderSn());
map.put(key, subOrder);
}
return map;
}
private Map<OrderParam, OrderTaobaoJdCommission> generateOrderMap(Set<OrderParam> orderParamSet) {
Map<OrderParam, OrderTaobaoJdCommission> map = new HashMap<OrderParam, OrderTaobaoJdCommission>();
List<OrderTaobaoJdCommission> list = orderTaobaoJdCommissionService.selectListByOrderParamSet(orderParamSet);
for (OrderTaobaoJdCommission order : list) {
OrderParam key = new OrderParam();
key.setOrderType(order.getType());
key.setOrderSn(order.getOrderSn());
map.put(key, order);
}
return map;
}
private Map<OrderParam, OrdersActive> generateOrdersActiveMap(Set<OrderParam> orderParamSet) {
Map<OrderParam, OrdersActive> map = new HashMap<OrderParam, OrdersActive>();
List<OrdersActive> list = ordersActiveService.selectListByOrderParamSet(orderParamSet);
for (OrdersActive order : list) {
OrderParam key = new OrderParam();
key.setOrderType(order.getType());
key.setOrderSn(order.getOrderSn());
map.put(key, order);
}
return map;
}
private static boolean setIncomeAndTax(PartnerSettle partnerSettle) { private static boolean setIncomeAndTax(PartnerSettle partnerSettle) {
try { try {
BigDecimal base = partnerSettle.getSumRedpack().add(partnerSettle.getSumOthers()); BigDecimal base = partnerSettle.getSumRedpack().add(partnerSettle.getSumOthers());
...@@ -520,60 +693,60 @@ public class PartnerSettleTask { ...@@ -520,60 +693,60 @@ public class PartnerSettleTask {
} }
} }
public boolean runSummary(String dateStr, int userId) { // public boolean runSummary(String dateStr, int userId) {
try { // try {
/** // /**
* partner_account_log 跑结算日期 // * partner_account_log 跑结算日期
*/ // */
Date dat = DateUtils.parse(dateStr, "yyyy-MM-dd"); // Date dat = DateUtils.parse(dateStr, "yyyy-MM-dd");
int yeartime = Integer.parseInt(DateUtils.getYear(dat)); // int yeartime = Integer.parseInt(DateUtils.getYear(dat));
int monthtime = Integer.parseInt(DateUtils.getMonth(dat)); // int monthtime = Integer.parseInt(DateUtils.getMonth(dat));
int daytime = Integer.parseInt(DateUtils.format(dat, "dd")); // int daytime = Integer.parseInt(DateUtils.format(dat, "dd"));
PartnerAccountLog partnerAccountLog = partnerAccountLogService.getOneByUidAndDay(userId, yeartime, monthtime, daytime); // PartnerAccountLog partnerAccountLog = partnerAccountLogService.getOneByUidAndDay(userId, yeartime, monthtime, daytime);
/** // /**
* partner_income_summary 结算的数据月份 比dat早一个月 // * partner_income_summary 结算的数据月份 比dat早一个月
*/ // */
long beginTs = DateUtils.getLastMonth1stTimestamp(dat.getTime()) / 1000L; // long beginTs = DateUtils.getLastMonth1stTimestamp(dat.getTime()) / 1000L;
long endTs = DateUtils.getMonthLastTimestamp(dat.getTime()) / 1000L; // long endTs = DateUtils.getMonthLastTimestamp(dat.getTime()) / 1000L;
Date dat2 = new Date(beginTs * 1000L); // Date dat2 = new Date(beginTs * 1000L);
int yeartime2 = Integer.parseInt(DateUtils.getYear(dat2)); // int yeartime2 = Integer.parseInt(DateUtils.getYear(dat2));
int monthtime2 = Integer.parseInt(DateUtils.getMonth(dat2)); // int monthtime2 = Integer.parseInt(DateUtils.getMonth(dat2));
PartnerIncomeSummary partnerIncomeSummary = partnerIncomeSummaryService.getOneByUidYearMonth(userId, yeartime2, monthtime2); // PartnerIncomeSummary partnerIncomeSummary = partnerIncomeSummaryService.getOneByUidYearMonth(userId, yeartime2, monthtime2);
//
/** // /**
* 获取显示的汇总数据 // * 获取显示的汇总数据
*/ // */
PartnerSummaryContent partnerSummaryContent = partnerRewardService.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs); // PartnerSummaryContent partnerSummaryContent = partnerRewardService.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs);
/** // /**
* 补差额 // * 补差额
*/ // */
BigDecimal sum = partnerSummaryContent.getCash() // BigDecimal sum = partnerSummaryContent.getCash()
.add(partnerSummaryContent.getUpCash()) // .add(partnerSummaryContent.getUpCash())
.add(partnerSummaryContent.getIcash()) // .add(partnerSummaryContent.getIcash())
.add(partnerSummaryContent.getPcash()) // .add(partnerSummaryContent.getPcash())
.add(partnerSummaryContent.getScash()) // .add(partnerSummaryContent.getScash())
.add(partnerSummaryContent.getRcash()); // .add(partnerSummaryContent.getRcash());
BigDecimal delta = partnerAccountLog.getChangeNum().subtract(sum); // BigDecimal delta = partnerAccountLog.getChangeNum().subtract(sum);
partnerSummaryContent.setRcash(partnerSummaryContent.getRcash().add(delta)); // partnerSummaryContent.setRcash(partnerSummaryContent.getRcash().add(delta));
/** // /**
* 显示精度 // * 显示精度
*/ // */
partnerSummaryContent.setCash(partnerSummaryContent.getCash().setScale(2, RoundingMode.HALF_UP)); // partnerSummaryContent.setCash(partnerSummaryContent.getCash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setUpCash(partnerSummaryContent.getUpCash().setScale(2, RoundingMode.HALF_UP)); // partnerSummaryContent.setUpCash(partnerSummaryContent.getUpCash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setIcash(partnerSummaryContent.getIcash().setScale(2, RoundingMode.HALF_UP)); // partnerSummaryContent.setIcash(partnerSummaryContent.getIcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setPcash(partnerSummaryContent.getPcash().setScale(2, RoundingMode.HALF_UP)); // partnerSummaryContent.setPcash(partnerSummaryContent.getPcash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setScash(partnerSummaryContent.getScash().setScale(2, RoundingMode.HALF_UP)); // partnerSummaryContent.setScash(partnerSummaryContent.getScash().setScale(2, RoundingMode.HALF_UP));
partnerSummaryContent.setRcash(partnerSummaryContent.getRcash().setScale(2, RoundingMode.HALF_UP)); // partnerSummaryContent.setRcash(partnerSummaryContent.getRcash().setScale(2, RoundingMode.HALF_UP));
/** // /**
* 更新数据 // * 更新数据
*/ // */
partnerIncomeSummary.setContent(JSON.toJSONString(partnerSummaryContent)); // partnerIncomeSummary.setContent(JSON.toJSONString(partnerSummaryContent));
partnerIncomeSummary.setIncome(partnerAccountLog.getChangeNum()); // partnerIncomeSummary.setIncome(partnerAccountLog.getChangeNum());
partnerIncomeSummaryService.updateById(partnerIncomeSummary); // partnerIncomeSummaryService.updateById(partnerIncomeSummary);
return true; // return true;
} catch (Exception e) { // } catch (Exception e) {
logger.error(e.getMessage(), e); // logger.error(e.getMessage(), e);
return false; // return false;
} // }
} // }
} }
...@@ -7,11 +7,15 @@ import com.lanren.huhu.partner.service.AgentRewardService; ...@@ -7,11 +7,15 @@ import com.lanren.huhu.partner.service.AgentRewardService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import static com.lanren.huhu.partner.constants.Constants.*; import static com.lanren.huhu.partner.constants.Constants.*;
...@@ -32,6 +36,10 @@ public class RevokeAgentRewardTask { ...@@ -32,6 +36,10 @@ public class RevokeAgentRewardTask {
AgentRevokeRecordsService agentRevokeRecordsService; AgentRevokeRecordsService agentRevokeRecordsService;
@Autowired @Autowired
AgentRewardService agentRewardService; AgentRewardService agentRewardService;
@Autowired
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
@Scheduled(fixedDelay = 5000L) @Scheduled(fixedDelay = 5000L)
public void runScheduledTask() { public void runScheduledTask() {
...@@ -62,46 +70,67 @@ public class RevokeAgentRewardTask { ...@@ -62,46 +70,67 @@ public class RevokeAgentRewardTask {
} }
} }
public void process(AgentRevokeRecords revokeRecord) { private void process(AgentRevokeRecords revokeRecord) {
TransactionStatus transactionStatus = null;
try {
int revokeType = revokeRecord.getRevokeType(); int revokeType = revokeRecord.getRevokeType();
if (!AGENT_REVOKE_TYPE_MAP.keySet().contains(revokeType)) { if (!AGENT_REVOKE_TYPE_MAP.keySet().contains(revokeType)) {
logger.info("未知的奖励类型 跳过不处理: {}", revokeRecord); logger.info("未知的奖励类型 跳过不处理: {}", revokeRecord);
return; return;
} }
AgentReward agentReward = null; /**
* 开启事务
*/
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) { if (revokeType == AGENT_REVOKE_TYPE_ACTIVATION || revokeType == AGENT_REVOKE_TYPE_SELF_ORDER) {
agentReward = agentRewardService.getOneByRefId(revokeRecord.getRefId()); agentRewardList = agentRewardService.getListByRefId(revokeRecord.getRefId());
} else if (revokeType == AGENT_REVOKE_TYPE_SHARE_ORDER) { } else if (revokeType == AGENT_REVOKE_TYPE_SHARE_ORDER) {
agentReward = agentRewardService.getOneBySubOrderSn(revokeRecord.getOrderType(), revokeRecord.getOrderSn(), revokeRecord.getSubOrderSn()); agentRewardList = agentRewardService.getListBySubOrderSn(revokeRecord.getOrderType(), revokeRecord.getOrderSn(), revokeRecord.getSubOrderSn());
} else { } else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING); revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
} }
/** /**
* 已结算状态 插负, 未结算状态 抹平 * 已结算状态 插负, 未结算状态 抹平
*/ */
if (null != agentReward) { if (null != agentRewardList && agentRewardList.size() > 0) {
for (AgentReward agentReward : agentRewardList) {
if (agentReward.getSettleState() == SETTLE_STATE_DONE) { if (agentReward.getSettleState() == SETTLE_STATE_DONE) {
agentReward.setAmount(agentReward.getAmount().negate()); agentReward.setAmount(agentReward.getAmount().negate());
agentReward.setCommission(agentReward.getCommission().negate()); agentReward.setCommission(agentReward.getCommission().negate());
if (agentRewardService.insertOne(agentReward) > 0) { insertList.add(agentReward);
revokeRecord.setState(REVOKE_STATE_DONE);
} else {
revokeRecord.setState(REVOKE_STATE_FAILED);
}
} else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) { } else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) {
agentReward.setAmount(new BigDecimal(0)); agentReward.setAmount(new BigDecimal(0));
agentReward.setCommission(new BigDecimal(0)); agentReward.setCommission(new BigDecimal(0));
if (agentRewardService.updateById(agentReward)) { updateList.add(agentReward);
revokeRecord.setState(REVOKE_STATE_DONE);
} else {
revokeRecord.setState(REVOKE_STATE_FAILED);
} }
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
} }
if (updateList.size() > 0) {
agentRewardService.updateBatch(updateList);
}
if (insertList.size() > 0) {
agentRewardService.batchInsert(insertList);
}
revokeRecord.setState(REVOKE_STATE_DONE);
} else { } else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING); revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
} }
agentRevokeRecordsService.updateById(revokeRecord); 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);
}
} }
} }
package com.lanren.huhu.partner.service; 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.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.AgentExpandDaily;
import java.util.List;
/** /**
* @author chen * @author chen
...@@ -24,6 +25,8 @@ public interface AgentExpandDailyService extends IService<AgentExpandDaily> { ...@@ -24,6 +25,8 @@ public interface AgentExpandDailyService extends IService<AgentExpandDaily> {
int insertOrUpdateSelective(AgentExpandDaily record); int insertOrUpdateSelective(AgentExpandDaily record);
int updateByDatByDetail(String datStr); int updateByDatByDetail(String datStr);
Integer getMonthCntByAgent(int agentId, long beginTs, long endTs);
} }
...@@ -27,9 +27,9 @@ public interface AgentRewardService extends IService<AgentReward> { ...@@ -27,9 +27,9 @@ public interface AgentRewardService extends IService<AgentReward> {
int insertOrUpdateSelective(AgentReward record); 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); int insertOne(AgentReward record);
......
...@@ -27,3 +27,4 @@ public interface AgentSalaryService extends IService<AgentSalary> { ...@@ -27,3 +27,4 @@ public interface AgentSalaryService extends IService<AgentSalary> {
int insert(AgentSalary agentSalary); int insert(AgentSalary agentSalary);
} }
...@@ -2,8 +2,10 @@ package com.lanren.huhu.partner.service; ...@@ -2,8 +2,10 @@ package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission; import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission;
import com.lanren.huhu.partner.model.OrderParam;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author houseme * @author houseme
...@@ -23,6 +25,6 @@ public interface OrderTaobaoJdCommissionService extends IService<OrderTaobaoJdCo ...@@ -23,6 +25,6 @@ public interface OrderTaobaoJdCommissionService extends IService<OrderTaobaoJdCo
int insertOrUpdateSelective(OrderTaobaoJdCommission record); 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; ...@@ -2,9 +2,12 @@ package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.OrderTaobaoJdGoodsCommission; import com.lanren.huhu.partner.domain.OrderTaobaoJdGoodsCommission;
import com.lanren.huhu.partner.model.SubOrderParam;
import java.util.List; import java.util.List;
/** import java.util.Set;
/**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
* @description: TODO * @description: TODO
...@@ -23,5 +26,5 @@ public interface OrderTaobaoJdGoodsCommissionService extends IService<OrderTaoba ...@@ -23,5 +26,5 @@ public interface OrderTaobaoJdGoodsCommissionService extends IService<OrderTaoba
int insertOrUpdateSelective(OrderTaobaoJdGoodsCommission record); 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; ...@@ -2,9 +2,12 @@ package com.lanren.huhu.partner.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.lanren.huhu.partner.domain.OrdersActive; import com.lanren.huhu.partner.domain.OrdersActive;
import com.lanren.huhu.partner.model.OrderParam;
import java.util.List; import java.util.List;
/** import java.util.Set;
/**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
* @description: TODO * @description: TODO
...@@ -23,5 +26,5 @@ public interface OrdersActiveService extends IService<OrdersActive>{ ...@@ -23,5 +26,5 @@ public interface OrdersActiveService extends IService<OrdersActive>{
int insertOrUpdateSelective(OrdersActive record); 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; ...@@ -5,7 +5,6 @@ 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;
...@@ -48,6 +47,6 @@ public interface PartnerRewardService extends IService<PartnerReward> { ...@@ -48,6 +47,6 @@ 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); // PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs);
} }
package com.lanren.huhu.partner.service.impl; package com.lanren.huhu.partner.service.impl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.AgentExpandDailyMapper; import com.lanren.huhu.partner.dao.AgentExpandDailyMapper;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentExpandDaily; import com.lanren.huhu.partner.domain.AgentExpandDaily;
import com.lanren.huhu.partner.service.AgentExpandDailyService; import com.lanren.huhu.partner.service.AgentExpandDailyService;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @author chen * @author chen
...@@ -44,6 +43,11 @@ public class AgentExpandDailyServiceImpl extends ServiceImpl<AgentExpandDailyMap ...@@ -44,6 +43,11 @@ public class AgentExpandDailyServiceImpl extends ServiceImpl<AgentExpandDailyMap
public int updateByDatByDetail(String datStr) { public int updateByDatByDetail(String datStr) {
return baseMapper.updateByDatByDetail(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; 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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -44,15 +45,18 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent ...@@ -44,15 +45,18 @@ public class AgentRewardServiceImpl extends ServiceImpl<AgentRewardMapper, Agent
} }
@Override @Override
public AgentReward getOneByRefId(String refId) { public List<AgentReward> getListByRefId(String refId) {
return null; QueryWrapper<AgentReward> wrapper = new QueryWrapper<AgentReward>();
wrapper.eq("reference_id", refId).gt("settle_state", 0);
return baseMapper.selectList(wrapper);
} }
@Override @Override
public AgentReward getOneBySubOrderSn(String orderType, String orderSn, String subOrderSn) { public List<AgentReward> getListBySubOrderSn(String orderType, String orderSn, String subOrderSn) {
return null; 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 @Override
public int insertOne(AgentReward record) { public int insertOne(AgentReward record) {
List<AgentReward> list = new ArrayList<AgentReward>(); List<AgentReward> list = new ArrayList<AgentReward>();
......
...@@ -39,6 +39,7 @@ public class AgentSalaryServiceImpl extends ServiceImpl<AgentSalaryMapper, Agent ...@@ -39,6 +39,7 @@ public class AgentSalaryServiceImpl extends ServiceImpl<AgentSalaryMapper, Agent
public int insertOrUpdateSelective(AgentSalary record) { public int insertOrUpdateSelective(AgentSalary record) {
return baseMapper.insertOrUpdateSelective(record); return baseMapper.insertOrUpdateSelective(record);
} }
@Override @Override
@Options(useGeneratedKeys = true, keyProperty = "agentSalary", keyColumn = "id") @Options(useGeneratedKeys = true, keyProperty = "agentSalary", keyColumn = "id")
public int insert(AgentSalary agentSalary) { public int insert(AgentSalary agentSalary) {
...@@ -46,3 +47,4 @@ public class AgentSalaryServiceImpl extends ServiceImpl<AgentSalaryMapper, Agent ...@@ -46,3 +47,4 @@ public class AgentSalaryServiceImpl extends ServiceImpl<AgentSalaryMapper, Agent
} }
} }
...@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -4,10 +4,13 @@ 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.OrderTaobaoJdCommissionMapper; import com.lanren.huhu.partner.dao.OrderTaobaoJdCommissionMapper;
import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission; import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission;
import com.lanren.huhu.partner.model.OrderParam;
import com.lanren.huhu.partner.service.OrderTaobaoJdCommissionService; import com.lanren.huhu.partner.service.OrderTaobaoJdCommissionService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author houseme * @author houseme
...@@ -40,10 +43,18 @@ public class OrderTaobaoJdCommissionServiceImpl extends ServiceImpl<OrderTaobaoJ ...@@ -40,10 +43,18 @@ public class OrderTaobaoJdCommissionServiceImpl extends ServiceImpl<OrderTaobaoJ
} }
@Override @Override
public OrderTaobaoJdCommission getOneByOrderSn(String orderType, String orderSn) { public List<OrderTaobaoJdCommission> selectListByOrderParamSet(Set<OrderParam> orderParamSet) {
QueryWrapper<OrderTaobaoJdCommission> wrapper = new QueryWrapper<OrderTaobaoJdCommission>(); QueryWrapper<OrderTaobaoJdCommission> wrapper = new QueryWrapper<OrderTaobaoJdCommission>();
wrapper.eq("type", orderType).eq("order_sn", orderSn); Iterator<OrderParam> iterator = orderParamSet.iterator();
return baseMapper.selectOne(wrapper); 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,10 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -4,10 +4,14 @@ 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.OrderTaobaoJdGoodsCommissionMapper; import com.lanren.huhu.partner.dao.OrderTaobaoJdGoodsCommissionMapper;
import com.lanren.huhu.partner.domain.OrderTaobaoJdGoodsCommission; import com.lanren.huhu.partner.domain.OrderTaobaoJdGoodsCommission;
import com.lanren.huhu.partner.model.SubOrderParam;
import com.lanren.huhu.partner.service.OrderTaobaoJdGoodsCommissionService; import com.lanren.huhu.partner.service.OrderTaobaoJdGoodsCommissionService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
...@@ -36,9 +40,18 @@ public class OrderTaobaoJdGoodsCommissionServiceImpl extends ServiceImpl<OrderTa ...@@ -36,9 +40,18 @@ public class OrderTaobaoJdGoodsCommissionServiceImpl extends ServiceImpl<OrderTa
return baseMapper.insertOrUpdateSelective(record); return baseMapper.insertOrUpdateSelective(record);
} }
@Override @Override
public OrderTaobaoJdGoodsCommission getOneByOrderSn(String orderType, String orderSn, String subOrderSn) { public List<OrderTaobaoJdGoodsCommission> selectListBySubOrderParamsSet(Set<SubOrderParam> subOrderParamsSet) {
QueryWrapper<OrderTaobaoJdGoodsCommission> wrapper = new QueryWrapper<OrderTaobaoJdGoodsCommission>(); QueryWrapper<OrderTaobaoJdGoodsCommission> wrapper = new QueryWrapper<OrderTaobaoJdGoodsCommission>();
wrapper.eq("type", orderType).eq("order_sn", orderSn).eq("sub_order_sn", subOrderSn); Iterator<SubOrderParam> iterator = subOrderParamsSet.iterator();
return baseMapper.selectOne(wrapper); 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; 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.OrdersActiveMapper; import com.lanren.huhu.partner.dao.OrdersActiveMapper;
import com.lanren.huhu.partner.domain.OrdersActive; import com.lanren.huhu.partner.domain.OrdersActive;
import com.lanren.huhu.partner.model.OrderParam;
import com.lanren.huhu.partner.service.OrdersActiveService; import com.lanren.huhu.partner.service.OrdersActiveService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
...@@ -36,7 +41,17 @@ public class OrdersActiveServiceImpl extends ServiceImpl<OrdersActiveMapper, Ord ...@@ -36,7 +41,17 @@ public class OrdersActiveServiceImpl extends ServiceImpl<OrdersActiveMapper, Ord
} }
@Override @Override
public OrdersActive getOneByOrderSn(String type, String orderSn) { public List<OrdersActive> selectListByOrderParamSet(Set<OrderParam> orderParamSet) {
return baseMapper.selectOneByOrderSn(type, orderSn); 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; ...@@ -6,7 +6,6 @@ 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;
...@@ -68,9 +67,9 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P ...@@ -68,9 +67,9 @@ public class PartnerRewardServiceImpl extends ServiceImpl<PartnerRewardMapper, P
return baseMapper.updateRewardStatusByUidAndTs(userId, beginTs, endTs); return baseMapper.updateRewardStatusByUidAndTs(userId, beginTs, endTs);
} }
@Override // @Override
public PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs) { // public PartnerSummaryContent getPartnerSummaryContentByUidAndTime(int userId, long beginTs, long endTs) {
return baseMapper.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs); // return baseMapper.getPartnerSummaryContentByUidAndTime(userId, beginTs, endTs);
} // }
} }
...@@ -179,4 +179,10 @@ ...@@ -179,4 +179,10 @@
</if> </if>
</trim> </trim>
</insert> </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> </mapper>
\ No newline at end of file
...@@ -668,31 +668,57 @@ ...@@ -668,31 +668,57 @@
b.agent_level, b.agent_level,
a.balance, a.balance,
a.techCharge, a.techCharge,
a.techChargeRedpack,
a.techChargeOrder,
a.opencardBalance, a.opencardBalance,
a.rechargeBalance, a.rechargeBalance,
a.upgradeBalance, a.upgradeBalance,
a.upgradeSuperBalance, a.upgradeSuperBalance,
a.shareBalance, a.shareBalance,
a.zigoushengBalance, 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 ( FROM (
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) 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 (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,
SUM(case when reward_type in (20,730) then amount else 0 end) upgradeSuperBalance, 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 (60,760) then amount else 0 end) shareBalance,
SUM(case when reward_type in (300,750) then amount else 0 end) zigoushengBalance, 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 FROM agent_reward
WHERE recharge_time WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status=100 AND reward_status=100
GROUP BY 1 GROUP BY 1
ORDER BY 1
) a ) a
JOIN user_agent b ON a.agent_id=b.agent_id JOIN user_agent b ON a.agent_id=b.agent_id
ORDER BY 1,2,3 ORDER BY 1,2,3
...@@ -704,32 +730,58 @@ ...@@ -704,32 +730,58 @@
b.agent_level, b.agent_level,
a.balance, a.balance,
a.techCharge, a.techCharge,
a.techChargeRedpack,
a.techChargeOrder,
a.opencardBalance, a.opencardBalance,
a.rechargeBalance, a.rechargeBalance,
a.upgradeBalance, a.upgradeBalance,
a.upgradeSuperBalance, a.upgradeSuperBalance,
a.shareBalance, a.shareBalance,
a.zigoushengBalance, 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 ( FROM (
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) 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 (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,
SUM(case when reward_type in (20,730) then amount else 0 end) upgradeSuperBalance, 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 (60,760) then amount else 0 end) shareBalance,
SUM(case when reward_type in (300,750) then amount else 0 end) zigoushengBalance, 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 FROM agent_reward
WHERE recharge_time WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status = 100 AND reward_status = 100
AND agent_id = #{agentId} AND agent_id = #{agentId}
GROUP BY 1 GROUP BY 1
ORDER BY 1
) a ) a
JOIN user_agent b ON a.agent_id = b.agent_id JOIN user_agent b ON a.agent_id = b.agent_id
ORDER BY 1,2,3 ORDER BY 1,2,3
......
...@@ -14,11 +14,13 @@ ...@@ -14,11 +14,13 @@
<result column="recharge_balance" property="rechargeBalance" /> <result column="recharge_balance" property="rechargeBalance" />
<result column="upgrade_balance" property="upgradeBalance" /> <result column="upgrade_balance" property="upgradeBalance" />
<result column="upgrade_super_balance" property="upgradeSuperBalance" /> <result column="upgrade_super_balance" property="upgradeSuperBalance" />
<result column="tax_balance" property="taxBalance" />
<result column="share_balance" property="shareBalance" /> <result column="share_balance" property="shareBalance" />
<result column="tax_balance" property="taxBalance" />
<result column="zigousheng_balance" property="zigoushengBalance" /> <result column="zigousheng_balance" property="zigoushengBalance" />
<result column="pingtui_balance" property="pingtuiBalance" /> <result column="pingtui_balance" property="pingtuiBalance" />
<result column="tech_charge" property="techCharge" /> <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_account" property="bankAccount" />
<result column="bank_card_number" property="bankCardNumber" /> <result column="bank_card_number" property="bankCardNumber" />
<result column="bank_name" property="bankName" /> <result column="bank_name" property="bankName" />
...@@ -34,9 +36,10 @@ ...@@ -34,9 +36,10 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
id, user_id, agent_id, yeartime, monthtime, `month`, balance, opencard_balance, recharge_balance, id, user_id, agent_id, yeartime, monthtime, `month`, balance, opencard_balance, recharge_balance,
upgrade_balance, upgrade_super_balance, tax_balance, share_balance, zigousheng_balance, upgrade_balance, upgrade_super_balance, share_balance, tax_balance, zigousheng_balance,
pingtui_balance, tech_charge, bank_account, bank_card_number, bank_name, branch_name, pingtui_balance, tech_charge, tech_charge_redpack, tech_charge_order, bank_account,
reference_id, `status`, create_time, modify_time, created_at, updated_at, deleted_at bank_card_number, bank_name, branch_name, reference_id, `status`, create_time, modify_time,
created_at, updated_at, deleted_at
</sql> </sql>
<update id="updateBatch" parameterType="java.util.List"> <update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated--> <!--@mbg.generated-->
...@@ -92,14 +95,14 @@ ...@@ -92,14 +95,14 @@
when id = #{item.id} then #{item.upgradeSuperBalance} when id = #{item.id} then #{item.upgradeSuperBalance}
</foreach> </foreach>
</trim> </trim>
<trim prefix="tax_balance = case" suffix="end,"> <trim prefix="share_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item"> <foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.taxBalance} when id = #{item.id} then #{item.shareBalance}
</foreach> </foreach>
</trim> </trim>
<trim prefix="share_balance = case" suffix="end,"> <trim prefix="tax_balance = case" suffix="end,">
<foreach collection="list" index="index" item="item"> <foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.shareBalance} when id = #{item.id} then #{item.taxBalance}
</foreach> </foreach>
</trim> </trim>
<trim prefix="zigousheng_balance = case" suffix="end,"> <trim prefix="zigousheng_balance = case" suffix="end,">
...@@ -117,6 +120,16 @@ ...@@ -117,6 +120,16 @@
when id = #{item.id} then #{item.techCharge} when id = #{item.id} then #{item.techCharge}
</foreach> </foreach>
</trim> </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,"> <trim prefix="bank_account = case" suffix="end,">
<foreach collection="list" index="index" item="item"> <foreach collection="list" index="index" item="item">
when id = #{item.id} then #{item.bankAccount} when id = #{item.id} then #{item.bankAccount}
...@@ -182,18 +195,19 @@ ...@@ -182,18 +195,19 @@
<!--@mbg.generated--> <!--@mbg.generated-->
insert into agent_salary insert into agent_salary
(user_id, agent_id, yeartime, monthtime, `month`, balance, opencard_balance, recharge_balance, (user_id, agent_id, yeartime, monthtime, `month`, balance, opencard_balance, recharge_balance,
upgrade_balance, upgrade_super_balance, tax_balance, share_balance, zigousheng_balance, upgrade_balance, upgrade_super_balance, share_balance, tax_balance, zigousheng_balance,
pingtui_balance, tech_charge, bank_account, bank_card_number, bank_name, branch_name, pingtui_balance, tech_charge, tech_charge_redpack, tech_charge_order, bank_account,
reference_id, `status`, create_time, modify_time, created_at, updated_at, deleted_at bank_card_number, bank_name, branch_name, reference_id, `status`, create_time,
) modify_time, created_at, updated_at, deleted_at)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.agentId}, #{item.yeartime}, #{item.monthtime}, #{item.month}, (#{item.userId}, #{item.agentId}, #{item.yeartime}, #{item.monthtime}, #{item.month},
#{item.balance}, #{item.opencardBalance}, #{item.rechargeBalance}, #{item.upgradeBalance}, #{item.balance}, #{item.opencardBalance}, #{item.rechargeBalance}, #{item.upgradeBalance},
#{item.upgradeSuperBalance}, #{item.taxBalance}, #{item.shareBalance}, #{item.zigoushengBalance}, #{item.upgradeSuperBalance}, #{item.shareBalance}, #{item.taxBalance}, #{item.zigoushengBalance},
#{item.pingtuiBalance}, #{item.techCharge}, #{item.bankAccount}, #{item.bankCardNumber}, #{item.pingtuiBalance}, #{item.techCharge}, #{item.techChargeRedpack}, #{item.techChargeOrder},
#{item.bankName}, #{item.branchName}, #{item.referenceId}, #{item.status}, #{item.createTime}, #{item.bankAccount}, #{item.bankCardNumber}, #{item.bankName}, #{item.branchName},
#{item.modifyTime}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt}) #{item.referenceId}, #{item.status}, #{item.createTime}, #{item.modifyTime}, #{item.createdAt},
#{item.updatedAt}, #{item.deletedAt})
</foreach> </foreach>
</insert> </insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentSalary" useGeneratedKeys="true"> <insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.lanren.huhu.partner.domain.AgentSalary" useGeneratedKeys="true">
...@@ -213,11 +227,13 @@ ...@@ -213,11 +227,13 @@
recharge_balance, recharge_balance,
upgrade_balance, upgrade_balance,
upgrade_super_balance, upgrade_super_balance,
tax_balance,
share_balance, share_balance,
tax_balance,
zigousheng_balance, zigousheng_balance,
pingtui_balance, pingtui_balance,
tech_charge, tech_charge,
tech_charge_redpack,
tech_charge_order,
bank_account, bank_account,
bank_card_number, bank_card_number,
bank_name, bank_name,
...@@ -245,11 +261,13 @@ ...@@ -245,11 +261,13 @@
#{rechargeBalance}, #{rechargeBalance},
#{upgradeBalance}, #{upgradeBalance},
#{upgradeSuperBalance}, #{upgradeSuperBalance},
#{taxBalance},
#{shareBalance}, #{shareBalance},
#{taxBalance},
#{zigoushengBalance}, #{zigoushengBalance},
#{pingtuiBalance}, #{pingtuiBalance},
#{techCharge}, #{techCharge},
#{techChargeRedpack},
#{techChargeOrder},
#{bankAccount}, #{bankAccount},
#{bankCardNumber}, #{bankCardNumber},
#{bankName}, #{bankName},
...@@ -277,11 +295,13 @@ ...@@ -277,11 +295,13 @@
recharge_balance = #{rechargeBalance}, recharge_balance = #{rechargeBalance},
upgrade_balance = #{upgradeBalance}, upgrade_balance = #{upgradeBalance},
upgrade_super_balance = #{upgradeSuperBalance}, upgrade_super_balance = #{upgradeSuperBalance},
tax_balance = #{taxBalance},
share_balance = #{shareBalance}, share_balance = #{shareBalance},
tax_balance = #{taxBalance},
zigousheng_balance = #{zigoushengBalance}, zigousheng_balance = #{zigoushengBalance},
pingtui_balance = #{pingtuiBalance}, pingtui_balance = #{pingtuiBalance},
tech_charge = #{techCharge}, tech_charge = #{techCharge},
tech_charge_redpack = #{techChargeRedpack},
tech_charge_order = #{techChargeOrder},
bank_account = #{bankAccount}, bank_account = #{bankAccount},
bank_card_number = #{bankCardNumber}, bank_card_number = #{bankCardNumber},
bank_name = #{bankName}, bank_name = #{bankName},
...@@ -332,12 +352,12 @@ ...@@ -332,12 +352,12 @@
<if test="upgradeSuperBalance != null"> <if test="upgradeSuperBalance != null">
upgrade_super_balance, upgrade_super_balance,
</if> </if>
<if test="taxBalance != null">
tax_balance,
</if>
<if test="shareBalance != null"> <if test="shareBalance != null">
share_balance, share_balance,
</if> </if>
<if test="taxBalance != null">
tax_balance,
</if>
<if test="zigoushengBalance != null"> <if test="zigoushengBalance != null">
zigousheng_balance, zigousheng_balance,
</if> </if>
...@@ -347,6 +367,12 @@ ...@@ -347,6 +367,12 @@
<if test="techCharge != null"> <if test="techCharge != null">
tech_charge, tech_charge,
</if> </if>
<if test="techChargeRedpack != null">
tech_charge_redpack,
</if>
<if test="techChargeOrder != null">
tech_charge_order,
</if>
<if test="bankAccount != null"> <if test="bankAccount != null">
bank_account, bank_account,
</if> </if>
...@@ -416,12 +442,12 @@ ...@@ -416,12 +442,12 @@
<if test="upgradeSuperBalance != null"> <if test="upgradeSuperBalance != null">
#{upgradeSuperBalance}, #{upgradeSuperBalance},
</if> </if>
<if test="taxBalance != null">
#{taxBalance},
</if>
<if test="shareBalance != null"> <if test="shareBalance != null">
#{shareBalance}, #{shareBalance},
</if> </if>
<if test="taxBalance != null">
#{taxBalance},
</if>
<if test="zigoushengBalance != null"> <if test="zigoushengBalance != null">
#{zigoushengBalance}, #{zigoushengBalance},
</if> </if>
...@@ -431,6 +457,12 @@ ...@@ -431,6 +457,12 @@
<if test="techCharge != null"> <if test="techCharge != null">
#{techCharge}, #{techCharge},
</if> </if>
<if test="techChargeRedpack != null">
#{techChargeRedpack},
</if>
<if test="techChargeOrder != null">
#{techChargeOrder},
</if>
<if test="bankAccount != null"> <if test="bankAccount != null">
#{bankAccount}, #{bankAccount},
</if> </if>
...@@ -500,12 +532,12 @@ ...@@ -500,12 +532,12 @@
<if test="upgradeSuperBalance != null"> <if test="upgradeSuperBalance != null">
upgrade_super_balance = #{upgradeSuperBalance}, upgrade_super_balance = #{upgradeSuperBalance},
</if> </if>
<if test="taxBalance != null">
tax_balance = #{taxBalance},
</if>
<if test="shareBalance != null"> <if test="shareBalance != null">
share_balance = #{shareBalance}, share_balance = #{shareBalance},
</if> </if>
<if test="taxBalance != null">
tax_balance = #{taxBalance},
</if>
<if test="zigoushengBalance != null"> <if test="zigoushengBalance != null">
zigousheng_balance = #{zigoushengBalance}, zigousheng_balance = #{zigoushengBalance},
</if> </if>
...@@ -515,6 +547,12 @@ ...@@ -515,6 +547,12 @@
<if test="techCharge != null"> <if test="techCharge != null">
tech_charge = #{techCharge}, tech_charge = #{techCharge},
</if> </if>
<if test="techChargeRedpack != null">
tech_charge_redpack = #{techChargeRedpack},
</if>
<if test="techChargeOrder != null">
tech_charge_order = #{techChargeOrder},
</if>
<if test="bankAccount != null"> <if test="bankAccount != null">
bank_account = #{bankAccount}, bank_account = #{bankAccount},
</if> </if>
......
...@@ -714,12 +714,25 @@ ...@@ -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 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) 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, 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_income,
0 wx_tax, 0 wx_tax,
0 bank_income, 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 FROM partner_reward
WHERE recharge_time WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
...@@ -736,13 +749,27 @@ ...@@ -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 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) 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_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 ELSE 0 END
) tech_charge, ) tech_charge_order,
0 wx_income, 0 wx_income,
0 wx_tax, 0 wx_tax,
0 bank_income, 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 FROM partner_reward
WHERE recharge_time WHERE recharge_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
...@@ -760,22 +787,23 @@ ...@@ -760,22 +787,23 @@
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 id="getPartnerSummaryContentByUidAndTime" resultType="com.lanren.huhu.partner.model.PartnerSummaryContent">-->
SELECT <!--SELECT-->
SUM(if(reward_type=60 AND is_show_on_client=1, commission_acount, 0)) AS cash, <!--SUM(if(reward_type=60 AND is_show_on_client=1, commission_acount, 0)) AS cash,-->
COUNT(reward_type=60 OR NULL) AS num, <!--COUNT(reward_type=60 OR NULL) AS num,-->
SUM(if(reward_type IN (70, 100) AND is_show_on_client=1,commission_acount, 0)) AS upCash, <!--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, <!--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, <!--SUM(if(reward_type=80 AND is_show_on_client=1, commission_acount, 0)) AS icash,-->
COUNT(reward_type=80 OR NULL) AS inum, <!--COUNT(reward_type=80 OR NULL) AS inum,-->
SUM(if(reward_type=90 AND is_show_on_client=1, commission_acount, 0)) AS pcash, <!--SUM(if(reward_type=90 AND is_show_on_client=1, commission_acount, 0)) AS pcash,-->
COUNT(reward_type=90 OR NULL) AS pnum, <!--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, <!--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, <!--COUNT(reward_type IN(110, 120) OR NULL) AS snum,-->
SUM(if(is_show_on_client=0, commission_acount, 0)) AS rcash <!--SUM(if(is_show_on_client=0, commission_acount, 0)) AS rcash-->
FROM partner_reward <!--FROM partner_reward-->
WHERE recharge_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) <!--WHERE recharge_time BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})-->
AND reward_status=120 <!--AND reward_status=120-->
AND user_id=#{userId} <!--AND reward_type != 130-->
</select> <!--AND user_id=#{userId}-->
<!--</select>-->
</mapper> </mapper>
\ No newline at end of file
...@@ -80,3 +80,131 @@ where type in (10,30) and self_role=30; ...@@ -80,3 +80,131 @@ where type in (10,30) and self_role=30;
ALTER TABLE `huhu`.`partner_reward` ALTER TABLE `huhu`.`partner_reward`
ADD COLUMN `tech_fee_rate` decimal(11, 6) NOT NULL DEFAULT 0 COMMENT '技术服务费扣除比例' AFTER `ratio_all`; 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