iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/ScheduleSuggestController.java
对比新文件 @@ -0,0 +1,94 @@ package com.iailab.module.ai.controller.admin.schedulesuggest; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.*; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.util.object.BeanUtils; import static com.iailab.framework.common.pojo.CommonResult.success; import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*; import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO; import com.iailab.module.ai.service.schedulesuggest.ScheduleSuggestService; import java.util.List; @Tag(name = "管理后台 - 大模型调度建议") @RestController @RequestMapping("/ai/schedule-suggest") @Validated public class ScheduleSuggestController { @Resource private ScheduleSuggestService scheduleSuggestService; @PostMapping("/create") @Operation(summary = "创建大模型调度建议") @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:create')") public CommonResult<Long> createScheduleSuggest(@Valid @RequestBody ScheduleSuggestSaveReqVO createReqVO) { return success(scheduleSuggestService.createScheduleSuggest(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新大模型调度建议") @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:update')") public CommonResult<Boolean> updateScheduleSuggest(@Valid @RequestBody ScheduleSuggestSaveReqVO updateReqVO) { scheduleSuggestService.updateScheduleSuggest(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除大模型调度建议") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:delete')") public CommonResult<Boolean> deleteScheduleSuggest(@RequestParam("id") Long id) { scheduleSuggestService.deleteScheduleSuggest(id); return success(true); } @GetMapping("/get") @Operation(summary = "获得大模型调度建议") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:query')") public CommonResult<ScheduleSuggestRespVO> getScheduleSuggest(@RequestParam("id") Long id) { ScheduleSuggestDO scheduleSuggest = scheduleSuggestService.getScheduleSuggest(id); return success(BeanUtils.toBean(scheduleSuggest, ScheduleSuggestRespVO.class)); } @PutMapping("/operate-suggest") @Operation(summary = "采纳忽略取消采纳") @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:update')") public CommonResult<Boolean> operateScheduleSuggest(@RequestBody ScheduleSuggestSaveReqVO updateReqVO) { ScheduleSuggestDO scheduleSuggest = scheduleSuggestService.getScheduleSuggest(updateReqVO.getId()); scheduleSuggest.setStatus(updateReqVO.getStatus()); scheduleSuggestService.operateScheduleSuggest(scheduleSuggest); return success(true); } @GetMapping("/simple-list") @Operation(summary = "获得n条大模型调度建议") @Parameter(name = "top", description = "编号", required = true, example = "5") @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:query')") public CommonResult<List<ScheduleSuggestRespVO>> getTopScheduleSuggests(@RequestParam("top") Long top) { List<ScheduleSuggestDO> scheduleSuggests = scheduleSuggestService.getTopScheduleSuggests(top); return success(BeanUtils.toBean(scheduleSuggests, ScheduleSuggestRespVO.class)); } @GetMapping("/page") @Operation(summary = "获得大模型调度建议分页") @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:query')") public CommonResult<PageResult<ScheduleSuggestRespVO>> getScheduleSuggestPage(@Valid ScheduleSuggestPageReqVO pageReqVO) { PageResult<ScheduleSuggestDO> pageResult = scheduleSuggestService.getScheduleSuggestPage(pageReqVO); return success(BeanUtils.toBean(pageResult, ScheduleSuggestRespVO.class)); } } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestPageReqVO.java
对比新文件 @@ -0,0 +1,36 @@ package com.iailab.module.ai.controller.admin.schedulesuggest.vo; import lombok.*; import io.swagger.v3.oas.annotations.media.Schema; import com.iailab.framework.common.pojo.PageParam; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import static com.iailab.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 大模型调度建议分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) public class ScheduleSuggestPageReqVO extends PageParam { @Schema(description = "模型id", example = "5706") private Long modelId; @Schema(description = "会话id", example = "3684") private Long conversationId; @Schema(description = "消息id", example = "8512") private Long messageId; @Schema(description = "调度建议") private String content; @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", example = "2") private Integer status; @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestRespVO.java
对比新文件 @@ -0,0 +1,32 @@ package com.iailab.module.ai.controller.admin.schedulesuggest.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; @Schema(description = "管理后台 - 大模型调度建议 Response VO") @Data public class ScheduleSuggestRespVO { @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26874") private Long id; @Schema(description = "模型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5706") private Long modelId; @Schema(description = "会话id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3684") private Long conversationId; @Schema(description = "消息id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8512") private Long messageId; @Schema(description = "调度建议") private String content; @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") private Integer status; @Schema(description = "创建时间") private LocalDateTime createTime; } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java
对比新文件 @@ -0,0 +1,33 @@ package com.iailab.module.ai.controller.admin.schedulesuggest.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.*; @Schema(description = "管理后台 - 大模型调度建议新增/修改 Request VO") @Data public class ScheduleSuggestSaveReqVO { @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26874") private Long id; @Schema(description = "模型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5706") @NotNull(message = "模型id不能为空") private Long modelId; @Schema(description = "会话id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3684") @NotNull(message = "会话id不能为空") private Long conversationId; @Schema(description = "消息id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8512") @NotNull(message = "消息id不能为空") private Long messageId; @Schema(description = "调度建议") private String content; @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotNull(message = "状态(0-未处理 1-已采纳 2-已忽略)不能为空") private Integer status; } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java
对比新文件 @@ -0,0 +1,53 @@ package com.iailab.module.ai.dal.dataobject.schedulesuggest; import lombok.*; import java.util.*; import java.time.LocalDateTime; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import com.iailab.framework.mybatis.core.dataobject.BaseDO; import static com.baomidou.mybatisplus.annotation.IdType.ASSIGN_ID; /** * 大模型调度建议 DO * * @author 超级管理员 */ @TableName("ai_schedule_suggest") @KeySequence("ai_schedule_suggest_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class ScheduleSuggestDO extends BaseDO { /** * id */ @TableId(value = "id",type = ASSIGN_ID) private Long id; /** * 模型id */ private Long modelId; /** * 会话id */ private Long conversationId; /** * 消息id */ private Long messageId; /** * 调度建议 */ private String content; /** * 状态(0-未处理 1-已采纳 2-已忽略) */ private Integer status; } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/mysql/schedulesuggest/ScheduleSuggestMapper.java
对比新文件 @@ -0,0 +1,29 @@ package com.iailab.module.ai.dal.mysql.schedulesuggest; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX; import com.iailab.framework.mybatis.core.mapper.BaseMapperX; import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO; import org.apache.ibatis.annotations.Mapper; import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*; /** * 大模型调度建议 Mapper * * @author 超级管理员 */ @Mapper public interface ScheduleSuggestMapper extends BaseMapperX<ScheduleSuggestDO> { default PageResult<ScheduleSuggestDO> selectPage(ScheduleSuggestPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX<ScheduleSuggestDO>() .eqIfPresent(ScheduleSuggestDO::getModelId, reqVO.getModelId()) .eqIfPresent(ScheduleSuggestDO::getConversationId, reqVO.getConversationId()) .eqIfPresent(ScheduleSuggestDO::getMessageId, reqVO.getMessageId()) .eqIfPresent(ScheduleSuggestDO::getContent, reqVO.getContent()) .eqIfPresent(ScheduleSuggestDO::getStatus, reqVO.getStatus()) .betweenIfPresent(ScheduleSuggestDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(ScheduleSuggestDO::getId)); } } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestService.java
对比新文件 @@ -0,0 +1,70 @@ package com.iailab.module.ai.service.schedulesuggest; import jakarta.validation.*; import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*; import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO; import com.iailab.framework.common.pojo.PageResult; import java.util.List; /** * 大模型调度建议 Service 接口 * * @author 超级管理员 */ public interface ScheduleSuggestService { /** * 创建大模型调度建议 * * @param createReqVO 创建信息 * @return 编号 */ Long createScheduleSuggest(@Valid ScheduleSuggestSaveReqVO createReqVO); /** * 更新大模型调度建议 * * @param updateReqVO 更新信息 */ void updateScheduleSuggest(@Valid ScheduleSuggestSaveReqVO updateReqVO); /** * 删除大模型调度建议 * * @param id 编号 */ void deleteScheduleSuggest(Long id); /** * 获得大模型调度建议 * * @param id 编号 * @return 大模型调度建议 */ ScheduleSuggestDO getScheduleSuggest(Long id); /** * 采纳忽略取消采纳 * * @return 大模型调度建议 */ void operateScheduleSuggest(ScheduleSuggestDO scheduleSuggestDO); /** * 获得n条大模型调度建议 * * @param top 数量 * @return 大模型调度建议 */ List<ScheduleSuggestDO> getTopScheduleSuggests(Long top); /** * 获得大模型调度建议分页 * * @param pageReqVO 分页查询 * @return 大模型调度建议分页 */ PageResult<ScheduleSuggestDO> getScheduleSuggestPage(ScheduleSuggestPageReqVO pageReqVO); } iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestServiceImpl.java
对比新文件 @@ -0,0 +1,86 @@ package com.iailab.module.ai.service.schedulesuggest; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*; import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.ai.dal.mysql.schedulesuggest.ScheduleSuggestMapper; import java.util.List; import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.iailab.module.ai.enums.ErrorCodeConstants.*; /** * 大模型调度建议 Service 实现类 * * @author 超级管理员 */ @Service @Validated public class ScheduleSuggestServiceImpl implements ScheduleSuggestService { @Resource private ScheduleSuggestMapper scheduleSuggestMapper; @Override public Long createScheduleSuggest(ScheduleSuggestSaveReqVO createReqVO) { // 插入 ScheduleSuggestDO scheduleSuggest = BeanUtils.toBean(createReqVO, ScheduleSuggestDO.class); scheduleSuggestMapper.insert(scheduleSuggest); // 返回 return scheduleSuggest.getId(); } @Override public void updateScheduleSuggest(ScheduleSuggestSaveReqVO updateReqVO) { // 校验存在 validateScheduleSuggestExists(updateReqVO.getId()); // 更新 ScheduleSuggestDO updateObj = BeanUtils.toBean(updateReqVO, ScheduleSuggestDO.class); scheduleSuggestMapper.updateById(updateObj); } @Override public void deleteScheduleSuggest(Long id) { // 校验存在 validateScheduleSuggestExists(id); // 删除 scheduleSuggestMapper.deleteById(id); } private void validateScheduleSuggestExists(Long id) { if (scheduleSuggestMapper.selectById(id) == null) { throw exception(SCHEDULE_SUGGEST_NOT_EXISTS); } } @Override public ScheduleSuggestDO getScheduleSuggest(Long id) { return scheduleSuggestMapper.selectById(id); } @Override public void operateScheduleSuggest(ScheduleSuggestDO scheduleSuggestDO) { scheduleSuggestMapper.updateById(scheduleSuggestDO); } @Override public List<ScheduleSuggestDO> getTopScheduleSuggests(Long top) { return scheduleSuggestMapper.selectList(new LambdaQueryWrapper<ScheduleSuggestDO>() .orderByDesc(ScheduleSuggestDO::getCreateTime) .last("limit " + top)); } @Override public PageResult<ScheduleSuggestDO> getScheduleSuggestPage(ScheduleSuggestPageReqVO pageReqVO) { return scheduleSuggestMapper.selectPage(pageReqVO); } }