package com.cdf.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cdf.common.PageInfo;
import com.cdf.entity.*;
import com.cdf.mapper.IShopMapper;
import com.cdf.request.ShopRequest;
import com.cdf.response.ShopVo;
import com.cdf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cdf.util.JwtUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author
* @since 2022-05-10
*/
@Service
public class ShopServiceImpl extends ServiceImpl implements IShopService {
@Autowired
IDeptService deptService;
@Autowired
IShopCategoryService categoryService;
@Autowired
IUserService userService;
@Autowired
IFdkkUserService fdkkUserService;
@Override
public PageInfo pageList(ShopRequest param) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getShopName())){
wrapper.like(Shop::getShopName,param.getShopName());
}
if(param.getCategoryId() !=null){
wrapper.eq(Shop::getCategoryId,param.getCategoryId());
}
Integer id = JwtUtil.getId(param.getToken());
User user = userService.getById(id);
if(user.getRoleId() == 1 || user.getRoleId() == 2){
FdkkUser fdkkUser = fdkkUserService.getById(user.getFdkkUserId());
param.setDeptId(fdkkUser.getDeptId());
}else {
param.setDeptId(user.getDeptId());
}
List deptIds = deptService.getDeptIdsSonList(param.getDeptId());
wrapper.in(Shop::getDeptId,deptIds);
wrapper.orderByAsc(Shop::getSort);
wrapper.orderByAsc(Shop::getShopName);
Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
Page pageVo = new Page<>(param.getPageNum(),param.getPageSize());
List listVo = new ArrayList<>();
for (Shop shop : page.getRecords()) {
ShopVo shopVo = new ShopVo();
BeanUtils.copyProperties(shop,shopVo);
Dept dept = deptService.getById(shop.getDeptId());
if(dept !=null){
shopVo.setDeptName(dept.getDeptName());
}
ShopCategory category = categoryService.getById(shop.getCategoryId());
if(category !=null){
shopVo.setCategoryName(category.getCategoryName());
}
listVo.add(shopVo);
}
pageVo.setRecords(listVo);
pageVo.setTotal(page.getTotal());
return PageInfo.PageInfo(pageVo);
}
@Override
public List getByCategory(Integer categoryId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Shop::getCategoryId,categoryId);
return this.list(wrapper);
}
}