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<SysItemUser> 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<SysItemUser> 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<ItemUserListResDTO> itemUserList(ItemUserListDTO itemUserListDTO) {
|
List<ItemUserListResDTO> list=new ArrayList<>();
|
List<SysItemUser> byUserId = findByUserId(itemUserListDTO.getUserId());
|
OtherUserInfo byId = otherUserService.findById(itemUserListDTO.getUserId());
|
for (Iterator<SysItemUser> 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<SysItemPrice> 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<SysItemUser> 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<SysItemUser> list1 = itemUserListResDTO.getList();
|
list1.add(next);
|
}
|
}
|
}
|
|
String filterOrder = itemUserListDTO.getFilterOrder();
|
if(StrUtil.isNotBlank(filterOrder)){
|
for (ItemUserListResDTO itemUserListResDTO : list) {
|
List<SysItemUser> 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;
|
}
|
}
|