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
a09be9fd
Commit
a09be9fd
authored
Jul 03, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代理商关系 1拆2: 分成 层级关系 和 平推关系
parent
7a34c1c5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
41 additions
and
28 deletions
+41
-28
Constants.java
...ain/java/com/lanren/huhu/partner/constants/Constants.java
+2
-0
UserAgentMapper.java
...ain/java/com/lanren/huhu/partner/dao/UserAgentMapper.java
+5
-4
UserManager.java
...ain/java/com/lanren/huhu/partner/manager/UserManager.java
+15
-11
User.java
src/main/java/com/lanren/huhu/partner/model/User.java
+7
-0
AgentRewardQueueTask.java
...om/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
+2
-2
UserAgentService.java
...ava/com/lanren/huhu/partner/service/UserAgentService.java
+2
-2
UserService.java
...ain/java/com/lanren/huhu/partner/service/UserService.java
+2
-2
UserAgentServiceImpl.java
...anren/huhu/partner/service/impl/UserAgentServiceImpl.java
+6
-7
UserServiceImpl.java
...com/lanren/huhu/partner/service/impl/UserServiceImpl.java
+0
-0
No files found.
src/main/java/com/lanren/huhu/partner/constants/Constants.java
View file @
a09be9fd
...
...
@@ -30,6 +30,8 @@ public class Constants {
public
static
final
int
AGENT_LEVEL_4
=
4
;
public
static
final
String
DATE_FORMAT
=
"yyyy-MM-dd hh:mm:ss"
;
public
static
final
String
DISTRIBUTE_REDIS_LOCK_KEY
=
"huhu:partner:distribute:redis:key"
;
public
static
final
String
PARENT_COLUMN_NAME_CENGJI
=
"parent_agent_id"
;
public
static
final
String
PARENT_COLUMN_NAME_PINGTUI
=
"presenter_id"
;
static
{
AGENT_RATE_MAP
.
put
(
AGENT_REWARD_TYPE_YEAR_VIP
,
new
HashMap
<
Integer
,
BigDecimal
>());
...
...
src/main/java/com/lanren/huhu/partner/dao/UserAgentMapper.java
View file @
a09be9fd
...
...
@@ -26,16 +26,16 @@ public interface UserAgentMapper extends BaseMapper<UserAgent> {
*/
@Select
(
"SELECT b.* "
+
"FROM user_agent a "
+
"JOIN user_agent b on a.
presenter_id
=b.agent_id "
+
"JOIN user_agent b on a.
#{parentColumnName}
=b.agent_id "
+
"WHERE a.agent_id=#{agentId} and b.agent_level<=4"
)
UserAgent
getParentAgent
(
Integer
agentId
);
UserAgent
getParentAgent
(
Integer
agentId
,
String
parentColumnName
);
/**
* 按uid查找下级 UserAgent
*/
@Select
(
"SELECT b.* "
+
"FROM user_agent a "
+
"JOIN user_agent b on a.
presenter_id
=b.agent_id "
+
"JOIN user_agent b on a.
#{parentColumnName}
=b.agent_id "
+
"WHERE a.user_id=#{userId}"
)
List
<
UserAgent
>
getChildrenByUserId
(
Integer
userId
);
List
<
UserAgent
>
getChildrenByUserId
(
Integer
userId
,
String
parentColumnName
);
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/UserManager.java
View file @
a09be9fd
...
...
@@ -13,6 +13,9 @@ import org.springframework.stereotype.Component;
import
java.util.ArrayList
;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.
PARENT_COLUMN_NAME_CENGJI
;
import
static
com
.
lanren
.
huhu
.
partner
.
constants
.
Constants
.
PARENT_COLUMN_NAME_PINGTUI
;
/**
* @author houseme
*/
...
...
@@ -41,10 +44,6 @@ public class UserManager {
}
/**
* ****************************************分割线****合伙人***************************************************************
*/
/**
* 根据输入的userId, 完成递归查找
* @param userId
*/
...
...
@@ -67,7 +66,7 @@ public class UserManager {
root
.
setParentList
(
new
ArrayList
<
ParentPartner
>());
recursiveSet
(
root
);
/**
* 如果这个用户还是代理商身份, 也要处理他的代理商下级
* 如果这个用户还是代理商身份, 也要处理他的代理商下级
(层级下级 和 平推下级)
*/
UserAgent
agent
=
userService
.
getUserAgentByUserId
(
partnerAccount
.
getUserId
());
if
(
null
!=
agent
)
{
...
...
@@ -76,7 +75,8 @@ public class UserManager {
agentRoot
.
setAgentId
(
agent
.
getAgentId
());
agentRoot
.
setLevel
(
partnerLevel
);
agentRoot
.
setParentList
(
new
ArrayList
<
ParentAgent
>());
recursiveSet
(
agentRoot
);
recursiveSet
(
agentRoot
,
PARENT_COLUMN_NAME_CENGJI
);
recursiveSet
(
agentRoot
,
PARENT_COLUMN_NAME_PINGTUI
);
}
logger
.
info
(
"done changeRelation for userId: {}"
,
userId
);
result
.
setData
(
"用户刷新成功"
);
...
...
@@ -88,6 +88,10 @@ public class UserManager {
}
/**
* ****************************************分割线****合伙人***************************************************************
*/
/**
* 递归查找, 完成输入的tree的所有下级查找
* @param tree
*/
...
...
@@ -181,7 +185,7 @@ public class UserManager {
* 递归查找, 完成输入的tree的所有下级查找
* @param tree
*/
private
void
recursiveSet
(
AgentTree
tree
)
{
private
void
recursiveSet
(
AgentTree
tree
,
String
parentColumnName
)
{
logger
.
info
(
"do recursiveSet for userId: {}"
,
tree
.
getUserId
());
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"do recursiveSet for userId: {}"
,
tree
.
getUserId
());
...
...
@@ -189,7 +193,7 @@ public class UserManager {
/**
* 先找到直接下级
*/
setChildren
(
tree
);
setChildren
(
tree
,
parentColumnName
);
ArrayList
<
AgentTree
>
children
=
tree
.
getChildrenList
();
/**
* 如果没有下级了 那么直接输出结果
...
...
@@ -201,7 +205,7 @@ public class UserManager {
* 如果有直接下级, 遍历下级, 对每个下级再执行recursiveSet
*/
for
(
AgentTree
child
:
children
)
{
recursiveSet
(
child
);
recursiveSet
(
child
,
parentColumnName
);
/**
* 当完成 对每个下级再执行recursiveSet 之后
* 判断一下, 每个下级是否有直接下级
...
...
@@ -241,8 +245,8 @@ public class UserManager {
* 把下级的数据, 设置到输入的tree中的childrenList
* @param tree
*/
private
void
setChildren
(
AgentTree
tree
)
{
ArrayList
<
UserAgent
>
partnerAccountArrayList
=
(
ArrayList
<
UserAgent
>)
userService
.
getUserAgentChildrenByUserId
(
tree
.
getUserId
());
private
void
setChildren
(
AgentTree
tree
,
String
parentColumnName
)
{
ArrayList
<
UserAgent
>
partnerAccountArrayList
=
(
ArrayList
<
UserAgent
>)
userService
.
getUserAgentChildrenByUserId
(
tree
.
getUserId
()
,
parentColumnName
);
for
(
UserAgent
userAgent
:
partnerAccountArrayList
)
{
Integer
childId
=
userAgent
.
getUserId
();
Integer
agentId
=
userAgent
.
getAgentId
();
...
...
src/main/java/com/lanren/huhu/partner/model/User.java
View file @
a09be9fd
...
...
@@ -26,7 +26,14 @@ public class User extends BaseModel {
private
int
userId
;
private
ArrayList
<
ParentPartner
>
partnerList
;
/**
* agentList 返回代理商的上下级关系
*/
private
ArrayList
<
ParentAgent
>
agentList
;
/**
* agentList 返回代理商的平推关系
*/
private
ArrayList
<
ParentAgent
>
pingtuiAgentList
;
/**
* 坑哦!!!!
...
...
src/main/java/com/lanren/huhu/partner/schedule/AgentRewardQueueTask.java
View file @
a09be9fd
...
...
@@ -110,11 +110,11 @@ public class AgentRewardQueueTask {
}
/**
* 这里的逻辑有问题, 不能用这个接口找上级, 因为会先找一次直接邀请人,
* 只能按message.getAgentId()的代理商id, 找user_agent表里的
上级
* 只能按message.getAgentId()的代理商id, 找user_agent表里的
平推关系
*/
// User user = userService.getRelationByUserId(userAgent.getUserId());
// ArrayList<ParentAgent> parentList = user.getAgentList();
ArrayList
<
ParentAgent
>
parentList
=
(
ArrayList
<
ParentAgent
>)
userAgentService
.
getParentAgentListByAgentId
(
userAgent
.
getAgentId
());
ArrayList
<
ParentAgent
>
parentList
=
(
ArrayList
<
ParentAgent
>)
userAgentService
.
getParentAgentListByAgentId
(
userAgent
.
getAgentId
()
,
PARENT_COLUMN_NAME_PINGTUI
);
ArrayList
<
ParentAgent
>
level4List
=
new
ArrayList
<
ParentAgent
>();
if
(
parentList
.
size
()
>
0
)
{
/**
...
...
src/main/java/com/lanren/huhu/partner/service/UserAgentService.java
View file @
a09be9fd
...
...
@@ -28,12 +28,12 @@ public interface UserAgentService extends IService<UserAgent> {
* @param agentId
* @return List<ParentAgent>
*/
List
<
ParentAgent
>
getParentAgentListByAgentId
(
Integer
agentId
);
List
<
ParentAgent
>
getParentAgentListByAgentId
(
Integer
agentId
,
String
parentColumnName
);
/**
* @description: 查找一个用户的直接代理商上级, 根据字段presenter_id
* @param agentId
* @return ParentAgent
*/
ParentAgent
getParentAgentByAgentId
(
Integer
agentId
);
ParentAgent
getParentAgentByAgentId
(
Integer
agentId
,
String
parentColumnName
);
}
src/main/java/com/lanren/huhu/partner/service/UserService.java
View file @
a09be9fd
package
com
.
lanren
.
huhu
.
partner
.
service
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.User
;
import
java.util.List
;
/** * @author houseme * @date 2019-06-28 18:35 * @Project partner * @Package com.lanren.huhu.partner.service * @File: UserService */
public
interface
UserService
{
/** * @description: 根据用户id, 查找一个用户的全部合伙人上级 和 代理商上级 * 缓存用户邀请关系和代理商关系数据 * 缓存不能带有构造方法的Bean 所以只能返回User的Bean * 包装Result在Cacheable注解的方法之外进行操作 * 注意 !!!!!!!! 这个方法是按输入用户的邀请关系链上查找 第一个有agent_level<=4的代理商身份的邀请人, 然后再走他的代理关系 * 注意 !!!!!!!! 如果需要获取一个代理商的上级代理 需要从UserAgentService里的方法获取 * @param userId * @return User * @throws * @author chen * @date 2019-06-26 20:01 */
User
getRelationByUserId
(
Integer
userId
);
/** * 清理用户缓存 */
boolean
deleteRalationByUserId
(
Integer
userId
);
/*** * PartnerAccount * * 根据用户id查询账户信息 * @param userId * @return PartnerAccount */
PartnerAccount
getPartnerAccountByUserId
(
Integer
userId
);
/** * @description: 根据用户id查询全部下级合伙人 * @param userId * @return List<PartnerAccount> * @author chen * @date 2019-06-28 11:49 */
List
<
PartnerAccount
>
getPartnerAccountChildrenByUserId
(
Integer
userId
);
/*** * UserAgent * 根据用户id查询账户信息 * @param userId * @return */
UserAgent
getUserAgentByUserId
(
Integer
userId
);
/** * @description: 根据用户id查询全部下级代理商 * @param userId * @return List<PartnerAccount> * @author chen * @date 2019-06-28 11:49 */
List
<
UserAgent
>
getUserAgentChildrenByUserId
(
Integer
userId
);
// /** // * 按userId查找上级合伙人的 userId 和 level // * @param userId // * @return // */ // ParentPartner getParentPartner(Integer userId); // /** // * @description: 查找一个用户的全部合伙人上级, set到User对象的partnerList中 // * @param userId // * @author chen // * @return List<ParentPartner> // */ // List<ParentPartner> getPartnerListByUserId(Integer userId); // /** // * 按agentId 查找上级代理商的 agentId 和 level // * @param agentId // * @return // */ // ParentAgent getParentAgent(Integer agentId); // /** // * @description: 查找一个用户的全部代理商上级 set到User对象的agentList中 // * @param userId // * @return List<ParentAgent> // */ // List<ParentAgent> getAgentListByUserId(Integer userId); }
\ No newline at end of file
package
com
.
lanren
.
huhu
.
partner
.
service
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.User
;
import
java.util.List
;
/** * @author houseme * @date 2019-06-28 18:35 * @Project partner * @Package com.lanren.huhu.partner.service * @File: UserService */
public
interface
UserService
{
/** * @description: 根据用户id, 查找一个用户的全部合伙人上级 和 代理商上级(此处为层级关系 非平推关系) * 缓存用户邀请关系和代理商关系数据 * 缓存不能带有构造方法的Bean 所以只能返回User的Bean * 包装Result在Cacheable注解的方法之外进行操作 * 注意 !!!!!!!! 这个方法是按输入用户的邀请关系链上查找 第一个有agent_level<=4的代理商身份的邀请人, 然后再走他的代理关系 * 注意 !!!!!!!! 如果需要获取一个代理商的上级代理 需要从UserAgentService里的方法获取 * @param userId * @return User * @throws * @author chen * @date 2019-06-26 20:01 */
User
getRelationByUserId
(
Integer
userId
);
/** * 清理用户缓存 */
boolean
deleteRalationByUserId
(
Integer
userId
);
/*** * PartnerAccount * * 根据用户id查询账户信息 * @param userId * @return PartnerAccount */
PartnerAccount
getPartnerAccountByUserId
(
Integer
userId
);
/** * @description: 根据用户id查询全部下级合伙人 * @param userId * @return List<PartnerAccount> * @author chen * @date 2019-06-28 11:49 */
List
<
PartnerAccount
>
getPartnerAccountChildrenByUserId
(
Integer
userId
);
/*** * UserAgent * 根据用户id查询账户信息 * @param userId * @return */
UserAgent
getUserAgentByUserId
(
Integer
userId
);
/** * @description: 根据用户id查询全部下级代理商 * @param userId * @return List<PartnerAccount> * @author chen * @date 2019-06-28 11:49 */
List
<
UserAgent
>
getUserAgentChildrenByUserId
(
Integer
userId
,
String
parentColumnName
);
// /** // * 按userId查找上级合伙人的 userId 和 level // * @param userId // * @return // */ // ParentPartner getParentPartner(Integer userId); // /** // * @description: 查找一个用户的全部合伙人上级, set到User对象的partnerList中 // * @param userId // * @author chen // * @return List<ParentPartner> // */ // List<ParentPartner> getPartnerListByUserId(Integer userId); // /** // * 按agentId 查找上级代理商的 agentId 和 level // * @param agentId // * @return // */ // ParentAgent getParentAgent(Integer agentId); // /** // * @description: 查找一个用户的全部代理商上级 set到User对象的agentList中 // * @param userId // * @return List<ParentAgent> // */ // List<ParentAgent> getAgentListByUserId(Integer userId); }
\ No newline at end of file
...
...
src/main/java/com/lanren/huhu/partner/service/impl/UserAgentServiceImpl.java
View file @
a09be9fd
...
...
@@ -6,7 +6,6 @@ import com.lanren.huhu.partner.dao.UserAgentMapper;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.ParentAgent
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
...
...
@@ -18,8 +17,8 @@ import java.util.List;
@Service
public
class
UserAgentServiceImpl
extends
ServiceImpl
<
UserAgentMapper
,
UserAgent
>
implements
UserAgentService
{
@Autowired
UserAgentMapper
userAgentMapper
;
//
@Autowired
//
UserAgentMapper userAgentMapper;
@Override
public
int
updateBatch
(
List
<
UserAgent
>
list
)
{
...
...
@@ -51,11 +50,11 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
}
@Override
public
List
<
ParentAgent
>
getParentAgentListByAgentId
(
Integer
agentId
)
{
public
List
<
ParentAgent
>
getParentAgentListByAgentId
(
Integer
agentId
,
String
parentColumnName
)
{
List
<
ParentAgent
>
returnList
=
new
ArrayList
<
ParentAgent
>();
int
loogAgentId
=
agentId
;
while
(
true
)
{
ParentAgent
parentAgent
=
getParentAgentByAgentId
(
loogAgentId
);
ParentAgent
parentAgent
=
getParentAgentByAgentId
(
loogAgentId
,
parentColumnName
);
if
(
null
==
parentAgent
)
{
break
;
}
else
{
...
...
@@ -67,8 +66,8 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
}
@Override
public
ParentAgent
getParentAgentByAgentId
(
Integer
agentId
)
{
UserAgent
userAgent
=
baseMapper
.
getParentAgent
(
agentId
);
public
ParentAgent
getParentAgentByAgentId
(
Integer
agentId
,
String
parentColumnName
)
{
UserAgent
userAgent
=
baseMapper
.
getParentAgent
(
agentId
,
parentColumnName
);
if
(
userAgent
!=
null
)
{
return
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
userAgent
.
getAgentLevel
());
}
else
{
...
...
src/main/java/com/lanren/huhu/partner/service/impl/UserServiceImpl.java
View file @
a09be9fd
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