| package com.xzx.gc.system.service;  | 
|   | 
| import cn.hutool.core.bean.BeanUtil;  | 
| import cn.hutool.core.collection.CollUtil;  | 
| import cn.hutool.core.convert.Convert;  | 
| import cn.hutool.core.date.DateUtil;  | 
| import com.github.pagehelper.PageHelper;  | 
| import com.github.pagehelper.PageInfo;  | 
| import com.xzx.gc.entity.HomeServiceInfo;  | 
| import com.xzx.gc.entity.HomeServiceRef;  | 
| import com.xzx.gc.model.order.PartnerFenceDTO;  | 
| import com.xzx.gc.model.system.HomeServiceAddDTO;  | 
| import com.xzx.gc.model.system.HomeServicePageDTO;  | 
| import com.xzx.gc.system.mapper.HomeServiceInfoMapper;  | 
| import org.springframework.beans.factory.annotation.Autowired;  | 
| import org.springframework.stereotype.Service;  | 
| import org.springframework.transaction.annotation.Transactional;  | 
| import tk.mybatis.mapper.entity.Example;  | 
|   | 
| import java.util.ArrayList;  | 
| import java.util.List;  | 
| import java.util.stream.Collectors;  | 
|   | 
| @Service  | 
| @Transactional  | 
| public class HomeServiceInfoService {  | 
|   | 
|     @Autowired  | 
|     private HomeServiceInfoMapper homeServiceInfoMapper;  | 
|   | 
|     @Autowired  | 
|     private HomeServiceRefService homeServiceRefService;  | 
|   | 
|     /**  | 
|      * 添加  | 
|      */  | 
|     public Long add(HomeServiceAddDTO homeServiceAddDTO){  | 
|   | 
|         HomeServiceInfo homeServiceInfo=new HomeServiceInfo();  | 
|         BeanUtil.copyProperties(homeServiceAddDTO,homeServiceInfo);  | 
|         homeServiceInfo.setDelFlag(false);  | 
|         homeServiceInfo.setCreateTime(DateUtil.now());  | 
|         homeServiceInfo.setId(null);  | 
|         homeServiceInfoMapper.insertSelective(homeServiceInfo);  | 
|   | 
|         //添加二级分类  | 
|         if(homeServiceAddDTO.getLevel().equals(Convert.toShort(2))){  | 
|             addRef(homeServiceAddDTO, homeServiceInfo.getId());  | 
|   | 
|         }  | 
|         return homeServiceInfo.getId();  | 
|     }  | 
|   | 
|     /**  | 
|      * 添加分类与合伙人或围栏的对应关系  | 
|      * @param homeServiceAddDTO  | 
|      * @param serviceId  | 
|      */  | 
|     private void addRef(HomeServiceAddDTO homeServiceAddDTO, Long serviceId) {  | 
|         List<PartnerFenceDTO> list = homeServiceAddDTO.getList();  | 
|   | 
|         List<HomeServiceRef> listObj=CollUtil.newArrayList();  | 
|   | 
|         for (PartnerFenceDTO partnerFenceDTO : list) {  | 
|             List<String> fenceId = partnerFenceDTO.getFenceIds();  | 
|             String partnerId = partnerFenceDTO.getPartnerId();  | 
|             if(CollUtil.isEmpty(fenceId)){  | 
|                 HomeServiceRef homeServiceRef=new HomeServiceRef();  | 
|                 homeServiceRef.setServiceId(serviceId);  | 
|                 homeServiceRef.setRefType(Convert.toShort(1));  | 
|                 homeServiceRef.setPartnerId(partnerId);  | 
|                 listObj.add(homeServiceRef);  | 
|             }else {  | 
|                 for (String s : fenceId) {  | 
|                     HomeServiceRef homeServiceRef=new HomeServiceRef();  | 
|                     homeServiceRef.setServiceId(serviceId);  | 
|                     homeServiceRef.setRefType(Convert.toShort(2));  | 
|                     homeServiceRef.setPartnerId(partnerId);  | 
|                     homeServiceRef.setFenceId(s);  | 
|                     listObj.add(homeServiceRef);  | 
|                 }  | 
|   | 
|             }  | 
|         }  | 
|   | 
|         if(CollUtil.isNotEmpty(listObj)){  | 
|             homeServiceRefService.addBatch(listObj);  | 
|         }  | 
|     }  | 
|   | 
|     /**  | 
|      * 根据父ID查询  | 
|      * @param parentId  | 
|      * @return  | 
|      */  | 
|     public List<HomeServiceInfo> findByParentId(Long parentId,Short showFlag){  | 
|         Example example=new Example(HomeServiceInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("parentId",Convert.toLong(parentId));  | 
|         criteria.andEqualTo("delFlag",false);  | 
|         if(showFlag!=null){  | 
|             criteria.andEqualTo("showFlag",showFlag);  | 
|         }  | 
|         example.setOrderByClause("sort asc");  | 
|         return homeServiceInfoMapper.selectByExample(example);  | 
|     }  | 
|   | 
|   | 
|     public List<HomeServiceInfo> findByLevel(Short level){  | 
|         Example example=new Example(HomeServiceInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("level",level);  | 
|         criteria.andEqualTo("delFlag",false);  | 
|         example.setOrderByClause("create_time desc");  | 
|         return homeServiceInfoMapper.selectByExample(example);  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 分页查询  | 
|      * @param homeServicePageDTO  | 
|      * @return  | 
|      */  | 
|     public PageInfo<HomeServiceInfo> page(HomeServicePageDTO homeServicePageDTO) {  | 
|         PageHelper.startPage(homeServicePageDTO.getPageNo(),homeServicePageDTO.getPageSize());  | 
|         List<HomeServiceInfo> list=homeServiceInfoMapper.page(homeServicePageDTO);  | 
|         return new PageInfo<>(list);  | 
|     }  | 
|   | 
|     public HomeServiceInfo findById(Long id){  | 
|         return homeServiceInfoMapper.selectByPrimaryKey(id);  | 
|     }  | 
|   | 
|     public void deleteById(Long id){  | 
|         HomeServiceInfo homeServiceInfo=new HomeServiceInfo();  | 
|         homeServiceInfo.setId(id);  | 
|         homeServiceInfo.setDelFlag(true);  | 
|         homeServiceInfoMapper.updateByPrimaryKeySelective(homeServiceInfo);  | 
|     }  | 
|   | 
|     public void updateById(HomeServiceInfo homeServiceInfo){  | 
|         homeServiceInfoMapper.updateByPrimaryKeySelective(homeServiceInfo);  | 
|     }  | 
|   | 
|   | 
|     public void update(HomeServiceAddDTO homeServiceAddDTO) {  | 
|         //先删除 再加  | 
|         deleteById(homeServiceAddDTO.getId());  | 
|         //删除关联关系  | 
|         if(homeServiceAddDTO.getLevel().intValue()==2){  | 
|             homeServiceRefService.deleteByServiceId(homeServiceAddDTO.getId());  | 
|         }  | 
|         Long add = add(homeServiceAddDTO);  | 
|   | 
|         //更改关联关系  | 
|         if(homeServiceAddDTO.getLevel().intValue()==2) {  | 
|             updateParentByParentId(homeServiceAddDTO.getId(),add);  | 
|         }  | 
|   | 
| //        HomeServiceInfo homeServiceInfo=new HomeServiceInfo();  | 
| //        BeanUtil.copyProperties(homeServiceAddDTO,homeServiceInfo);  | 
| //        updateById(homeServiceInfo);  | 
| //  | 
| //        List<PartnerFenceDTO> list = homeServiceAddDTO.getList();  | 
| //        if(CollUtil.isNotEmpty(list)){  | 
| //            homeServiceRefService.deleteByServiceId(homeServiceAddDTO.getId());  | 
| //            addRef(homeServiceAddDTO,homeServiceAddDTO.getId());  | 
| //        }  | 
|   | 
|     }  | 
|   | 
|     /**  | 
|      * 将父级id更改为新的  | 
|      * @param oldParentId  | 
|      * @param newParentId  | 
|      */  | 
|     public void updateParentByParentId(Long oldParentId,Long newParentId){  | 
|         Example example=new Example(HomeServiceInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("parentId",oldParentId);  | 
|         HomeServiceInfo homeServiceInfo=new HomeServiceInfo();  | 
|         homeServiceInfo.setParentId(newParentId);  | 
|         homeServiceInfoMapper.updateByExampleSelective(homeServiceInfo,example);  | 
|     }  | 
|   | 
|   | 
|     public HomeServiceInfo findSecondById(Long id){  | 
|         HomeServiceInfo homeServiceInfo = homeServiceInfoMapper.selectByPrimaryKey(id);  | 
|         List<PartnerFenceDTO> list=new ArrayList<>();  | 
|         List<HomeServiceRef> byServiceId = homeServiceRefService.findByServiceId(id);  | 
|         if(CollUtil.isNotEmpty(byServiceId)){  | 
|             List<List<HomeServiceRef>> partnerId = CollUtil.groupByField(byServiceId, "partnerId");  | 
|             for (List<HomeServiceRef> homeServiceRefs : partnerId) {  | 
|                 String partnerId1 = homeServiceRefs.get(0).getPartnerId();  | 
|                 PartnerFenceDTO partnerFenceDTO=new PartnerFenceDTO();  | 
|                 partnerFenceDTO.setPartnerId(partnerId1);  | 
|                 List<String> fenceIds=homeServiceRefs.stream().map(x->x.getFenceId()).collect(Collectors.toList());  | 
|                 partnerFenceDTO.setFenceIds(fenceIds);  | 
|                 list.add(partnerFenceDTO);  | 
|             }  | 
|             homeServiceInfo.setList(list);  | 
|         }  | 
|         return homeServiceInfo;  | 
|     }  | 
|   | 
|   | 
|     public List<HomeServiceInfo> findSecond(String partnerId, String fenceId){  | 
|         return homeServiceInfoMapper.findSecond(partnerId,fenceId);  | 
|     }  | 
| }  |