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
2dcd2caf
Commit
2dcd2caf
authored
Jun 28, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加接口: /user/relation/change
刷新缓存数据
parent
9af66f0c
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
856 additions
and
25 deletions
+856
-25
UserController.java
...va/com/lanren/huhu/partner/controller/UserController.java
+14
-0
PartnerAccountMapper.java
...ava/com/lanren/huhu/partner/dao/PartnerAccountMapper.java
+15
-4
UserAgentMapper.java
...ain/java/com/lanren/huhu/partner/dao/UserAgentMapper.java
+4
-3
PartnerAccountManager.java
...om/lanren/huhu/partner/manager/PartnerAccountManager.java
+2
-2
UserManager.java
...ain/java/com/lanren/huhu/partner/manager/UserManager.java
+54
-16
PartnerTree.java
src/main/java/com/lanren/huhu/partner/model/PartnerTree.java
+31
-0
User.java
src/main/java/com/lanren/huhu/partner/model/User.java
+2
-0
PartnerAccountService.java
...om/lanren/huhu/partner/service/PartnerAccountService.java
+10
-0
PartnerAccountServiceImpl.java
.../huhu/partner/service/impl/PartnerAccountServiceImpl.java
+5
-0
PartnerTreeUtil.java
...in/java/com/lanren/huhu/partner/util/PartnerTreeUtil.java
+127
-0
UserAgentMapper.xml
src/main/resources/mapper/UserAgentMapper.xml
+592
-0
No files found.
src/main/java/com/lanren/huhu/partner/controller/UserController.java
View file @
2dcd2caf
...
...
@@ -44,4 +44,18 @@ public class UserController {
result
.
setData
(
"删除成功"
);
return
result
;
}
@RequestMapping
(
value
=
"/relation/change"
,
method
=
RequestMethod
.
POST
)
public
Result
<
String
>
changeRelation
(
@RequestBody
@Valid
User
user
,
@RequestHeader
HttpHeaders
headers
)
{
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"changeRelation userId:{},header:{},time:{}"
,
user
.
getUserId
(),
headers
.
keySet
().
toArray
(),
LocalDateTime
.
now
());
}
Result
<
String
>
result
=
new
Result
<
String
>();
if
(
userManager
.
changeRelation
(
user
.
getUserId
()))
{
result
.
setData
(
"用户刷新成功"
);
}
else
{
result
.
setCode
(
500
);
}
return
result
;
}
}
src/main/java/com/lanren/huhu/partner/dao/PartnerAccountMapper.java
View file @
2dcd2caf
...
...
@@ -2,11 +2,12 @@ package com.lanren.huhu.partner.dao;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.List
;
@Mapper
public
interface
PartnerAccountMapper
extends
BaseMapper
<
PartnerAccount
>
{
int
updateBatch
(
List
<
PartnerAccount
>
list
);
...
...
@@ -22,9 +23,18 @@ public interface PartnerAccountMapper extends BaseMapper<PartnerAccount> {
* @param userId
* @return
*/
@Select
(
"SELECT b.*
\n
"
+
"FROM partner_invite_relation a
\n
"
+
"JOIN partner_account b on a.invite_user_id=b.user_id
\n
"
+
@Select
(
"SELECT b.* "
+
"FROM partner_invite_relation a
"
+
"JOIN partner_account b on a.invite_user_id=b.user_id
"
+
"WHERE a.user_id=#{userId}"
)
PartnerAccount
getParentByUserId
(
Integer
userId
);
/**
* 按uid查找下级 PartnerAccount
*/
@Select
(
"SELECT b.* "
+
"FROM partner_invite_relation a "
+
"JOIN partner_account b on a.user_id=b.user_id "
+
"WHERE a.invite_user_id=#{userId}"
)
List
<
PartnerAccount
>
getChildrenByUserId
(
Integer
userId
);
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/dao/UserAgentMapper.java
View file @
2dcd2caf
...
...
@@ -26,9 +26,9 @@ public interface UserAgentMapper extends BaseMapper<UserAgent> {
* @param agentId
* @return
*/
@Select
(
"SELECT b.*
\n
"
+
"FROM user_agent a
\n
"
+
"JOIN user_agent b on a.parent_agent_id=b.agent_id
\n
"
+
@Select
(
"SELECT b.*
"
+
"FROM user_agent a "
+
"JOIN user_agent b on a.parent_agent_id=b.agent_id
"
+
"WHERE a.agent_id=#{agentId} and b.agent_level<=4"
)
UserAgent
getParentAgent
(
Integer
agentId
);
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/PartnerAccountManager.java
View file @
2dcd2caf
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.model.Partner
;
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
);
logger
.
info
(
"findByUserId {}"
,
partnerAccount
);
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
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/UserManager.java
View file @
2dcd2caf
...
...
@@ -5,9 +5,9 @@ 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.result.Result
;
import
com.lanren.huhu.partner.service.PartnerAccountService
;
import
com.lanren.huhu.partner.service.UserAgentService
;
import
com.lanren.huhu.partner.util.PartnerTreeUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -38,14 +38,16 @@ public class UserManager {
* 缓存不能带有构造方法的Bean 所以只能返回User的Bean
* 包装Result在Cacheable注解的方法之外进行操作
* @param userId
* @return
Result<User>
* @return
User
* @throws
* @author chen
* @date 2019-06-26 20:01
*/
@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
);
setPartnerList
(
user
);
...
...
@@ -58,7 +60,9 @@ public class UserManager {
*/
@CacheEvict
(
key
=
"#userId"
)
public
void
deleteRalationByUserId
(
Integer
userId
)
{
logger
.
info
(
"delete user relation cache, userId: {}"
,
userId
);
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"delete user relation cache, userId: {}"
,
userId
);
}
}
/**
...
...
@@ -68,7 +72,9 @@ public class UserManager {
* @date 2019-06-26 20:37
*/
private
void
setPartnerList
(
User
user
)
{
logger
.
info
(
"begin setPartnerList for user: {} ......"
,
user
.
getUserId
());
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setPartnerList for user: {} ......"
,
user
.
getUserId
());
}
if
(
null
==
user
.
getPartnerList
())
{
ArrayList
<
ParentPartner
>
partnerList
=
new
ArrayList
<
ParentPartner
>();
user
.
setPartnerList
(
partnerList
);
...
...
@@ -78,17 +84,23 @@ public class UserManager {
*/
int
loopUserId
=
user
.
getUserId
();
while
(
true
)
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
if
(
null
==
parentPartner
)
{
break
;
}
else
{
logger
.
info
(
"parent is {} "
,
parentPartner
.
getUserId
());
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent is {} "
,
parentPartner
.
getUserId
());
}
user
.
getPartnerList
().
add
(
parentPartner
);
loopUserId
=
parentPartner
.
getUserId
();
}
}
logger
.
info
(
"setPartnerList for user: {} end"
,
user
.
getUserId
());
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setPartnerList for user: {} end"
,
user
.
getUserId
());
}
}
/**
...
...
@@ -97,7 +109,9 @@ public class UserManager {
* @date 2019-06-27 11:16
*/
private
void
setAgentList
(
User
user
)
{
logger
.
info
(
"begin setAgentList for user: {} ......"
,
user
.
getUserId
());
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"begin setAgentList for user: {} ......"
,
user
.
getUserId
());
}
if
(
null
==
user
.
getAgentList
())
{
ArrayList
<
ParentAgent
>
agentList
=
new
ArrayList
<
ParentAgent
>();
user
.
setAgentList
(
agentList
);
...
...
@@ -108,7 +122,9 @@ public class UserManager {
*/
int
loopUserId
=
user
.
getUserId
();
while
(
true
)
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"now loop uid is {}"
,
loopUserId
);
}
ParentPartner
parentPartner
=
getParentPartner
(
loopUserId
);
/**
* 有上级合伙人
...
...
@@ -122,16 +138,22 @@ public class UserManager {
/**
* 然后开始 无限找 这个人的上级代理商
*/
logger
.
info
(
"find first agent({}) for user: {}"
,
userAgent
.
getAgentId
(),
user
.
getUserId
());
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"find first agent({}) for user: {}"
,
userAgent
.
getAgentId
(),
user
.
getUserId
());
}
user
.
getAgentList
().
add
(
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
userAgent
.
getAgentLevel
()));
logger
.
info
(
"loop find parent agent start ......"
);
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
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"parent agent is "
,
loopUserAgent
.
getAgentId
());
}
user
.
getAgentList
().
add
(
new
ParentAgent
(
loopUserAgent
.
getUserId
(),
loopUserAgent
.
getAgentId
(),
loopUserAgent
.
getLevel
()));
loogAgentId
=
loopUserAgent
.
getAgentId
();
}
...
...
@@ -139,7 +161,9 @@ public class UserManager {
/**
* 找完 "第一个是代理商的合伙人" 的 全部上级代理后 退出while循环
*/
logger
.
info
(
"loop find parent agent end"
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop find parent agent end"
);
}
break
;
}
else
{
/**
...
...
@@ -151,11 +175,15 @@ public class UserManager {
/**
* 没有上级合伙人 打印结束信息 跳出循环
*/
logger
.
info
(
"loop end with userId: {}"
,
loopUserId
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"loop end with userId: {}"
,
loopUserId
);
}
break
;
}
}
logger
.
info
(
"setAgentList for user: {} end"
,
user
.
getUserId
());
if
(
logger
.
isInfoEnabled
())
{
logger
.
info
(
"setAgentList for user: {} end"
,
user
.
getUserId
());
}
}
/**
...
...
@@ -187,4 +215,14 @@ public class UserManager {
}
return
parentAgent
;
}
/**
* 根据输入的用户id, 刷新这个用户以及他邀请关系的所有下级的邀请关系
* @param userId
* @return
*/
public
boolean
changeRelation
(
int
userId
)
{
PartnerTreeUtil
partnerTreeUtil
=
new
PartnerTreeUtil
();
return
partnerTreeUtil
.
findPartnerChiledren
(
userId
,
partnerAccountService
,
this
);
}
}
src/main/java/com/lanren/huhu/partner/model/PartnerTree.java
0 → 100644
View file @
2dcd2caf
package
com
.
lanren
.
huhu
.
partner
.
model
;
import
com.lanren.huhu.partner.model.base.BaseModel
;
import
lombok.Data
;
import
java.util.ArrayList
;
/**
* @author chen
* @title: PartnerTree
* @projectName partner
* @description: 存储合伙人的关系树结构, childrenList为其直属下级, parentList为父级关系
* @package com.lanren.huhu.partner.model
* @date 2019-06-28 11:17
*/
@Data
public
class
PartnerTree
extends
BaseModel
{
Integer
userId
;
Integer
level
;
ArrayList
<
ParentPartner
>
parentList
;
ArrayList
<
PartnerTree
>
childrenList
=
new
ArrayList
<
PartnerTree
>();
public
ArrayList
<
ParentPartner
>
cloneParent
()
{
ArrayList
<
ParentPartner
>
copyList
=
new
ArrayList
<
ParentPartner
>();
for
(
ParentPartner
parentPartner
:
this
.
getParentList
())
{
ParentPartner
one
=
new
ParentPartner
(
parentPartner
.
getUserId
(),
parentPartner
.
getLevel
());
copyList
.
add
(
one
);
}
return
copyList
;
}
}
src/main/java/com/lanren/huhu/partner/model/User.java
View file @
2dcd2caf
...
...
@@ -25,6 +25,8 @@ public class User extends BaseModel {
@Min
(
value
=
1
,
message
=
"userId 需要大于0"
)
private
int
userId
;
private
int
level
;
private
ArrayList
<
ParentPartner
>
partnerList
;
private
ArrayList
<
ParentAgent
>
agentList
;
...
...
src/main/java/com/lanren/huhu/partner/service/PartnerAccountService.java
View file @
2dcd2caf
...
...
@@ -59,4 +59,14 @@ public interface PartnerAccountService extends IService<PartnerAccount> {
* @date 2019-06-26 20:13
*/
PartnerAccount
getParentPartner
(
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/impl/PartnerAccountServiceImpl.java
View file @
2dcd2caf
...
...
@@ -50,4 +50,9 @@ public class PartnerAccountServiceImpl extends ServiceImpl<PartnerAccountMapper,
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/util/PartnerTreeUtil.java
0 → 100644
View file @
2dcd2caf
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
)
{
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
);
}
}
}
}
src/main/resources/mapper/UserAgentMapper.xml
0 → 100644
View file @
2dcd2caf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.lanren.huhu.partner.dao.UserAgentMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.lanren.huhu.partner.domain.UserAgent"
>
<!--@mbg.generated-->
<id
column=
"agent_id"
property=
"agentId"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"agent_name"
property=
"agentName"
/>
<result
column=
"agent_phone"
property=
"agentPhone"
/>
<result
column=
"agent_level"
property=
"agentLevel"
/>
<result
column=
"node_agent_level_name"
property=
"nodeAgentLevelName"
/>
<result
column=
"parent_agent_id"
property=
"parentAgentId"
/>
<result
column=
"parent_agent_list"
property=
"parentAgentList"
/>
<result
column=
"card_num"
property=
"cardNum"
/>
<result
column=
"card_activate_num"
property=
"cardActivateNum"
/>
<result
column=
"commission_rate"
property=
"commissionRate"
/>
<result
column=
"pid"
property=
"pid"
/>
<result
column=
"jd_pid"
property=
"jdPid"
/>
<result
column=
"identity"
property=
"identity"
/>
<result
column=
"account_type"
property=
"accountType"
/>
<result
column=
"account"
property=
"account"
/>
<result
column=
"have_card"
property=
"haveCard"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"register_from"
property=
"registerFrom"
/>
<result
column=
"invite_time"
property=
"inviteTime"
/>
<result
column=
"active_time"
property=
"activeTime"
/>
<result
column=
"agent_state"
property=
"agentState"
/>
<result
column=
"created_at"
property=
"createdAt"
/>
<result
column=
"updated_at"
property=
"updatedAt"
/>
<result
column=
"deleted_at"
property=
"deletedAt"
/>
<result
column=
"agent_level_one"
property=
"agentLevelOne"
/>
<result
column=
"agent_level_two"
property=
"agentLevelTwo"
/>
<result
column=
"agent_level_three"
property=
"agentLevelThree"
/>
<result
column=
"agent_level_four"
property=
"agentLevelFour"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
<!--@mbg.generated-->
agent_id, user_id, agent_name, agent_phone, agent_level, node_agent_level_name, parent_agent_id,
parent_agent_list, card_num, card_activate_num, commission_rate, pid, jd_pid, `identity`,
account_type, account, have_card, remark, register_from, invite_time, active_time,
agent_state, created_at, updated_at, deleted_at, agent_level_one, agent_level_two,
agent_level_three, agent_level_four
</sql>
<update
id=
"updateBatch"
parameterType=
"java.util.List"
>
<!--@mbg.generated-->
update user_agent
<trim
prefix=
"set"
suffixOverrides=
","
>
<trim
prefix=
"user_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.userId}
</foreach>
</trim>
<trim
prefix=
"agent_name = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentName}
</foreach>
</trim>
<trim
prefix=
"agent_phone = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentPhone}
</foreach>
</trim>
<trim
prefix=
"agent_level = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentLevel}
</foreach>
</trim>
<trim
prefix=
"node_agent_level_name = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.nodeAgentLevelName}
</foreach>
</trim>
<trim
prefix=
"parent_agent_id = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.parentAgentId}
</foreach>
</trim>
<trim
prefix=
"parent_agent_list = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.parentAgentList}
</foreach>
</trim>
<trim
prefix=
"card_num = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.cardNum}
</foreach>
</trim>
<trim
prefix=
"card_activate_num = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.cardActivateNum}
</foreach>
</trim>
<trim
prefix=
"commission_rate = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.commissionRate}
</foreach>
</trim>
<trim
prefix=
"pid = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.pid}
</foreach>
</trim>
<trim
prefix=
"jd_pid = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.jdPid}
</foreach>
</trim>
<trim
prefix=
"`identity` = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.identity}
</foreach>
</trim>
<trim
prefix=
"account_type = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.accountType}
</foreach>
</trim>
<trim
prefix=
"account = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.account}
</foreach>
</trim>
<trim
prefix=
"have_card = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.haveCard}
</foreach>
</trim>
<trim
prefix=
"remark = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.remark}
</foreach>
</trim>
<trim
prefix=
"register_from = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.registerFrom}
</foreach>
</trim>
<trim
prefix=
"invite_time = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.inviteTime}
</foreach>
</trim>
<trim
prefix=
"active_time = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.activeTime}
</foreach>
</trim>
<trim
prefix=
"agent_state = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentState}
</foreach>
</trim>
<trim
prefix=
"created_at = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.createdAt}
</foreach>
</trim>
<trim
prefix=
"updated_at = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.updatedAt}
</foreach>
</trim>
<trim
prefix=
"deleted_at = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.deletedAt}
</foreach>
</trim>
<trim
prefix=
"agent_level_one = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentLevelOne}
</foreach>
</trim>
<trim
prefix=
"agent_level_two = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentLevelTwo}
</foreach>
</trim>
<trim
prefix=
"agent_level_three = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentLevelThree}
</foreach>
</trim>
<trim
prefix=
"agent_level_four = case"
suffix=
"end,"
>
<foreach
collection=
"list"
index=
"index"
item=
"item"
>
when agent_id = #{item.agentId} then #{item.agentLevelFour}
</foreach>
</trim>
</trim>
where agent_id in
<foreach
close=
")"
collection=
"list"
item=
"item"
open=
"("
separator=
", "
>
#{item.agentId}
</foreach>
</update>
<insert
id=
"batchInsert"
keyColumn=
"agent_id"
keyProperty=
"agentId"
parameterType=
"map"
useGeneratedKeys=
"true"
>
<!--@mbg.generated-->
insert into user_agent
(user_id, agent_name, agent_phone, agent_level, node_agent_level_name, parent_agent_id,
parent_agent_list, card_num, card_activate_num, commission_rate, pid, jd_pid, `identity`,
account_type, account, have_card, remark, register_from, invite_time, active_time,
agent_state, created_at, updated_at, deleted_at, agent_level_one, agent_level_two,
agent_level_three, agent_level_four)
values
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(#{item.userId}, #{item.agentName}, #{item.agentPhone}, #{item.agentLevel}, #{item.nodeAgentLevelName},
#{item.parentAgentId}, #{item.parentAgentList}, #{item.cardNum}, #{item.cardActivateNum},
#{item.commissionRate}, #{item.pid}, #{item.jdPid}, #{item.identity}, #{item.accountType},
#{item.account}, #{item.haveCard}, #{item.remark}, #{item.registerFrom}, #{item.inviteTime},
#{item.activeTime}, #{item.agentState}, #{item.createdAt}, #{item.updatedAt}, #{item.deletedAt},
#{item.agentLevelOne}, #{item.agentLevelTwo}, #{item.agentLevelThree}, #{item.agentLevelFour}
)
</foreach>
</insert>
<insert
id=
"insertOrUpdate"
keyColumn=
"agent_id"
keyProperty=
"agentId"
parameterType=
"com.lanren.huhu.partner.domain.UserAgent"
useGeneratedKeys=
"true"
>
<!--@mbg.generated-->
insert into user_agent
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"agentId != null"
>
agent_id,
</if>
user_id,
agent_name,
agent_phone,
agent_level,
node_agent_level_name,
parent_agent_id,
parent_agent_list,
card_num,
card_activate_num,
commission_rate,
pid,
jd_pid,
`identity`,
account_type,
account,
have_card,
remark,
register_from,
invite_time,
active_time,
agent_state,
created_at,
updated_at,
deleted_at,
agent_level_one,
agent_level_two,
agent_level_three,
agent_level_four,
</trim>
values
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"agentId != null"
>
#{agentId},
</if>
#{userId},
#{agentName},
#{agentPhone},
#{agentLevel},
#{nodeAgentLevelName},
#{parentAgentId},
#{parentAgentList},
#{cardNum},
#{cardActivateNum},
#{commissionRate},
#{pid},
#{jdPid},
#{identity},
#{accountType},
#{account},
#{haveCard},
#{remark},
#{registerFrom},
#{inviteTime},
#{activeTime},
#{agentState},
#{createdAt},
#{updatedAt},
#{deletedAt},
#{agentLevelOne},
#{agentLevelTwo},
#{agentLevelThree},
#{agentLevelFour},
</trim>
on duplicate key update
<trim
suffixOverrides=
","
>
<if
test=
"agentId != null"
>
agent_id = #{agentId},
</if>
user_id = #{userId},
agent_name = #{agentName},
agent_phone = #{agentPhone},
agent_level = #{agentLevel},
node_agent_level_name = #{nodeAgentLevelName},
parent_agent_id = #{parentAgentId},
parent_agent_list = #{parentAgentList},
card_num = #{cardNum},
card_activate_num = #{cardActivateNum},
commission_rate = #{commissionRate},
pid = #{pid},
jd_pid = #{jdPid},
`identity` = #{identity},
account_type = #{accountType},
account = #{account},
have_card = #{haveCard},
remark = #{remark},
register_from = #{registerFrom},
invite_time = #{inviteTime},
active_time = #{activeTime},
agent_state = #{agentState},
created_at = #{createdAt},
updated_at = #{updatedAt},
deleted_at = #{deletedAt},
agent_level_one = #{agentLevelOne},
agent_level_two = #{agentLevelTwo},
agent_level_three = #{agentLevelThree},
agent_level_four = #{agentLevelFour},
</trim>
</insert>
<insert
id=
"insertOrUpdateSelective"
keyColumn=
"agent_id"
keyProperty=
"agentId"
parameterType=
"com.lanren.huhu.partner.domain.UserAgent"
useGeneratedKeys=
"true"
>
<!--@mbg.generated-->
insert into user_agent
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"agentId != null"
>
agent_id,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
<if
test=
"agentName != null"
>
agent_name,
</if>
<if
test=
"agentPhone != null"
>
agent_phone,
</if>
<if
test=
"agentLevel != null"
>
agent_level,
</if>
<if
test=
"nodeAgentLevelName != null"
>
node_agent_level_name,
</if>
<if
test=
"parentAgentId != null"
>
parent_agent_id,
</if>
<if
test=
"parentAgentList != null"
>
parent_agent_list,
</if>
<if
test=
"cardNum != null"
>
card_num,
</if>
<if
test=
"cardActivateNum != null"
>
card_activate_num,
</if>
<if
test=
"commissionRate != null"
>
commission_rate,
</if>
<if
test=
"pid != null"
>
pid,
</if>
<if
test=
"jdPid != null"
>
jd_pid,
</if>
<if
test=
"identity != null"
>
`identity`,
</if>
<if
test=
"accountType != null"
>
account_type,
</if>
<if
test=
"account != null"
>
account,
</if>
<if
test=
"haveCard != null"
>
have_card,
</if>
<if
test=
"remark != null"
>
remark,
</if>
<if
test=
"registerFrom != null"
>
register_from,
</if>
<if
test=
"inviteTime != null"
>
invite_time,
</if>
<if
test=
"activeTime != null"
>
active_time,
</if>
<if
test=
"agentState != null"
>
agent_state,
</if>
<if
test=
"createdAt != null"
>
created_at,
</if>
<if
test=
"updatedAt != null"
>
updated_at,
</if>
<if
test=
"deletedAt != null"
>
deleted_at,
</if>
<if
test=
"agentLevelOne != null"
>
agent_level_one,
</if>
<if
test=
"agentLevelTwo != null"
>
agent_level_two,
</if>
<if
test=
"agentLevelThree != null"
>
agent_level_three,
</if>
<if
test=
"agentLevelFour != null"
>
agent_level_four,
</if>
</trim>
values
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"agentId != null"
>
#{agentId},
</if>
<if
test=
"userId != null"
>
#{userId},
</if>
<if
test=
"agentName != null"
>
#{agentName},
</if>
<if
test=
"agentPhone != null"
>
#{agentPhone},
</if>
<if
test=
"agentLevel != null"
>
#{agentLevel},
</if>
<if
test=
"nodeAgentLevelName != null"
>
#{nodeAgentLevelName},
</if>
<if
test=
"parentAgentId != null"
>
#{parentAgentId},
</if>
<if
test=
"parentAgentList != null"
>
#{parentAgentList},
</if>
<if
test=
"cardNum != null"
>
#{cardNum},
</if>
<if
test=
"cardActivateNum != null"
>
#{cardActivateNum},
</if>
<if
test=
"commissionRate != null"
>
#{commissionRate},
</if>
<if
test=
"pid != null"
>
#{pid},
</if>
<if
test=
"jdPid != null"
>
#{jdPid},
</if>
<if
test=
"identity != null"
>
#{identity},
</if>
<if
test=
"accountType != null"
>
#{accountType},
</if>
<if
test=
"account != null"
>
#{account},
</if>
<if
test=
"haveCard != null"
>
#{haveCard},
</if>
<if
test=
"remark != null"
>
#{remark},
</if>
<if
test=
"registerFrom != null"
>
#{registerFrom},
</if>
<if
test=
"inviteTime != null"
>
#{inviteTime},
</if>
<if
test=
"activeTime != null"
>
#{activeTime},
</if>
<if
test=
"agentState != null"
>
#{agentState},
</if>
<if
test=
"createdAt != null"
>
#{createdAt},
</if>
<if
test=
"updatedAt != null"
>
#{updatedAt},
</if>
<if
test=
"deletedAt != null"
>
#{deletedAt},
</if>
<if
test=
"agentLevelOne != null"
>
#{agentLevelOne},
</if>
<if
test=
"agentLevelTwo != null"
>
#{agentLevelTwo},
</if>
<if
test=
"agentLevelThree != null"
>
#{agentLevelThree},
</if>
<if
test=
"agentLevelFour != null"
>
#{agentLevelFour},
</if>
</trim>
on duplicate key update
<trim
suffixOverrides=
","
>
<if
test=
"agentId != null"
>
agent_id = #{agentId},
</if>
<if
test=
"userId != null"
>
user_id = #{userId},
</if>
<if
test=
"agentName != null"
>
agent_name = #{agentName},
</if>
<if
test=
"agentPhone != null"
>
agent_phone = #{agentPhone},
</if>
<if
test=
"agentLevel != null"
>
agent_level = #{agentLevel},
</if>
<if
test=
"nodeAgentLevelName != null"
>
node_agent_level_name = #{nodeAgentLevelName},
</if>
<if
test=
"parentAgentId != null"
>
parent_agent_id = #{parentAgentId},
</if>
<if
test=
"parentAgentList != null"
>
parent_agent_list = #{parentAgentList},
</if>
<if
test=
"cardNum != null"
>
card_num = #{cardNum},
</if>
<if
test=
"cardActivateNum != null"
>
card_activate_num = #{cardActivateNum},
</if>
<if
test=
"commissionRate != null"
>
commission_rate = #{commissionRate},
</if>
<if
test=
"pid != null"
>
pid = #{pid},
</if>
<if
test=
"jdPid != null"
>
jd_pid = #{jdPid},
</if>
<if
test=
"identity != null"
>
`identity` = #{identity},
</if>
<if
test=
"accountType != null"
>
account_type = #{accountType},
</if>
<if
test=
"account != null"
>
account = #{account},
</if>
<if
test=
"haveCard != null"
>
have_card = #{haveCard},
</if>
<if
test=
"remark != null"
>
remark = #{remark},
</if>
<if
test=
"registerFrom != null"
>
register_from = #{registerFrom},
</if>
<if
test=
"inviteTime != null"
>
invite_time = #{inviteTime},
</if>
<if
test=
"activeTime != null"
>
active_time = #{activeTime},
</if>
<if
test=
"agentState != null"
>
agent_state = #{agentState},
</if>
<if
test=
"createdAt != null"
>
created_at = #{createdAt},
</if>
<if
test=
"updatedAt != null"
>
updated_at = #{updatedAt},
</if>
<if
test=
"deletedAt != null"
>
deleted_at = #{deletedAt},
</if>
<if
test=
"agentLevelOne != null"
>
agent_level_one = #{agentLevelOne},
</if>
<if
test=
"agentLevelTwo != null"
>
agent_level_two = #{agentLevelTwo},
</if>
<if
test=
"agentLevelThree != null"
>
agent_level_three = #{agentLevelThree},
</if>
<if
test=
"agentLevelFour != null"
>
agent_level_four = #{agentLevelFour},
</if>
</trim>
</insert>
</mapper>
\ 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