package com.panzhihua.service_community.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import javax.annotation.Resource;
|
|
import com.panzhihua.common.utlis.AgeUtils;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_community.dao.ComActWorkGuideClassifyDAO;
|
import com.panzhihua.service_community.model.dos.ComActWorkGuideClassifyDO;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideAppletsVO;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideDetailAppletsVO;
|
import com.panzhihua.service_community.dao.ComActWorkGuideClassifyDAO;
|
import com.panzhihua.service_community.service.ComActWorkGuideClassifyService;
|
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.ComActWorkGuideDTO;
|
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideMaterialVO;
|
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
|
import com.panzhihua.service_community.dao.ComActDAO;
|
import com.panzhihua.service_community.dao.ComActWorkGuideDAO;
|
import com.panzhihua.service_community.dao.ComActWorkGuideMaterialDAO;
|
import com.panzhihua.service_community.model.dos.ComActDO;
|
import com.panzhihua.service_community.model.dos.ComActWorkGuideDO;
|
import com.panzhihua.service_community.model.dos.ComActWorkGuideMaterialDO;
|
import com.panzhihua.service_community.service.ComActWorkGuideService;
|
|
/**
|
* @auther llming
|
* @describe 办事指南
|
*/
|
@Service
|
public class ComActWorkGuideServiceImpl extends ServiceImpl<ComActWorkGuideDAO, ComActWorkGuideDO>
|
implements ComActWorkGuideService {
|
static String AK = "W3x8DhCWKc2UFIwYgclpRBdL6BeGLLQt"; // 百度地图密钥
|
@Resource
|
ComActWorkGuideMaterialDAO workGuideMaterialDAO;
|
@Resource
|
private ComActWorkGuideClassifyDAO comActWorkGuideClassifyDAO;
|
@Resource
|
ComActDAO comActDAO;
|
|
@Override
|
public R addWorkGuide(ComActWorkGuideDTO workGuideDTO, Long userId) {
|
ComActWorkGuideDO comActWorkGuideDO = new ComActWorkGuideDO();
|
BeanUtils.copyProperties(workGuideDTO, comActWorkGuideDO);
|
comActWorkGuideDO.setCreateBy(userId);
|
this.baseMapper.insert(comActWorkGuideDO);
|
// 保存办事指南材料
|
workGuideDTO.getMaterials().forEach(material -> {
|
ComActWorkGuideMaterialDO workGuideMaterialDO = new ComActWorkGuideMaterialDO();
|
workGuideMaterialDO.setMaterialName(material.getMaterialName());
|
workGuideMaterialDO.setWorkGuideId(comActWorkGuideDO.getId());
|
workGuideMaterialDAO.insert(workGuideMaterialDO);
|
});
|
return R.ok();
|
}
|
|
@Override
|
public R editWorkGuide(ComActWorkGuideDTO workGuideDTO, Long userId) {
|
if (workGuideDTO.getId() == 0L) {
|
return R.fail("Id有误!");
|
}
|
ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideDTO.getId());
|
if (workGuideDO == null) {
|
return R.fail("Id有误!");
|
}
|
BeanUtils.copyProperties(workGuideDTO, workGuideDO);
|
workGuideDO.setUpdateBy(userId);
|
this.baseMapper.updateById(workGuideDO);
|
if (workGuideDTO.getMaterials().size() == 0) {// 若编辑材料为null,执行删除操作
|
workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
|
.eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideDTO.getId()));
|
} else {// 若材料不为空,但是少了数据条数,也要执行删除
|
List<ComActWorkGuideMaterialDO> workGuideMaterialDOS =
|
workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
|
.eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideDTO.getId()));
|
// 1、筛选vo里面和db里,需要删除的材料数据
|
List<Long> voMaterialIds =
|
workGuideDTO.getMaterials().stream().filter(materialVo -> materialVo.getId() != null)
|
.map(ComActWorkGuideMaterialVO::getId).collect(Collectors.toList());
|
List<Long> deleteMaterialIds = workGuideMaterialDOS.stream()
|
.filter(workGuideMaterialDO -> !voMaterialIds.contains(workGuideMaterialDO.getId()))
|
.map(ComActWorkGuideMaterialDO::getId).collect(Collectors.toList());
|
if (deleteMaterialIds.size() != 0) {
|
workGuideMaterialDAO.deleteBatchIds(deleteMaterialIds);
|
}
|
workGuideDTO.getMaterials().forEach(materialsVO -> {
|
if (materialsVO.getId() != null && materialsVO.getId() != 0L) {
|
ComActWorkGuideMaterialDO workGuideMaterialDO1 = workGuideMaterialDOS.stream()
|
.filter(workGuideMaterialDO -> workGuideMaterialDO.getId().equals(materialsVO.getId()))
|
.findFirst().orElse(null);
|
if (workGuideMaterialDO1 != null) {// 2、如果db有,执行编辑
|
workGuideMaterialDO1.setMaterialName(materialsVO.getMaterialName());
|
workGuideMaterialDAO.updateById(workGuideMaterialDO1);
|
}
|
} else {// 3、如果db没有,执行新增
|
ComActWorkGuideMaterialDO newWorkGuideMaterialDO = new ComActWorkGuideMaterialDO();
|
newWorkGuideMaterialDO.setMaterialName(materialsVO.getMaterialName());
|
newWorkGuideMaterialDO.setWorkGuideId(workGuideDO.getId());
|
workGuideMaterialDAO.insert(newWorkGuideMaterialDO);
|
}
|
});
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R detailWorkGuide(String workGuideId, String communityId) {
|
ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideId);
|
if (workGuideDO == null) {
|
return R.fail("Id有误!");
|
}
|
ComActWorkGuideVO vo = new ComActWorkGuideVO();
|
BeanUtils.copyProperties(workGuideDO, vo);
|
|
if(!StringUtils.isEmpty(communityId))
|
{
|
ComActDO comActDO = comActDAO.selectById(communityId);
|
if (comActDO != null) {
|
vo.setAddress(comActDO.getAddress());
|
vo.setPhone(comActDO.getContactsPhone());
|
vo.setLon(comActDO.getLng());
|
vo.setLat(comActDO.getLat());
|
}
|
|
List<ComActWorkGuideMaterialDO> workGuideMaterialDOS =
|
workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
|
.eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
|
workGuideMaterialDOS.forEach(workGuideMaterialDO -> {
|
ComActWorkGuideMaterialVO workGuideMaterialVO = new ComActWorkGuideMaterialVO();
|
workGuideMaterialVO.setId(workGuideMaterialDO.getId());
|
workGuideMaterialVO.setMaterialName(workGuideMaterialDO.getMaterialName());
|
vo.getMaterials().add(workGuideMaterialVO);
|
});
|
}
|
return R.ok(vo);
|
}
|
|
@Override
|
public R pageWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO) {
|
Page page = new Page<>();
|
Long pageNum = pageActWorkGuideDTO.getPageNum();
|
Long pageSize = pageActWorkGuideDTO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1l;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10l;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<ComActWorkGuideVO> iPage = this.baseMapper.pageWorkGuide(page, pageActWorkGuideDTO);
|
if (!iPage.getRecords().isEmpty()) {
|
iPage.getRecords().forEach(comActWorkGuideVO -> {
|
ComActWorkGuideClassifyDO comActWorkGuideClassifyDO = comActWorkGuideClassifyDAO.selectById(comActWorkGuideVO.getClassify());
|
if (comActWorkGuideClassifyDO != null) {
|
comActWorkGuideVO.setClassifyName(comActWorkGuideClassifyDO.getClassifyName());
|
}
|
});
|
}
|
return R.ok(iPage);
|
}
|
|
@Override
|
public R delectWorkGuide(Long workGuideId) {
|
this.baseMapper.deleteById(workGuideId);
|
workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
|
.eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
|
return R.ok();
|
}
|
|
/**
|
* 办事指南列表-按分类查询
|
* @param pageActWorkGuideDTO 请求参数
|
* @return 办事指南分类列表
|
*/
|
@Override
|
public R listWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO){
|
//结果数据集合
|
List<ComActWorkGuideAppletsVO> resultList = new ArrayList<>();
|
|
List<ComActWorkGuideAppletsVO> workGuideClassifyList = comActWorkGuideClassifyDAO.listWorkGuideClassify(pageActWorkGuideDTO.getAreaCode());
|
//通过办事指南分类查询分类下办事指南
|
workGuideClassifyList.forEach(workGuideClassify -> {
|
List<ComActWorkGuideDetailAppletsVO> workGuideList = this.baseMapper.getWorkGuideListByClassifyId(workGuideClassify.getId(),10L);
|
if(workGuideList != null && workGuideList.size() > 0){
|
workGuideClassify.setGuideDetailList(workGuideList);
|
//分类下办事指南数据大于0加入到结果集中向小程序展示
|
resultList.add(workGuideClassify);
|
}
|
});
|
return R.ok(resultList);
|
}
|
|
/**
|
* 根据办事指南分类id查询办事指南列表
|
* @param classifyId 办事指南分类id
|
* @return 办事指南列表数据
|
*/
|
@Override
|
public R listWorkGuideByClassifyId(Long classifyId){
|
return R.ok(this.baseMapper.getWorkGuideListByClassifyId(classifyId,null));
|
}
|
}
|