From da3ee949246a72f5304e2eef4ee295ef956adfeb Mon Sep 17 00:00:00 2001 From: ziin Date: Wed, 8 Apr 2026 09:29:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor(product):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=AD=97=E6=AE=B5=E5=8C=BA=E5=88=86=E5=AE=89?= =?UTF-8?q?=E5=8D=93=E4=B8=8E=E8=8B=B9=E6=9E=9C=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在商品实体、VO、Service及Controller中统一增加platform字段 - 查询接口支持按平台(android/apple)过滤商品 - ChatService追加全局companionSystemPrompt配置读取 --- .../com/yolo/keyborad/config/AppConfig.java | 4 ++ .../controller/ProductsController.java | 11 ++++-- .../model/entity/KeyboardProductItems.java | 4 ++ .../products/KeyboardProductItemRespVO.java | 5 ++- .../service/KeyboardProductItemsService.java | 10 +++-- .../service/impl/ChatServiceImpl.java | 2 +- .../impl/KeyboardProductItemsServiceImpl.java | 38 +++++++++---------- 7 files changed, 45 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/yolo/keyborad/config/AppConfig.java b/src/main/java/com/yolo/keyborad/config/AppConfig.java index 69032ff..51af361 100644 --- a/src/main/java/com/yolo/keyborad/config/AppConfig.java +++ b/src/main/java/com/yolo/keyborad/config/AppConfig.java @@ -26,6 +26,8 @@ public class AppConfig { private LLmModel llmModel = new LLmModel(); + + @Data public static class UserRegisterProperties { @@ -64,6 +66,8 @@ public class AppConfig { //聊天消息最大长度 private Integer maxMessageLength = 1000; + + private String companionSystemPrompt = ""; } @Data diff --git a/src/main/java/com/yolo/keyborad/controller/ProductsController.java b/src/main/java/com/yolo/keyborad/controller/ProductsController.java index 735b49e..0c04320 100644 --- a/src/main/java/com/yolo/keyborad/controller/ProductsController.java +++ b/src/main/java/com/yolo/keyborad/controller/ProductsController.java @@ -31,17 +31,20 @@ public class ProductsController { private KeyboardProductItemsService productItemsService; @GetMapping("/detail") - @Operation(summary = "查询商品明细", description = "根据商品ID或productId查询商品详情") + @Operation(summary = "查询商品明细", description = "根据商品ID或productId查询商品详情,通过platform区分平台") public BaseResponse getProductDetail( @RequestParam(value = "id", required = false) Long id, - @RequestParam(value = "productId", required = false) String productId + @RequestParam(value = "productId", required = false) String productId, + @RequestParam(value = "platform", required = false) String platform ) { if (id == null && (productId == null || productId.isBlank())) { throw new BusinessException(ErrorCode.PARAMS_ERROR, "id 或 productId 至少传一个"); } + // 判断平台:如果是android返回安卓商品,否则默认返回苹果商品 + String resolvedPlatform = "android".equalsIgnoreCase(platform) ? "android" : "apple"; KeyboardProductItemRespVO result = (id != null) - ? productItemsService.getProductDetailById(id) - : productItemsService.getProductDetailByProductId(productId); + ? productItemsService.getProductDetailById(id, resolvedPlatform) + : productItemsService.getProductDetailByProductId(productId, resolvedPlatform); return ResultUtils.success(result); } diff --git a/src/main/java/com/yolo/keyborad/model/entity/KeyboardProductItems.java b/src/main/java/com/yolo/keyborad/model/entity/KeyboardProductItems.java index aa226b4..b748fab 100644 --- a/src/main/java/com/yolo/keyborad/model/entity/KeyboardProductItems.java +++ b/src/main/java/com/yolo/keyborad/model/entity/KeyboardProductItems.java @@ -112,4 +112,8 @@ public class KeyboardProductItems { @TableField(value = "level") @Schema(description = "级别") private Integer level; + + @TableField(value = "platform") + @Schema(description = "所属平台") + private String platform; } \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/vo/products/KeyboardProductItemRespVO.java b/src/main/java/com/yolo/keyborad/model/vo/products/KeyboardProductItemRespVO.java index 8b5966d..5832ed9 100644 --- a/src/main/java/com/yolo/keyborad/model/vo/products/KeyboardProductItemRespVO.java +++ b/src/main/java/com/yolo/keyborad/model/vo/products/KeyboardProductItemRespVO.java @@ -45,6 +45,9 @@ public class KeyboardProductItemRespVO { private String description; @Schema(description = "级别") - private Integer level; + private Integer level; + + @Schema(description = "所属平台") + private String platform; } diff --git a/src/main/java/com/yolo/keyborad/service/KeyboardProductItemsService.java b/src/main/java/com/yolo/keyborad/service/KeyboardProductItemsService.java index 10b4c0b..d01911a 100644 --- a/src/main/java/com/yolo/keyborad/service/KeyboardProductItemsService.java +++ b/src/main/java/com/yolo/keyborad/service/KeyboardProductItemsService.java @@ -12,20 +12,22 @@ import java.util.List; public interface KeyboardProductItemsService extends IService{ /** - * 根据主键ID查询商品明细 + * 根据主键ID和平台查询商品明细 * * @param id 商品主键ID + * @param platform 平台标识(android / apple) * @return 商品明细(不存在返回 null) */ - KeyboardProductItemRespVO getProductDetailById(Long id); + KeyboardProductItemRespVO getProductDetailById(Long id, String platform); /** - * 根据 Apple productId 查询商品明细 + * 根据 productId 和平台查询商品明细 * * @param productId 商品 productId + * @param platform 平台标识(android / apple) * @return 商品明细(不存在返回 null) */ - KeyboardProductItemRespVO getProductDetailByProductId(String productId); + KeyboardProductItemRespVO getProductDetailByProductId(String productId, String platform); /** * 根据 productId 获取商品实体 diff --git a/src/main/java/com/yolo/keyborad/service/impl/ChatServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/ChatServiceImpl.java index 310e827..4d981c2 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/ChatServiceImpl.java @@ -413,7 +413,7 @@ public class ChatServiceImpl implements ChatService { if (companion.getStatus() == null || companion.getStatus() != 1) { throw new BusinessException(ErrorCode.PARAMS_ERROR, "AI陪聊角色已下线"); } - String systemPrompt = companion.getSystemPrompt(); + String systemPrompt = appConfig.getLlmConfig().getCompanionSystemPrompt() + companion.getSystemPrompt(); String voiceId = companion.getVoiceId(); // 获取最近20条聊天记录作为上下文 diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardProductItemsServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardProductItemsServiceImpl.java index f376e2a..4c7ee4d 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardProductItemsServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardProductItemsServiceImpl.java @@ -17,45 +17,45 @@ public class KeyboardProductItemsServiceImpl extends ServiceImpl