Commit c1de7605 by guanchen

完成接口 /user/relation

parent 46588105
......@@ -17,6 +17,11 @@ public interface PartnerAccountMapper extends BaseMapper<PartnerAccount> {
int insertOrUpdateSelective(PartnerAccount record);
/**
* 按uid查找上级 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" +
......
......@@ -5,6 +5,7 @@ import com.lanren.huhu.partner.domain.UserAgent;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserAgentMapper extends BaseMapper<UserAgent> {
......@@ -15,4 +16,15 @@ public interface UserAgentMapper extends BaseMapper<UserAgent> {
int insertOrUpdate(UserAgent record);
int insertOrUpdateSelective(UserAgent record);
/**
* 按agentId查找上级 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" +
"WHERE a.agent_id=#{agentId} and b.agent_level<=4")
UserAgent getParentAgent(Integer agentId);
}
\ No newline at end of file
package com.lanren.huhu.partner.manager;
import com.lanren.huhu.partner.controller.AgentController;
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.result.Result;
import com.lanren.huhu.partner.service.PartnerAccountService;
import com.lanren.huhu.partner.service.UserAgentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -19,14 +22,16 @@ import java.util.ArrayList;
public class UserManager {
private static Logger logger = LoggerFactory.getLogger(UserManager.class);
@Autowired
private PartnerAccountService partnerAccountService;
@Autowired
private UserAgentService userAgentService;
/**
* @description: TODO
* @description: 根据用户id, 查找一个用户的全部合伙人上级 和 代理商上级
* @param user
* @return Result<String>
* @return Result<User>
* @throws
* @author chen
* @date 2019-06-26 20:01
......@@ -40,17 +45,15 @@ public class UserManager {
}
/**
* @description: 找到一个用户邀请关系列表, set到User对象的partnerList中
* @description: 查找一个用户的全部合伙人上级, set到User对象的partnerList中
* @param user
* @return void
* @throws
* @author chen
* @date 2019-06-26 20:37
*/
private void setPartnerList(User user) {
logger.info("begin setPartnerList for user: {} ......", user.getUserId());
if (user.getPartnerList() == null) {
ArrayList<User.ParentPartner> partnerList = new ArrayList<User.ParentPartner>();
if (null == user.getPartnerList()) {
ArrayList<ParentPartner> partnerList = new ArrayList<ParentPartner>();
user.setPartnerList(partnerList);
}
/**
......@@ -59,34 +62,98 @@ public class UserManager {
int loopUserId = user.getUserId();
while (true) {
logger.info("now loop uid is {}", loopUserId);
User.ParentPartner parentPartner = getParentPartner(loopUserId);
if (parentPartner == null) {
ParentPartner parentPartner = getParentPartner(loopUserId);
if (null == parentPartner) {
break;
} else {
logger.info("parent is {} ", parentPartner.getUserId());
user.getPartnerList().add(parentPartner);
loopUserId = parentPartner.getUserId();
}
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
logger.info("setPartnerList for user: {} end", user.getUserId());
}
/**
* @description: 查找一个用户的全部代理商上级 set到User对象的agentList中
* @param user
* @date 2019-06-27 11:16
*/
private void setAgentList(User user) {
logger.info("begin setAgentList for user: {} ......", user.getUserId());
if (null == user.getAgentList()) {
ArrayList<ParentAgent> agentList = new ArrayList<ParentAgent>();
user.setAgentList(agentList);
}
/**
* 无限找
* 先无限找上级合伙人, 直到找到第一个是代理商的合伙人
*/
int loopUserId = user.getUserId();
while (true) {
logger.info("now loop uid is {}", loopUserId);
ParentPartner parentPartner = getParentPartner(loopUserId);
if (null != parentPartner) {
UserAgent userAgent = userAgentService.getOneByUserId(parentPartner.getUserId());
if (null != userAgent) {
/**
* 然后开始 无限找 这个人的上级代理商
*/
logger.info("find first agent({}) for user: {}", userAgent.getAgentId(), user.getUserId());
user.getAgentList().add(new ParentAgent(userAgent.getAgentId(), userAgent.getAgentLevel()));
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());
user.getAgentList().add(new ParentAgent(loopUserAgent.getAgentId(), loopUserAgent.getLevel()));
loogAgentId = loopUserAgent.getAgentId();
}
}
logger.info("loop find parent agent end");
break;
} else {
break;
}
} else {
logger.info("parent is {} ", parentPartner.getUserId());
user.getPartnerList().add(parentPartner);
loopUserId = parentPartner.getUserId();
}
}
logger.info("setAgentList for user: {} end", user.getUserId());
}
private User.ParentPartner getParentPartner(Integer userId) {
/**
* 按userId查找上级合伙人的 userId 和 level
* @param userId
* @return
*/
private ParentPartner getParentPartner(Integer userId) {
PartnerAccount partnerAccount = partnerAccountService.getParentPartner(userId);
User.ParentPartner parentPartner = null;
ParentPartner parentPartner = null;
if (null != partnerAccount) {
int partnerLevel = partnerAccount.getIsSuperPartner() == 1 ? 30 : partnerAccount.getPartnerLevel();
parentPartner = new User.ParentPartner(partnerAccount.getUserId(),partnerLevel);
parentPartner = new ParentPartner(partnerAccount.getUserId(),partnerLevel);
}
return parentPartner;
}
/**
* 按agentId 查找上级代理商的 agentId 和 level
* @param agentId
* @return
*/
private ParentAgent getParentAgent(Integer agentId) {
UserAgent userAgent = userAgentService.getParentAgent(agentId);
ParentAgent parentAgent = null;
if (null != userAgent) {
int agentLevel = userAgent.getAgentLevel();
parentAgent = new ParentAgent(userAgent.getAgentId(), agentLevel);
}
return parentAgent;
}
}
package com.lanren.huhu.partner.model;
import lombok.Data;
/**
* @author chen
* @title: ParentAgent
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.model
* @date 2019-06-2711:20
*/
@Data
public class ParentAgent {
int agentId;
int level;
public ParentAgent(int agentId, int level) {
this.agentId = agentId;
this.level = level;
}
}
package com.lanren.huhu.partner.model;
import lombok.Data;
/**
* @author chen
* @title: ParentPartner
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.model
* @date 2019-06-2711:20
*/
@Data
public class ParentPartner {
int userId;
int level;
public ParentPartner(int userId, int level) {
this.userId = userId;
this.level = level;
}
}
......@@ -10,7 +10,7 @@ import java.util.ArrayList;
* @author chen
* @title: User
* @projectName partner
* @description: TODO
* @description: 用户输入/输出
* @package com.lanren.huhu.partner.model
* @date 2019-06-2619:56
*/
......@@ -25,18 +25,4 @@ public class User {
private ArrayList<ParentPartner> partnerList;
private ArrayList<ParentAgent> agentList;
@Data
public static class ParentPartner {
int userId;
int level;
public ParentPartner(int userId, int level) {
this.userId = userId;
this.level = level;
}
}
public static class ParentAgent {
int agentId;
int agentLevel;
}
}
......@@ -23,4 +23,16 @@ public interface UserAgentService extends IService<UserAgent>{
* @return
*/
UserAgent getOneByAgentId(Integer agentId);
/***
* 根据用户id查询账户信息
* @param userId
* @return
*/
UserAgent getOneByUserId(Integer userId);
/**
* 根据代理商id找到上级代理商
*/
UserAgent getParentAgent(Integer agentId);
}
......@@ -2,6 +2,7 @@ package com.lanren.huhu.partner.service.impl;
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;
......@@ -10,9 +11,16 @@ import java.util.List;
import com.lanren.huhu.partner.domain.UserAgent;
import com.lanren.huhu.partner.dao.UserAgentMapper;
import com.lanren.huhu.partner.service.UserAgentService;
/**
* @author chen
*/
@Service
public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent> implements UserAgentService{
@Autowired
UserAgentMapper userAgentMapper;
@Override
public int updateBatch(List<UserAgent> list) {
return baseMapper.updateBatch(list);
......@@ -33,9 +41,23 @@ public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent
@Override
public UserAgent getOneByAgentId(Integer agentId) {
QueryWrapper<UserAgent> queryWrapper = new QueryWrapper();
queryWrapper.eq("agent_id", agentId);
queryWrapper.eq("agent_id", agentId)
.le("agent_level", 4)
;
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);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment