Commit 69bc6d9f by guanchen

初始化--代理商每日邮件

parent f826c915
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
data
src/main/.DS_Store
src/main/java/.DS_Store
src/main/resources/.DS_Store
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</parent> </parent>
<groupId>com.lanren.huhu</groupId> <groupId>com.lanren.huhu</groupId>
<artifactId>partner</artifactId> <artifactId>report_partner</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<name>partner</name> <name>partner</name>
<description>呼呼省钱合伙人相关服务</description> <description>呼呼省钱合伙人相关服务</description>
...@@ -137,6 +137,10 @@ ...@@ -137,6 +137,10 @@
<artifactId>redisson</artifactId> <artifactId>redisson</artifactId>
<version>3.7.5</version> <version>3.7.5</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>
...@@ -145,7 +149,8 @@ ...@@ -145,7 +149,8 @@
<id>dev</id> <id>dev</id>
<properties> <properties>
<profiles.active>dev</profiles.active> <profiles.active>dev</profiles.active>
<mysql.server>jdbc:mysql://10.9.121.204:3306/huhu_finance</mysql.server> <!--<mysql.server>jdbc:mysql://10.9.121.204:3306/huhu_finance</mysql.server>-->
<mysql.server>jdbc:mysql://10.9.121.204:3306/huhu</mysql.server>
<mysql.username>yanfa</mysql.username> <mysql.username>yanfa</mysql.username>
<mysql.password>cScdKw%ZKC1i$C!1uAz3Kg$c</mysql.password> <mysql.password>cScdKw%ZKC1i$C!1uAz3Kg$c</mysql.password>
<!--<mysql.username>apihu</mysql.username>--> <!--<mysql.username>apihu</mysql.username>-->
...@@ -193,6 +198,7 @@ ...@@ -193,6 +198,7 @@
<redis.password>Ws_LrqD_20180319_REdis_MQLRd</redis.password> <redis.password>Ws_LrqD_20180319_REdis_MQLRd</redis.password>
<spring.profiles.active>prod</spring.profiles.active> <spring.profiles.active>prod</spring.profiles.active>
<logfile_path>/data/logs2/huhu/lanren</logfile_path> <logfile_path>/data/logs2/huhu/lanren</logfile_path>
<!--<logfile_path>/Users/chen/Develop/workspace/partner/data/release/dev/logs</logfile_path>-->
<providers-path>/data/java/service</providers-path> <providers-path>/data/java/service</providers-path>
</properties> </properties>
......
package com.lanren.huhu.partner.controller; package com.lanren.huhu.partner.controller;
import com.lanren.huhu.partner.manager.AgentManager;
import com.lanren.huhu.partner.model.Agent;
import com.lanren.huhu.partner.model.AgentResponse;
import com.lanren.huhu.partner.model.ParentAgent;
import com.lanren.huhu.partner.result.Result; import com.lanren.huhu.partner.result.Result;
import com.lanren.huhu.partner.schedule.AgentDailyExpandTask; import com.lanren.huhu.partner.schedule.AgentDailyExpandTask;
import com.lanren.huhu.partner.schedule.AgentSettleTask; import com.lanren.huhu.partner.schedule.AgentDailyMailTask;
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.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
/** /**
* @author chen * @author chen
*/ */
@RestController @RestController
@RequestMapping("/v1/agent") @RequestMapping("/v1/report/")
public class AgentController { public class AgentController {
private static Logger logger = LoggerFactory.getLogger(AgentController.class); private static Logger logger = LoggerFactory.getLogger(AgentController.class);
@Autowired @Autowired
AgentManager agentManager;
@Autowired
AgentDailyExpandTask agentDailyExpandTask; AgentDailyExpandTask agentDailyExpandTask;
@Autowired @Autowired
AgentSettleTask agentSettleTask; AgentDailyMailTask agentDailyMailTask;
@RequestMapping(value = "/level", method = RequestMethod.POST)
public Result<AgentResponse> getAgentLevel(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("AgentController getLevel agentId:{},header:{},time:{}", agent.getAgentId(), headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.getAgentLevel(agent.getAgentId());
}
@RequestMapping(value = "/reward/push", method = RequestMethod.POST) @RequestMapping(value = "/{dat}", method = RequestMethod.GET)
public Result<String> pushReward(@RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("AgentController pushReward, header:{},time:{}", headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.pushReward();
}
@RequestMapping(value = "/hierarchy/parent", method = RequestMethod.POST)
public Result<ArrayList<ParentAgent>> getHierarchyParentList(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("AgentController getHierarchyParentList, header:{},time:{}", headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.getHierarchyParentList(agent.getAgentId());
}
@RequestMapping(value = "/pingtui/parent", method = RequestMethod.POST)
public Result<ArrayList<ParentAgent>> getPingtuiParentList(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("AgentController getPingtuiParentList, header:{},time:{}", headers.keySet().toArray(), LocalDateTime.now());
}
return agentManager.getPingtuiParentList(agent.getAgentId());
}
@RequestMapping(value = "/expand/{dat}", method = RequestMethod.GET)
public Result<String> updateOneDayExpand(@PathVariable("dat") String dat) { public Result<String> updateOneDayExpand(@PathVariable("dat") String dat) {
agentDailyExpandTask.runSummary(dat); agentDailyExpandTask.runSummary(dat);
logger.info("============>" + Thread.currentThread().getName()); logger.info("============>" + Thread.currentThread().getName());
...@@ -70,24 +33,16 @@ public class AgentController { ...@@ -70,24 +33,16 @@ public class AgentController {
return result; return result;
} }
/** /**
* 测试使用 结算单个代理商 * 汇总拓展的城市代理商
*/ */
@RequestMapping(value = "/finance", method = RequestMethod.POST) @RequestMapping(value = "/expand/city", method = RequestMethod.GET)
public Result<String> doFinanceSettle(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) { public Result<String> sumExpandCity(@RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) { if (logger.isInfoEnabled()) {
logger.info("doFinanceSettle userId:{},header:{},time:{}", agent.getAgentId(), headers.keySet().toArray(), LocalDateTime.now()); logger.info("AgentController sumExpandCity, header:{}, time:{}", headers.keySet().toArray(), LocalDateTime.now());
} }
return agentManager.doFinanceSettle(agent.getAgentId()); agentDailyMailTask.runExpandCityAgent();
}
/**
* 结算全部代理商
*/
@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<String> result = new Result<String>();
result.setData("异步,正在执行刷新......"); result.setCode(0);
return result; return result;
} }
} }
package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.manager.PartnerManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import com.lanren.huhu.partner.schedule.PartnerSettleTask;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import javax.validation.Valid;import java.time.LocalDateTime; /** * @Author houseme * @Date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerManager partnerManager; @Autowired private PartnerSettleTask partnerSettleTask; @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<PartnerResponse> getPartnerLevel(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.getPartnerLevel(partner.getUserId()); } /** * 测试使用 结算单个用户 */ @RequestMapping(value = "/finance", method = RequestMethod.POST) public Result<String> doFinanceSettle(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("doFinanceSettle userId:{},header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerManager.doFinanceSettle(partner.getUserId()); } /** * 结算全部用户 */ @RequestMapping(value = "/finance", method = RequestMethod.GET) public Result<String> doFinanceSettle(@RequestHeader HttpHeaders headers) { partnerSettleTask.runSettle(); logger.info("============>" + Thread.currentThread().getName()); Result<String> result = new Result<String>(); result.setData("异步,正在执行刷新......"); return result; }// /** // * 汇总合伙人已结算数据 // */ // @RequestMapping(value = "/summary/{dateStr}/{uid}", method = RequestMethod.GET) // public Result<String> doSummarySettled(@PathVariable("dateStr") String dateStr, @PathVariable("uid") int uid, @RequestHeader HttpHeaders headers) { // return partnerManager.runSummary(dateStr, uid); // } }
\ No newline at end of file
package com.lanren.huhu.partner.controller;
import com.alibaba.fastjson.JSON;
import com.lanren.huhu.partner.manager.UserManager;
import com.lanren.huhu.partner.model.User;
import com.lanren.huhu.partner.result.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime;
/**
* @author chen
*/
@RestController
@EnableAsync
@RequestMapping("/v1/user")
public class UserController {
private static Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserManager userManager;
@RequestMapping(value = "/relation", method = RequestMethod.POST)
public Result<User> getRelation(@RequestBody @Valid User user, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("getRelation userId:{},header:{},time:{}", user.getUserId(), headers.keySet().toArray(), LocalDateTime.now());
}
return userManager.getRelationByUserId(user.getUserId());
}
@RequestMapping(value = "/relation/nocache", method = RequestMethod.POST)
public Result<User> getRelationNoCache(@RequestBody @Valid User user, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("getRelationNocache userId:{},header:{},time:{}", user.getUserId(), headers.keySet().toArray(), LocalDateTime.now());
}
Result<User> result = userManager.getRelationNoCache(user.getUserId());
logger.info("uid:{} call /relation/nocache api, return: {}", user.getUserId(), JSON.toJSONString(result));
return result;
}
@RequestMapping(value = "/relation/delete", method = RequestMethod.POST)
public Result<String> deletrRelation(@RequestBody @Valid User user, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("deletrRelation userId:{},header:{},time:{}", user.getUserId(), headers.keySet().toArray(), LocalDateTime.now());
}
return userManager.deleteRalationByUserId(user.getUserId());
}
@RequestMapping(value = "/relation/change", method = RequestMethod.POST)
public Result<String> changeRelation(@RequestBody @Valid User user, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("purgeRelation userId:{},header:{},time:{}", user.getUserId(), headers.keySet().toArray(), LocalDateTime.now());
}
// userManager.purgeRelation(user.getUserId());
logger.info("============>" + Thread.currentThread().getName());
Result<String> result = new Result<String>();
result.setData("异步,正在执行刷新......");
return result;
}
@RequestMapping(value = "/update/relation/{from}/{to}/{type}" ,method = RequestMethod.GET)
public Result<String> updateRelation(@PathVariable("from") String from, @PathVariable("to") String to, @PathVariable("type") int type) {
userManager.updateRelation(from, to, type);
logger.info("============>" + Thread.currentThread().getName());
logger.info("============>from{}, to{}, type{}", from, to, type );
Result<String> result = new Result<String>();
result.setData("异步,正在执行更新新......");
return result;
}
}
...@@ -2,6 +2,7 @@ package com.lanren.huhu.partner.dao; ...@@ -2,6 +2,7 @@ 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 com.lanren.huhu.partner.model.MailContentRow;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.UpdateProvider; import org.apache.ibatis.annotations.UpdateProvider;
...@@ -22,4 +23,8 @@ public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> { ...@@ -22,4 +23,8 @@ public interface AgentExpandDailyMapper extends BaseMapper<AgentExpandDaily> {
int updateByDatByDetail(String datStr); int updateByDatByDetail(String datStr);
Integer getMonthCntByAgent(int agentId, long beginTs, long endTs); Integer getMonthCntByAgent(int agentId, long beginTs, long endTs);
MailContentRow getRegRow(String dat, Integer agentId, String monthBegin, String monthEnd);
List<MailContentRow> getVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
} }
\ No newline at end of file
...@@ -2,10 +2,12 @@ package com.lanren.huhu.partner.dao; ...@@ -2,10 +2,12 @@ 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.AgentExpandDetail; import com.lanren.huhu.partner.domain.AgentExpandDetail;
import java.util.List; import com.lanren.huhu.partner.model.MailContentRow;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper @Mapper
public interface AgentExpandDetailMapper extends BaseMapper<AgentExpandDetail> { public interface AgentExpandDetailMapper extends BaseMapper<AgentExpandDetail> {
...@@ -16,4 +18,8 @@ public interface AgentExpandDetailMapper extends BaseMapper<AgentExpandDetail> { ...@@ -16,4 +18,8 @@ public interface AgentExpandDetailMapper extends BaseMapper<AgentExpandDetail> {
int insertOrUpdate(AgentExpandDetail record); int insertOrUpdate(AgentExpandDetail record);
int insertOrUpdateSelective(AgentExpandDetail record); int insertOrUpdateSelective(AgentExpandDetail record);
List<MailContentRow> getsVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
List<MailContentRow> getCengjiChildRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lanren.huhu.partner.domain.AgentReward; import com.lanren.huhu.partner.domain.AgentReward;
import com.lanren.huhu.partner.model.AgentSettle; import com.lanren.huhu.partner.model.AgentSettle;
import com.lanren.huhu.partner.model.MailContentRow;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -29,4 +30,6 @@ public interface AgentRewardMapper extends BaseMapper<AgentReward> { ...@@ -29,4 +30,6 @@ public interface AgentRewardMapper extends BaseMapper<AgentReward> {
IPage<AgentReward> selectOrderRewardPageByTsAndAgentId(Page<AgentReward> page, long beginTs, long endTs, int agentId); IPage<AgentReward> selectOrderRewardPageByTsAndAgentId(Page<AgentReward> page, long beginTs, long endTs, int agentId);
int updateRewardStatusByAgentIdAndTs(int agentId, long beginTs, long endTs); int updateRewardStatusByAgentIdAndTs(int agentId, long beginTs, long endTs);
List<MailContentRow> getsVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
} }
\ 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
...@@ -39,7 +38,7 @@ public class AgentReward implements Serializable { ...@@ -39,7 +38,7 @@ public class AgentReward implements Serializable {
private Integer userId; private Integer userId;
/** /**
* 奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员 60 分享赚 300 自购省 * 奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员 60 分享赚 300 自购省 得的购买年-VIP; 720 城市代理商所得的购买半年-VIP; 730 城市代理商所得的购买超级VIP收益; 740 城市代理商的红包收益; 750 城市代理商的自购省收益; 760 城市代理商的分享赚收益
*/ */
@TableField(value = "reward_type") @TableField(value = "reward_type")
private Integer rewardType; private Integer rewardType;
...@@ -189,7 +188,7 @@ public class AgentReward implements Serializable { ...@@ -189,7 +188,7 @@ public class AgentReward implements Serializable {
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_time") @TableField(value = "create_time")
private LocalDateTime createTime; private Date createTime;
/** /**
* 来源基础金额 * 来源基础金额
...@@ -203,6 +202,18 @@ public class AgentReward implements Serializable { ...@@ -203,6 +202,18 @@ public class AgentReward implements Serializable {
@TableField(value = "ratio_all") @TableField(value = "ratio_all")
private String ratioAll; private String ratioAll;
/**
* 结算奖励的时间: 淘宝客/京东联盟为确认收货时间, 其他类型奖励同于recharge_time
*/
@TableField(value = "settle_time")
private Date settleTime;
/**
* 是否提前结算: 1是,0否
*/
@TableField(value = "settle_in_advance")
private Integer settleInAdvance;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final String COL_AGENT_ID = "agent_id"; public static final String COL_AGENT_ID = "agent_id";
...@@ -268,4 +279,8 @@ public class AgentReward implements Serializable { ...@@ -268,4 +279,8 @@ public class AgentReward implements Serializable {
public static final String COL_ALL_MONEY_ORI = "all_money_ori"; public static final String COL_ALL_MONEY_ORI = "all_money_ori";
public static final String COL_RATIO_ALL = "ratio_all"; public static final String COL_RATIO_ALL = "ratio_all";
public static final String COL_SETTLE_TIME = "settle_time";
public static final String COL_SETTLE_IN_ADVANCE = "settle_in_advance";
} }
\ No newline at end of file
...@@ -6,7 +6,6 @@ import com.lanren.huhu.partner.model.AgentResponse; ...@@ -6,7 +6,6 @@ import com.lanren.huhu.partner.model.AgentResponse;
import com.lanren.huhu.partner.model.AgentRewardMessage; import com.lanren.huhu.partner.model.AgentRewardMessage;
import com.lanren.huhu.partner.model.ParentAgent; import com.lanren.huhu.partner.model.ParentAgent;
import com.lanren.huhu.partner.result.Result; import com.lanren.huhu.partner.result.Result;
import com.lanren.huhu.partner.schedule.AgentSettleTask;
import com.lanren.huhu.partner.service.UserAgentService; import com.lanren.huhu.partner.service.UserAgentService;
import com.lanren.huhu.partner.service.UserService; import com.lanren.huhu.partner.service.UserService;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -34,8 +33,6 @@ public class AgentManager { ...@@ -34,8 +33,6 @@ public class AgentManager {
@Autowired @Autowired
StringRedisTemplate redisTemplate; StringRedisTemplate redisTemplate;
@Autowired @Autowired
AgentSettleTask agentSettleTask;
@Autowired
UserService userService; UserService userService;
/*** /***
...@@ -106,14 +103,4 @@ public class AgentManager { ...@@ -106,14 +103,4 @@ public class AgentManager {
result.setData(parentAgents); result.setData(parentAgents);
return result; return result;
} }
public Result<String> doFinanceSettle(int agentId) {
Result<String> result = new Result<String>();
if (agentSettleTask.doOneAgentSettle(agentId)) {
result.setCode(0);
} else {
result.setCode(500);
}
return result;
}
} }
package com.lanren.huhu.partner.manager; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.lanren.huhu.partner.domain.OrderTaobaoJdCommission;import com.lanren.huhu.partner.service.OrderTaobaoJdCommissionService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component; /** * @author houseme * @date 2019-07-01 14:45 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: OrderTaobaoJdCommissionManager */@Componentpublic class OrderTaobaoJdCommissionManager { private static Logger logger = LoggerFactory.getLogger(OrderTaobaoJdCommissionManager.class); @Autowired private OrderTaobaoJdCommissionService orderTaobaoJdCommissionService; public void one() { QueryWrapper<OrderTaobaoJdCommission> queryWrapper = new QueryWrapper<OrderTaobaoJdCommission>(); queryWrapper.eq("order_sn", "511853890422935938 "); System.out.println(queryWrapper); System.out.println(orderTaobaoJdCommissionService.getOne(queryWrapper)); }}
\ No newline at end of file
package com.lanren.huhu.partner.manager; import com.lanren.huhu.partner.domain.PartnerAccount;import com.lanren.huhu.partner.model.PartnerResponse;import com.lanren.huhu.partner.result.Result;import com.lanren.huhu.partner.schedule.PartnerSettleTask;import com.lanren.huhu.partner.service.PartnerAccountService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */@Componentpublic class PartnerManager { private static Logger logger = LoggerFactory.getLogger(PartnerManager.class); @Autowired private PartnerAccountService partnerAccountService; @Autowired private PartnerSettleTask partnerSettleTask; /*** * 获取合伙人账户信息 * @param userId * @return */ public Result<PartnerAccount> findByUserId(Integer userId) { Result<PartnerAccount> result = new Result<>(); if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager findByUserId userId:{},time:{}", userId, LocalDateTime.now()); } PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); result.setData(partnerAccount); return result; } /*** * 获取合伙人等级 10 普通, 20 高级, 30 超级 * @param userId * @return */ public Result<PartnerResponse> getPartnerLevel(Integer userId) { if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager getPartnerLevel userId:{},time:{}", userId, LocalDateTime.now()); } Result<PartnerResponse> result = new Result<>(); PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); if (null != partnerAccount) { int partnerLevel; if (partnerAccount.getIsSuperPartner() == 1) { partnerLevel = 30; } else { partnerLevel = partnerAccount.getPartnerLevel(); } result.setData(new PartnerResponse(partnerLevel)); } else { result.setCode(601); } return result; } public Result<String> doFinanceSettle(int userId) { Result<String> result = new Result<>(); if (partnerSettleTask.doOneUserSettle(userId)) { result.setCode(0); } else { result.setCode(500); } return result; } // public Result<String> runSummary(String dateStr, int userId) { // Result<String> result = new Result<>(); // if (partnerSettleTask.runSummary(dateStr, userId)) { // result.setCode(0); // } else { // result.setCode(500); // } // return result; // } }
\ No newline at end of file
package com.lanren.huhu.partner.schedule;
import com.lanren.huhu.partner.domain.AgentRevokeRecords;
import com.lanren.huhu.partner.domain.AgentReward;
import com.lanren.huhu.partner.service.AgentRevokeRecordsService;
import com.lanren.huhu.partner.service.AgentRewardService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import static com.lanren.huhu.partner.constants.Constants.*;
/**
* @author chen
* @title: RevokeAgentRewardTask
* @projectName partner
* @description: 扣回代理商的奖励
* @package com.lanren.huhu.partner.schedule
* @date 2019-07-04 11:41
*/
@Component
public class RevokeAgentRewardTask {
private static Logger logger = LoggerFactory.getLogger(RevokeAgentRewardTask.class);
@Autowired
AgentRevokeRecordsService agentRevokeRecordsService;
@Autowired
AgentRewardService agentRewardService;
@Autowired
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
// @Scheduled(fixedDelay = 5000L)
public void runScheduledTask() {
logger.info("run RevokeAgentRewardTask");
runConsume();
}
private void runConsume() {
List<AgentRevokeRecords> revokeRecordList = null;
try {
revokeRecordList = agentRevokeRecordsService.getAllPending();
if (null == revokeRecordList || revokeRecordList.size() == 0) {
return;
}
process(revokeRecordList);
} catch (Exception e) {
logger.error("process revoke failed. {}", revokeRecordList);
logger.error(e.getMessage(), e);
}
}
@Async
public void process(List<AgentRevokeRecords> revokeRecordList) {
for (AgentRevokeRecords agentRevokeRecord : revokeRecordList) {
process(agentRevokeRecord);
}
}
private void process(AgentRevokeRecords revokeRecord) {
TransactionStatus transactionStatus = null;
try {
int revokeType = revokeRecord.getRevokeType();
if (!AGENT_REVOKE_TYPE_MAP.keySet().contains(revokeType)) {
logger.info("未知的奖励类型 跳过不处理: {}", revokeRecord);
return;
}
/**
* 开启事务
*/
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
List<AgentReward> agentRewardList = null;
List<AgentReward> insertList = new ArrayList<AgentReward>();
List<AgentReward> updateList = new ArrayList<AgentReward>();
if (revokeType == AGENT_REVOKE_TYPE_ACTIVATION || revokeType == AGENT_REVOKE_TYPE_SELF_ORDER) {
agentRewardList = agentRewardService.getListByRefId(revokeRecord.getRefId());
} else if (revokeType == AGENT_REVOKE_TYPE_SHARE_ORDER) {
agentRewardList = agentRewardService.getListBySubOrderSn(revokeRecord.getOrderType(), revokeRecord.getOrderSn(), revokeRecord.getSubOrderSn());
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
}
/**
* 已结算状态 插负, 未结算状态 抹平
*/
if (null != agentRewardList && agentRewardList.size() > 0) {
for (AgentReward agentReward : agentRewardList) {
if (agentReward.getSettleState() == SETTLE_STATE_DONE) {
agentReward.setAmount(agentReward.getAmount().negate());
agentReward.setCommission(agentReward.getCommission().negate());
insertList.add(agentReward);
} else if (agentReward.getSettleState() == SETTLE_STATE_ON_THE_WAY || agentReward.getSettleState() == SETTLE_STATE_PRE) {
agentReward.setAmount(new BigDecimal(0));
agentReward.setCommission(new BigDecimal(0));
updateList.add(agentReward);
}
}
if (updateList.size() > 0) {
agentRewardService.updateBatch(updateList);
}
if (insertList.size() > 0) {
agentRewardService.batchInsert(insertList);
}
revokeRecord.setState(REVOKE_STATE_DONE);
} else {
revokeRecord.setState(REVOKE_STATE_DO_NOTHING);
}
agentRevokeRecordsService.updateById(revokeRecord);
/**
* 提交事务
*/
dataSourceTransactionManager.commit(transactionStatus);
} catch (Exception e) {
/**
* 回滚事务
*/
dataSourceTransactionManager.rollback(transactionStatus);
logger.error(e.getMessage(), e);
revokeRecord.setState(REVOKE_STATE_FAILED);
agentRevokeRecordsService.updateById(revokeRecord);
}
}
}
...@@ -2,6 +2,7 @@ package com.lanren.huhu.partner.service; ...@@ -2,6 +2,7 @@ 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.AgentExpandDaily; import com.lanren.huhu.partner.domain.AgentExpandDaily;
import com.lanren.huhu.partner.model.MailContentRow;
import java.util.List; import java.util.List;
...@@ -27,6 +28,10 @@ public interface AgentExpandDailyService extends IService<AgentExpandDaily> { ...@@ -27,6 +28,10 @@ public interface AgentExpandDailyService extends IService<AgentExpandDaily> {
int updateByDatByDetail(String datStr); int updateByDatByDetail(String datStr);
Integer getMonthCntByAgent(int agentId, long beginTs, long endTs); Integer getMonthCntByAgent(int agentId, long beginTs, long endTs);
MailContentRow getRegRow(String dat, Integer agentId, String monthBegin, String monthEnd);
List<MailContentRow> getVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
} }
package com.lanren.huhu.partner.service; package com.lanren.huhu.partner.service;
import java.util.List;
import com.lanren.huhu.partner.domain.AgentExpandDetail;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** import com.lanren.huhu.partner.domain.AgentExpandDetail;
import com.lanren.huhu.partner.model.MailContentRow;
import java.util.List;
/**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
* @description: TODO * @description: TODO
...@@ -22,4 +25,7 @@ public interface AgentExpandDetailService extends IService<AgentExpandDetail>{ ...@@ -22,4 +25,7 @@ public interface AgentExpandDetailService extends IService<AgentExpandDetail>{
int insertOrUpdateSelective(AgentExpandDetail record); int insertOrUpdateSelective(AgentExpandDetail record);
List<MailContentRow> getsVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
List<MailContentRow> getCengjiChildRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd);
} }
...@@ -21,4 +21,6 @@ public interface UserAgentService extends IService<UserAgent> { ...@@ -21,4 +21,6 @@ public interface UserAgentService extends IService<UserAgent> {
* @return * @return
*/ */
UserAgent getOneByAgentId(Integer agentId); UserAgent getOneByAgentId(Integer agentId);
List<UserAgent> selectCityAgentList();
} }
...@@ -3,6 +3,7 @@ package com.lanren.huhu.partner.service.impl; ...@@ -3,6 +3,7 @@ package com.lanren.huhu.partner.service.impl;
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 com.lanren.huhu.partner.domain.AgentExpandDaily; import com.lanren.huhu.partner.domain.AgentExpandDaily;
import com.lanren.huhu.partner.model.MailContentRow;
import com.lanren.huhu.partner.service.AgentExpandDailyService; import com.lanren.huhu.partner.service.AgentExpandDailyService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -48,6 +49,16 @@ public class AgentExpandDailyServiceImpl extends ServiceImpl<AgentExpandDailyMap ...@@ -48,6 +49,16 @@ public class AgentExpandDailyServiceImpl extends ServiceImpl<AgentExpandDailyMap
public Integer getMonthCntByAgent(int agentId, long beginTs, long endTs) { public Integer getMonthCntByAgent(int agentId, long beginTs, long endTs) {
return baseMapper.getMonthCntByAgent(agentId, beginTs, endTs); return baseMapper.getMonthCntByAgent(agentId, beginTs, endTs);
} }
@Override
public MailContentRow getRegRow(String dat, Integer agentId, String monthBegin, String monthEnd) {
return baseMapper.getRegRow(dat, agentId, monthBegin, monthEnd);
}
@Override
public List<MailContentRow> getVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd) {
return baseMapper.getVipRows(yesterdayBegin, yesterdayEnd, agentId, monthBegin, monthEnd);
}
} }
package com.lanren.huhu.partner.service.impl; package com.lanren.huhu.partner.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import com.lanren.huhu.partner.dao.AgentExpandDetailMapper; import com.lanren.huhu.partner.dao.AgentExpandDetailMapper;
import com.lanren.huhu.partner.domain.AgentExpandDetail; import com.lanren.huhu.partner.domain.AgentExpandDetail;
import com.lanren.huhu.partner.model.MailContentRow;
import com.lanren.huhu.partner.service.AgentExpandDetailService; import com.lanren.huhu.partner.service.AgentExpandDetailService;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @title: ${NAME} * @title: ${NAME}
* @projectName partner * @projectName partner
...@@ -36,4 +35,14 @@ public class AgentExpandDetailServiceImpl extends ServiceImpl<AgentExpandDetailM ...@@ -36,4 +35,14 @@ public class AgentExpandDetailServiceImpl extends ServiceImpl<AgentExpandDetailM
public int insertOrUpdateSelective(AgentExpandDetail record) { public int insertOrUpdateSelective(AgentExpandDetail record) {
return baseMapper.insertOrUpdateSelective(record); return baseMapper.insertOrUpdateSelective(record);
} }
@Override
public List<MailContentRow> getsVipRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd) {
return baseMapper.getsVipRows(yesterdayBegin, yesterdayEnd, agentId, monthBegin, monthEnd);
}
@Override
public List<MailContentRow> getCengjiChildRows(String yesterdayBegin, String yesterdayEnd, Integer agentId, String monthBegin, String monthEnd) {
return baseMapper.getCengjiChildRows(yesterdayBegin, yesterdayEnd, agentId, monthBegin, monthEnd);
}
} }
...@@ -49,4 +49,11 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent ...@@ -49,4 +49,11 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
; ;
return baseMapper.selectOne(queryWrapper); return baseMapper.selectOne(queryWrapper);
} }
@Override
public List<UserAgent> selectCityAgentList() {
QueryWrapper<UserAgent> wrapper = new QueryWrapper<UserAgent>();
wrapper.eq("agent_level", 4).eq("agent_state", 1);
return baseMapper.selectList(wrapper);
}
} }
...@@ -83,6 +83,21 @@ spring: ...@@ -83,6 +83,21 @@ spring:
force: true force: true
converters: converters:
preferred-json-mapper: fastjson preferred-json-mapper: fastjson
#邮箱配置
mail:
host: smtp.exmail.qq.com #发送邮件服务器
username: report@wasair.com #发送邮件的邮箱地址
password: Wasai123 #客户端授权码,不是邮箱密码,这个在qq邮箱设置里面自动生成的
port: 25 #端口号465或587
from: report@wasair.com # 发送邮件的地址,和上面username一致
properties:
mail:
smtp:
auth: true
# properties.mail.smtp.starttls.enable: true
# properties.mail.smtp.starttls.required: true
# properties.mail.smtp.ssl.enable: true
# default-encoding: utf-8
server: server:
port: 8099 port: 8099
http2: http2:
...@@ -100,10 +115,12 @@ mybatis-plus: ...@@ -100,10 +115,12 @@ mybatis-plus:
type-aliases-package: com.lanren.huhu.partner.domain type-aliases-package: com.lanren.huhu.partner.domain
mapper-locations: classpath*:mapper/*.xml mapper-locations: classpath*:mapper/*.xml
logging: logging:
level: level:
#打印SQL信息 #打印SQL信息
com.lanren.huhu.partner.dao: info com.lanren.huhu.partner.dao: debug
......
...@@ -185,4 +185,29 @@ ...@@ -185,4 +185,29 @@
WHERE agent_id=#{agentId} WHERE agent_id=#{agentId}
AND dat BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs}) AND dat BETWEEN FROM_UNIXTIME(#{beginTs}) AND FROM_UNIXTIME(#{endTs})
</select> </select>
<select id="getRegRow" resultType="com.lanren.huhu.partner.model.MailContentRow">
SELECT
'注册并登录用户' c1,
'共计' c2,
sum(case when dat=#{dat} then cnt_expand else 0 end) c3,
sum(case when dat>='2019-08-16' then cnt_expand else 0 end) c4,
sum(case when dat between date(#{monthBegin}) and date(#{monthEnd}) then cnt_expand else 0 end) c5,
sum(cnt_expand) c6
FROM agent_expand_daily
WHERE agent_id=#{agentId}
</select>
<select id="getVipRows" resultType="com.lanren.huhu.partner.model.MailContentRow">
SELECT
'Vip会员' c1,
case when b.invite_user_id = a.user_id then '直接' else '间接' end c2,
COUNT(a.recharge_time between #{yesterdayBegin} and #{yesterdayEnd} or NULL) c3,
COUNT(a.recharge_time >= '2019-08-16 23:59:59' or NULL) c4,
COUNT(a.recharge_time between #{monthBegin} and #{monthEnd} or NULL) c5,
COUNT(*) c6
FROM agent_reward a
LEFT JOIN partner_invite_relation b on a.source_user_id=b.user_id
WHERE a.agent_id = #{agentId}
AND a.reward_type in (30,20,710,720,730)
GROUP BY 1,2
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -141,4 +141,31 @@ ...@@ -141,4 +141,31 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<select id="getsVipRows" resultType="com.lanren.huhu.partner.model.MailContentRow">
SELECT
'超级Vip会员' c1,
case when c.invite_user_id=a.user_id then '直接' else '间接' end c2,
COUNT(b.become_super_time between #{yesterdayBegin} and #{yesterdayEnd} or NULL) c3,
COUNT(b.become_super_time >= '2019-08-16 23:59:59' or NULL) c4,
COUNT(b.become_super_time between #{monthBegin} and #{monthEnd} or NULL) c5,
COUNT(*) c6
FROM agent_expand_detail a
JOIN partner_account b on a.expand_user_id=b.user_id and b.is_super_partner=1
JOIN partner_invite_relation c on a.expand_user_id=c.user_id
WHERE a.agent_id = #{agentId}
GROUP BY 1,2
</select>
<select id="getCengjiChildRows" resultType="com.lanren.huhu.partner.model.MailContentRow">
SELECT
case when b.agent_level in (4,3) then '城市代理' when b.agent_level=2 then '分公司' end c1,
case when b.parent_agent_id=a.agent_id then '直接' else '间接' end c2,
COUNT(b.active_time between UNIX_TIMESTAMP(#{yesterdayBegin}) and UNIX_TIMESTAMP(#{yesterdayEnd}) or NULL) c3,
COUNT(b.active_time >= UNIX_TIMESTAMP('2019-08-16 00:00:00') or NULL) c4,
COUNT(b.active_time between UNIX_TIMESTAMP(#{monthBegin}) and UNIX_TIMESTAMP(#{monthEnd}) or NULL) c5,
COUNT(*) c6
FROM agent_expand_detail a
JOIN user_agent b on a.expand_user_id=b.user_id and b.agent_level between 2 and 4 and b.agent_state=1
WHERE a.agent_id = #{agentId}
GROUP BY 1,2
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -217,3 +217,17 @@ ADD COLUMN `settle_time` datetime(0) NULL COMMENT '结算奖励的时间: 淘宝 ...@@ -217,3 +217,17 @@ ADD COLUMN `settle_time` datetime(0) NULL COMMENT '结算奖励的时间: 淘宝
ALTER TABLE `huhu`.`agent_reward` ALTER TABLE `huhu`.`agent_reward`
ADD COLUMN `settle_time` datetime(0) NULL COMMENT '结算奖励的时间: 淘宝客/京东联盟为确认收货时间, 其他类型奖励同于recharge_time' AFTER `ratio_all`; ADD COLUMN `settle_time` datetime(0) NULL COMMENT '结算奖励的时间: 淘宝客/京东联盟为确认收货时间, 其他类型奖励同于recharge_time' AFTER `ratio_all`;
添加拓展城市代理商数据
CREATE TABLE `agent_expand_city_agent_detail` (
`dat` date NOT NULL,
`agent_id` int(11) unsigned NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`expand_user_id` int(11) unsigned NOT NULL,
`expand_agent_id` int(11) unsigned NOT NULL,
`expand_agent_time` datetime NOT NULL,
`created_at` int(11) unsigned DEFAULT NULL,
`updated_at` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`dat`,`agent_id`,`expand_agent_id`) USING BTREE,
KEY `eaid` (`expand_agent_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
\ 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