package com.vincent.rsf.server.ai.controller; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.ai.dto.AiMcpToolTestRequest; import com.vincent.rsf.server.ai.entity.AiMcpMount; import com.vincent.rsf.server.ai.service.AiMcpMountService; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.system.controller.BaseController; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.Date; import java.util.Map; @RestController public class AiMcpMountController extends BaseController { @Autowired private AiMcpMountService aiMcpMountService; @PreAuthorize("hasAuthority('system:aiMcpMount:list')") @PostMapping("/aiMcpMount/page") public R page(@RequestBody Map map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam pageParam = new PageParam<>(baseParam, AiMcpMount.class); return R.ok().add(aiMcpMountService.page(pageParam, pageParam.buildWrapper(true))); } @PreAuthorize("hasAuthority('system:aiMcpMount:list')") @PostMapping("/aiMcpMount/list") public R list(@RequestBody Map map) { return R.ok().add(aiMcpMountService.list()); } @PreAuthorize("hasAuthority('system:aiMcpMount:list')") @PostMapping({"/aiMcpMount/many/{ids}", "/aiMcpMounts/many/{ids}"}) public R many(@PathVariable Long[] ids) { return R.ok().add(aiMcpMountService.listByIds(Arrays.asList(ids))); } @PreAuthorize("hasAuthority('system:aiMcpMount:list')") @GetMapping("/aiMcpMount/{id}") public R get(@PathVariable("id") Long id) { return R.ok().add(aiMcpMountService.getById(id)); } @PreAuthorize("hasAuthority('system:aiMcpMount:list')") @GetMapping("/aiMcpMount/{id}/tools") public R previewTools(@PathVariable("id") Long id) { return R.ok().add(aiMcpMountService.previewTools(id, getLoginUserId(), getTenantId())); } @PreAuthorize("hasAuthority('system:aiMcpMount:update')") @PostMapping("/aiMcpMount/{id}/tool/test") public R testTool(@PathVariable("id") Long id, @RequestBody AiMcpToolTestRequest request) { return R.ok().add(aiMcpMountService.testTool(id, getLoginUserId(), getTenantId(), request)); } @PreAuthorize("hasAuthority('system:aiMcpMount:save')") @OperationLog("Create AiMcpMount") @PostMapping("/aiMcpMount/save") public R save(@RequestBody AiMcpMount aiMcpMount) { aiMcpMountService.validateBeforeSave(aiMcpMount); aiMcpMount.setCreateBy(getLoginUserId()); aiMcpMount.setCreateTime(new Date()); aiMcpMount.setUpdateBy(getLoginUserId()); aiMcpMount.setUpdateTime(new Date()); if (!aiMcpMountService.save(aiMcpMount)) { return R.error("Save Fail"); } return R.ok("Save Success").add(aiMcpMount); } @PreAuthorize("hasAuthority('system:aiMcpMount:update')") @OperationLog("Update AiMcpMount") @PostMapping("/aiMcpMount/update") public R update(@RequestBody AiMcpMount aiMcpMount) { aiMcpMountService.validateBeforeUpdate(aiMcpMount); aiMcpMount.setUpdateBy(getLoginUserId()); aiMcpMount.setUpdateTime(new Date()); if (!aiMcpMountService.updateById(aiMcpMount)) { return R.error("Update Fail"); } return R.ok("Update Success").add(aiMcpMount); } @PreAuthorize("hasAuthority('system:aiMcpMount:remove')") @OperationLog("Delete AiMcpMount") @PostMapping("/aiMcpMount/remove/{ids}") public R remove(@PathVariable Long[] ids) { if (!aiMcpMountService.removeByIds(Arrays.asList(ids))) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); } @PreAuthorize("hasAuthority('system:aiMcpMount:list')") @PostMapping("/aiMcpMount/export") public void export(@RequestBody Map map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(aiMcpMountService.list(), AiMcpMount.class), response); } }