package com.fdkankan.scene.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.common.constant.ErrorCode;
import com.fdkankan.common.exception.BusinessException;
import com.fdkankan.scene.entity.SceneResource;
import com.fdkankan.scene.entity.SceneResourceCooperation;
import com.fdkankan.scene.mapper.ISceneResourceMapper;
import com.fdkankan.scene.service.ISceneResourceCooperationService;
import com.fdkankan.scene.service.ISceneResourceService;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* 场景资源表 服务实现类
*
*
* @author
* @since 2022-07-18
*/
@Service
public class SceneResourceServiceImpl extends ServiceImpl implements ISceneResourceService {
@Autowired
private ISceneResourceCooperationService sceneResourceCooperationService;
@Override
public List findByCooperationId(Long sceneCooperationId) {
long countV4Resource = this.countByVersion("v4");
List sceneResourceCooperationList
= sceneResourceCooperationService.list(
new LambdaQueryWrapper()
.eq(SceneResourceCooperation::getSceneCooperationId, sceneCooperationId));
if(CollUtil.isEmpty(sceneResourceCooperationList)){
throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
}
if(countV4Resource == sceneResourceCooperationList.size()){//如果协作菜单数量与资源数量相同,则返回空,由前端判断当前用户拥有所有该场景编辑权限
return null;
}
List sceneResourceIdList = sceneResourceCooperationList.stream()
.map(sceneResourceCooperation -> sceneResourceCooperation.getSceneResourceId())
.collect(Collectors.toList());
return this.listByIds(sceneResourceIdList);
}
@Override
public long countByVersion(String version) {
return this.count(new LambdaQueryWrapper().eq(SceneResource::getVersion, version));
}
}