| package com.xzx.gc.order.service;  | 
|   | 
| import cn.hutool.core.collection.CollUtil;  | 
| import com.xzx.gc.common.constant.Constants;  | 
| import com.xzx.gc.entity.PackageGoodsInfo;  | 
| import com.xzx.gc.order.mapper.PackageGoodsInfoMapper;  | 
| 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.List;  | 
| import java.util.stream.Collectors;  | 
|   | 
| @Service  | 
| @Transactional  | 
| public class PackageGoodsInfoService {  | 
|     @Autowired  | 
|     private PackageGoodsInfoMapper packageGoodsInfoMapper;  | 
|   | 
|     public PackageGoodsInfo findById(Long id) {  | 
|         return packageGoodsInfoMapper.selectByPrimaryKey(id);  | 
|     }  | 
|   | 
|   | 
|     public List<PackageGoodsInfo> findByPackageId(String packageId) {  | 
|         Example example = new Example(PackageGoodsInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andIsNotNull("parentId");  | 
|         criteria.andEqualTo("packageId", packageId);  | 
|         criteria.andEqualTo("delFlag", Constants.DEL_NOT_FLAG);  | 
|   | 
|         List<PackageGoodsInfo> packageGoodsInfos = packageGoodsInfoMapper.selectByExample(example);  | 
|         packageGoodsInfos=changeData(packageGoodsInfos);  | 
|         return packageGoodsInfos;  | 
|     }  | 
|   | 
|     public PackageGoodsInfo findByPackageIdAndItemType(String packageId,String itemType) {  | 
|         Example example = new Example(PackageGoodsInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("packageId", packageId);  | 
|         criteria.andEqualTo("itemType",itemType);  | 
|         criteria.andEqualTo("delFlag", Constants.DEL_NOT_FLAG);  | 
|         PackageGoodsInfo packageGoodsInfos = packageGoodsInfoMapper.selectOneByExample(example);  | 
|         return packageGoodsInfos;  | 
|     }  | 
|   | 
|     public PackageGoodsInfo findByPackageIdAndItemTypeForBidden(String packageId,String itemType) {  | 
|         Example example = new Example(PackageGoodsInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("packageId", packageId);  | 
|         criteria.andEqualTo("itemType",itemType);  | 
|         List<PackageGoodsInfo> packageGoodsInfos = packageGoodsInfoMapper.selectByExample(example);  | 
|         return packageGoodsInfos.get(0);  | 
|     }  | 
|   | 
|     /**  | 
|      *    处理数据 以合伙人优先(partner_id不为-1) 运营员次 partner为-1  | 
|      * @param packageGoodsInfos  | 
|      * @return  | 
|      */  | 
|     private List<PackageGoodsInfo>  changeData( List<PackageGoodsInfo> packageGoodsInfos){  | 
|         //取出任意一条数据判断是否存在多条 。如果存在多条 则忽略partner_id为-1的。  | 
|         if(CollUtil.isNotEmpty(packageGoodsInfos)){  | 
|             String itemType = packageGoodsInfos.get(0).getItemType();  | 
|             long count = packageGoodsInfos.stream().filter(x -> x.getItemType().equals(itemType)).count();  | 
|             if(count>1){  | 
|                 packageGoodsInfos.removeIf(x->Constants.DEFAULT_ID.equals(x.getPartnerId()));  | 
|             }  | 
|         }  | 
|         return packageGoodsInfos;  | 
|     }  | 
|   | 
|   | 
|   | 
|     /**  | 
|      * 查找所有子类的itemType集合  | 
|      * @param packageId  | 
|      * @param itemType  | 
|      * @return  | 
|      */  | 
|     public List<String> findChildItemTypeByType(String packageId,String itemType){  | 
|         PackageGoodsInfo packageGoodsInfo =   findByPackageIdAndItemType(packageId,itemType);  | 
|         long parentId = packageGoodsInfo.getId();  | 
|         List<PackageGoodsInfo> byParentId = findByParentId(parentId);  | 
|         return byParentId.stream().map(x->x.getItemType()).collect(Collectors.toList());  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 根据父Id查找子类  | 
|      * @param parentId  | 
|      * @return  | 
|      */  | 
|     public List<PackageGoodsInfo> findByParentId(Long parentId){  | 
|         PackageGoodsInfo packageGoodsInfo=new PackageGoodsInfo();  | 
|         packageGoodsInfo.setParentId(parentId);  | 
|         packageGoodsInfo.setDelFlag(Constants.DEL_NOT_FLAG);  | 
|         List<PackageGoodsInfo> list = packageGoodsInfoMapper.select(packageGoodsInfo);  | 
|         return  list;  | 
|     }  | 
|   | 
|   | 
| }  |