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
7a34c1c5
Commit
7a34c1c5
authored
Jul 02, 2019
by
guanchen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调接口relation/change 不再刷新下级数据 只做缓存清除
并且如果输入的用户是个代理商, 也清除下级代理商的缓存
parent
a42f375c
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
162 additions
and
7 deletions
+162
-7
UserAgentMapper.java
...ain/java/com/lanren/huhu/partner/dao/UserAgentMapper.java
+10
-0
UserManager.java
...ain/java/com/lanren/huhu/partner/manager/UserManager.java
+114
-5
AgentTree.java
src/main/java/com/lanren/huhu/partner/model/AgentTree.java
+32
-0
UserService.java
...ain/java/com/lanren/huhu/partner/service/UserService.java
+2
-2
UserAgentServiceImpl.java
...anren/huhu/partner/service/impl/UserAgentServiceImpl.java
+4
-0
UserServiceImpl.java
...com/lanren/huhu/partner/service/impl/UserServiceImpl.java
+0
-0
No files found.
src/main/java/com/lanren/huhu/partner/dao/UserAgentMapper.java
View file @
7a34c1c5
...
...
@@ -29,4 +29,13 @@ public interface UserAgentMapper extends BaseMapper<UserAgent> {
"JOIN user_agent b on a.presenter_id=b.agent_id "
+
"WHERE a.agent_id=#{agentId} and b.agent_level<=4"
)
UserAgent
getParentAgent
(
Integer
agentId
);
/**
* 按uid查找下级 UserAgent
*/
@Select
(
"SELECT b.* "
+
"FROM user_agent a "
+
"JOIN user_agent b on a.presenter_id=b.agent_id "
+
"WHERE a.user_id=#{userId}"
)
List
<
UserAgent
>
getChildrenByUserId
(
Integer
userId
);
}
\ No newline at end of file
src/main/java/com/lanren/huhu/partner/manager/UserManager.java
View file @
7a34c1c5
package
com
.
lanren
.
huhu
.
partner
.
manager
;
import
com.lanren.huhu.partner.domain.PartnerAccount
;
import
com.lanren.huhu.partner.model.ParentPartner
;
import
com.lanren.huhu.partner.model.PartnerTree
;
import
com.lanren.huhu.partner.model.User
;
import
com.lanren.huhu.partner.domain.UserAgent
;
import
com.lanren.huhu.partner.model.*
;
import
com.lanren.huhu.partner.result.Result
;
import
com.lanren.huhu.partner.service.UserService
;
import
org.slf4j.Logger
;
...
...
@@ -42,6 +41,10 @@ public class UserManager {
}
/**
* ****************************************分割线****合伙人***************************************************************
*/
/**
* 根据输入的userId, 完成递归查找
* @param userId
*/
...
...
@@ -55,11 +58,26 @@ public class UserManager {
result
.
setCode
(
413
);
}
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
);
/**
* 如果这个用户还是代理商身份, 也要处理他的代理商下级
*/
UserAgent
agent
=
userService
.
getUserAgentByUserId
(
partnerAccount
.
getUserId
());
if
(
null
!=
agent
)
{
AgentTree
agentRoot
=
new
AgentTree
();
agentRoot
.
setUserId
(
partnerAccount
.
getUserId
());
agentRoot
.
setAgentId
(
agent
.
getAgentId
());
agentRoot
.
setLevel
(
partnerLevel
);
agentRoot
.
setParentList
(
new
ArrayList
<
ParentAgent
>());
recursiveSet
(
agentRoot
);
}
logger
.
info
(
"done changeRelation for userId: {}"
,
userId
);
result
.
setData
(
"用户刷新成功"
);
}
catch
(
Exception
e
)
{
...
...
@@ -122,11 +140,15 @@ public class UserManager {
sb
.
append
(
p
.
getUserId
()).
append
(
","
);
}
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"begin to
refresh
cache......"
);
logger
.
info
(
"begin to
clean
cache......"
);
logger
.
info
(
"userId: {}, parent is: {}"
,
tree
.
getUserId
(),
sb
.
toString
());
}
deleteRalationByUserId
(
tree
.
getUserId
());
getRelationByUserId
(
tree
.
getUserId
());
/**
* 加快接口返回速度 不再为每一个叶子做刷新
* 只做清楚缓存的操作
*/
// getRelationByUserId(tree.getUserId());
}
/**
...
...
@@ -150,4 +172,91 @@ public class UserManager {
}
}
}
/**
* ****************************************分割线****代理商***************************************************************
*/
/**
* 递归查找, 完成输入的tree的所有下级查找
* @param tree
*/
private
void
recursiveSet
(
AgentTree
tree
)
{
logger
.
info
(
"do recursiveSet for userId: {}"
,
tree
.
getUserId
());
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"do recursiveSet for userId: {}"
,
tree
.
getUserId
());
}
/**
* 先找到直接下级
*/
setChildren
(
tree
);
ArrayList
<
AgentTree
>
children
=
tree
.
getChildrenList
();
/**
* 如果没有下级了 那么直接输出结果
*/
if
(
children
.
size
()
==
0
)
{
outputTree
(
tree
);
}
else
{
/**
* 如果有直接下级, 遍历下级, 对每个下级再执行recursiveSet
*/
for
(
AgentTree
child
:
children
)
{
recursiveSet
(
child
);
/**
* 当完成 对每个下级再执行recursiveSet 之后
* 判断一下, 每个下级是否有直接下级
* 如果有 那么在各自的recursiveSet中 应该没有走到 line:52 的outputTree 方法
* 所以要在这里执行一次, 把他们自己输出
*/
if
(
child
.
getChildrenList
().
size
()
>
0
)
{
outputTree
(
child
);
}
}
/**
* 最后输出自己
*/
outputTree
(
tree
);
}
}
/**
* 完成刷新用户缓存数据
* @param tree
*/
private
void
outputTree
(
AgentTree
tree
)
{
StringBuilder
sb
=
new
StringBuilder
();
ArrayList
<
ParentAgent
>
list
=
tree
.
getParentList
();
for
(
ParentAgent
p
:
list
)
{
sb
.
append
(
p
.
getUserId
()).
append
(
","
);
}
if
(
logger
.
isDebugEnabled
())
{
logger
.
info
(
"begin to clean cache......"
);
logger
.
info
(
"userId: {}, parent is: {}"
,
tree
.
getUserId
(),
sb
.
toString
());
}
deleteRalationByUserId
(
tree
.
getUserId
());
}
/**
* 无递归操作, 只往下查找一级
* 把下级的数据, 设置到输入的tree中的childrenList
* @param tree
*/
private
void
setChildren
(
AgentTree
tree
)
{
ArrayList
<
UserAgent
>
partnerAccountArrayList
=
(
ArrayList
<
UserAgent
>)
userService
.
getUserAgentChildrenByUserId
(
tree
.
getUserId
());
for
(
UserAgent
userAgent
:
partnerAccountArrayList
)
{
Integer
childId
=
userAgent
.
getUserId
();
Integer
agentId
=
userAgent
.
getAgentId
();
Integer
childLevel
=
userAgent
.
getAgentLevel
();
if
(!
tree
.
getParentList
().
contains
(
childId
))
{
ArrayList
<
ParentAgent
>
parentList4Child
=
tree
.
cloneParent
();
parentList4Child
.
add
(
new
ParentAgent
(
tree
.
getUserId
(),
tree
.
getAgentId
(),
tree
.
getLevel
()));
AgentTree
oneChild
=
new
AgentTree
();
oneChild
.
setUserId
(
childId
);
oneChild
.
setAgentId
(
agentId
);
oneChild
.
setLevel
(
childLevel
);
oneChild
.
setParentList
(
parentList4Child
);
tree
.
getChildrenList
().
add
(
oneChild
);
}
}
}
}
src/main/java/com/lanren/huhu/partner/model/AgentTree.java
0 → 100644
View file @
7a34c1c5
package
com
.
lanren
.
huhu
.
partner
.
model
;
import
com.lanren.huhu.partner.model.base.BaseModel
;
import
lombok.Data
;
import
java.util.ArrayList
;
/**
* @author chen
* @title: AgentTree
* @projectName partner
* @description: 存储代理商的关系树结构, childrenList为其直属下级, parentList为父级关系
* @package com.lanren.huhu.partner.model
* @date 2019-07-02 20:15
*/
@Data
public
class
AgentTree
extends
BaseModel
{
Integer
userId
;
Integer
agentId
;
Integer
level
;
ArrayList
<
ParentAgent
>
parentList
;
ArrayList
<
AgentTree
>
childrenList
=
new
ArrayList
<
AgentTree
>();
public
ArrayList
<
ParentAgent
>
cloneParent
()
{
ArrayList
<
ParentAgent
>
copyList
=
new
ArrayList
<
ParentAgent
>();
for
(
ParentAgent
parentAgent
:
this
.
getParentList
())
{
ParentAgent
one
=
new
ParentAgent
(
parentAgent
.
getUserId
(),
parentAgent
.
getAgentId
(),
parentAgent
.
getLevel
());
copyList
.
add
(
one
);
}
return
copyList
;
}
}
src/main/java/com/lanren/huhu/partner/service/UserService.java
View file @
7a34c1c5
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
);
// /** // * 按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
);
// /** // * 按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 @
7a34c1c5
...
...
@@ -69,6 +69,10 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
@Override
public
ParentAgent
getParentAgentByAgentId
(
Integer
agentId
)
{
UserAgent
userAgent
=
baseMapper
.
getParentAgent
(
agentId
);
if
(
userAgent
!=
null
)
{
return
new
ParentAgent
(
userAgent
.
getUserId
(),
userAgent
.
getAgentId
(),
userAgent
.
getAgentLevel
());
}
else
{
return
null
;
}
}
}
src/main/java/com/lanren/huhu/partner/service/impl/UserServiceImpl.java
View file @
7a34c1c5
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