package com.zy.ai.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.ai.entity.AiPromptTemplate; import com.zy.ai.service.AiPromptTemplateService; import com.zy.common.web.BaseController; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/ai/prompt/template") @RequiredArgsConstructor public class AiPromptTemplateController extends BaseController { private final AiPromptTemplateService aiPromptTemplateService; @GetMapping("/sceneList/auth") @ManagerAuth public R sceneList() { return R.ok(aiPromptTemplateService.listSupportedScenes()); } @GetMapping("/list/auth") @ManagerAuth public R list(@RequestParam(value = "sceneCode", required = false) String sceneCode, @RequestParam(value = "published", required = false) Short published, @RequestParam(value = "status", required = false) Short status) { QueryWrapper wrapper = new QueryWrapper<>(); if (sceneCode != null && !sceneCode.trim().isEmpty()) { wrapper.eq("scene_code", sceneCode.trim()); } if (published != null) { wrapper.eq("published", published); } if (status != null) { wrapper.eq("status", status); } wrapper.orderByAsc("scene_code").orderByDesc("version").orderByDesc("id"); List list = aiPromptTemplateService.enrichTemplates(aiPromptTemplateService.list(wrapper)); return R.ok(list); } @GetMapping("/active/auth") @ManagerAuth public R active(@RequestParam("sceneCode") String sceneCode) { try { return R.ok(aiPromptTemplateService.enrichTemplate(aiPromptTemplateService.resolvePublished(sceneCode))); } catch (IllegalArgumentException | IllegalStateException e) { return R.error(e.getMessage()); } } @PostMapping("/save/auth") @ManagerAuth public R save(@RequestBody AiPromptTemplate template) { try { return R.ok(aiPromptTemplateService.enrichTemplate(aiPromptTemplateService.savePrompt(template, getUserId()))); } catch (IllegalArgumentException e) { return R.error(e.getMessage()); } } @PostMapping("/publish/auth") @ManagerAuth public R publish(@RequestParam("id") Long id) { try { return R.ok(aiPromptTemplateService.enrichTemplate(aiPromptTemplateService.publishPrompt(id, getUserId()))); } catch (IllegalArgumentException e) { return R.error(e.getMessage()); } } @PostMapping("/cancelPublish/auth") @ManagerAuth public R cancelPublish(@RequestParam("id") Long id) { try { return R.ok(aiPromptTemplateService.enrichTemplate(aiPromptTemplateService.cancelPublish(id, getUserId()))); } catch (IllegalArgumentException e) { return R.error(e.getMessage()); } } @PostMapping("/delete/auth") @ManagerAuth public R delete(@RequestParam("id") Long id) { try { return R.ok(aiPromptTemplateService.deletePrompt(id)); } catch (IllegalArgumentException e) { return R.error(e.getMessage()); } } @PostMapping("/initDefaults/auth") @ManagerAuth public R initDefaults() { return R.ok(aiPromptTemplateService.initDefaultsIfMissing()); } }