package cn.iocoder.yudao.module.aftersales.controller.admin.collaboration; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.aftersales.dal.dataobject.collaboration.AfterSaleCollaborationDO; import cn.iocoder.yudao.module.aftersales.service.collaboration.AfterSaleCollaborationService; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.invalidParamException; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @RestController @RequestMapping("/aftersales/collaboration") public class AfterSaleCollaborationController { @Resource private AfterSaleCollaborationService service; @PostMapping("/create") @PreAuthorize("@ss.hasPermission('aftersales:collaboration:create')") public CommonResult create(@RequestBody AfterSaleCollaborationService.CreateRequest input) { return success(service.create(input, getLoginUserId())); } @GetMapping("/my-page") @PreAuthorize("@ss.hasPermission('aftersales:collaboration:query')") public CommonResult> myPage(@Valid PageParam page) { return success(service.myTasks(page, getLoginUserId())); } @GetMapping("/ticket-list") @PreAuthorize("@ss.hasPermission('aftersales:collaboration:query')") public CommonResult> ticketList(@RequestParam("ticketId") Long ticketId) { return success(service.ticketTasks(ticketId, getLoginUserId())); } @PutMapping("/complete") @PreAuthorize("@ss.hasPermission('aftersales:collaboration:update')") public CommonResult complete(@RequestParam("id") Long id, @RequestBody CompleteRequest input) { service.complete(id, getLoginUserId(), input == null ? null : input.result()); return success(true); } @PutMapping("/cancel") @PreAuthorize("@ss.hasPermission('aftersales:collaboration:update')") public CommonResult cancel(@RequestParam("id") Long id) { service.cancel(id, getLoginUserId()); return success(true); } @PutMapping("/review-financial") @PreAuthorize("@ss.hasPermission('aftersales:collaboration:approve')") public CommonResult reviewFinancial(@RequestParam("id") Long id, @RequestBody ReviewRequest input) { if (input == null || input.approved() == null) throw invalidParamException("请选择审核结果"); service.reviewFinancial(id, getLoginUserId(), input.approved(), input.remark()); return success(true); } public record CompleteRequest(String result) {} public record ReviewRequest(Boolean approved, String remark) {} }