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.exception.RestException;
|
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.ItemPriceAddDTO;
|
import com.xzx.gc.system.mapper.SysItemPriceMapper;
|
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.math.BigDecimal;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional
|
public class SysItemPriceService {
|
|
|
@Autowired
|
private SysItemPriceMapper sysItemPriceMapper;
|
|
@Autowired
|
private OtherUserService otherUserService;
|
|
@Autowired
|
private SysItemUserService sysItemUserService;
|
|
@Autowired
|
private SysEnvironmentalInfoService sysEnvironmentalInfoService;
|
|
|
public List<SysItemPrice> findByItemId(Long itemId){
|
Example example=new Example(SysItemPrice.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("itemId",itemId);
|
criteria.andEqualTo("delFlag",Convert.toShort(Constants.DEL_NOT_FLAG));
|
example.setOrderByClause("price asc");
|
return sysItemPriceMapper.selectByExample(example);
|
}
|
|
public SysItemPrice findById(Long id){
|
return sysItemPriceMapper.selectByPrimaryKey(id);
|
}
|
|
public void deleteByItemId(Long itemId){
|
Example example=new Example(SysItemPrice.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("itemId",itemId);
|
SysItemPrice sysItemPrice=new SysItemPrice();
|
sysItemPrice.setDelFlag(Convert.toShort(Constants.DEL_FLAG));
|
sysItemPriceMapper.updateByExampleSelective(sysItemPrice,example);
|
}
|
|
public void itemPriceAdd(ItemPriceAddDTO itemPriceAddDTO) {
|
Long itemId = itemPriceAddDTO.getItemId();
|
SysItemUser byId1 = sysItemUserService.findById(itemId);
|
List<SysItemPrice> list = itemPriceAddDTO.getList();
|
String userId = itemPriceAddDTO.getUserId();
|
OtherUserInfo byId = otherUserService.findById(userId);
|
SysEnvironmentalInfo byCityAndItemTypeAndPartner = sysEnvironmentalInfoService.findByItemTypeAndAreaNotDel(byId1.getItemType(), byId.getTownshipId());
|
for (SysItemPrice sysItemPrice : list) {
|
BigDecimal price = sysItemPrice.getPrice();
|
if(price==null){
|
price=BigDecimal.ZERO;
|
}
|
|
//判断价格设置不能低于或高于平台的价格
|
if(byCityAndItemTypeAndPartner!=null){
|
String minPrice = byCityAndItemTypeAndPartner.getMinPrice();
|
String maxPrice = byCityAndItemTypeAndPartner.getMaxPrice();
|
if(StrUtil.isNotBlank(minPrice)){
|
if(price.compareTo(Convert.toBigDecimal(minPrice))<0){
|
throw new RestException("不能低于分类:"+byCityAndItemTypeAndPartner.getTitle()+"的平台最低价格:"+minPrice);
|
}
|
}
|
|
if(StrUtil.isNotBlank(maxPrice)){
|
if(price.compareTo(Convert.toBigDecimal(maxPrice))>0){
|
throw new RestException("不能高于分类:"+byCityAndItemTypeAndPartner.getTitle()+"的平台最高价格:"+maxPrice);
|
}
|
}
|
}
|
|
Long id = sysItemPrice.getId();
|
if(id!=null) {
|
SysItemPrice byId2 = findById(id);
|
byId2.setMinWeight(sysItemPrice.getMinWeight());
|
byId2.setMaxWeight(sysItemPrice.getMaxWeight());
|
byId2.setPrice(sysItemPrice.getPrice());
|
sysItemPriceMapper.updateByPrimaryKey(byId2);
|
}else {
|
sysItemPrice.setItemId(itemId);
|
sysItemPrice.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG));
|
sysItemPrice.setCreateTime(DateUtil.now());
|
sysItemPriceMapper.insertSelective(sysItemPrice);
|
}
|
}
|
}
|
|
/**
|
* 根据用户查询设置的所有分类的价格
|
* @param userId
|
* @return
|
*/
|
public List<SysItemPrice> findPriceByUserId(String userId){
|
return sysItemPriceMapper.findPriceByUserId(userId);
|
}
|
|
public List<SysItemPrice> findByItemAndList(List<SysItemPrice> list,String itemType){
|
if(CollUtil.isNotEmpty(list)){
|
List<SysItemPrice> collect = list.stream().filter(x -> x.getItemType().equals(itemType)).collect(Collectors.toList());
|
if(CollUtil.isNotEmpty(collect)){
|
return collect;
|
}
|
}
|
return null;
|
}
|
}
|