Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
huhu-partner
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guanchen
huhu-partner
Commits
7c77db91
Commit
7c77db91
authored
Jun 29, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加代理商处理
parent
4630db2c
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
744 additions
and
50 deletions
+744
-50
PartnerApplication.java
...main/java/com/lanren/huhu/partner/PartnerApplication.java
+2
-0
AsyncConfig.java
...main/java/com/lanren/huhu/partner/config/AsyncConfig.java
+33
-0
Constants.java
...ain/java/com/lanren/huhu/partner/constants/Constants.java
+50
-0
AgentController.java
...a/com/lanren/huhu/partner/controller/AgentController.java
+22
-6
PartnerController.java
...com/lanren/huhu/partner/controller/PartnerController.java
+2
-2
UserController.java
...va/com/lanren/huhu/partner/controller/UserController.java
+7
-20
AgentRewardMapper.java
...n/java/com/lanren/huhu/partner/dao/AgentRewardMapper.java
+19
-0
AgentReward.java
...main/java/com/lanren/huhu/partner/domain/AgentReward.java
+238
-0
AgentManager.java
...in/java/com/lanren/huhu/partner/manager/AgentManager.java
+37
-6
PartnerAccountManager.java
...om/lanren/huhu/partner/manager/PartnerAccountManager.java
+0
-2
PartnerManager.java
.../java/com/lanren/huhu/partner/manager/PartnerManager.java
+2
-0
UserManager.java
...ain/java/com/lanren/huhu/partner/manager/UserManager.java
+24
-10
AgentResponse.java
...ain/java/com/lanren/huhu/partner/model/AgentResponse.java
+2
-2
AgentRewardMessage.java
...ava/com/lanren/huhu/partner/model/AgentRewardMessage.java
+42
-0
PartnerResponse.java
...n/java/com/lanren/huhu/partner/model/PartnerResponse.java
+2
-2
AgentRewardQueueTask.java
...om/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
+192
-0
AgentRewardService.java
...a/com/lanren/huhu/partner/service/AgentRewardService.java
+28
-0
AgentRewardServiceImpl.java
...ren/huhu/partner/service/impl/AgentRewardServiceImpl.java
+42
-0
UserServiceImpl.java
...com/lanren/huhu/partner/service/impl/UserServiceImpl.java
+0
-0
AgentRewardMapper.xml
src/main/resources/mapper/AgentRewardMapper.xml
+0
-0
No files found.
src/main/java/com/lanren/huhu/partner/PartnerApplication.java
View file @
7c77db91
...
@@ -7,12 +7,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
...
@@ -7,12 +7,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
;
import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
/**
/**
* @author houseme
* @author houseme
*/
*/
@SpringBootApplication
@SpringBootApplication
@EnableCaching
@EnableCaching
@EnableScheduling
public
class
PartnerApplication
extends
SpringBootServletInitializer
{
public
class
PartnerApplication
extends
SpringBootServletInitializer
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerApplication
.
class
);
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerApplication
.
class
);
...
...
src/main/java/com/lanren/huhu/partner/config/AsyncConfig.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.AsyncConfigurer
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
/**
* @author chen
* @title: AsyncConfig
* @projectName partner
* @description: 异步任务设置
* @package com.lanren.huhu.partner.config
* @date 2019-06-29 15:48
*/
@Configuration
@EnableAsync
public
class
AsyncConfig
implements
AsyncConfigurer
{
@Override
public
Executor
getAsyncExecutor
()
{
ThreadPoolTaskExecutor
taskExecutor
=
new
ThreadPoolTaskExecutor
();
//核心线程数
taskExecutor
.
setCorePoolSize
(
8
);
//最大线程数
taskExecutor
.
setMaxPoolSize
(
16
);
//队列大小
taskExecutor
.
setQueueCapacity
(
100
);
taskExecutor
.
initialize
();
return
taskExecutor
;
}
}
src/main/java/com/lanren/huhu/partner/constants/Constants.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
constants
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author chen
* @title: Constants
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.constants
* @date 2019-06-29 17:04
*/
public
class
Constants
{
public
static
final
String
AGENT_REWARD_QUEUE_KEY
=
"agent_reward_redis_city_key"
;
public
static
final
int
AGENT_REWARD_TYPE_YEAR_VIP
=
710
;
public
static
final
int
AGENT_REWARD_TYPE_HALF_YEAR_VIP
=
720
;
public
static
final
int
AGENT_REWARD_TYPE_SVIP
=
730
;
public
static
final
int
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
=
740
;
public
static
Map
<
Integer
,
Map
<
Integer
,
BigDecimal
>>
AGENT_RATE_MAP
=
new
HashMap
<
Integer
,
Map
<
Integer
,
BigDecimal
>>();
public
static
final
int
AGENT_LEVEL_1
=
1
;
public
static
final
int
AGENT_LEVEL_2
=
2
;
public
static
final
int
AGENT_LEVEL_3
=
3
;
public
static
final
int
AGENT_LEVEL_4
=
4
;
public
static
final
String
DATE_FORMAT
=
"yyyy-MM-dd hh:mm:ss"
;
static
{
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_YEAR_VIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_SVIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
,
new
HashMap
<
Integer
,
BigDecimal
>());
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_YEAR_VIP
).
put
(
0
,
new
BigDecimal
(
"0.03333333"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_YEAR_VIP
).
put
(
1
,
new
BigDecimal
(
"0.01388889"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_YEAR_VIP
).
put
(
2
,
new
BigDecimal
(
"0.00833333"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
).
put
(
0
,
new
BigDecimal
(
"0.03015075"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
).
put
(
1
,
new
BigDecimal
(
"0.01256281"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_HALF_YEAR_VIP
).
put
(
2
,
new
BigDecimal
(
"0.00753769"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_SVIP
).
put
(
0
,
new
BigDecimal
(
"0.02500000"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_SVIP
).
put
(
1
,
new
BigDecimal
(
"0.01111111"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_SVIP
).
put
(
2
,
new
BigDecimal
(
"0.00555556"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
).
put
(
0
,
new
BigDecimal
(
"0.03"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
).
put
(
1
,
new
BigDecimal
(
"0.02"
));
AGENT_RATE_MAP
.
get
(
AGENT_REWARD_TYPE_ORDER_AND_REDPACK
).
put
(
2
,
new
BigDecimal
(
"0.01"
));
}
}
src/main/java/com/lanren/huhu/partner/controller/AgentController.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
controller
;
package
com
.
lanren
.
huhu
.
partner
.
controller
;
import
com.lanren.huhu.partner.manager.
User
AgentManager
;
import
com.lanren.huhu.partner.manager.AgentManager
;
import
com.lanren.huhu.partner.model.Agent
;
import
com.lanren.huhu.partner.model.Agent
;
import
com.lanren.huhu.partner.model.AgentR
sp
;
import
com.lanren.huhu.partner.model.AgentR
esponse
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.result.Result
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -22,13 +22,29 @@ public class AgentController {
...
@@ -22,13 +22,29 @@ public class AgentController {
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentController
.
class
);
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentController
.
class
);
@Autowired
@Autowired
UserAgentManager
userA
gentManager
;
AgentManager
a
gentManager
;
@RequestMapping
(
value
=
"/level"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/level"
,
method
=
RequestMethod
.
POST
)
public
Result
<
AgentR
sp
>
getAgentLevel
(
@RequestBody
@Valid
Agent
agent
,
@RequestHeader
HttpHeaders
headers
)
{
public
Result
<
AgentR
esponse
>
getAgentLevel
(
@RequestBody
@Valid
Agent
agent
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"getLevel agentId:{},header:{},time:{}"
,
agent
.
getAgentId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
logger
.
info
(
"
AgentController
getLevel agentId:{},header:{},time:{}"
,
agent
.
getAgentId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
}
return
userAgentManager
.
getAgentLevel
(
agent
.
getAgentId
());
return
agentManager
.
getAgentLevel
(
agent
.
getAgentId
());
}
@RequestMapping
(
value
=
"/reward/divide"
,
method
=
RequestMethod
.
POST
)
public
Result
<
String
>
divideReward
(
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"AgentController divideReward, header:{},time:{}"
,
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
agentManager
.
divideReward
();
}
@RequestMapping
(
value
=
"/reward/push"
,
method
=
RequestMethod
.
POST
)
public
Result
<
String
>
pushReward
(
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"AgentController divideReward, header:{},time:{}"
,
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
return
agentManager
.
pushReward
();
}
}
}
}
src/main/java/com/lanren/huhu/partner/controller/PartnerController.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
controller
;
import
com.lanren.huhu.partner.manager.PartnerAccountManager
;
import
com.lanren.huhu.partner.model.Partner
;
import
com.lanren.huhu.partner.model.PartnerRsp
;
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.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
PartnerAccountManager
partnerAccountManager
;
@RequestMapping
(
value
=
"/level"
,
method
=
RequestMethod
.
POST
)
public
Result
<
PartnerRsp
>
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
partnerAccountManager
.
getPartnerLevel
(
partner
.
getUserId
());
}
}
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
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
;
@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
());
}
}
\ No newline at end of file
\ No newline at end of file
...
...
src/main/java/com/lanren/huhu/partner/controller/UserController.java
View file @
7c77db91
...
@@ -3,11 +3,11 @@ package com.lanren.huhu.partner.controller;
...
@@ -3,11 +3,11 @@ package com.lanren.huhu.partner.controller;
import
com.lanren.huhu.partner.manager.UserManager
;
import
com.lanren.huhu.partner.manager.UserManager
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
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.scheduling.annotation.EnableAsync
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
...
@@ -17,24 +17,20 @@ import java.time.LocalDateTime;
...
@@ -17,24 +17,20 @@ import java.time.LocalDateTime;
* @author chen
* @author chen
*/
*/
@RestController
@RestController
@EnableAsync
@RequestMapping
(
"/v1/user"
)
@RequestMapping
(
"/v1/user"
)
public
class
UserController
{
public
class
UserController
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserController
.
class
);
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserController
.
class
);
@Autowired
@Autowired
private
UserManager
userManager
;
private
UserManager
userManager
;
@Autowired
private
PartnerAccountService
partnerAccountService
;
@RequestMapping
(
value
=
"/relation"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/relation"
,
method
=
RequestMethod
.
POST
)
public
Result
<
User
>
getRelation
(
@RequestBody
@Valid
User
user
,
@RequestHeader
HttpHeaders
headers
)
{
public
Result
<
User
>
getRelation
(
@RequestBody
@Valid
User
user
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"getRelation userId:{ },header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
logger
.
info
(
"getRelation userId:{ },header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
}
User
resutrnUser
=
userManager
.
getRelationByUserId
(
user
.
getUserId
());
return
userManager
.
getRelationByUserId
(
user
.
getUserId
());
Result
<
User
>
result
=
new
Result
<
User
>();
result
.
setData
(
resutrnUser
);
return
result
;
}
}
@RequestMapping
(
value
=
"/relation/delete"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/relation/delete"
,
method
=
RequestMethod
.
POST
)
...
@@ -42,13 +38,7 @@ public class UserController {
...
@@ -42,13 +38,7 @@ public class UserController {
if
(
logger
.
isInfoEnabled
())
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"deletrRelation userId:{ },header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
logger
.
info
(
"deletrRelation userId:{ },header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
}
Result
<
String
>
result
=
new
Result
<
String
>();
return
userManager
.
deleteRalationByUserId
(
user
.
getUserId
());
if
(
userManager
.
deleteRalationByUserId
(
user
.
getUserId
()))
{
result
.
setData
(
"删除成功"
);
}
else
{
result
.
setCode
(
500
);
}
return
result
;
}
}
@RequestMapping
(
value
=
"/relation/change"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/relation/change"
,
method
=
RequestMethod
.
POST
)
...
@@ -56,13 +46,10 @@ public class UserController {
...
@@ -56,13 +46,10 @@ public class UserController {
if
(
logger
.
isInfoEnabled
())
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"changeRelation userId:{},header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
logger
.
info
(
"changeRelation userId:{},header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
}
userManager
.
changeRelation
(
user
.
getUserId
());
logger
.
info
(
"============>"
+
Thread
.
currentThread
().
getName
());
Result
<
String
>
result
=
new
Result
<
String
>();
Result
<
String
>
result
=
new
Result
<
String
>();
int
code
=
userManager
.
findPartnerChiledren
(
user
.
getUserId
());
result
.
setData
(
"异步,正在执行刷新......"
);
if
(
code
==
0
)
{
result
.
setData
(
"用户刷新成功"
);
}
else
{
result
.
setCode
(
code
);
}
return
result
;
return
result
;
}
}
}
}
src/main/java/com/lanren/huhu/partner/dao/AgentRewardMapper.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
@Mapper
public
interface
AgentRewardMapper
extends
BaseMapper
<
AgentReward
>
{
int
updateBatch
(
List
<
AgentReward
>
list
);
int
batchInsert
(
@Param
(
"list"
)
List
<
AgentReward
>
list
);
int
insertOrUpdate
(
AgentReward
record
);
int
insertOrUpdateSelective
(
AgentReward
record
);
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/domain/AgentReward.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"agent_reward"
)
public
class
AgentReward
implements
Serializable
{
/**
* ID序号
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 代理商id
*/
@TableField
(
value
=
"agent_id"
)
private
Integer
agentId
;
/**
* 代理商等级
*/
@TableField
(
value
=
"agent_level"
)
private
Integer
agentLevel
;
/**
* 用户id
*/
@TableField
(
value
=
"user_id"
)
private
Integer
userId
;
/**
* 奖励类型 40 开卡奖励 50 充值奖励 30 购买VIP会员 20 购买超级VIP会员
*/
@TableField
(
value
=
"reward_type"
)
private
Integer
rewardType
;
/**
* 描述
*/
@TableField
(
value
=
"reward_remark"
)
private
String
rewardRemark
;
/**
* 状态 100正常 99 错误
*/
@TableField
(
value
=
"reward_status"
)
private
Integer
rewardStatus
;
/**
* 卡面值
*/
@TableField
(
value
=
"money"
)
private
BigDecimal
money
;
/**
* 奖励金额
*/
@TableField
(
value
=
"amount"
)
private
BigDecimal
amount
;
/**
* 充值支付金额或许充值卡卡号
*/
@TableField
(
value
=
"cash_code"
)
private
String
cashCode
;
/**
* 用户充值时间
*/
@TableField
(
value
=
"recharge_time"
)
private
LocalDateTime
rechargeTime
;
/**
* 可分红总额
*/
@TableField
(
value
=
"commission_acount"
)
private
BigDecimal
commissionAcount
;
/**
* 比例值
*/
@TableField
(
value
=
"commission_rate"
)
private
BigDecimal
commissionRate
;
/**
* 得到分红值
*/
@TableField
(
value
=
"commission"
)
private
BigDecimal
commission
;
/**
* 相关id 产品或许充值卡相关id
*/
@TableField
(
value
=
"reference_id"
)
private
Long
referenceId
;
/**
* 结算状态 100在路上 200预结算 300已结算 -100在路上已失效 -200预结算已失效 -300已结算扣回
*/
@TableField
(
value
=
"settle_state"
)
private
Integer
settleState
;
/**
* 来源订单 与order表的order_id 关联
*/
@TableField
(
value
=
"source_order"
)
private
String
sourceOrder
;
/**
* 源用户id
*/
@TableField
(
value
=
"source_user_id"
)
private
Integer
sourceUserId
;
/**
* 源用户等级
*/
@TableField
(
value
=
"source_user_level"
)
private
Integer
sourceUserLevel
;
/**
* 商品id
*/
@TableField
(
value
=
"goods_id"
)
private
String
goodsId
;
/**
* 标题
*/
@TableField
(
value
=
"title"
)
private
String
title
;
/**
* 订单类型
*/
@TableField
(
value
=
"order_type"
)
private
String
orderType
;
/**
* 订单号
*/
@TableField
(
value
=
"order_sn"
)
private
String
orderSn
;
/**
* 子订单号
*/
@TableField
(
value
=
"sub_order_sn"
)
private
String
subOrderSn
;
/**
* 描述信息 比如充值卡或许充值卡信息
*/
@TableField
(
value
=
"reward_extend"
)
private
String
rewardExtend
;
@TableField
(
value
=
"created_at"
)
private
Long
createdAt
;
@TableField
(
value
=
"updated_at"
)
private
Long
updatedAt
;
@TableField
(
value
=
"deleted_at"
)
private
Long
deletedAt
;
/**
* 创建时间
*/
@TableField
(
value
=
"create_time"
)
private
LocalDateTime
createTime
;
private
static
final
long
serialVersionUID
=
1L
;
public
static
final
String
COL_AGENT_ID
=
"agent_id"
;
public
static
final
String
COL_AGENT_LEVEL
=
"agent_level"
;
public
static
final
String
COL_USER_ID
=
"user_id"
;
public
static
final
String
COL_REWARD_TYPE
=
"reward_type"
;
public
static
final
String
COL_REWARD_REMARK
=
"reward_remark"
;
public
static
final
String
COL_REWARD_STATUS
=
"reward_status"
;
public
static
final
String
COL_MONEY
=
"money"
;
public
static
final
String
COL_AMOUNT
=
"amount"
;
public
static
final
String
COL_CASH_CODE
=
"cash_code"
;
public
static
final
String
COL_RECHARGE_TIME
=
"recharge_time"
;
public
static
final
String
COL_COMMISSION_ACOUNT
=
"commission_acount"
;
public
static
final
String
COL_COMMISSION_RATE
=
"commission_rate"
;
public
static
final
String
COL_COMMISSION
=
"commission"
;
public
static
final
String
COL_REFERENCE_ID
=
"reference_id"
;
public
static
final
String
COL_SETTLE_STATE
=
"settle_state"
;
public
static
final
String
COL_SOURCE_ORDER
=
"source_order"
;
public
static
final
String
COL_SOURCE_USER_ID
=
"source_user_id"
;
public
static
final
String
COL_SOURCE_USER_LEVEL
=
"source_user_level"
;
public
static
final
String
COL_GOODS_ID
=
"goods_id"
;
public
static
final
String
COL_TITLE
=
"title"
;
public
static
final
String
COL_ORDER_TYPE
=
"order_type"
;
public
static
final
String
COL_ORDER_SN
=
"order_sn"
;
public
static
final
String
COL_SUB_ORDER_SN
=
"sub_order_sn"
;
public
static
final
String
COL_REWARD_EXTEND
=
"reward_extend"
;
public
static
final
String
COL_CREATED_AT
=
"created_at"
;
public
static
final
String
COL_UPDATED_AT
=
"updated_at"
;
public
static
final
String
COL_DELETED_AT
=
"deleted_at"
;
public
static
final
String
COL_CREATE_TIME
=
"create_time"
;
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/
User
AgentManager.java
→
src/main/java/com/lanren/huhu/partner/manager/AgentManager.java
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
manager
;
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.alibaba.fastjson.JSON
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.AgentRsp
;
import
com.lanren.huhu.partner.model.AgentResponse
;
import
com.lanren.huhu.partner.model.AgentRewardMessage
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
com.lanren.huhu.partner.service.UserAgentService
;
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.data.redis.core.ListOperations
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
/**
/**
* @author chen
* @author chen
*/
*/
@Component
@Component
public
class
User
AgentManager
{
public
class
AgentManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
User
AgentManager
.
class
);
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentManager
.
class
);
@Autowired
@Autowired
UserAgentService
userAgentService
;
UserAgentService
userAgentService
;
@Autowired
StringRedisTemplate
redisTemplate
;
/***
/***
* * 获取代理商等级 1 总代, 2 大区, 3 省, 4 市
* * 获取代理商等级 1 总代, 2 大区, 3 省, 4 市
* @param agentId
* @param agentId
* @return
* @return
*/
*/
public
Result
<
AgentR
sp
>
getAgentLevel
(
Integer
agentId
)
{
public
Result
<
AgentR
esponse
>
getAgentLevel
(
Integer
agentId
)
{
if
(
logger
.
isDebugEnabled
())
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"UserAgentManager getLevel agentId:{},time:{}"
,
agentId
,
LocalDateTime
.
now
());
logger
.
info
(
"UserAgentManager getLevel agentId:{},time:{}"
,
agentId
,
LocalDateTime
.
now
());
}
}
Result
<
AgentR
sp
>
result
=
new
Result
<>();
Result
<
AgentR
esponse
>
result
=
new
Result
<>();
UserAgent
userAgent
=
userAgentService
.
getOneByAgentId
(
agentId
);
UserAgent
userAgent
=
userAgentService
.
getOneByAgentId
(
agentId
);
if
(
null
!=
userAgent
)
{
if
(
null
!=
userAgent
)
{
result
.
setData
(
new
AgentR
sp
(
userAgent
.
getUserId
(),
userAgent
.
getAgentLevel
()));
result
.
setData
(
new
AgentR
esponse
(
userAgent
.
getUserId
(),
userAgent
.
getAgentLevel
()));
}
else
{
}
else
{
result
.
setCode
(
601
);
result
.
setCode
(
601
);
}
}
return
result
;
return
result
;
}
}
public
Result
<
String
>
divideReward
()
{
ListOperations
<
String
,
String
>
ops
=
redisTemplate
.
opsForList
();
logger
.
info
(
"message is: {}"
,
ops
.
rightPop
(
"agent_reward_redis_city_key"
));
return
new
Result
<>();
}
public
Result
<
String
>
pushReward
()
{
ListOperations
<
String
,
String
>
ops
=
redisTemplate
.
opsForList
();
AgentRewardMessage
agentRewardMessage
=
new
AgentRewardMessage
();
agentRewardMessage
.
setRewardType
(
710
);
agentRewardMessage
.
setRechargeTime
(
"2019-06-29 01:23:45"
);
agentRewardMessage
.
setSourceUserId
(
2328
);
agentRewardMessage
.
setReferenceId
(
"9999"
);
agentRewardMessage
.
setAgentId
(
33
);
agentRewardMessage
.
setAgentReward
(
new
BigDecimal
(
5
));
agentRewardMessage
.
setSettleState
(-
100
);
agentRewardMessage
.
setOrderType
(
"taobao"
);
agentRewardMessage
.
setOrderSn
(
"507596802910534728"
);
agentRewardMessage
.
setSubOrderSn
(
"507596802910534728"
);
agentRewardMessage
.
setOrderCommission
(
new
BigDecimal
(
"35.400000"
));
ops
.
leftPush
(
"agent_reward_redis_city_key"
,
JSON
.
toJSONString
(
agentRewardMessage
));
return
new
Result
<>();
}
}
}
src/main/java/com/lanren/huhu/partner/manager/PartnerAccountManager.java
deleted
100644 → 0
View file @
4630db2c
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.model.PartnerRsp
;
import
com.lanren.huhu.partner.result.Result
;
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 */
@Component
public
class
PartnerAccountManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerAccountManager
.
class
);
@Autowired
private
PartnerAccountService
partnerAccountService
;
/*** * 获取合伙人账户信息 * @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
<
PartnerRsp
>
getPartnerLevel
(
Integer
userId
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"PartnerAccountManager getPartnerLevel userId:{},time:{}"
,
userId
,
LocalDateTime
.
now
());
}
Result
<
PartnerRsp
>
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
PartnerRsp
(
partnerLevel
));
}
else
{
result
.
setCode
(
601
);
}
return
result
;
}
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/PartnerManager.java
0 → 100644
View file @
7c77db91
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.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 */
@Component
public
class
PartnerManager
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerManager
.
class
);
@Autowired
private
PartnerAccountService
partnerAccountService
;
/*** * 获取合伙人账户信息 * @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
;
}
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/UserManager.java
View file @
7c77db91
...
@@ -4,10 +4,12 @@ import com.lanren.huhu.partner.domain.PartnerAccount;
...
@@ -4,10 +4,12 @@ import com.lanren.huhu.partner.domain.PartnerAccount;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.PartnerTree
;
import
com.lanren.huhu.partner.model.PartnerTree
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.UserService
;
import
com.lanren.huhu.partner.service.UserService
;
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.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -22,24 +24,35 @@ public class UserManager {
...
@@ -22,24 +24,35 @@ public class UserManager {
@Autowired
@Autowired
UserService
userService
;
UserService
userService
;
public
User
getRelationByUserId
(
int
userId
)
{
public
Result
<
User
>
getRelationByUserId
(
int
userId
)
{
return
userService
.
getRelationByUserId
(
userId
);
User
resutrnUser
=
userService
.
getRelationByUserId
(
userId
);
Result
<
User
>
result
=
new
Result
<
User
>();
result
.
setData
(
resutrnUser
);
return
result
;
}
}
public
boolean
deleteRalationByUserId
(
int
userId
)
{
public
Result
<
String
>
deleteRalationByUserId
(
int
userId
)
{
return
userService
.
deleteRalationByUserId
(
userId
);
Result
<
String
>
result
=
new
Result
<
String
>();
if
(
userService
.
deleteRalationByUserId
(
userId
))
{
result
.
setData
(
"删除成功"
);
}
else
{
result
.
setCode
(
500
);
}
return
result
;
}
}
/**
/**
* 根据输入的userId, 完成递归查找
* 根据输入的userId, 完成递归查找
* @param userId
* @param userId
*/
*/
public
int
findPartnerChiledren
(
Integer
userId
)
{
@Async
public
Result
<
String
>
changeRelation
(
Integer
userId
)
{
Result
<
String
>
result
=
new
Result
<
String
>();
try
{
try
{
logger
.
info
(
"start
findPartnerChiledre
n for userId: {} ..."
,
userId
);
logger
.
info
(
"start
changeRelatio
n for userId: {} ..."
,
userId
);
PartnerAccount
partnerAccount
=
userService
.
getPartnerAccountByUserId
(
userId
);
PartnerAccount
partnerAccount
=
userService
.
getPartnerAccountByUserId
(
userId
);
if
(
partnerAccount
==
null
)
{
if
(
partnerAccount
==
null
)
{
re
turn
413
;
re
sult
.
setCode
(
413
)
;
}
}
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
PartnerTree
root
=
new
PartnerTree
();
PartnerTree
root
=
new
PartnerTree
();
...
@@ -47,12 +60,13 @@ public class UserManager {
...
@@ -47,12 +60,13 @@ public class UserManager {
root
.
setLevel
(
partnerLevel
);
root
.
setLevel
(
partnerLevel
);
root
.
setParentList
(
new
ArrayList
<
ParentPartner
>());
root
.
setParentList
(
new
ArrayList
<
ParentPartner
>());
recursiveSet
(
root
);
recursiveSet
(
root
);
logger
.
info
(
"done
findPartnerChiledre
n for userId: {}"
,
userId
);
logger
.
info
(
"done
changeRelatio
n for userId: {}"
,
userId
);
re
turn
0
;
re
sult
.
setData
(
"用户刷新成功"
)
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
e
.
getMessage
(),
e
);
re
turn
500
;
re
sult
.
setCode
(
500
)
;
}
}
return
result
;
}
}
/**
/**
...
...
src/main/java/com/lanren/huhu/partner/model/AgentR
sp
.java
→
src/main/java/com/lanren/huhu/partner/model/AgentR
esponse
.java
View file @
7c77db91
...
@@ -4,11 +4,11 @@ import com.lanren.huhu.partner.model.base.BaseModel;
...
@@ -4,11 +4,11 @@ import com.lanren.huhu.partner.model.base.BaseModel;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
public
class
AgentR
sp
extends
BaseModel
{
public
class
AgentR
esponse
extends
BaseModel
{
int
userId
;
int
userId
;
int
level
;
int
level
;
public
AgentR
sp
(
int
userId
,
int
level
)
{
public
AgentR
esponse
(
int
userId
,
int
level
)
{
this
.
userId
=
userId
;
this
.
userId
=
userId
;
this
.
level
=
level
;
this
.
level
=
level
;
}
}
...
...
src/main/java/com/lanren/huhu/partner/model/AgentRewardMessage.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
model
;
import
com.lanren.huhu.partner.model.base.BaseModel
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @author chen
* @title: AgentRewardMessage
* @projectName partner
* @description: 代理商奖励处理 Redis队列消息结构
* @package com.lanren.huhu.partner.model
* @date 2019-06-29 12:29
*/
@Data
public
class
AgentRewardMessage
extends
BaseModel
{
int
rewardType
;
String
rechargeTime
;
int
sourceUserId
;
String
referenceId
;
int
agentId
;
BigDecimal
agentReward
;
int
settleState
;
String
orderType
;
String
orderSn
;
String
subOrderSn
;
BigDecimal
orderCommission
;
// public AgentRewardMessage(int rewardType, String rechargeTime, int sourceUserId, String referenceId, int agentId, BigDecimal agentReward, int settleState, String orderType, String orderSn, String subOrderSn, BigDecimal orderCommission) {
// this.rewardType = rewardType;
// this.rechargeTime = rechargeTime;
// this.sourceUserId = sourceUserId;
// this.referenceId = referenceId;
// this.agentId = agentId;
// this.agentReward = agentReward;
// this.settleState = settleState;
// this.orderType = orderType;
// this.orderSn = orderSn;
// this.subOrderSn = subOrderSn;
// this.orderCommission = orderCommission;
// }
}
src/main/java/com/lanren/huhu/partner/model/PartnerR
sp
.java
→
src/main/java/com/lanren/huhu/partner/model/PartnerR
esponse
.java
View file @
7c77db91
...
@@ -4,10 +4,10 @@ import com.lanren.huhu.partner.model.base.BaseModel;
...
@@ -4,10 +4,10 @@ import com.lanren.huhu.partner.model.base.BaseModel;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
public
class
PartnerR
sp
extends
BaseModel
{
public
class
PartnerR
esponse
extends
BaseModel
{
int
level
;
int
level
;
public
PartnerR
sp
(
int
level
)
{
public
PartnerR
esponse
(
int
level
)
{
this
.
level
=
level
;
this
.
level
=
level
;
}
}
}
}
src/main/java/com/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
schedule
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.AgentRewardMessage
;
import
com.lanren.huhu.partner.model.ParentAgent
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.service.AgentRewardService
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.ListOperations
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.*;
/**
* @author chen
* @title: AgentRewardQueueTask
* @projectName partner
* @description: 消费 代理商奖励的消息队列, 处理代理商奖励, 写到agent_reward
* @package com.lanren.huhu.partner.schedule
* @date 2019-06-29 15:39
*/
@Component
public
class
AgentRewardQueueTask
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
AgentRewardQueueTask
.
class
);
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Autowired
UserAgentService
userAgentService
;
@Autowired
UserService
userService
;
@Autowired
AgentRewardService
agentRewardService
;
@Autowired
PartnerAccountService
partnerAccountService
;
@Scheduled
(
fixedDelay
=
1000L
)
public
void
runScheduledTask
()
{
logger
.
info
(
"run AgentRewardQueueTask"
);
runConsume
();
logger
.
info
(
"run AgentRewardQueueTask done"
);
}
public
void
runConsume
()
{
ListOperations
<
String
,
String
>
ops
=
stringRedisTemplate
.
opsForList
();
while
(
null
!=
ops
&&
null
!=
ops
.
size
(
AGENT_REWARD_QUEUE_KEY
)
&&
ops
.
size
(
AGENT_REWARD_QUEUE_KEY
)
>
0L
)
{
String
msg
=
""
;
try
{
msg
=
ops
.
rightPop
(
AGENT_REWARD_QUEUE_KEY
);
logger
.
info
(
"msg is {}"
,
msg
);
JSONObject
json
=
JSON
.
parseObject
(
msg
);
AgentRewardMessage
message
=
json
.
toJavaObject
(
AgentRewardMessage
.
class
);
processReward
(
message
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"process agent reward message failed"
,
msg
);
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
}
@Async
public
void
processReward
(
AgentRewardMessage
message
)
{
ListOperations
<
String
,
String
>
ops
=
stringRedisTemplate
.
opsForList
();
logger
.
info
(
"异步处理 agent reward: {}"
,
message
);
int
rewardType
=
message
.
getRewardType
();
Map
<
Integer
,
BigDecimal
>
rateMap
;
if
(!
AGENT_RATE_MAP
.
keySet
().
contains
(
rewardType
))
{
logger
.
error
(
"未知的奖励类型 跳过不处理: {}"
,
message
);
return
;
}
else
{
rateMap
=
AGENT_RATE_MAP
.
get
(
rewardType
);
}
UserAgent
userAgent
=
userAgentService
.
getOneByAgentId
(
message
.
getAgentId
());
if
(
userAgent
==
null
)
{
logger
.
error
(
"代理商id: {} 不存在, 跳过不处理"
,
message
);
return
;
}
if
(
userAgent
.
getAgentLevel
()
!=
AGENT_LEVEL_4
)
{
logger
.
error
(
"代理商id: {} 不是城市代理, 跳过不处理"
,
message
);
return
;
}
User
user
=
userService
.
getRelationByUserId
(
userAgent
.
getUserId
());
ArrayList
<
ParentAgent
>
parentList
=
user
.
getAgentList
();
ArrayList
<
ParentAgent
>
level4List
=
new
ArrayList
<
ParentAgent
>();
if
(
parentList
.
size
()
>
0
)
{
/**
* 扫描agentlist中的平推城市代理
* 最多只需要找3个
*/
int
rewardCnt
=
0
;
ArrayList
<
ParentAgent
>
rewardList
=
new
ArrayList
<
ParentAgent
>();
for
(
ParentAgent
agent
:
parentList
)
{
/**
* 先扫描平推代理, 写到level4List
* 如果不是平推, 奖励次数还不够3, 写到rewardList
*/
if
(
agent
.
getLevel
()
==
AGENT_LEVEL_4
&&
rewardCnt
<
3
)
{
level4List
.
add
(
agent
);
rewardList
.
add
(
agent
);
rewardCnt
++;
}
else
if
(
rewardCnt
<
3
){
rewardList
.
add
(
agent
);
}
else
{
break
;
}
}
/**
* 如果平推层级小于3, 又没有上级代理, 报错不处理
*/
if
(
level4List
.
size
()
<
3
&&
level4List
.
size
()
==
rewardList
.
size
())
{
logger
.
error
(
"代理商关系错误, 只有平推, 没有上级. {}"
,
message
);
return
;
}
/**
* 如果上面检查通过, 证明代理商关系没问题, 后面处理只看rewardList的size
* 决定比例怎么分: 1个人-拿3份; 2个人-第二个拿后2份; 3个人-各1份
*/
List
<
BigDecimal
>
rateList
=
new
ArrayList
<
BigDecimal
>();
if
(
rewardList
.
size
()
==
1
)
{
rateList
.
add
(
rateMap
.
get
(
0
).
add
(
rateMap
.
get
(
1
)).
add
(
rateMap
.
get
(
2
)));
}
else
if
(
rewardList
.
size
()
==
2
)
{
rateList
.
add
(
rateMap
.
get
(
0
));
rateList
.
add
(
rateMap
.
get
(
1
).
add
(
rateMap
.
get
(
2
)));
}
else
if
(
rewardList
.
size
()
==
3
)
{
rateList
.
add
(
rateMap
.
get
(
0
));
rateList
.
add
(
rateMap
.
get
(
1
));
rateList
.
add
(
rateMap
.
get
(
2
));
}
for
(
int
i
=
0
;
i
<
rewardList
.
size
();
i
++)
{
BigDecimal
commissionRate
=
rateList
.
get
(
i
);
if
(
doInsert
(
commissionRate
,
rewardList
.
get
(
i
),
message
))
{
logger
.
info
(
"插入代理商分成奖励,奖励比例: {}, 代理商: {}"
,
commissionRate
,
rewardList
.
get
(
i
));
}
else
{
logger
.
error
(
"插入失败, 写回到队列"
);
// ops.leftPush(AGENT_REWARD_QUEUE_KEY, JSON.toJSONString(message));
}
}
}
}
private
boolean
doInsert
(
BigDecimal
commissionRate
,
ParentAgent
agent
,
AgentRewardMessage
message
)
{
try
{
int
partnerLevel
=
partnerAccountService
.
getOneByUserId
(
agent
.
getUserId
()).
getPartnerLevel
();
int
sourceUserLevel
=
partnerAccountService
.
getOneByUserId
(
message
.
getSourceUserId
()).
getPartnerLevel
();
AgentReward
agentReward
=
new
AgentReward
();
agentReward
.
setRewardType
(
message
.
getRewardType
());
agentReward
.
setRechargeTime
(
LocalDateTime
.
parse
(
message
.
getRechargeTime
(),
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
agentReward
.
setSourceUserId
(
message
.
getSourceUserId
());
agentReward
.
setReferenceId
(
Long
.
parseLong
(
message
.
getReferenceId
()));
agentReward
.
setAgentId
(
agent
.
getAgentId
());
agentReward
.
setCommissionAcount
(
message
.
getAgentReward
().
multiply
(
commissionRate
));
agentReward
.
setCommissionRate
(
commissionRate
);
agentReward
.
setSettleState
(
message
.
getSettleState
());
agentReward
.
setOrderType
(
message
.
getOrderType
());
agentReward
.
setOrderSn
(
message
.
getOrderSn
());
agentReward
.
setSubOrderSn
(
message
.
getSubOrderSn
());
agentReward
.
setMoney
(
message
.
getOrderCommission
());
agentReward
.
setAgentLevel
(
agent
.
getLevel
());
agentReward
.
setUserId
(
agent
.
getUserId
());
agentReward
.
setRewardRemark
(
"测试"
);
agentReward
.
setAmount
(
message
.
getAgentReward
().
multiply
(
commissionRate
));
agentReward
.
setSourceOrder
(
message
.
getReferenceId
());
agentReward
.
setSourceUserLevel
(
sourceUserLevel
);
if
(
agentRewardService
.
insertOrUpdate
(
agentReward
)
>
0
)
{
return
true
;
}
else
{
return
false
;
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
false
;
}
}
}
src/main/java/com/lanren/huhu/partner/service/AgentRewardService.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
java.util.List
;
/**
* @author chen
* @title: ${NAME}
* @projectName partner
* @description: TODO
* @package ${PACKAGE_NAME}
* @date 2019-06-29 18:49
*/
public
interface
AgentRewardService
extends
IService
<
AgentReward
>
{
int
updateBatch
(
List
<
AgentReward
>
list
);
int
batchInsert
(
List
<
AgentReward
>
list
);
int
insertOrUpdate
(
AgentReward
record
);
int
insertOrUpdateSelective
(
AgentReward
record
);
}
src/main/java/com/lanren/huhu/partner/service/impl/AgentRewardServiceImpl.java
0 → 100644
View file @
7c77db91
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.lanren.huhu.partner.dao.AgentRewardMapper
;
import
com.lanren.huhu.partner.domain.AgentReward
;
import
com.lanren.huhu.partner.service.AgentRewardService
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author chen
* @title: ${NAME}
* @projectName partner
* @description: TODO
* @package ${PACKAGE_NAME}
* @date 2019-06-29 18:49
*/
@Service
public
class
AgentRewardServiceImpl
extends
ServiceImpl
<
AgentRewardMapper
,
AgentReward
>
implements
AgentRewardService
{
@Override
public
int
updateBatch
(
List
<
AgentReward
>
list
)
{
return
baseMapper
.
updateBatch
(
list
);
}
@Override
public
int
batchInsert
(
List
<
AgentReward
>
list
)
{
return
baseMapper
.
batchInsert
(
list
);
}
@Override
public
int
insertOrUpdate
(
AgentReward
record
)
{
return
baseMapper
.
insertOrUpdate
(
record
);
}
@Override
public
int
insertOrUpdateSelective
(
AgentReward
record
)
{
return
baseMapper
.
insertOrUpdateSelective
(
record
);
}
}
src/main/java/com/lanren/huhu/partner/service/impl/UserServiceImpl.java
View file @
7c77db91
This diff is collapsed.
Click to expand it.
src/main/resources/mapper/AgentRewardMapper.xml
0 → 100644
View file @
7c77db91
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment