package com.xzx.gc.system.service;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.date.DateUtil;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.utils.BusinessSimpleUtil;
|
import com.xzx.gc.common.utils.BusinessUtil;
|
import com.xzx.gc.common.utils.RedisUtil;
|
import com.xzx.gc.entity.PackageGoodsInfo;
|
import com.xzx.gc.model.admin.ItemModel;
|
import com.xzx.gc.system.mapper.PackageGoodsInfoMapper;
|
import com.xzx.gc.system.mapper.SysEnvironmentalInfoMapper;
|
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 javax.servlet.http.HttpServletRequest;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional
|
public class PackageGoodsInfoService {
|
@Autowired
|
private PackageGoodsInfoMapper packageGoodsInfoMapper;
|
@Autowired
|
private CityPartnerService cityPartnerService;
|
@Autowired
|
private SysEnvironmentalInfoMapper sysEnvironmentalInfoMapper;
|
|
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;
|
}
|
|
/**
|
* 处理数据 以合伙人优先(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;
|
}
|
|
|
|
|
|
/**
|
* 根据父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;
|
}
|
|
public Map<String, Object> queryPackageOperaIteml(ItemModel item) {
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
item.setPartnerIds(partnerIds);
|
Map<String, Object> map = new HashMap<>();
|
PageHelper.startPage(item.getPageNum(),item.getLimitNum());
|
List<ItemModel> list = sysEnvironmentalInfoMapper.queryOperaIteml1(item);
|
for (ItemModel itemModel : list) {
|
Long parentId = itemModel.getParentId();
|
if(parentId!=null){
|
itemModel.setType(findById(parentId).getTitle());
|
}
|
}
|
PageInfo<ItemModel> pageInfo=new PageInfo<>(list);
|
map.put("data", list);
|
map.put("count", pageInfo.getTotal());
|
map.put("code", 0);
|
return map;
|
}
|
|
public Map<String, Object> addOperateParent1(ItemModel item) {
|
Map<String, Object> map = new HashMap<>();
|
item.setItemType(BusinessSimpleUtil.generateItemType(item.getTitle()));
|
item.setCreateTime(DateUtil.now());
|
//如果原来存在则直接将其置为未删除
|
String ff = isDelete(item.getPackageId(),item.getTitle());
|
if(null!=ff&&!"".equals(ff)){
|
map.put("count", 1);
|
map.put("code", 0);
|
return map;
|
}
|
|
// 对排序字段进行处理
|
setSort1(item);
|
List<String> partnerIds = cityPartnerService.queryPartnerByCurrent();
|
if(null!=partnerIds&&partnerIds.size()>0){
|
item.setPartnerId(partnerIds.get(0));
|
|
}
|
int i = packageGoodsInfoMapper.insertItemOperate1(item);
|
setSortAggin1(item);
|
map.put("count", i);
|
map.put("code", 0);
|
return map;
|
}
|
|
private String isDelete(String packageId,String title){
|
Long id = packageGoodsInfoMapper.queryTitleByPackageGoods(packageId,title);
|
if(null!=id){
|
PackageGoodsInfo packageGoodsInfo=new PackageGoodsInfo();
|
packageGoodsInfo.setId(id);
|
packageGoodsInfo.setDelFlag(Constants.DEL_NOT_FLAG);
|
updateById(packageGoodsInfo);
|
return id+"";
|
}
|
return null;
|
}
|
|
private void setSortAggin1(ItemModel item) {
|
ItemModel im = new ItemModel();
|
im.setLimit(1000);
|
im.setParentId(item.getParentId());
|
List<ItemModel> list = packageGoodsInfoMapper.querIteml1(im);
|
list.sort((x, y) -> Integer.compare(x.getSort(), y.getSort()));
|
int f = 1;
|
for (ItemModel itemModel : list) {
|
itemModel.setSort(f++);
|
}
|
for (ItemModel itemModel : list) {
|
packageGoodsInfoMapper.updateItem1(itemModel);
|
}
|
}
|
|
private void setSort1(ItemModel item) {
|
ItemModel im = new ItemModel();
|
im.setLimit(1000);
|
im.setPackageId(item.getPackageId());
|
List<ItemModel> list = packageGoodsInfoMapper.querIteml1(im);
|
// 找到原始的sort数据
|
int originalSort = item.getSort();
|
|
for (ItemModel imx : list) {
|
if (originalSort <= imx.getSort()) {
|
imx.setSort(imx.getSort() + 1);
|
}
|
}
|
for (ItemModel imx : list) {
|
packageGoodsInfoMapper.updateItem1(imx);
|
}
|
}
|
|
public Map<String, Object> delPackageOperateItem(ItemModel item) {
|
Map<String, Object> map = new HashMap<>();
|
ItemModel im = new ItemModel();
|
im.setLimit(10);
|
im.setParentId(item.getId());
|
List<ItemModel> list = packageGoodsInfoMapper.querIteml1(im);
|
if (list.size() > 0) {
|
map.put("code", -1);
|
map.put("num", 0);
|
return map;
|
}
|
int i = packageGoodsInfoMapper.delItem1(item);
|
map.put("code", 0);
|
map.put("num", i);
|
return map;
|
}
|
|
public Map<String, Object> updateOperateItem1(ItemModel item) {
|
Map<String, Object> map = new HashMap<>();
|
// 对排序字段进行处理
|
setSort1(item);
|
int i = packageGoodsInfoMapper.updateItem1(item);
|
setSortAggin1(item);
|
map.put("code", 0);
|
map.put("num", i);
|
return map;
|
}
|
|
public Map<String, Object> queryOperateItemList1(ItemModel item) {
|
Map<String, Object> map = new HashMap<>();
|
PageHelper.startPage(item.getPageNum(),item.getLimitNum());
|
List<ItemModel> list = packageGoodsInfoMapper.queryOperateItemList1(item);
|
PageInfo<ItemModel> pageInfo=new PageInfo<>(list);
|
for (ItemModel obj : list) {
|
queryChildItem1(obj);
|
}
|
map.put("data", list);
|
map.put("count", pageInfo.getTotal());
|
map.put("code", 0);
|
return map;
|
}
|
|
private ItemModel queryChildItem1(ItemModel item) {
|
List<ItemModel> child = packageGoodsInfoMapper.queryOperateItemChildren1(item);
|
List<ItemModel> childm = new ArrayList<>();
|
for (ItemModel obj : child) {
|
childm.add(obj);
|
}
|
item.setChildren(childm);
|
for (ItemModel cObj : childm) {
|
if (null != cObj.getParentId()) {
|
queryChildItem1(cObj);
|
}
|
}
|
return item;
|
}
|
|
public void updateById(PackageGoodsInfo packageGoodsInfo){
|
packageGoodsInfoMapper.updateByPrimaryKeySelective(packageGoodsInfo);
|
}
|
}
|