package com.battery.business.web; import com.battery.business.service.TodoService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; /** 待办动作权限与负责人身份分别校验,创建身份只取当前登录会话。 */ @RestController @RequestMapping("/system/todo") public class TodoController extends BaseController { private final TodoService service; public TodoController(TodoService service) { this.service = service; } /** 仅查询自己的待办,不开放按其他负责人 ID 查询。 */ @GetMapping("/list") @PreAuthorize("@ss.hasAnyPermi('todo:list:list,todo:list:query')") public AjaxResult list() { return success().put("rows", service.list(getUserId())); } /** 返回新增待办可选的启用用户。 */ @GetMapping("/owners") @PreAuthorize("@ss.hasPermi('todo:list:add')") public AjaxResult owners() { return success(service.owners()); } /** 校验负责人后创建,返回主键确认,不泄露别人待办的详情。 */ @PostMapping @PreAuthorize("@ss.hasPermi('todo:list:add')") public AjaxResult create(@RequestBody CreateRequest request) { if (request == null || request.ownerId() == null) return error("负责人不能为空"); return success(service.create(request.content(), request.ownerId(), getUserId(), getUsername())); } /** 仅负责人可完成自己的待办,已处理不能再次修改。 */ @PutMapping("/{id}/handle") @PreAuthorize("@ss.hasPermi('todo:list:handle')") public AjaxResult handle(@PathVariable long id, @RequestBody HandleRequest request) { service.handle(id, getUserId(), request == null ? null : request.remark()); return success(); } /** 删除只作用于当前负责人自己的记录。 */ @DeleteMapping("/{id}") @PreAuthorize("@ss.hasPermi('todo:list:remove')") public AjaxResult remove(@PathVariable long id) { service.remove(id, getUserId()); return success(); } public record CreateRequest(String content, Long ownerId) {} public record HandleRequest(String remark) {} }