Commit 3285f46b by guanchen

添加参数校验

添加查找上级合伙人
parent 76fbae87
package com.lanren.huhu.partner.controller;
import com.lanren.huhu.partner.manager.UserAgentManager;
import com.lanren.huhu.partner.model.Agent;
import com.lanren.huhu.partner.model.AgentRsp;
import com.lanren.huhu.partner.result.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime;
/**
* @author chen
*/
@RestController
@RequestMapping("/v1/agent")
public class AgentController {
private static Logger logger = LoggerFactory.getLogger(AgentController.class);
@Autowired
UserAgentManager userAgentManager;
@RequestMapping(value = "/level", method = RequestMethod.POST)
public Result<AgentRsp> getAgentLevel(@RequestBody @Valid Agent agent, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
logger.info("getLevel agentId:{},header:{},time:{}", agent.getAgentId(), headers.keySet().toArray(), LocalDateTime.now());
}
return userAgentManager.getAgentLevel(agent.getAgentId());
}
}
package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.domain.PartnerAccount;import com.lanren.huhu.partner.manager.PartnerAccountManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.result.Result;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime;import java.util.Map; /** * @author houseme * @date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerAccountManager partnerAccountManager; @RequestMapping(value = "/{id}", method = RequestMethod.GET) public Result<PartnerAccount> one(@PathVariable("id") Integer id, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("partner one userId:{},header:{},time:{}", id, headers.entrySet().toString(), LocalDateTime.now()); } return partnerAccountManager.findByUserId(id); } @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<Map<String, Integer>> getPartnerLevel(@RequestParam Integer userId, @RequestBody Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{},header:{},time:{}", userId, headers.entrySet().toArray(), LocalDateTime.now()); } return partnerAccountManager.getPartnerLevel(partner.getUserId()); }} package com.lanren.huhu.partner.controller; import com.lanren.huhu.partner.manager.PartnerAccountManager;import com.lanren.huhu.partner.model.Partner;import com.lanren.huhu.partner.model.PartnerRsp;import com.lanren.huhu.partner.result.Result;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.web.bind.annotation.*; import javax.validation.Valid;import java.time.LocalDateTime; /** * @author houseme * @date 2019-06-26 11:00 * @Project partner * @Package com.lanren.huhu.partner.controller * @File: PartnerController */@RestController@RequestMapping("/v1/partner")public class PartnerController { private static Logger logger = LoggerFactory.getLogger(PartnerController.class); @Autowired private PartnerAccountManager partnerAccountManager; // @RequestMapping(value = "/{id}", method = RequestMethod.GET) // public Result<PartnerAccount> one(@PathVariable("id") Integer id, @RequestHeader HttpHeaders headers) { // if (logger.isInfoEnabled()) { // logger.info("partner one userId:{ },header:{},time:{}", id, headers.keySet().toArray(), LocalDateTime.now()); // } // return partnerAccountManager.findByUserId(id); // } @RequestMapping(value = "/level", method = RequestMethod.POST) public Result<PartnerRsp> getPartnerLevel(@RequestBody @Valid Partner partner, @RequestHeader HttpHeaders headers) { if (logger.isInfoEnabled()) { logger.info("getPartnerLevel userId:{ },header:{},time:{}", partner.getUserId(), headers.keySet().toArray(), LocalDateTime.now()); } return partnerAccountManager.getPartnerLevel(partner.getUserId()); } }
\ No newline at end of file \ No newline at end of file
......
package com.lanren.huhu.partner.controller; package com.lanren.huhu.partner.controller;
import com.lanren.huhu.partner.domain.PartnerAccount;
import com.lanren.huhu.partner.manager.PartnerAccountManager;
import com.lanren.huhu.partner.manager.UserManager; import com.lanren.huhu.partner.manager.UserManager;
import com.lanren.huhu.partner.model.User;
import com.lanren.huhu.partner.result.Result; import com.lanren.huhu.partner.result.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDateTime;
/** /**
* @author chen * @author chen
*/ */
@RestController @RestController
@RequestMapping("/v1/user") @RequestMapping("/v1/user")
public class UserController { public class UserController {
private static Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired @Autowired
private UserManager userManager; private UserManager userManager;
@Autowired @RequestMapping(value = "/relation", method = RequestMethod.POST)
private PartnerAccountManager partnerAccountManager; public Result<User> getRelation(@RequestBody @Valid User user, @RequestHeader HttpHeaders headers) {
if (logger.isInfoEnabled()) {
@RequestMapping(value = "/{id}", method = RequestMethod.GET) logger.info("getPartnerLevel userId:{ },header:{},time:{}", user.getUserId(), headers.keySet().toArray(), LocalDateTime.now());
public Result<PartnerAccount> getUserName(@PathVariable("id") Integer id, @RequestHeader HttpHeaders headers) {
return partnerAccountManager.findByUserId(id);
} }
return userManager.getRelation(user);
}
} }
...@@ -17,4 +17,9 @@ public interface PartnerAccountMapper extends BaseMapper<PartnerAccount> { ...@@ -17,4 +17,9 @@ public interface PartnerAccountMapper extends BaseMapper<PartnerAccount> {
int insertOrUpdateSelective(PartnerAccount record); int insertOrUpdateSelective(PartnerAccount record);
@Select("SELECT b.* \n" +
"FROM partner_invite_relation a\n" +
"JOIN partner_account b on a.invite_user_id=b.user_id\n" +
"WHERE a.user_id=#{userId}")
PartnerAccount getParentByUserId(Integer userId);
} }
\ No newline at end of file
package com.lanren.huhu.partner.manager; import com.lanren.huhu.partner.domain.PartnerAccount;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;import java.util.HashMap;import java.util.Map; /** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */@Componentpublic 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()); } result.setData(partnerAccountService.getOneByUserId(userId)); return result; } public Result<Map<String, Integer>> getPartnerLevel(Integer userId) { if (logger.isDebugEnabled()) { logger.info("PartnerAccountManager getPartnerLevel userId:{},time:{}", userId, LocalDateTime.now()); } Result<Map<String, Integer>> result = new Result<>(); Map<String, Integer> map = new HashMap<String, Integer>(); int partnerLevel; PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); if (null != partnerAccount) { if (partnerAccount.getIsSuperPartner() ==1) { partnerLevel = 30; } else { partnerLevel = partnerAccount.getPartnerLevel(); } } else { partnerLevel = -1; result.setCode(601); } map.put("level", partnerLevel); result.setData(map); return result; }} 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;import java.util.HashMap;import java.util.Map; /** * @author houseme * @date 2019-06-26 10:56 * @Project partner * @Package com.lanren.huhu.partner.manager * @File: PartnerAccountManager */@Componentpublic 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()); } result.setData(partnerAccountService.getOneByUserId(userId)); 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<>(); int partnerLevel; PartnerAccount partnerAccount = partnerAccountService.getOneByUserId(userId); if (null != partnerAccount) { if (partnerAccount.getIsSuperPartner() ==1) { partnerLevel = 30; } else { partnerLevel = partnerAccount.getPartnerLevel(); } } else { partnerLevel = -1; result.setCode(60404); } result.setData(new PartnerRsp(partnerLevel)); return result; }}
\ No newline at end of file \ No newline at end of file
......
package com.lanren.huhu.partner.manager;
import com.lanren.huhu.partner.domain.UserAgent;
import com.lanren.huhu.partner.model.AgentRsp;
import com.lanren.huhu.partner.model.PartnerRsp;
import com.lanren.huhu.partner.result.Result;
import com.lanren.huhu.partner.service.UserAgentService;
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 chen
*/
@Component
public class UserAgentManager {
private static Logger logger = LoggerFactory.getLogger(UserAgentManager.class);
@Autowired
UserAgentService userAgentService;
/***
* * 获取代理商等级 1 总代, 2 大区, 3 省, 4 市
* @param agentId
* @return
*/
public Result<AgentRsp> getAgentLevel(Integer agentId) {
if (logger.isDebugEnabled()) {
logger.info("UserAgentManager getLevel agentId:{},time:{}", agentId, LocalDateTime.now());
}
Result<AgentRsp> result = new Result<>();
UserAgent userAgent = userAgentService.getOneByAgentId(agentId);
int agentLevel;
if (null != userAgent) {
agentLevel = userAgent.getAgentLevel();
} else {
agentLevel = -1;
result.setCode(601);
}
result.setData(new AgentRsp(agentLevel));
return result;
}
}
package com.lanren.huhu.partner.manager; 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.model.User;
import com.lanren.huhu.partner.result.Result;
import com.lanren.huhu.partner.service.PartnerAccountService; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
/** /**
* @author houseme * @author houseme
*/ */
@Component @Component
public class UserManager { public class UserManager {
private static Logger logger = LoggerFactory.getLogger(UserManager.class);
@Autowired @Autowired
private PartnerAccountService partnerAccountService; private PartnerAccountService partnerAccountService;
/**
* @description: TODO
* @param user
* @return Result<String>
* @throws
* @author chen
* @date 2019-06-26 20:01
*/
public Result<User> getRelation(User user) {
setPartnerList(user);
setAgentList(user);
Result<User> result = new Result<User>();
result.setData(user);
return result;
}
/**
* @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>();
user.setPartnerList(partnerList);
}
/**
* 无限找
*/
int loopUserId = user.getUserId();
while (true) {
logger.info("now loop uid is {}", loopUserId);
User.ParentPartner parentPartner = getParentPartner(loopUserId);
if (parentPartner == null) {
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());
}
private void setAgentList(User user) {
}
private User.ParentPartner getParentPartner(Integer userId) {
PartnerAccount partnerAccount = partnerAccountService.getParentPartner(userId);
User.ParentPartner parentPartner = null;
if (null != partnerAccount) {
int partnerLevel = partnerAccount.getIsSuperPartner() == 1 ? 30 : partnerAccount.getPartnerLevel();
parentPartner = new User.ParentPartner(partnerAccount.getUserId(),partnerLevel);
}
return parentPartner;
}
} }
package com.lanren.huhu.partner.model;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* @author chen
* @title: Agent
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.model
* @date 2019-06-2619:33
*/
@Data
public class Agent {
private static final long serialVersionUID = 1L;
@NotNull(message = "agentId 不能为空")
@Min(value = 1, message = "agentId 需要大于0")
int agentId;
int level;
}
package com.lanren.huhu.partner.model;
import lombok.Data;
@Data
public class AgentRsp {
private static final long serialVersionUID = 1L;
int level;
public AgentRsp(int level) {
this.level = level;
}
}
package com.lanren.huhu.partner.model; import lombok.Data; import java.io.Serializable; /** * @author houseme * @date 2019-06-26 11:47 * @Project partner * @Package com.lanren.huhu.partner.model * @File: Partner */@Datapublic class Partner implements Serializable { private static final long serialVersionUID = 1L; private Integer level; private Integer userId;} package com.lanren.huhu.partner.model; import lombok.Data; import javax.validation.constraints.Digits;import javax.validation.constraints.Min;import javax.validation.constraints.NotEmpty;import javax.validation.constraints.NotNull;import java.io.Serializable; /** * @author houseme * @date 2019-06-26 11:47 * @Project partner * @Package com.lanren.huhu.partner.model * @File: Partner */@Datapublic class Partner implements Serializable { private static final long serialVersionUID = 1L; @NotNull(message = "userId 不能为空") @Min(value = 1, message = "userId 需要大于0") private int userId; private int level;}
\ No newline at end of file \ No newline at end of file
......
package com.lanren.huhu.partner.model;
import lombok.Data;
@Data
public class PartnerRsp {
private static final long serialVersionUID = 1L;
int level;
public PartnerRsp(int level) {
this.level = level;
}
}
package com.lanren.huhu.partner.model;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
/**
* @author chen
* @title: User
* @projectName partner
* @description: TODO
* @package com.lanren.huhu.partner.model
* @date 2019-06-2619:56
*/
@Data
public class User {
private static final long serialVersionUID = 1L;
@NotNull(message = "userId 不能为空")
@Min(value = 1, message = "userId 需要大于0")
private int userId;
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;
}
}
...@@ -49,4 +49,14 @@ public interface PartnerAccountService extends IService<PartnerAccount> { ...@@ -49,4 +49,14 @@ public interface PartnerAccountService extends IService<PartnerAccount> {
* @return * @return
*/ */
PartnerAccount getOneByUserId(Integer userId); PartnerAccount getOneByUserId(Integer userId);
/**
* @description: TODO
* @param userId
* @return PartnerAccount
* @throws
* @author chen
* @date 2019-06-26 20:13
*/
PartnerAccount getParentPartner(Integer userId);
} }
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 org.springframework.beans.factory.annotation.Autowired;
public interface UserAgentService extends IService<UserAgent>{
int updateBatch(List<UserAgent> list);
int batchInsert(List<UserAgent> list);
int insertOrUpdate(UserAgent record);
int insertOrUpdateSelective(UserAgent record);
/***
* 根据代理商id查询账户信息
* @param agentId
* @return
*/
UserAgent getOneByAgentId(Integer agentId);
}
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lanren.huhu.partner.dao.PartnerAccountMapper; import com.lanren.huhu.partner.dao.PartnerAccountMapper;
import com.lanren.huhu.partner.domain.PartnerAccount; import com.lanren.huhu.partner.domain.PartnerAccount;
import com.lanren.huhu.partner.service.PartnerAccountService; import com.lanren.huhu.partner.service.PartnerAccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
...@@ -14,6 +15,8 @@ import java.util.List; ...@@ -14,6 +15,8 @@ import java.util.List;
*/ */
@Service @Service
public class PartnerAccountServiceImpl extends ServiceImpl<PartnerAccountMapper, PartnerAccount> implements PartnerAccountService { public class PartnerAccountServiceImpl extends ServiceImpl<PartnerAccountMapper, PartnerAccount> implements PartnerAccountService {
@Autowired
PartnerAccountMapper partnerAccountMapper;
@Override @Override
public int updateBatch(List<PartnerAccount> list) { public int updateBatch(List<PartnerAccount> list) {
...@@ -42,4 +45,9 @@ public class PartnerAccountServiceImpl extends ServiceImpl<PartnerAccountMapper, ...@@ -42,4 +45,9 @@ 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);
}
} }
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.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
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.service.UserAgentService;
@Service
public class UserAgentServiceImpl extends ServiceImpl<UserAgentMapper, UserAgent> implements UserAgentService{
@Override
public int updateBatch(List<UserAgent> list) {
return baseMapper.updateBatch(list);
}
@Override
public int batchInsert(List<UserAgent> list) {
return baseMapper.batchInsert(list);
}
@Override
public int insertOrUpdate(UserAgent record) {
return baseMapper.insertOrUpdate(record);
}
@Override
public int insertOrUpdateSelective(UserAgent record) {
return baseMapper.insertOrUpdateSelective(record);
}
@Override
public UserAgent getOneByAgentId(Integer agentId) {
QueryWrapper<UserAgent> queryWrapper = new QueryWrapper();
queryWrapper.eq("agent_id", agentId);
return baseMapper.selectOne(queryWrapper);
}
}
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