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
8cdbebf8
Commit
8cdbebf8
authored
Jun 28, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化代码结构
parent
2972cc9d
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
20 additions
and
205 deletions
+20
-205
UserController.java
...va/com/lanren/huhu/partner/controller/UserController.java
+7
-5
UserManager.java
...ain/java/com/lanren/huhu/partner/manager/UserManager.java
+0
-0
PartnerAccountService.java
...om/lanren/huhu/partner/service/PartnerAccountService.java
+1
-20
UserAgentService.java
...ava/com/lanren/huhu/partner/service/UserAgentService.java
+3
-17
UserService.java
...ain/java/com/lanren/huhu/partner/service/UserService.java
+2
-2
PartnerAccountServiceImpl.java
.../huhu/partner/service/impl/PartnerAccountServiceImpl.java
+0
-10
UserAgentServiceImpl.java
...anren/huhu/partner/service/impl/UserAgentServiceImpl.java
+5
-21
UserServiceImpl.java
...com/lanren/huhu/partner/service/impl/UserServiceImpl.java
+2
-2
PartnerTreeUtil.java
...in/java/com/lanren/huhu/partner/util/PartnerTreeUtil.java
+0
-128
No files found.
src/main/java/com/lanren/huhu/partner/controller/UserController.java
View file @
8cdbebf8
...
@@ -4,7 +4,6 @@ import com.lanren.huhu.partner.manager.UserManager;
...
@@ -4,7 +4,6 @@ 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
com.lanren.huhu.partner.service.PartnerAccountService
;
import
com.lanren.huhu.partner.util.PartnerTreeUtil
;
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
;
...
@@ -43,9 +42,12 @@ public class UserController {
...
@@ -43,9 +42,12 @@ 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
());
}
}
userManager
.
deleteRalationByUserId
(
user
.
getUserId
());
Result
<
String
>
result
=
new
Result
<
String
>();
Result
<
String
>
result
=
new
Result
<
String
>();
if
(
userManager
.
deleteRalationByUserId
(
user
.
getUserId
()))
{
result
.
setData
(
"删除成功"
);
result
.
setData
(
"删除成功"
);
}
else
{
result
.
setCode
(
500
);
}
return
result
;
return
result
;
}
}
...
@@ -55,11 +57,11 @@ public class UserController {
...
@@ -55,11 +57,11 @@ public class UserController {
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
());
}
}
Result
<
String
>
result
=
new
Result
<
String
>();
Result
<
String
>
result
=
new
Result
<
String
>();
PartnerTreeUtil
partnerTreeUtil
=
new
PartnerTreeUtil
(
);
int
code
=
userManager
.
findPartnerChiledren
(
user
.
getUserId
()
);
if
(
partnerTreeUtil
.
findPartnerChiledren
(
user
.
getUserId
(),
partnerAccountService
,
userManager
)
)
{
if
(
code
==
0
)
{
result
.
setData
(
"用户刷新成功"
);
result
.
setData
(
"用户刷新成功"
);
}
else
{
}
else
{
result
.
setCode
(
500
);
result
.
setCode
(
code
);
}
}
return
result
;
return
result
;
}
}
...
...
src/main/java/com/lanren/huhu/partner/manager/UserManager.java
View file @
8cdbebf8
This diff is collapsed.
Click to expand it.
src/main/java/com/lanren/huhu/partner/service/PartnerAccountService.java
View file @
8cdbebf8
...
@@ -46,27 +46,8 @@ public interface PartnerAccountService extends IService<PartnerAccount> {
...
@@ -46,27 +46,8 @@ public interface PartnerAccountService extends IService<PartnerAccount> {
/***
/***
* 根据用户id查询账户信息
* 根据用户id查询账户信息
* @param userId
* @param userId
* @return
*/
PartnerAccount
getOneByUserId
(
Integer
userId
);
/**
* @description: TODO
* @param userId
* @return PartnerAccount
* @return PartnerAccount
* @throws
* @author chen
* @date 2019-06-26 20:13
*/
*/
PartnerAccount
get
ParentPartner
(
Integer
userId
);
PartnerAccount
get
OneByUserId
(
Integer
userId
);
/**
* @description: TODO
* @param ${tags}
* @return ${return_type}
* @throws
* @author chen
* @date 2019-06-28 11:49
*/
List
<
PartnerAccount
>
getChildrenByUserId
(
Integer
userId
);
}
}
src/main/java/com/lanren/huhu/partner/service/UserAgentService.java
View file @
8cdbebf8
package
com
.
lanren
.
huhu
.
partner
.
service
;
package
com
.
lanren
.
huhu
.
partner
.
service
;
import
java.util.List
;
import
com.lanren.huhu.partner.dao.PartnerAccountMapper
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
java.util.List
;
public
interface
UserAgentService
extends
IService
<
UserAgent
>{
public
interface
UserAgentService
extends
IService
<
UserAgent
>{
...
@@ -23,16 +21,4 @@ public interface UserAgentService extends IService<UserAgent>{
...
@@ -23,16 +21,4 @@ public interface UserAgentService extends IService<UserAgent>{
* @return
* @return
*/
*/
UserAgent
getOneByAgentId
(
Integer
agentId
);
UserAgent
getOneByAgentId
(
Integer
agentId
);
/***
* 根据用户id查询账户信息
* @param userId
* @return
*/
UserAgent
getOneByUserId
(
Integer
userId
);
/**
* 根据代理商id找到上级代理商
*/
UserAgent
getParentAgent
(
Integer
agentId
);
}
}
src/main/java/com/lanren/huhu/partner/service/UserService.java
View file @
8cdbebf8
package
com
.
lanren
.
huhu
.
partner
.
service
;
/** * @author houseme * @date 2019-06-28 18:35 * @Project partner * @Package com.lanren.huhu.partner.service * @File: UserService */
public
interface
UserService
{
}
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.ParentAgent
;
import
com.lanren.huhu.partner.model.ParentPartner
;
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注解的方法之外进行操作 * @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: TODO * @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
);
/** * 按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
\ No newline at end of file
...
...
src/main/java/com/lanren/huhu/partner/service/impl/PartnerAccountServiceImpl.java
View file @
8cdbebf8
...
@@ -45,14 +45,4 @@ public class PartnerAccountServiceImpl extends ServiceImpl<PartnerAccountMapper,
...
@@ -45,14 +45,4 @@ public class PartnerAccountServiceImpl extends ServiceImpl<PartnerAccountMapper,
queryWrapper
.
eq
(
"user_id"
,
userId
);
queryWrapper
.
eq
(
"user_id"
,
userId
);
return
baseMapper
.
selectOne
(
queryWrapper
);
return
baseMapper
.
selectOne
(
queryWrapper
);
}
}
@Override
public
PartnerAccount
getParentPartner
(
Integer
userId
)
{
return
partnerAccountMapper
.
getParentByUserId
(
userId
);
}
@Override
public
List
<
PartnerAccount
>
getChildrenByUserId
(
Integer
userId
)
{
return
partnerAccountMapper
.
getChildrenByUserId
(
userId
);
}
}
}
src/main/java/com/lanren/huhu/partner/service/impl/UserAgentServiceImpl.java
View file @
8cdbebf8
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
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.domain.UserAgent
;
import
com.lanren.huhu.partner.dao.UserAgentMapper
;
import
com.lanren.huhu.partner.dao.UserAgentMapper
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
/**
* @author chen
* @author chen
...
@@ -46,18 +44,4 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
...
@@ -46,18 +44,4 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
;
;
return
baseMapper
.
selectOne
(
queryWrapper
);
return
baseMapper
.
selectOne
(
queryWrapper
);
}
}
@Override
public
UserAgent
getOneByUserId
(
Integer
userId
)
{
QueryWrapper
<
UserAgent
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
).
le
(
"agent_level"
,
4
);
return
baseMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
UserAgent
getParentAgent
(
Integer
agentId
)
{
return
userAgentMapper
.
getParentAgent
(
agentId
);
}
}
}
src/main/java/com/lanren/huhu/partner/service/impl/UserServiceImpl.java
View file @
8cdbebf8
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.lanren.huhu.partner.dao.PartnerAccountMapper
;
import
com.lanren.huhu.partner.dao.UserAgentMapper
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/** * @author houseme * @date 2019-06-28 18:36 * @Project partner * @Package com.lanren.huhu.partner.service.impl * @File: UserServiceImpl */
@Service
public
class
UserServiceImpl
implements
UserService
{
@Autowired
private
UserAgentMapper
userAgentMapper
;
@Autowired
private
PartnerAccountMapper
partnerAccountMapper
;
}
package
com
.
lanren
.
huhu
.
partner
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.lanren.huhu.partner.dao.PartnerAccountMapper
;
import
com.lanren.huhu.partner.dao.UserAgentMapper
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.ParentAgent
;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.User
;
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.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/** * @author houseme * @date 2019-06-28 18:36 * @Project partner * @Package com.lanren.huhu.partner.service.impl * @File: UserServiceImpl */
@Service
@CacheConfig
(
cacheNames
=
"user_cache"
)
public
class
UserServiceImpl
implements
UserService
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserServiceImpl
.
class
);
@Autowired
private
UserAgentMapper
userAgentMapper
;
@Autowired
private
PartnerAccountMapper
partnerAccountMapper
;
/** * 用户上级 合伙人 和 代理 关系 * @param userId * @return */
@Override
@Cacheable
public
User
getRelationByUserId
(
Integer
userId
)
{
logger
.
info
(
"new a user object "
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"new a user object "
);
}
User
user
=
new
User
();
user
.
setUserId
(
userId
);
user
.
setPartnerList
((
ArrayList
<
ParentPartner
>)
getPartnerListByUserId
(
userId
));
user
.
setAgentList
((
ArrayList
<
ParentAgent
>)
getAgentListByUserId
(
userId
));
return
user
;
}
@Override
@CacheEvict
(
key
=
"#userId"
)
public
boolean
deleteRalationByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"delete user relation cache, userId: {}"
,
userId
);
}
return
true
;
}
/** * 合伙人数据 * @param userId * @return */
@Override
public
PartnerAccount
getPartnerAccountByUserId
(
Integer
userId
)
{
QueryWrapper
<
PartnerAccount
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
);
return
partnerAccountMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
List
<
PartnerAccount
>
getPartnerAccountChildrenByUserId
(
Integer
userId
)
{
return
partnerAccountMapper
.
getChildrenByUserId
(
userId
);
}
@Override
public
ParentPartner
getParentPartner
(
Integer
userId
)
{
PartnerAccount
partnerAccount
=
partnerAccountMapper
.
getParentByUserId
(
userId
);
ParentPartner
parentPartner
=
null
;
if
(
null
!=
partnerAccount
)
{
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
parentPartner
=
new
ParentPartner
(
partnerAccount
.
getUserId
(),
partnerLevel
);
}
return
parentPartner
;
}
@Override
public
List
<
ParentPartner
>
getPartnerListByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setPartnerList for user: {} ......"
,
userId
);
}
ArrayList
<
ParentPartner
>
partnerList
=
new
ArrayList
<
ParentPartner
>();
/** * 无限找 */
int
loopUserId
=
userId
;
while
(
true
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
if
(
null
==
parentPartner
)
{
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent is {} "
,
parentPartner
.
getUserId
());
}
partnerList
.
add
(
parentPartner
);
loopUserId
=
parentPartner
.
getUserId
();
}
}
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setPartnerList for user: {} end"
,
userId
);
}
return
partnerList
;
}
/** * 代理商数据 * @param userId * @return */
@Override
public
UserAgent
getUserAgentByUserId
(
Integer
userId
)
{
QueryWrapper
<
UserAgent
>
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"user_id"
,
userId
).
le
(
"agent_level"
,
4
);
return
userAgentMapper
.
selectOne
(
queryWrapper
);
}
@Override
public
ParentAgent
getParentAgent
(
Integer
agentId
)
{
UserAgent
userAgent
=
userAgentMapper
.
getParentAgent
(
agentId
);
ParentAgent
parentAgent
=
null
;
if
(
null
!=
userAgent
)
{
int
agentLevel
=
userAgent
.
getAgentLevel
();
parentAgent
=
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
agentLevel
);
}
return
parentAgent
;
}
@Override
public
List
<
ParentAgent
>
getAgentListByUserId
(
Integer
userId
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setAgentList for user: {} ......"
,
userId
);
}
ArrayList
<
ParentAgent
>
agentList
=
new
ArrayList
<
ParentAgent
>();
/** * 无限找 * 先无限找上级合伙人, 直到找到第一个是代理商的合伙人 */
int
loopUserId
=
userId
;
while
(
true
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
/** * 有上级合伙人 */
if
(
null
!=
parentPartner
)
{
UserAgent
userAgent
=
getUserAgentByUserId
(
parentPartner
.
getUserId
());
/** * 找到了第一个是代理商的合伙人 */
if
(
null
!=
userAgent
)
{
/** * 然后开始 无限找 这个人的上级代理商 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"find first agent({}) for user: {}"
,
userAgent
.
getAgentId
(),
userId
);
}
agentList
.
add
(
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
userAgent
.
getAgentLevel
()));
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent start ......"
);
}
int
loogAgentId
=
userAgent
.
getAgentId
();
while
(
true
)
{
ParentAgent
loopUserAgent
=
getParentAgent
(
loogAgentId
);
if
(
null
==
loopUserAgent
)
{
break
;
}
else
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
}
agentList
.
add
(
new
ParentAgent
(
loopUserAgent
.
getUserId
(),
loopUserAgent
.
getAgentId
(),
loopUserAgent
.
getLevel
()));
loogAgentId
=
loopUserAgent
.
getAgentId
();
}
}
/** * 找完 "第一个是代理商的合伙人" 的 全部上级代理后 退出while循环 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent end"
);
}
break
;
}
else
{
/** * 这个人不是代理商 继续往上找 */
loopUserId
=
parentPartner
.
getUserId
();
}
}
else
{
/** * 没有上级合伙人 打印结束信息 跳出循环 */
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop end with userId: {}"
,
loopUserId
);
}
break
;
}
}
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setAgentList for user: {} end"
,
userId
);
}
return
agentList
;
}
}
\ No newline at end of file
\ No newline at end of file
...
...
src/main/java/com/lanren/huhu/partner/util/PartnerTreeUtil.java
deleted
100644 → 0
View file @
2972cc9d
package
com
.
lanren
.
huhu
.
partner
.
util
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.manager.UserManager
;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.PartnerTree
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.ArrayList
;
/**
* @author chen
* @title: PartnerTreeUtil
* @projectName partner
* @description: 用于构建PartnerTree
* @package com.lanren.huhu.partner.util
* @date 2019-06-28 11:19
*/
public
class
PartnerTreeUtil
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
PartnerTreeUtil
.
class
);
private
PartnerAccountService
partnerAccountService
;
private
UserManager
userManager
;
/**
* 根据输入的userId, 完成递归查找
* @param userId
*/
public
boolean
findPartnerChiledren
(
Integer
userId
,
PartnerAccountService
partnerAccountService
,
UserManager
userManager
)
{
try
{
logger
.
info
(
"start findPartnerChiledren for userId: {} ..."
,
userId
);
logger
.
info
(
"partnerAccountService is null ? : {}"
,
partnerAccountService
==
null
);
this
.
partnerAccountService
=
partnerAccountService
;
this
.
userManager
=
userManager
;
PartnerAccount
partnerAccount
=
partnerAccountService
.
getOneByUserId
(
userId
);
int
partnerLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
PartnerTree
root
=
new
PartnerTree
();
root
.
setUserId
(
partnerAccount
.
getUserId
());
root
.
setLevel
(
partnerLevel
);
root
.
setParentList
(
new
ArrayList
<
ParentPartner
>());
recursiveSet
(
root
);
logger
.
info
(
"done findPartnerChiledren for userId: {}"
,
userId
);
return
true
;
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
false
;
}
}
/**
* 递归查找, 完成输入的tree的所有下级查找
* @param tree
*/
private
void
recursiveSet
(
PartnerTree
tree
)
{
logger
.
info
(
"do recursiveSet for userId: {}"
,
tree
.
getUserId
());
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"do recursiveSet for userId: {}"
,
tree
.
getUserId
());
}
/**
* 先找到直接下级
*/
setChildren
(
tree
);
ArrayList
<
PartnerTree
>
children
=
tree
.
getChildrenList
();
/**
* 如果没有下级了 那么直接输出结果
*/
if
(
children
.
size
()
==
0
)
{
outputTree
(
tree
);
}
else
{
/**
* 如果有直接下级, 遍历下级, 对每个下级再执行recursiveSet
*/
for
(
PartnerTree
child
:
children
)
{
recursiveSet
(
child
);
/**
* 当完成 对每个下级再执行recursiveSet 之后
* 判断一下, 每个下级是否有直接下级
* 如果有 那么在各自的recursiveSet中 应该没有走到 line:52 的outputTree 方法
* 所以要在这里执行一次, 把他们自己输出
*/
if
(
child
.
getChildrenList
().
size
()
>
0
)
{
outputTree
(
child
);
}
}
}
}
/**
* 完成刷新用户缓存数据
* @param tree
*/
private
void
outputTree
(
PartnerTree
tree
)
{
StringBuilder
sb
=
new
StringBuilder
();
ArrayList
<
ParentPartner
>
list
=
tree
.
getParentList
();
for
(
ParentPartner
p
:
list
)
{
sb
.
append
(
p
.
getUserId
()).
append
(
","
);
}
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"begin to refresh cache......"
);
logger
.
info
(
"userId: {}, parent is: {}"
,
tree
.
getUserId
(),
sb
.
toString
());
}
userManager
.
deleteRalationByUserId
(
tree
.
getUserId
());
userManager
.
getRelationByUserId
(
tree
.
getUserId
());
}
/**
* 无递归操作, 只往下查找一级
* 把下级的数据, 设置到输入的tree中的childrenList
* @param tree
*/
private
void
setChildren
(
PartnerTree
tree
)
{
ArrayList
<
PartnerAccount
>
partnerAccountArrayList
=
(
ArrayList
<
PartnerAccount
>)
partnerAccountService
.
getChildrenByUserId
(
tree
.
getUserId
());
for
(
PartnerAccount
partnerAccount
:
partnerAccountArrayList
)
{
Integer
childId
=
partnerAccount
.
getUserId
();
Integer
childLevel
=
partnerAccount
.
getIsSuperPartner
()
==
1
?
30
:
partnerAccount
.
getPartnerLevel
();
if
(!
tree
.
getParentList
().
contains
(
childId
))
{
ArrayList
<
ParentPartner
>
parentList4Child
=
tree
.
cloneParent
();
parentList4Child
.
add
(
new
ParentPartner
(
tree
.
getUserId
(),
tree
.
getLevel
()));
PartnerTree
oneChild
=
new
PartnerTree
();
oneChild
.
setUserId
(
childId
);
oneChild
.
setLevel
(
childLevel
);
oneChild
.
setParentList
(
parentList4Child
);
tree
.
getChildrenList
().
add
(
oneChild
);
}
}
}
}
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