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 <T> PermissionStreamNew process(
|
String attributionId,
|
LoginUser user,
|
StreamTarget target,
|
PermissionHandler<T> 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())
|
);
|
}
|
}
|