package com.xzx.gc.system.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; 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.entity.OtherUserInfo; import com.xzx.gc.entity.SysEnvironmentalInfo; import com.xzx.gc.entity.SysItemPrice; import com.xzx.gc.entity.SysItemUser; import com.xzx.gc.model.system.ItemUserAddDTO; import com.xzx.gc.model.system.ItemUserListDTO; import com.xzx.gc.model.system.ItemUserListResDTO; import com.xzx.gc.system.mapper.SysItemUserMapper; import io.swagger.annotations.ApiModelProperty; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @Service @Transactional public class SysItemUserService { @Autowired private SysItemUserMapper sysItemUserMapper; @Autowired private SysItemPriceService sysItemPriceService; @Autowired private OtherUserService otherUserService; @Autowired private SysEnvironmentalInfoService sysEnvironmentalInfoService; @Autowired private BusinessUtil businessUtil; @Autowired private HttpServletRequest request; public void add(SysItemUser sysItemUser){ sysItemUser.setCreateTime(DateUtil.now()); sysItemUser.setDelFlag(Constants.DEL_NOT_FLAG); sysItemUserMapper.insertSelective(sysItemUser); } public SysItemUser findByUserIdAndItemType(String userId,String itemType){ SysItemUser sysItemUser=new SysItemUser(); sysItemUser.setUserId(userId); sysItemUser.setDelFlag(Constants.DEL_NOT_FLAG); sysItemUser.setItemType(itemType); return sysItemUserMapper.selectOne(sysItemUser); } public void itemUserAdd(ItemUserAddDTO itemUserAddDTO) { List list=CollUtil.newArrayList(); String[] split = itemUserAddDTO.getItemTypes().split(","); for (String s : split) { SysItemUser sysItemUser=new SysItemUser(); sysItemUser.setUserId(itemUserAddDTO.getUserId()); sysItemUser.setItemType(s); sysItemUser.setCreateTime(DateUtil.now()); sysItemUser.setDelFlag(Constants.DEL_NOT_FLAG); //查询是否存在 SysItemUser byUserIdAndItemType = findByUserIdAndItemType(sysItemUser.getUserId(), sysItemUser.getItemType()); if(byUserIdAndItemType==null) { list.add(sysItemUser); } } if(CollUtil.isNotEmpty(list)){ sysItemUserMapper.insertList(list); } } public void deleteById(Long id){ SysItemUser sysItemUser=new SysItemUser(); sysItemUser.setId(id); sysItemUser.setDelFlag(Constants.DEL_FLAG); sysItemUserMapper.updateByPrimaryKeySelective(sysItemUser); //同时要删除对应的价格体系 sysItemPriceService.deleteByItemId(id); } public List findByUserId(String userId){ SysItemUser sysItemUser=new SysItemUser(); sysItemUser.setUserId(userId); sysItemUser.setDelFlag(Constants.DEL_NOT_FLAG); return sysItemUserMapper.select(sysItemUser); } public SysItemUser findById(Long id){ return sysItemUserMapper.selectByPrimaryKey(id); } /** * 显示用户价格列表 * @param itemUserListDTO * @return */ public List itemUserList(ItemUserListDTO itemUserListDTO) { List list=new ArrayList<>(); List byUserId = findByUserId(itemUserListDTO.getUserId()); OtherUserInfo byId = otherUserService.findById(itemUserListDTO.getUserId()); for (Iterator iterator = byUserId.iterator(); iterator.hasNext(); ) { SysItemUser next = iterator.next(); SysEnvironmentalInfo byCityAndItemType = sysEnvironmentalInfoService.findByItemTypeAndAreaNotDel(next.getItemType(), byId.getTownshipId()); if(byCityAndItemType==null){ iterator.remove(); }else { next.setPicture(byCityAndItemType.getPicture()); next.setTitle(byCityAndItemType.getTitle()); //平台价格 next.setPrice(businessUtil.changeMoney(byCityAndItemType.getPrice())); next.setPlatMaxPrice(byCityAndItemType.getMaxPrice()); next.setPlatMinPrice(byCityAndItemType.getMinPrice()); //查询其设置的价格 List byItemId = sysItemPriceService.findByItemId(next.getId()); if(CollUtil.isNotEmpty(byItemId)){ next.setPriceList(byItemId); next.setMinPrice(businessUtil.changeMoney(CollUtil.getFirst(byItemId).getPrice())); next.setMaxPrice(businessUtil.changeMoney(CollUtil.getLast(byItemId).getPrice())); if(Convert.toBigDecimal(next.getMaxPrice()).compareTo(Convert.toBigDecimal(next.getPrice()))>0){ next.setHighThanPlatFlag(true); } }else { if(businessUtil.isWeb(request.getHeader("clientType"))) { next.setMaxPrice(next.getPrice()); next.setMinPrice(next.getPrice()); } } //用父类分类包裹 SysEnvironmentalInfo parent = sysEnvironmentalInfoService.findById(byCityAndItemType.getParentId()); Long id = parent.getId(); long count = list.stream().filter(x -> x.getId().equals(id)).count(); if(count==0){ ItemUserListResDTO dto=new ItemUserListResDTO(); dto.setTitle(parent.getTitle()); dto.setId(id); dto.setItemType(parent.getItemType()); List resList=new ArrayList<>(); resList.add(next); dto.setList(resList); list.add(dto); }else{ ItemUserListResDTO itemUserListResDTO = list.stream().filter(x -> x.getId().equals(id)).collect(Collectors.toList()).get(0); List list1 = itemUserListResDTO.getList(); list1.add(next); } } } String filterOrder = itemUserListDTO.getFilterOrder(); if(StrUtil.isNotBlank(filterOrder)){ for (ItemUserListResDTO itemUserListResDTO : list) { List list1 = itemUserListResDTO.getList(); if(CollUtil.isNotEmpty(list1)) { if("1".equals(filterOrder)){ CollUtil.sort(list1, (o1, o2) -> { if(Convert.toBigDecimal(o1.getMaxPrice()).compareTo(Convert.toBigDecimal(o2.getMaxPrice()))>0){ return -1; }else if(Convert.toBigDecimal(o1.getMaxPrice()).compareTo(Convert.toBigDecimal(o2.getMaxPrice()))==0){ return 0; }else { return 1; } }); }else{ CollUtil.sort(list1, (o1, o2) -> { if(Convert.toBigDecimal(o1.getMaxPrice()).compareTo(Convert.toBigDecimal(o2.getMaxPrice()))>0){ return 1; }else if(Convert.toBigDecimal(o1.getMaxPrice()).compareTo(Convert.toBigDecimal(o2.getMaxPrice()))==0){ return 0; }else { return -1; } }); } } } } return list; } }