/** * 为了避免由于权限配置不严格,导致未授权的Controller数据操作访问,父类提供protected基础实现,子类根据需要覆写public然后调用基类方法 * * @return JSON操作提示 */ @MetaData(value = "更新") protected HttpHeaders doUpdate() { ExtRevisionListener.setOperationEvent(RevisionType.MOD.name()); getEntityService().save(bindingEntity); setModel(OperationResult.buildSuccessResult("更新操作成功", bindingEntity)); return buildDefaultHttpHeaders(); }
/** * 为了避免由于权限配置不严格,导致未授权的Controller数据操作访问,父类提供protected基础实现,子类根据需要覆写public然后调用基类方法 * * @return JSON操作提示 */ @MetaData(value = "删除") protected HttpHeaders doDelete() { Set<T> enableDeleteEntities = Sets.newHashSet(); Collection<T> entities = this.getEntitiesByParameterIds(); for (T entity : entities) { // 添加检查逻辑:当前对象是否允许被删除,如状态检查 if (!isDisallowDelete(entity)) { enableDeleteEntities.add(entity); } } ExtRevisionListener.setOperationEvent(RevisionType.DEL.name()); // 对于批量删除,循环每个对象调用Service接口删除,则各对象删除事务分离 // 这样可以方便某些对象删除失败不影响其他对象删除 // 如果业务逻辑需要确保批量对象删除在同一个事务则请子类覆写调用Service的批量删除接口 for (T entity : enableDeleteEntities) { getEntityService().delete(entity); } int rejectSize = entities.size() - enableDeleteEntities.size(); setModel( OperationResult.buildSuccessResult( "删除操作完成.删除:" + enableDeleteEntities.size() + "条" + (rejectSize > 0 ? ",拒绝:" + rejectSize + "条" : ""))); return buildDefaultHttpHeaders(); }
/** * 为了避免由于权限配置不严格,导致未授权的Controller数据操作访问,父类提供protected基础实现,子类根据需要覆写public然后调用基类方法 * * @return JSON操作提示 */ @MetaData(value = "创建") protected HttpHeaders doCreate() { // 检查提交的数据参数符合用户ACL权限,否则拒绝创建数据 checkEntityAclPermission(bindingEntity); ExtRevisionListener.setOperationEvent(RevisionType.ADD.name()); getEntityService().save(bindingEntity); setModel(OperationResult.buildSuccessResult("创建操作成功", bindingEntity)); return buildDefaultHttpHeaders(); }