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
e28d883e
Commit
e28d883e
authored
Jul 30, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加代理商推荐关系的循环奖励
parent
ea68f2c1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
126 additions
and
75 deletions
+126
-75
AgentRewardQueueTask.java
...om/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
+26
-6
UserServiceImpl.java
...com/lanren/huhu/partner/service/impl/UserServiceImpl.java
+100
-69
No files found.
src/main/java/com/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
View file @
e28d883e
...
@@ -171,6 +171,7 @@ public class AgentRewardQueueTask {
...
@@ -171,6 +171,7 @@ public class AgentRewardQueueTask {
TransactionStatus
transactionStatus
=
null
;
TransactionStatus
transactionStatus
=
null
;
List
<
AgentReward
>
pushList
=
new
ArrayList
<
AgentReward
>();
List
<
AgentReward
>
pushList
=
new
ArrayList
<
AgentReward
>();
List
<
AgentReward
>
pushRewardList
=
new
ArrayList
<
AgentReward
>();
try
{
try
{
/**
/**
* 开启事务, 如果rewardList中的奖励 都插入成功, 才提交事务
* 开启事务, 如果rewardList中的奖励 都插入成功, 才提交事务
...
@@ -182,8 +183,13 @@ public class AgentRewardQueueTask {
...
@@ -182,8 +183,13 @@ public class AgentRewardQueueTask {
AgentReward
reward
=
doInsert
(
commissionRate
,
rewardList
.
get
(
i
),
message
.
clone
());
AgentReward
reward
=
doInsert
(
commissionRate
,
rewardList
.
get
(
i
),
message
.
clone
());
if
(
reward
!=
null
)
{
if
(
reward
!=
null
)
{
pushList
.
add
(
reward
);
pushList
.
add
(
reward
);
if
(
reward
.
getAgentLevel
()
==
AGENT_LEVEL_4
)
{
/**
pushRewardQueue
(
reward
,
message
);
* 如果是城市代理获得的佣金 或 红包奖励 需要 再往上分
*/
if
(
reward
.
getAgentLevel
()
==
AGENT_LEVEL_4
&&
(
rewardType
==
AGENT_REWARD_TYPE_SELF_ORDER
||
rewardType
==
AGENT_REWARD_TYPE_SHARE_ORDER
||
rewardType
==
AGENT_REWARD_TYPE_REDPACK
)
)
{
pushRewardList
.
add
(
reward
);
}
}
}
}
}
}
...
@@ -197,6 +203,9 @@ public class AgentRewardQueueTask {
...
@@ -197,6 +203,9 @@ public class AgentRewardQueueTask {
for
(
AgentReward
reward
:
pushList
)
{
for
(
AgentReward
reward
:
pushList
)
{
doPush
(
reward
);
doPush
(
reward
);
}
}
for
(
AgentReward
reward
:
pushRewardList
)
{
pushRewardQueue
(
reward
,
message
.
clone
());
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
"插入代理商分成奖励失败, 奖励 {}"
,
message
);
logger
.
error
(
"插入代理商分成奖励失败, 奖励 {}"
,
message
);
...
@@ -223,10 +232,21 @@ public class AgentRewardQueueTask {
...
@@ -223,10 +232,21 @@ public class AgentRewardQueueTask {
}
}
private
void
pushRewardQueue
(
AgentReward
reward
,
AgentRewardMessage
message
)
{
private
void
pushRewardQueue
(
AgentReward
reward
,
AgentRewardMessage
message
)
{
// message.setAgentId(reward.getAgentId());
logger
.
info
(
"处理循环上供奖励......."
);
// message.setAgentReward(reward.getAmount());
logger
.
info
(
"reward is :{}"
,
reward
);
// message.setOrderRateArray(reward.getRatioAll());
logger
.
info
(
"message is :{}"
,
message
);
return
;
message
.
setAgentId
(
reward
.
getAgentId
());
message
.
setAgentReward
(
reward
.
getAmount
());
String
rateArray
;
if
(
StringUtils
.
isEmpty
(
reward
.
getRatioAll
()))
{
rateArray
=
"["
+
reward
.
getCommissionRate
()
+
"]"
;
}
else
{
rateArray
=
reward
.
getRatioAll
().
replaceAll
(
"\\]"
,
""
);
rateArray
=
rateArray
+
reward
.
getCommissionRate
()
+
"]"
;
}
message
.
setOrderRateArray
(
rateArray
);
logger
.
info
(
"推送循环上供奖励: {}"
,
message
);
stringRedisTemplate
.
opsForList
().
leftPush
(
AGENT_REWARD_QUEUE_KEY
,
JSON
.
toJSONString
(
message
));
}
}
private
AgentReward
doInsert
(
BigDecimal
commissionRate
,
ParentAgent
agent
,
AgentRewardMessage
message
)
{
private
AgentReward
doInsert
(
BigDecimal
commissionRate
,
ParentAgent
agent
,
AgentRewardMessage
message
)
{
...
...
src/main/java/com/lanren/huhu/partner/service/impl/UserServiceImpl.java
View file @
e28d883e
...
@@ -23,8 +23,7 @@ import java.util.ArrayList;
...
@@ -23,8 +23,7 @@ import java.util.ArrayList;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.
PARENT_COLUMN_NAME_CENGJI
;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.*;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.
PARENT_COLUMN_NAME_PINGTUI
;
/**
/**
* @author houseme
* @author houseme
...
@@ -258,97 +257,130 @@ public class UserServiceImpl implements UserService {
...
@@ -258,97 +257,130 @@ public class UserServiceImpl implements UserService {
* 要改成从自己开始找 所以添加判断 看自己是不是
* 要改成从自己开始找 所以添加判断 看自己是不是
*/
*/
UserAgent
selfAgent
=
getUserAgentByUserId
(
userId
);
UserAgent
selfAgent
=
getUserAgentByUserId
(
userId
);
/**
* 代理商关系包含自己的条件:
* 1. 层级关系 都包含自己
* 2. 推荐关系 只有当自己是总代时才包含自己
*/
if
(
null
!=
selfAgent
&&
(
parentColumnName
.
equals
(
PARENT_COLUMN_NAME_CENGJI
)
||
parentColumnName
.
equals
(
PARENT_COLUMN_NAME_PINGTUI
)
&&
selfAgent
.
getAgentLevel
()
==
AGENT_LEVEL_1
))
{
}
else
{
selfAgent
=
null
;
}
int
loopUserId
=
userId
;
int
loopUserId
=
userId
;
int
loopTimes
=
0
;
int
loopTimes
=
0
;
while
(
true
)
{
UserAgent
firstAgent
=
null
;
if
(
logger
.
isDebugEnabled
())
{
if
(
selfAgent
==
null
)
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
existingUserIdSet
.
add
(
loopUserId
);
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
/**
/**
*
有上级合伙人 或者 自己就是
代理商
*
自己不是代理商时 按C端邀请关系查找
代理商
*/
*/
if
(
null
!=
selfAgent
||
null
!=
parentPartner
)
{
while
(
true
)
{
UserAgent
firstAgent
;
if
(
logger
.
isDebugEnabled
())
{
if
(
null
!=
selfAgent
)
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
firstAgent
=
selfAgent
;
}
else
{
firstAgent
=
getUserAgentByUserId
(
parentPartner
.
getUserId
());
}
}
/**
existingUserIdSet
.
add
(
loopUserId
);
* 找到了第一个是代理商的合伙人
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
*/
if
(
parentPartner
!=
null
)
{
if
(
null
!=
firstAgent
)
{
UserAgent
agent
=
getUserAgentByUserId
(
parentPartner
.
getUserId
());
/**
if
(
agent
!=
null
)
{
* 然后开始 无限找 这个人的上级代理商
firstAgent
=
agent
;
*/
break
;
if
(
logger
.
isDebugEnabled
())
{
}
else
{
logger
.
info
(
"find first agent({}) for user: {}"
,
firstAgent
.
getAgentId
(),
userId
);
/**
}
* 这个人不是代理商 继续往上找
agentList
.
add
(
new
ParentAgent
(
firstAgent
.
getUserId
(),
firstAgent
.
getAgentId
(),
firstAgent
.
getAgentLevel
()));
*/
loopTimes
++;
loopUserId
=
parentPartner
.
getUserId
();
if
(
logger
.
isDebugEnabled
())
{
loopTimes
++;
logger
.
info
(
"loop find parent agent start ......"
);
if
(
loopTimes
>
500
)
{
}
agentList
.
clear
();
int
loogAgentId
=
firstAgent
.
getAgentId
();
logger
.
error
(
"用户ID:{} 合伙人关系异常, 已超500层"
,
userId
);
while
(
true
)
{
break
;
ParentAgent
loopUserAgent
=
getParentAgent
(
loogAgentId
,
parentColumnName
);
}
if
(
null
==
loopUserAgent
)
{
if
(
existingUserIdSet
.
contains
(
loopUserId
))
{
logger
.
info
(
"发现互为上级的用户邀请关系 用户ID({})"
,
loopUserId
);
logger
.
info
(
"退出循环, 不再继续查找"
);
break
;
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
}
if
(
agentList
.
contains
(
loopUserAgent
)
||
loopUserAgent
.
getAgentId
()
==
firstAgent
.
getAgentId
())
{
logger
.
info
(
"发现互为上级的代理关系 代理商({})"
,
loopUserAgent
.
getAgentId
());
logger
.
info
(
"退出循环, 不再继续查找"
);
break
;
}
agentList
.
add
(
new
ParentAgent
(
loopUserAgent
.
getUserId
(),
loopUserAgent
.
getAgentId
(),
loopUserAgent
.
getLevel
()));
loogAgentId
=
loopUserAgent
.
getAgentId
();
loopTimes
++;
if
(
loopTimes
>
500
)
{
agentList
.
clear
();
logger
.
error
(
"用户ID:{} 代理商关系异常, 已超500层"
,
userId
);
break
;
}
}
}
}
}
}
else
{
/**
/**
*
找完 "第一个是代理商的合伙人" 的 全部上级代理后 退出while
循环
*
没有上级合伙人 打印结束信息 跳出
循环
*/
*/
if
(
logger
.
isDebugEnabled
())
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop
find parent agent end"
);
logger
.
info
(
"loop
end with userId: {}"
,
loopUserId
);
}
}
break
;
break
;
}
else
{
}
/**
}
* 这个人不是代理商 继续往上找
}
else
{
*/
firstAgent
=
selfAgent
;
loopUserId
=
parentPartner
.
getUserId
();
}
if
(
existingUserIdSet
.
contains
(
loopUserId
))
{
logger
.
info
(
"发现互为上级的用户邀请关系 用户ID({})"
,
loopUserId
);
/**
logger
.
info
(
"退出循环, 不再继续查找"
);
* 找到了第一个是代理商的合伙人
*/
if
(
null
!=
firstAgent
)
{
/**
* 然后开始 无限找 这个人的上级代理商
*/
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"find first agent({}) for user: {}"
,
firstAgent
.
getAgentId
(),
userId
);
}
/**
* 添加代理到list时 都需要加个判断 如果找到总代 就不再找了
*/
agentList
.
add
(
new
ParentAgent
(
firstAgent
.
getUserId
(),
firstAgent
.
getAgentId
(),
firstAgent
.
getAgentLevel
()));
if
(
firstAgent
.
getAgentLevel
()
!=
AGENT_LEVEL_1
)
{
loopTimes
=
0
;
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent start ......"
);
}
int
loogAgentId
=
firstAgent
.
getAgentId
();
while
(
true
)
{
ParentAgent
loopUserAgent
=
getParentAgent
(
loogAgentId
,
parentColumnName
);
if
(
null
==
loopUserAgent
)
{
break
;
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
}
if
(
agentList
.
contains
(
loopUserAgent
)
||
loopUserAgent
.
getAgentId
()
==
firstAgent
.
getAgentId
())
{
logger
.
info
(
"发现互为上级的代理关系 代理商({})"
,
loopUserAgent
.
getAgentId
());
logger
.
info
(
"退出循环, 不再继续查找"
);
break
;
}
/**
* 添加代理到list时 都需要加个判断 如果找到总代 就不再找了
*/
agentList
.
add
(
new
ParentAgent
(
loopUserAgent
.
getUserId
(),
loopUserAgent
.
getAgentId
(),
loopUserAgent
.
getLevel
()));
if
(
loopUserAgent
.
getLevel
()
==
AGENT_LEVEL_1
)
{
break
;
}
loogAgentId
=
loopUserAgent
.
getAgentId
();
loopTimes
++;
if
(
loopTimes
>
500
)
{
agentList
.
clear
();
logger
.
error
(
"用户ID:{} 代理商关系异常, 已超500层"
,
userId
);
break
;
}
}
}
}
}
}
else
{
/**
/**
*
没有上级合伙人 打印结束信息 跳出
循环
*
找完 "第一个是代理商的合伙人" 的 全部上级代理后 退出while
循环
*/
*/
if
(
logger
.
isDebugEnabled
())
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop end with userId: {}"
,
loopUserId
);
logger
.
info
(
"loop find parent agent end"
);
}
}
else
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"已找到总代 不再往下找, 总代id: {}"
,
firstAgent
.
getAgentId
());
}
}
break
;
}
}
}
}
if
(
logger
.
isInfoEnabled
())
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setAgentList for user: {} end"
,
userId
);
logger
.
info
(
"setAgentList for user: {} end"
,
userId
);
}
}
if
(
parentColumnName
.
equals
(
PARENT_COLUMN_NAME_PINGTUI
)
&&
selfAgent
!=
null
&&
agentList
.
size
()
>
1
)
{
agentList
.
remove
(
0
);
}
return
agentList
;
return
agentList
;
}
}
}
}
\ No newline at end of file
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