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 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 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 packageGoodsInfos = packageGoodsInfoMapper.selectByExample(example); return packageGoodsInfos.get(0); } /** * 处理数据 以合伙人优先(partner_id不为-1) 运营员次 partner为-1 * @param packageGoodsInfos * @return */ private List changeData( List 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 findChildItemTypeByType(String packageId,String itemType){ PackageGoodsInfo packageGoodsInfo = findByPackageIdAndItemType(packageId,itemType); long parentId = packageGoodsInfo.getId(); List byParentId = findByParentId(parentId); return byParentId.stream().map(x->x.getItemType()).collect(Collectors.toList()); } /** * 根据父Id查找子类 * @param parentId * @return */ public List findByParentId(Long parentId){ PackageGoodsInfo packageGoodsInfo=new PackageGoodsInfo(); packageGoodsInfo.setParentId(parentId); packageGoodsInfo.setDelFlag(Constants.DEL_NOT_FLAG); List list = packageGoodsInfoMapper.select(packageGoodsInfo); return list; } }