package com.vincent.rsf.server.ai.controller; import com.vincent.rsf.framework.common.R; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.server.ai.dto.AiPromptPreviewRequest; import com.vincent.rsf.server.ai.entity.AiPrompt; import com.vincent.rsf.server.ai.service.AiPromptService; 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 AiPromptController extends BaseController { @Autowired private AiPromptService aiPromptService; @PreAuthorize("hasAuthority('system:aiPrompt:list')") @PostMapping("/aiPrompt/page") public R page(@RequestBody Map map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam pageParam = new PageParam<>(baseParam, AiPrompt.class); return R.ok().add(aiPromptService.page(pageParam, pageParam.buildWrapper(true) .eq("tenant_id", getTenantId()) .eq("deleted", 0))); } @PreAuthorize("hasAuthority('system:aiPrompt:list')") @PostMapping("/aiPrompt/list") public R list(@RequestBody Map map) { return R.ok().add(aiPromptService.list(new LambdaQueryWrapper() .eq(AiPrompt::getTenantId, getTenantId()) .eq(AiPrompt::getDeleted, 0) .orderByDesc(AiPrompt::getCreateTime) .orderByDesc(AiPrompt::getId))); } @PreAuthorize("hasAuthority('system:aiPrompt:list')") @PostMapping({"/aiPrompt/many/{ids}", "/aiPrompts/many/{ids}"}) public R many(@PathVariable Long[] ids) { return R.ok().add(aiPromptService.list(new LambdaQueryWrapper() .eq(AiPrompt::getTenantId, getTenantId()) .eq(AiPrompt::getDeleted, 0) .in(AiPrompt::getId, Arrays.asList(ids)))); } @PreAuthorize("hasAuthority('system:aiPrompt:list')") @GetMapping("/aiPrompt/{id}") public R get(@PathVariable("id") Long id) { return R.ok().add(aiPromptService.getOne(new LambdaQueryWrapper() .eq(AiPrompt::getId, id) .eq(AiPrompt::getTenantId, getTenantId()) .eq(AiPrompt::getDeleted, 0) .last("limit 1"))); } @PreAuthorize("hasAnyAuthority('system:aiPrompt:list','system:aiPrompt:save','system:aiPrompt:update')") @PostMapping("/aiPrompt/render-preview") public R renderPreview(@RequestBody AiPromptPreviewRequest request) { return R.ok().add(aiPromptService.renderPreview(request, getTenantId())); } @PreAuthorize("hasAuthority('system:aiPrompt:save')") @OperationLog("Create AiPrompt") @PostMapping("/aiPrompt/save") public R save(@RequestBody AiPrompt aiPrompt) { aiPrompt.setTenantId(getTenantId()); aiPromptService.validateBeforeSave(aiPrompt, getTenantId()); aiPrompt.setCreateBy(getLoginUserId()); aiPrompt.setCreateTime(new Date()); aiPrompt.setUpdateBy(getLoginUserId()); aiPrompt.setUpdateTime(new Date()); if (!aiPromptService.save(aiPrompt)) { return R.error("Save Fail"); } return R.ok("Save Success").add(aiPrompt); } @PreAuthorize("hasAuthority('system:aiPrompt:update')") @OperationLog("Update AiPrompt") @PostMapping("/aiPrompt/update") public R update(@RequestBody AiPrompt aiPrompt) { aiPrompt.setTenantId(getTenantId()); aiPromptService.validateBeforeUpdate(aiPrompt, getTenantId()); aiPrompt.setUpdateBy(getLoginUserId()); aiPrompt.setUpdateTime(new Date()); if (!aiPromptService.updateById(aiPrompt)) { return R.error("Update Fail"); } return R.ok("Update Success").add(aiPrompt); } @PreAuthorize("hasAuthority('system:aiPrompt:remove')") @OperationLog("Delete AiPrompt") @PostMapping("/aiPrompt/remove/{ids}") public R remove(@PathVariable Long[] ids) { if (!aiPromptService.removeByIds(Arrays.asList(ids))) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); } @PreAuthorize("hasAuthority('system:aiPrompt:list')") @PostMapping("/aiPrompt/export") public void export(@RequestBody Map map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(aiPromptService.list(new LambdaQueryWrapper() .eq(AiPrompt::getTenantId, getTenantId()) .eq(AiPrompt::getDeleted, 0) .orderByDesc(AiPrompt::getCreateTime) .orderByDesc(AiPrompt::getId)), AiPrompt.class), response); } }