|
@@ -1,5 +1,14 @@
|
|
|
package com.tour.module.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.tour.common.constant.UserConstants;
|
|
|
+import com.tour.common.core.domain.entity.SysUser;
|
|
|
+import com.tour.common.enums.UserTypeEnums;
|
|
|
+import com.tour.common.enums.UserTypeJoinRoleEnums;
|
|
|
+import com.tour.common.exception.CustomException;
|
|
|
+import com.tour.common.utils.SecurityUtils;
|
|
|
+import com.tour.system.service.ISysUserService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -9,6 +18,12 @@ import com.tour.module.mapper.AgentMapper;
|
|
|
import com.tour.module.domain.Agent;
|
|
|
import com.tour.module.service.IAgentService;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
@@ -21,33 +36,293 @@ import java.util.Map;
|
|
|
@Service
|
|
|
public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements IAgentService {
|
|
|
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ ISysUserService userService;
|
|
|
+
|
|
|
@Override
|
|
|
- public List<Agent> queryList(Agent agent) {
|
|
|
+ public List<Agent> queryList(Agent agent, SysUser user) {
|
|
|
LambdaQueryWrapper<Agent> lqw = Wrappers.lambdaQuery();
|
|
|
- if (StringUtils.isNotBlank(agent.getAgentName())){
|
|
|
- lqw.like(Agent::getAgentName ,agent.getAgentName());
|
|
|
+
|
|
|
+ if (agent.getPid() != null) {
|
|
|
+ lqw.eq(Agent::getPid, agent.getPid());
|
|
|
+ } else {
|
|
|
+ if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
|
|
|
+ lqw.eq(Agent::getPid, user.getAgentId()).or().eq(Agent::getId, user.getAgentId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(agent.getAgentName())) {
|
|
|
+ lqw.like(Agent::getAgentName, agent.getAgentName());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (agent.getAgentLevel() != null) {
|
|
|
+ lqw.eq(Agent::getAgentLevel, agent.getAgentLevel());
|
|
|
+ }
|
|
|
+ if (agent.getCommissonRate() != null) {
|
|
|
+ lqw.eq(Agent::getCommissonRate, agent.getCommissonRate());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(agent.getContactName())) {
|
|
|
+ lqw.like(Agent::getContactName, agent.getContactName());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(agent.getAvatar())) {
|
|
|
+ lqw.eq(Agent::getAvatar, agent.getAvatar());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(agent.getMobile())) {
|
|
|
+ lqw.like(Agent::getMobile, agent.getMobile());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(agent.getAddress())) {
|
|
|
+ lqw.eq(Agent::getAddress, agent.getAddress());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(agent.getProvinceName()) && StringUtils.isBlank(agent.getCityName()) && StringUtils.isBlank(agent.getDistrictName())) {
|
|
|
+ List<Agent> provinceList = baseMapper.selectList(new QueryWrapper<Agent>().like("province_name", agent.getProvinceName()).isNull("pid"));
|
|
|
+ List<Long> provinceIds = new ArrayList<>();
|
|
|
+ provinceList.forEach(province -> {
|
|
|
+ provinceIds.add(province.getId());
|
|
|
+ });
|
|
|
+ if (provinceIds.size() > 0) {
|
|
|
+ lqw.and(wrapper -> wrapper.in(Agent::getId, provinceIds).or().in(Agent::getPid, provinceIds));
|
|
|
+ } else {
|
|
|
+ lqw.eq(Agent::getId, -1);
|
|
|
+ }
|
|
|
+ // lqw.like(Agent::getProvinceName ,agent.getProvinceName());
|
|
|
}
|
|
|
- if (agent.getPid() != null){
|
|
|
- lqw.eq(Agent::getPid ,agent.getPid());
|
|
|
+ if (StringUtils.isNotBlank(agent.getCityName()) && StringUtils.isBlank(agent.getDistrictName())) {
|
|
|
+ List<Agent> cityList = baseMapper.selectList(new QueryWrapper<Agent>().like("province_name", agent.getProvinceName())
|
|
|
+ .like("city_name", agent.getCityName()).isNull("pid"));
|
|
|
+ List<Long> cityIds = new ArrayList<>();
|
|
|
+ cityList.forEach(city -> {
|
|
|
+ cityIds.add(city.getId());
|
|
|
+ });
|
|
|
+ if (cityIds.size() > 0) {
|
|
|
+ lqw.and(wrapper -> wrapper.in(Agent::getId, cityIds).or().in(Agent::getPid, cityIds));
|
|
|
+ } else {
|
|
|
+ lqw.eq(Agent::getId, -1);
|
|
|
+ }
|
|
|
+ // lqw.like(Agent::getCityName ,agent.getCityName());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(agent.getCityName())){
|
|
|
- lqw.like(Agent::getCityName ,agent.getCityName());
|
|
|
+ if (StringUtils.isNotBlank(agent.getDistrictName())) {
|
|
|
+ List<Agent> districtList = baseMapper.selectList(new QueryWrapper<Agent>().like("province_name", agent.getProvinceName())
|
|
|
+ .like("city_name", agent.getCityName())
|
|
|
+ .like("district_name", agent.getDistrictName()).isNull("pid"));
|
|
|
+ List<Long> districtIds = new ArrayList<>();
|
|
|
+ districtList.forEach(district -> {
|
|
|
+ districtIds.add(district.getId());
|
|
|
+ });
|
|
|
+ if (districtIds.size() > 0) {
|
|
|
+ lqw.and(wrapper -> wrapper.in(Agent::getId, districtIds).or().in(Agent::getPid, districtIds));
|
|
|
+ } else {
|
|
|
+ lqw.eq(Agent::getId, -1);
|
|
|
+ }
|
|
|
+ // lqw.like(Agent::getDistrictName ,agent.getDistrictName());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(agent.getArea())){
|
|
|
- lqw.eq(Agent::getArea ,agent.getArea());
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(user.getAgentIds())) {
|
|
|
+ lqw.in(Agent::getId, user.getAgentIds());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (agent.getStartTime() != null) {
|
|
|
+ lqw.ge(Agent::getCreateTime, agent.getStartTime());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(agent.getStatus())){
|
|
|
- lqw.eq(Agent::getStatus ,agent.getStatus());
|
|
|
+ if (agent.getEndTime() != null) {
|
|
|
+ lqw.le(Agent::getCreateTime, agent.getEndTime());
|
|
|
}
|
|
|
- if (agent.getRate() != null){
|
|
|
- lqw.eq(Agent::getRate ,agent.getRate());
|
|
|
+ if (CollectionUtils.isNotEmpty(user.getAgentIds())) {
|
|
|
+ lqw.in(Agent::getId, user.getAgentIds());
|
|
|
}
|
|
|
- if (agent.getAmount() != null){
|
|
|
- lqw.eq(Agent::getAmount ,agent.getAmount());
|
|
|
+
|
|
|
+
|
|
|
+ if (agent.getValid() != null && agent.getValid() != 0) {
|
|
|
+ if (agent.getValid() == 1) {
|
|
|
+ lqw.apply("DATEDIFF(valid_end_date,valid_start_date) <= 30");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (agent.getValid() == 2) {
|
|
|
+ lqw.apply("DATEDIFF(valid_end_date,valid_start_date) <= 60");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (agent.getValid() == 3) {
|
|
|
+ lqw.apply("DATEDIFF(valid_end_date,valid_start_date) <= 180");
|
|
|
+ }
|
|
|
}
|
|
|
- if (agent.getWithdrawalAmount() != null){
|
|
|
- lqw.eq(Agent::getWithdrawalAmount ,agent.getWithdrawalAmount());
|
|
|
+ lqw.ne(Agent::getPid, 0);
|
|
|
+ lqw.orderByDesc(Agent::getCreateTime);
|
|
|
+ List<Agent> list = this.list(lqw);
|
|
|
+ list.stream().forEach(agent1 -> {
|
|
|
+ Agent parentAgent = this.getById(agent1.getPid());
|
|
|
+ if (parentAgent != null) {
|
|
|
+ agent1.setPAgentName(parentAgent.getAgentName());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Agent> selectAgentList(Agent agent, SysUser user) {
|
|
|
+ List<Agent> list = new ArrayList<>();
|
|
|
+ if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
|
|
|
+ list = baseMapper.getAgentAll(user.getAgentId());
|
|
|
+ } else {
|
|
|
+ list = this.list();
|
|
|
}
|
|
|
- return this.list(lqw);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Agent> getAgentAll(SysUser user) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Agent getInfoById(Long id) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Agent getInfo(Long id, SysUser user) {
|
|
|
+ Agent agent = this.getById(id);
|
|
|
+// if (agent != null) {
|
|
|
+// Agent superAgent = this.getById(agent.getPid());
|
|
|
+// if (superAgent != null && superAgent.getPid() == null) {
|
|
|
+// agent.setProvinceName(superAgent.getProvinceName());
|
|
|
+// agent.setCityName(superAgent.getCityName());
|
|
|
+// agent.setDistrictName(superAgent.getDistrictName());
|
|
|
+// } else if (superAgent != null && superAgent.getPid() != null) {
|
|
|
+// Agent superLowAgent = this.getById(superAgent.getPid());
|
|
|
+// agent.setProvinceName(superLowAgent.getProvinceName());
|
|
|
+// agent.setCityName(superLowAgent.getCityName());
|
|
|
+// agent.setDistrictName(superLowAgent.getDistrictName());
|
|
|
+// }
|
|
|
+// }
|
|
|
+ return agent;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean createAgent(Agent agent, SysUser user) throws Exception {
|
|
|
+ Agent agents = baseMapper.selectByMobile(agent.getMobile(), null);
|
|
|
+// Integer gentLevel = null;
|
|
|
+ if (agents != null) {
|
|
|
+ throw new CustomException("代理商已存在,请勿重复创建!");
|
|
|
+ }
|
|
|
+ if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(agent.getMobile()))) {
|
|
|
+ throw new CustomException("该手机号码为系统管理员账号,创建失败!");
|
|
|
+ }
|
|
|
+ if (agent.getMobile().length() > 11) {
|
|
|
+ throw new CustomException("手机号过长,规定为11位!");
|
|
|
+ }
|
|
|
+// if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
|
|
|
+ Agent parentAgent = this.getById(user.getAgentId());
|
|
|
+ if (parentAgent != null) {
|
|
|
+ agent.setPid(parentAgent.getId());
|
|
|
+ }else{
|
|
|
+ agent.setPid(1L);
|
|
|
+ }
|
|
|
+
|
|
|
+ agent.setProvinceName(agent.getProvinceName());
|
|
|
+ agent.setCityName(agent.getCityName());
|
|
|
+ agent.setDistrictName(agent.getDistrictName());
|
|
|
+ agent.setCreateTime(new Date());
|
|
|
+ this.save(agent);
|
|
|
+
|
|
|
+ //创建代理商后台账号
|
|
|
+ SysUser agentUser = new SysUser();
|
|
|
+ agentUser.setUserName(agent.getMobile());
|
|
|
+ agentUser.setNickName(agent.getMobile());
|
|
|
+ agentUser.setType(UserTypeEnums.AGENT.getCode());
|
|
|
+ agentUser.setPhonenumber(agent.getMobile());
|
|
|
+ agentUser.setAgentId(agent.getId());
|
|
|
+
|
|
|
+ agentUser.setPassword(agent.getMobile().substring(6));
|
|
|
+ agentUser.setCreateBy(SecurityUtils.getUsername());
|
|
|
+ agentUser.setPassword(SecurityUtils.encryptPassword(agentUser.getPassword()));
|
|
|
+ Long[] roleIds = {UserTypeJoinRoleEnums.AGENT.getRoleId()};
|
|
|
+ agentUser.setRoleIds(roleIds);
|
|
|
+ userService.insertUser(agentUser);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BigDecimal getMaxRete(SysUser user) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Agent> selectAgentListByStatus(Integer status) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Agent> selectByPid(Integer id) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getSAgentNum(List<Long> agentIds, String todayStartDate) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateAgentListAmount(List<Agent> list) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Integer> getAgentIdsByPid(Integer id) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> listAgent(Long id) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Integer> getIds(Integer id) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Integer> getAgentIdsByDspId(Integer dspId) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean updateAgent(Agent agent) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Agent findByArea(String cityName, String districtName) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Agent getByPid(Long pid) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> selectByPid(Long pid) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateAgentStatus(Integer id) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BigDecimal getMinBindFee(String cityId) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Agent> queryFirstLevelList() {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Agent getInfo( SysUser user) {
|
|
|
+ Agent agent = this.getById(user.getAgentId());
|
|
|
+ return agent;
|
|
|
}
|
|
|
}
|