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;
|
}
|
|
|
}
|