package com.panzhihua.service_community.service.impl;
|
|
import static java.util.Objects.isNull;
|
import static java.util.Objects.nonNull;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.panzhihua.common.model.dtos.community.fms.AddTeamDTO;
|
import com.panzhihua.common.model.dtos.community.fms.EditTeamDTO;
|
import com.panzhihua.common.model.dtos.community.fms.PageFmsTeamDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.fms.CascadeCommVO;
|
import com.panzhihua.common.model.vos.community.fms.ComFmsTeamMemberVO;
|
import com.panzhihua.common.model.vos.community.fms.ComFmsTeamVO;
|
import com.panzhihua.service_community.dao.ComFmsTeamDAO;
|
import com.panzhihua.service_community.dao.ComFmsTeamMemberDAO;
|
import com.panzhihua.service_community.dao.ComFmsTeamMemberRelationDAO;
|
import com.panzhihua.service_community.dao.ComFmsTeamTypeDAO;
|
import com.panzhihua.service_community.entity.ComFmsTeam;
|
import com.panzhihua.service_community.entity.ComFmsTeamMemberRelation;
|
import com.panzhihua.service_community.entity.ComFmsTeamType;
|
import com.panzhihua.service_community.service.ComFmsTeamService;
|
|
/**
|
* 五微服务-微团队(ComFmsTeam)表服务实现类
|
*
|
* @author makejava
|
* @since 2022-02-11 13:35:55
|
*/
|
@Service("comFmsTeamService")
|
public class ComFmsTeamServiceImpl extends ServiceImpl<ComFmsTeamDAO, ComFmsTeam> implements ComFmsTeamService {
|
|
@Resource
|
private ComFmsTeamMemberDAO comFmsTeamMemberDAO;
|
@Resource
|
private ComFmsTeamTypeDAO comFmsTeamTypeDAO;
|
@Resource
|
private ComFmsTeamMemberRelationDAO comFmsTeamMemberRelationDAO;
|
|
/**
|
* 新增团队
|
* @param addTeamDTO
|
* @return
|
*/
|
@Override
|
public R addFmsTeam(AddTeamDTO addTeamDTO) {
|
Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<ComFmsTeam>()
|
.eq(ComFmsTeam::getName, addTeamDTO.getName())
|
.eq(ComFmsTeam::getTeamType, addTeamDTO.getTeamType()));
|
if (count > 0) {
|
return R.fail("该团队已存在于目标类型下");
|
}
|
ComFmsTeam comFmsTeam = new ComFmsTeam();
|
BeanUtils.copyProperties(addTeamDTO, comFmsTeam);
|
int num = this.baseMapper.insert(comFmsTeam);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("新增失败,请重新尝试");
|
}
|
|
/**
|
* 修改团队信息
|
* @param editTeamDTO
|
* @return
|
*/
|
@Override
|
public R editFmsTeam(EditTeamDTO editTeamDTO) {
|
ComFmsTeam comFmsTeam = this.baseMapper.selectById(editTeamDTO.getId());
|
if (isNull(comFmsTeam)) {
|
return R.fail("资源不存在");
|
}
|
Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<ComFmsTeam>()
|
.eq(ComFmsTeam::getName, editTeamDTO.getName())
|
.eq(ComFmsTeam::getTeamType, editTeamDTO.getTeamType()));
|
if (count > 0) {
|
return R.fail("该团队已存在于目标类型下");
|
}
|
BeanUtils.copyProperties(editTeamDTO, comFmsTeam);
|
int num = this.baseMapper.updateById(comFmsTeam);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("修改失败,请重新尝试");
|
}
|
|
/**
|
* 删除团队
|
* @param teamId
|
* @return
|
*/
|
@Override
|
public R deleteFmsTeam(Long teamId) {
|
ComFmsTeam comFmsTeam = this.baseMapper.selectById(teamId);
|
if (isNull(comFmsTeam)) {
|
return R.fail("资源不存在");
|
}
|
Integer count = comFmsTeamMemberRelationDAO.selectCount(new LambdaQueryWrapper<ComFmsTeamMemberRelation>().eq(ComFmsTeamMemberRelation::getTeamId, teamId));
|
if (count > 0) {
|
return R.fail("该数据已被引用,无法删除!");
|
}
|
int num = this.baseMapper.deleteById(teamId);
|
if (num > 0) {
|
return R.ok();
|
}
|
return R.fail("删除失败,请重新尝试");
|
}
|
|
/**
|
* 获取团队列表
|
* @param teamTypeId
|
* @return
|
*/
|
@Override
|
public R listFmsTeam(Long teamTypeId) {
|
List<ComFmsTeam> comFmsTeams = this.baseMapper.selectList(new LambdaQueryWrapper<ComFmsTeam>()
|
.eq(ComFmsTeam::getTeamType, teamTypeId).orderByDesc(ComFmsTeam::getCreatedAt));
|
List<ComFmsTeamVO> fmsTeamVOList = new ArrayList<>();
|
if (!comFmsTeams.isEmpty()) {
|
comFmsTeams.forEach(comFmsTeam -> {
|
ComFmsTeamVO comFmsTeamVO = new ComFmsTeamVO();
|
BeanUtils.copyProperties(comFmsTeam, comFmsTeamVO);
|
fmsTeamVOList.add(comFmsTeamVO);
|
});
|
}
|
return R.ok(fmsTeamVOList);
|
}
|
|
/**
|
* 获取团队详情
|
* @param teamId
|
* @return
|
*/
|
@Override
|
public R detailFmsTeam(Long teamId) {
|
ComFmsTeam comFmsTeam = this.baseMapper.selectById(teamId);
|
if (isNull(comFmsTeam)) {
|
return R.fail("资源不存在");
|
}
|
ComFmsTeamVO comFmsTeamVO = new ComFmsTeamVO();
|
BeanUtils.copyProperties(comFmsTeam, comFmsTeamVO);
|
return R.ok(comFmsTeamVO);
|
}
|
|
/**
|
* 级联查询团队数据
|
* @param communityId
|
* @return
|
*/
|
@Override
|
public R retrieveFmsTeamCascade(Long communityId) {
|
List<ComFmsTeamType> teamTypeList = comFmsTeamTypeDAO.selectList(new LambdaQueryWrapper<ComFmsTeamType>()
|
.eq(ComFmsTeamType::getCommunityId, communityId).orderByDesc(ComFmsTeamType::getCreatedAt));
|
List<CascadeCommVO> cascade = null;
|
if (!teamTypeList.isEmpty()) {
|
List<ComFmsTeam> teamList = this.baseMapper.selectList(new LambdaQueryWrapper<ComFmsTeam>().eq(ComFmsTeam::getCommunityId, communityId));
|
List<CascadeCommVO> allTeamType = teamTypeList.stream().map(e -> {
|
CascadeCommVO cascadeCommVO = new CascadeCommVO();
|
cascadeCommVO.setValue(e.getId());
|
cascadeCommVO.setLabel(e.getName());
|
return cascadeCommVO;
|
}).collect(Collectors.toList());
|
if (!teamList.isEmpty()) {
|
Map<Long, List<CascadeCommVO>> allTeamGroup = teamList.stream().map(e -> {
|
CascadeCommVO cascadeCommVO = new CascadeCommVO();
|
cascadeCommVO.setValue(e.getId());
|
cascadeCommVO.setParentId(e.getTeamType());
|
cascadeCommVO.setLabel(e.getName());
|
return cascadeCommVO;
|
}).collect(Collectors.groupingBy(CascadeCommVO::getParentId));
|
allTeamType.forEach(e -> e.setChildren(allTeamGroup.get(e.getValue())));
|
}
|
cascade = allTeamType.stream().filter(e -> nonNull(e.getChildren()) && !e.getChildren().isEmpty()).collect(Collectors.toList());
|
}
|
return R.ok(cascade);
|
}
|
|
/**
|
* 小程序分页查询团队信息
|
* @param pageFmsTeamDTO
|
* @return
|
*/
|
@Override
|
public R pageFmsTeamApplets(PageFmsTeamDTO pageFmsTeamDTO) {
|
Long pageNum = pageFmsTeamDTO.getPageNum();
|
Long pageSize = pageFmsTeamDTO.getPageSize();
|
List<ComFmsTeamVO> teamList;
|
if (nonNull(pageNum) && nonNull(pageSize)) {
|
Page page = new Page<>();
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<ComFmsTeamVO> fmsTeamIPage = this.baseMapper.pageFmsTeamApplets(page, pageFmsTeamDTO);
|
teamList = fmsTeamIPage.getRecords();
|
if (!teamList.isEmpty()) {
|
teamList.forEach(e -> {
|
List<ComFmsTeamMemberVO> members = comFmsTeamMemberDAO.selectVOListByTeamId(e.getId());
|
e.setTeamMemberTotal(members.size());
|
e.setMemberList(members);
|
});
|
}
|
return R.ok(fmsTeamIPage);
|
}
|
teamList = this.baseMapper.listFmsTeamApplets(pageFmsTeamDTO);
|
if (!teamList.isEmpty()) {
|
teamList.forEach(e -> {
|
List<ComFmsTeamMemberVO> members = comFmsTeamMemberDAO.selectVOListByTeamId(e.getId());
|
e.setTeamMemberTotal(members.size());
|
e.setMemberList(members);
|
});
|
}
|
return R.ok(teamList);
|
}
|
}
|