Commit 505d9403 by guanchen

更新2--9月份 结算 合伙人/代理商 收入

parent c596bcaa
......@@ -66,7 +66,7 @@ public class Constants {
public static final int SETTLE_STATE_ON_THE_WAY = 100;
public static final int SETTLE_STATE_PRE = 200;
public static final int SETTLE_STATE_DONE = 300;
public static final int SETTLE_STATE_FAILED = -300;
// public static final int SETTLE_STATE_FAILED = -300;
/**
* 财务结算状态
*/
......
......@@ -69,25 +69,27 @@ public class AgentController {
result.setData("异步,正在执行刷新......");
return result;
}
/**
* 测试使用 结算单个代理商
*/
@RequestMapping(value = "/finance", method = RequestMethod.POST)
public Result<String> doFinanceSettle(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("doFinanceSettle userId:{},header:{},time:{}", agent.getAgentId(), headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.doFinanceSettle(agent.getAgentId());
}
@RequestMapping(value = "/finance/{agentId}", method = RequestMethod.GET)
public Result<String> doFinanceSettle(@PathVariable("agentId") String agentId, @RequestHeader HttpHeaders headers) {
if ("all".equals(agentId)) {
/**
* 结算全部代理商
*/
@RequestMapping(value = "/finance", method = RequestMethod.GET)
public Result<String> doFinanceSettle(@RequestHeader HttpHeaders headers) {
agentSettleTask.runScheduledTask();
logger.info("============>" + Thread.currentThread().getName());
Result<String> result = new Result<String>();
result.setData("异步,正在执行刷新......");
return result;
} else {
/**
* 测试使用 结算单个代理商
*/
int aId = Integer.parseInt(agentId);
if (logger.isInfoEnabled()) {
logger.info("doFinanceSettle userId:{},header:{},time:{}", aId, headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.doFinanceSettle(aId);
}
}
}
package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.manager.PartnerManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import com.lanren.huhu.partner.schedule.PartnerSettleTask;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import javax.validation.Valid;import java.time.LocalDateTime; /** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerManager partnerManager; @Autowired private PartnerSettleTask partnerSettleTask; @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<PartnerResponse> getPartnerLevel(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.getPartnerLevel(partner.getUserId()); } /** * 测试使用 结算单个用户 */ @RequestMapping(value = "/finance", method = RequestMethod.POST) public Result<String> doFinanceSettle(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("doFinanceSettle userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.doFinanceSettle(partner.getUserId()); } /** * 结算全部用户 */ @RequestMapping(value = "/finance", method = RequestMethod.GET) public Result<String> doFinanceSettle(@RequestHeader HttpHeaders headers) { partnerSettleTask.runSettle(); logger.info("============>" + Thread.currentThread().getName()); Result<String> result = new Result<String>(); result.setData("异步,正在执行刷新......"); return result; }// /** // * 汇总合伙人已结算数据 // */ // @RequestMapping(value = "/summary/{dateStr}/{uid}", method = RequestMethod.GET) // public Result<String> doSummarySettled(@PathVariable("dateStr") String dateStr, @PathVariable("uid") int uid, @RequestHeader HttpHeaders headers) { // return partnerManager.runSummary(dateStr, uid); // } }
\ No newline at end of file
package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.manager.PartnerManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import com.lanren.huhu.partner.schedule.PartnerSettleTask;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import javax.validation.Valid;import java.time.LocalDateTime; /** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerManager partnerManager; @Autowired private PartnerSettleTask partnerSettleTask; @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<PartnerResponse> getPartnerLevel(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.getPartnerLevel(partner.getUserId()); } @RequestMapping(value = "/finance/{userId}", method = RequestMethod.GET) public Result<String> doFinanceSettle(@PathVariable("userId") String userId, @RequestHeader HttpHeaders headers) { if ("all".equals(userId)) { /** * 结算全部用户 */ partnerSettleTask.runSettle(); logger.info("============>" + Thread.currentThread().getName()); Result<String> result = new Result<String>(); result.setData("异步,正在执行刷新......"); return result; } else { /** * 测试使用 结算单个用户 */ int uid = Integer.parseInt(userId); if (logger.isInfoEnabled()) { logger.info("doFinanceSettle userId:{},header:{},time:{}", uid, headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.doFinanceSettle(uid); } }}
\ No newline at end of file
......
......@@ -184,13 +184,19 @@ public class AgentSettleTask {
*/
if ( (agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_PURCHASE || agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SELF_ORDER)
&& agentReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
// if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getRatioAll())) {
if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn())) {
/**
* 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额
*/
continue;
} else if (agentReward.getSettleState() < 0) {
add2UpdateReward2Failed(agentReward, update2FailedList);
continue;
} else if (agentReward.getAmount().compareTo(BigDecimal.ZERO) == 0) {
/**
* amout为0的 跳过不处理
* 红包兑换的奖励 状态是有效 奖励金额为0
*/
continue;
} else {
/**
* 有订单号 和 比例快照 可以更新金额
......@@ -205,6 +211,7 @@ public class AgentSettleTask {
* 如果没有找到active 或者 没有找到commission
* 不更新奖励金额
*/
continue;
} else {
/**
* 订单状态只有三种: -3, 1, 3
......@@ -214,16 +221,15 @@ public class AgentSettleTask {
* 订单失效 订单付款 跳过, 处理下一条奖励
*/
add2UpdateReward2Failed(agentReward, update2FailedList);
continue;
} else if (order.getStatus() == Constants.ORDER_STATE_PAID) {
/**
* 订单还是付款状态 更新奖励时间 下个月再处理
*/
long newRechargeTime = DateUtils.getNextMonth1stTimestamp(agentReward.getRechargeTime().getTime());
agentReward.setRechargeTime(new Date(newRechargeTime));
agentReward.setSettleTime(new Date(newRechargeTime));
agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
agentRewardService.updateById(agentReward);
continue;
} else if (order.getStatus() == Constants.ORDER_STATE_SETTLED) {
/**
* 订单结算 更新金额
......@@ -233,7 +239,6 @@ public class AgentSettleTask {
* 新人专享订单 不给合伙人奖励 跳过
*/
add2UpdateReward2Failed(agentReward, update2FailedList);
continue;
} else {
/**
* 正常订单 更新原始佣金
......@@ -253,14 +258,19 @@ public class AgentSettleTask {
if ( (agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SHARE || agentReward.getRewardType() == Constants.AGENT_REWARD_TYPE_SHARE_ORDER)
&& agentReward.getSettleState() > 0
&& agentReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
// if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getSubOrderSn())
// || isEmpty(agentReward.getRatioAll())) {
if (isEmpty(agentReward.getOrderType()) || isEmpty(agentReward.getOrderSn()) || isEmpty(agentReward.getSubOrderSn())) {
/**
* 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额
*/
continue;
} else if (agentReward.getSettleState() < 0) {
add2UpdateReward2Failed(agentReward, update2FailedList);
continue;
} else if (agentReward.getAmount().compareTo(BigDecimal.ZERO) == 0) {
/**
* amout为0的 跳过不处理
* 红包兑换的奖励 状态是有效 奖励金额为0
*/
continue;
} else {
/**
* 有订单号 和 比例快照 可以更新金额
......@@ -275,6 +285,7 @@ public class AgentSettleTask {
* 如果没有找到子订单
* 不更新奖励金额
*/
continue;
} else {
/**
* 订单状态只有三种: -3, 1, 3
......@@ -290,9 +301,9 @@ public class AgentSettleTask {
*/
long newRechargeTime = DateUtils.getNextMonth1stTimestamp(agentReward.getRechargeTime().getTime());
agentReward.setRechargeTime(new Date(newRechargeTime));
agentReward.setSettleTime(new Date(newRechargeTime));
agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
agentRewardService.updateById(agentReward);
continue;
} else if (subOrder.getOrderState() == Constants.ORDER_STATE_SETTLED) {
/**
* 正常订单 更新原始佣金
......@@ -390,12 +401,10 @@ public class AgentSettleTask {
}
private void add2UpdateRewardCommission(AgentReward agentReward, BigDecimal allMoney, List<AgentReward> updateCommisionList) {
String ratioAllStr = "";
try {
if (agentReward.getId() == 336831) {
logger.info("336831 debug" );
}
agentReward.setAllMoneyOri(allMoney);
String ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\]\"]", "");
ratioAllStr = agentReward.getRatioAll().replaceAll("[\\[\\]\"]", "");
/**
* 时间点之前的 需要乘比例数组 之后 再乘commission_rate
* 时间点之后的 直接乘commission_rate
......@@ -431,6 +440,7 @@ public class AgentSettleTask {
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
logger.error("ratioAllStr is {}", ratioAllStr);
}
}
......@@ -450,7 +460,9 @@ public class AgentSettleTask {
}
agentReward.setAllMoneyOri(ZERO);
agentReward.setCashCode("0");
agentReward.setSettleState(Constants.SETTLE_STATE_FAILED);
if (agentReward.getSettleState() > 0) {
agentReward.setSettleState(agentReward.getSettleState() * -1);
}
agentReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
update2FailedList.add(agentReward);
}
......
......@@ -395,7 +395,9 @@ public class PartnerSettleTask {
}
partnerReward.setAllMoneyOri(ZERO);
partnerReward.setCash(ZERO);
partnerReward.setSettleState(Constants.SETTLE_STATE_FAILED);
if (partnerReward.getSettleState() > 0) {
partnerReward.setSettleState(partnerReward.getSettleState() * -1);
}
partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
// partnerRewardService.updateById(partnerReward);
update2FailedList.add(partnerReward);
......@@ -453,13 +455,19 @@ public class PartnerSettleTask {
*/
if (partnerReward.getRewardType() == Constants.PARTNER_REWARD_TYPE_PURCHASE && partnerReward.getSettleState() > 0
&& partnerReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
// if (isEmpty(partnerReward.getOrderType()) || isEmpty(partnerReward.getOrderSn()) || isEmpty(partnerReward.getRatioAll())) {
if (isEmpty(partnerReward.getOrderType()) || isEmpty(partnerReward.getOrderSn())) {
/**
* 历史数据: 没有记录订单号 或者 没有记录比例 不更新奖励金额
*/
continue;
} else if (partnerReward.getSettleState() < 0) {
add2UpdateReward2Failed(partnerReward, update2FailedList);
continue;
} else if (partnerReward.getCommissionAcount().compareTo(BigDecimal.ZERO) == 0) {
/**
* amout为0的 跳过不处理
* 红包兑换的奖励 状态是有效 奖励金额为0
*/
continue;
} else {
/**
* 有订单号 和 比例快照 可以更新金额
......@@ -476,6 +484,7 @@ public class PartnerSettleTask {
* 如果没有找到active 或者 没有找到commission
* 不更新奖励金额
*/
continue;
} else {
/**
* 订单状态只有三种: -3, 1, 3
......@@ -485,16 +494,15 @@ public class PartnerSettleTask {
* 订单失效 订单付款 跳过, 处理下一条奖励
*/
add2UpdateReward2Failed(partnerReward, update2FailedList);
continue;
} else if (order.getStatus() == Constants.ORDER_STATE_PAID) {
/**
* 订单还是付款状态 更新奖励时间 下个月再处理
*/
long newRechargeTime = DateUtils.getNextMonth1stTimestamp(partnerReward.getRechargeTime().getTime());
partnerReward.setRechargeTime(new Date(newRechargeTime));
partnerReward.setSettleTime(new Date(newRechargeTime));
partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
partnerRewardService.updateById(partnerReward);
continue;
} else if (order.getStatus() == Constants.ORDER_STATE_SETTLED) {
/**
* 订单结算 更新金额
......@@ -504,7 +512,6 @@ public class PartnerSettleTask {
* 新人专享订单 不给合伙人奖励 跳过
*/
add2UpdateReward2Failed(partnerReward, update2FailedList);
continue;
} else {
/**
* 正常订单 更新原始佣金
......@@ -523,19 +530,23 @@ public class PartnerSettleTask {
*/
if (partnerReward.getRewardType() == Constants.PARTNER_REWARD_TYPE_SHARE && partnerReward.getSettleState() > 0
&& partnerReward.getSettleState() != Constants.SETTLE_STATE_DONE) {
// if (isEmpty(partnerReward.getOrderType()) || isEmpty(partnerReward.getOrderSn()) || isEmpty(partnerReward.getSubOrderSn())
// || isEmpty(partnerReward.getRatioAll())) {
if (isEmpty(partnerReward.getOrderType()) || isEmpty(partnerReward.getOrderSn()) || isEmpty(partnerReward.getSubOrderSn())) {
/**
* 历史数据: 没有记录子订单号 或者 没有记录比例 不更新奖励金额
*/
continue;
} else if (partnerReward.getSettleState() < 0) {
add2UpdateReward2Failed(partnerReward, update2FailedList);
continue;
} else if (partnerReward.getCommissionAcount().compareTo(BigDecimal.ZERO) == 0) {
/**
* amout为0的 跳过不处理
* 红包兑换的奖励 状态是有效 奖励金额为0
*/
continue;
} else {
/**
* 有订单号 和 比例快照 可以更新金额
*/
// OrderTaobaoJdGoodsCommission subOrder = orderTaobaoJdGoodsCommissionService.getOneByOrderSn(partnerReward.getOrderType(), partnerReward.getOrderSn(), partnerReward.getSubOrderSn());
SubOrderParam subOrderParam = new SubOrderParam();
subOrderParam.setOrderType(partnerReward.getOrderType());
subOrderParam.setOrderSn(partnerReward.getOrderSn());
......@@ -546,6 +557,7 @@ public class PartnerSettleTask {
* 如果没有找到子订单
* 不更新奖励金额
*/
continue;
} else {
/**
* 订单状态只有三种: -3, 1, 3
......@@ -561,9 +573,9 @@ public class PartnerSettleTask {
*/
long newRechargeTime = DateUtils.getNextMonth1stTimestamp(partnerReward.getRechargeTime().getTime());
partnerReward.setRechargeTime(new Date(newRechargeTime));
partnerReward.setSettleTime(new Date(newRechargeTime));
partnerReward.setUpdatedAt(System.currentTimeMillis() / 1000L);
partnerRewardService.updateById(partnerReward);
continue;
} else if (subOrder.getOrderState() == Constants.ORDER_STATE_SETTLED) {
/**
* 正常订单 更新原始佣金
......
......@@ -6,11 +6,11 @@
<property name="MaxFileSize" value="256MB"/><!--单个文件大小-->
<property name="totalSizeCap" value="256MB"/><!--单个文件大小-->
<!--<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">-->
<!--<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!--<pattern>${pattern}</pattern>-->
<!--</encoder>-->
<!--</appender>-->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${log_file}-info.log</File>
......@@ -47,7 +47,7 @@
</appender>
<root level="info">
<!--<appender-ref ref="stdout"/>-->
<appender-ref ref="stdout"/>
<appender-ref ref="info"/>
<appender-ref ref="error"/>
</root>
......
......@@ -718,8 +718,8 @@
0 tax,
a.place_cash,
a.place_num,
a.recharge_cash,
a.recharge_num,
a.onlinerechargeCash,
a.onlinerechargeNum,
a.open_card_cash,
a.open_card_num,
a.upgrade_partner_cash,
......@@ -743,8 +743,8 @@
SUM(0) pingtuiBalance,
SUM(if(reward_type IN (60, 750, 300, 760),amount, 0)) AS place_cash,
COUNT(reward_type IN (60, 750, 300, 760) OR NULL) AS place_num,
SUM(if(reward_type IN (50, 740),amount, 0)) AS recharge_cash,
COUNT(reward_type IN (50, 740) OR NULL) AS recharge_num,
SUM(if(reward_type IN (50, 740),amount, 0)) AS onlinerechargeCash,
COUNT(reward_type IN (50, 740) OR NULL) AS onlinerechargeNum,
SUM(if(reward_type=40, amount, 0)) AS open_card_cash,
COUNT(reward_type=40 OR NULL) AS open_card_num,
SUM(if(reward_type IN (30, 20, 710, 720, 730),amount, 0)) AS upgrade_partner_cash,
......@@ -755,11 +755,11 @@
FROM agent_reward
WHERE settle_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND reward_status=100
AND reward_status = 100
AND settle_in_advance = 0
GROUP BY 1
) 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
</select>
<select id="selectAgentSettleByTsAndAgentId" resultType="com.lanren.huhu.partner.model.AgentSettle">
......@@ -917,7 +917,7 @@
</select>
<update id="updateRewardStatusByAgentIdAndTs">
UPDATE agent_reward
SET reward_status=120, settle_state=CASE WHEN settle_state>0 THEN 300 WHEN settle_state&lt;0 THEN -300 ELSE 0 END
SET reward_status=120, settle_state=CASE WHEN settle_state>0 THEN 300 WHEN settle_state&lt;0 THEN settle_state ELSE 0 END
WHERE settle_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND agent_id = #{agentId}
......
......@@ -875,7 +875,7 @@
<update id="updateRewardStatusByUidAndTs">
UPDATE partner_reward
SET reward_status=120,
settle_state=CASE WHEN settle_state&gt;0 THEN 300 WHEN settle_state&lt;0 THEN -300 ELSE 0 END
settle_state=CASE WHEN settle_state&gt;0 THEN 300 WHEN settle_state&lt;0 THEN settle_state ELSE 0 END
WHERE settle_time
BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
AND user_id = #{userId}
......
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