package org.jeecg.modules.dncFlow.handler; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.entity.PermissionStreamNew; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.service.IDeviceTypeService; import org.jeecg.modules.dnc.service.IPermissionStreamNewService; import org.jeecg.modules.dncFlow.service.PermissionHandler; import org.jeecg.modules.dncFlow.service.StreamTarget; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Optional; @Component public class PermissionProcessor { @Autowired private IDeviceTypeService deviceTypeService; @Autowired private IPermissionStreamNewService permissionStreamNewService; public PermissionStreamNew process( String attributionId, LoginUser user, StreamTarget target, PermissionHandler handler ) { // 1. 加载业务实体 T entity = handler.loadEntity(attributionId); if (entity == null) { ExceptionCast.cast(CommonCode.INVALID_PARAM); } // 2. 设置关联关系 handler.setRelations(entity, target); // 3. 设置设备类型 setupDeviceType(target); // 4. 获取权限流 return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId( handler.getBusinessId(entity), user.getId(), handler.getTypeCode() ); } private void setupDeviceType(StreamTarget target) { Optional.ofNullable(deviceTypeService.getById(target.getAttributionId())) .ifPresent(device -> target.setDeviceTypeId(device.getId()) ); } }