package com.sinata.modular.member.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.sinata.common.enums.EnumMemberGrade;
|
import com.sinata.modular.member.dao.MemUserRelationMapper;
|
import com.sinata.modular.member.model.MemUser;
|
import com.sinata.modular.member.model.MemUserRelation;
|
import com.sinata.modular.member.service.IMemUserRelationService;
|
import com.sinata.modular.member.service.IMemUserService;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 会员邀请关系 服务实现类
|
* </p>
|
*
|
* @author goku
|
* @since 2023-03-23
|
*/
|
@Service
|
public class MemUserRelationServiceImpl extends ServiceImpl<MemUserRelationMapper, MemUserRelation> implements IMemUserRelationService {
|
|
@Resource
|
private IMemUserService memUserService;
|
|
@Override
|
public Integer getParentIdCount(Integer parentId) {
|
Wrapper<MemUserRelation> wrapper = new EntityWrapper<MemUserRelation>().eq("parent_id", parentId);
|
return baseMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public List<Map<String, Object>> getListParentIdCount(List<Map<String, Object>> list, String userKey) {
|
Object[] idArray = list.stream().map(o -> o.get(userKey)).collect(Collectors.toList()).toArray();
|
|
Wrapper<MemUserRelation> wrapper = new EntityWrapper<MemUserRelation>()
|
.setSqlSelect("parent_id, count(1) count")
|
.groupBy("parent_id")
|
.in("parent_id", idArray);
|
return baseMapper.selectMaps(wrapper);
|
}
|
|
@Override
|
public List<Map<String, Object>> getListParentGradeIdCount(List<Map<String, Object>> list, String userKey, Integer memberGradeId) {
|
Object[] idArray = new Object[]{0};
|
if (list != null && list.size() > 0) {
|
idArray = list.stream().map(o -> o.get(userKey)).collect(Collectors.toList()).toArray();
|
}
|
return baseMapper.getListParentGradeIdCount(idArray, memberGradeId);
|
}
|
|
@Override
|
public MemUser getParentUserById(Integer userId) {
|
return baseMapper.getParentUserById(userId);
|
}
|
|
@Override
|
public Integer countTeamMemberBy(Integer memberId, Integer gradeId, Integer aboveId) {
|
return baseMapper.countTeamMemberBy(memberId, gradeId, aboveId);
|
}
|
|
@Override
|
public List<Map<String, Object>> myTeam(Integer userId, List<Integer> gradeList, String showId, String beginTime, String endTime) {
|
return baseMapper.myTeam(userId, gradeList, showId, beginTime, endTime);
|
}
|
|
@Override
|
public List<Map<String, Object>> myTeam(Page<Map<String, Object>> page, Integer userId, List<Integer> gradeList, String showId, String beginTime, String endTime) {
|
if (page != null) {
|
return baseMapper.myTeam(page, userId, gradeList, showId, beginTime, endTime);
|
}
|
return baseMapper.myTeam(userId, gradeList, showId, beginTime, endTime);
|
}
|
|
@Override
|
public int myTeamCount(Integer userId, List<Integer> gradeList, String showId, String beginTime, String endTime) {
|
return baseMapper.myTeamCount(userId, gradeList, showId, beginTime, endTime);
|
}
|
|
@Override
|
public List<Map<String, Object>> wrapperUserRelation(List<Map<String, Object>> list, String userKey) {
|
if (CollectionUtils.isEmpty(list)) {
|
return null;
|
}
|
// 用户ID串
|
List<Integer> userIds = list.stream().map(o -> Integer.parseInt(o.get(userKey).toString())).collect(Collectors.toList());
|
// 用户列表
|
List<Map<String, Object>> merchantList = baseMapper.getMemUserRelationByUserIds(userIds);
|
if (CollectionUtils.isNotEmpty(merchantList)) {
|
// 封装数据
|
for (Map<String, Object> map : list) {
|
for (Map<String, Object> u : merchantList) {
|
if (u.get("id").toString().equals(map.get(userKey) + "")) {
|
map.put(userKey + "_parentId", u.get("parentId"));
|
map.put(userKey + "_nickName", u.get("nickName"));
|
}
|
}
|
}
|
}
|
|
return null;
|
}
|
|
|
@Override
|
public MemUser[] getParentV4V5ByRelationPath(List<MemUser> v4UserList, List<MemUser> v5UserList, String relationPath, Integer memberGradeId) {
|
MemUser[] array = new MemUser[]{null, null};
|
|
if (v4UserList == null) {
|
v4UserList = memUserService.getUserListByGrade(EnumMemberGrade.G_4.index);
|
}
|
if (v5UserList == null) {
|
v5UserList = memUserService.getUserListByGrade(EnumMemberGrade.G_5.index);
|
}
|
|
if (relationPath != null) {
|
String[] pathArray = relationPath.split("/");
|
for (String p : pathArray) {
|
if (memberGradeId == null || memberGradeId < EnumMemberGrade.G_4.index) {
|
// 首先获取v4
|
for (MemUser v4 : v4UserList) {
|
if (v4.getId().toString().equals(p)) {
|
array[0] = v4;
|
break;
|
}
|
}
|
}
|
if (memberGradeId == null || memberGradeId < EnumMemberGrade.G_5.index) {
|
// 获取v5
|
for (MemUser v5 : v5UserList) {
|
if (v5.getId().toString().equals(p)) {
|
array[1] = v5;
|
break;
|
}
|
}
|
}
|
}
|
}
|
return array;
|
}
|
@Override
|
public MemUser[] getParentV4V5ByRelationPath2(String relationPath, Integer memberGradeId) {
|
MemUser[] array = new MemUser[]{null, null};
|
if (relationPath != null) {
|
String[] pathArray = relationPath.split("/");
|
String parentId = pathArray[pathArray.length - 2];
|
MemUser parentUser = memUserService.selectById(parentId);
|
findParents(parentUser, pathArray, array);
|
}
|
return array;
|
}
|
private void findParents(MemUser user, String[] pathArray, MemUser[] array) {
|
if (user != null) {
|
Integer memberGradeId = user.getMemberGradeId();
|
if (memberGradeId == EnumMemberGrade.G_3.index) {
|
String grandParentId = pathArray[pathArray.length - 3];
|
MemUser grandParent = memUserService.selectById(grandParentId);
|
if (grandParent != null && grandParent.getMemberGradeId() == EnumMemberGrade.G_4.index) {
|
array[0] = grandParent;
|
String greatGrandParentId = pathArray[pathArray.length - 3];
|
MemUser greatGrandParent = memUserService.selectById(greatGrandParentId);
|
if (greatGrandParent != null && greatGrandParent.getMemberGradeId() == EnumMemberGrade.G_5.index) {
|
array[1] = greatGrandParent;
|
}
|
}
|
} else if (memberGradeId == EnumMemberGrade.G_4.index) {
|
array[0] = user;
|
String parentId = pathArray[pathArray.length - 3];
|
MemUser parent = memUserService.selectById(parentId);
|
if (parent != null && parent.getMemberGradeId() == EnumMemberGrade.G_5.index) {
|
array[1] = parent;
|
}
|
} else if (memberGradeId == EnumMemberGrade.G_5.index) {
|
array[0] = user;
|
array[1] = user;
|
}
|
}
|
}
|
}
|