refactor(product): 新增平台字段区分安卓与苹果商品
- 在商品实体、VO、Service及Controller中统一增加platform字段 - 查询接口支持按平台(android/apple)过滤商品 - ChatService追加全局companionSystemPrompt配置读取
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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<KeyboardProductItemRespVO> 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -112,4 +112,8 @@ public class KeyboardProductItems {
|
||||
@TableField(value = "level")
|
||||
@Schema(description = "级别")
|
||||
private Integer level;
|
||||
|
||||
@TableField(value = "platform")
|
||||
@Schema(description = "所属平台")
|
||||
private String platform;
|
||||
}
|
||||
@@ -46,5 +46,8 @@ public class KeyboardProductItemRespVO {
|
||||
|
||||
@Schema(description = "级别")
|
||||
private Integer level;
|
||||
|
||||
@Schema(description = "所属平台")
|
||||
private String platform;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,20 +12,22 @@ import java.util.List;
|
||||
public interface KeyboardProductItemsService extends IService<KeyboardProductItems>{
|
||||
|
||||
/**
|
||||
* 根据主键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 获取商品实体
|
||||
|
||||
@@ -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条聊天记录作为上下文
|
||||
|
||||
@@ -17,45 +17,45 @@ public class KeyboardProductItemsServiceImpl extends ServiceImpl<KeyboardProduct
|
||||
|
||||
|
||||
/**
|
||||
* 根据ID获取产品详情
|
||||
* 根据ID和平台获取产品详情
|
||||
*
|
||||
* @param id 产品ID
|
||||
* @return 产品详情响应对象,如果ID为空或未找到产品则返回null
|
||||
* @param platform 平台标识(android / apple)
|
||||
* @return 产品详情响应对象,如果未找到产品则返回null
|
||||
*/
|
||||
@Override
|
||||
public KeyboardProductItemRespVO getProductDetailById(Long id) {
|
||||
// 参数校验:ID不能为空
|
||||
public KeyboardProductItemRespVO getProductDetailById(Long id, String platform) {
|
||||
if (id == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 根据ID查询产品信息
|
||||
KeyboardProductItems item = this.getById(id);
|
||||
KeyboardProductItems item = this.lambdaQuery()
|
||||
.eq(KeyboardProductItems::getId, id)
|
||||
.eq(KeyboardProductItems::getPlatform, platform)
|
||||
.one();
|
||||
|
||||
// 将实体对象转换为响应VO对象并返回
|
||||
return item == null ? null : BeanUtil.copyProperties(item, KeyboardProductItemRespVO.class);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据产品ID获取产品详情
|
||||
* 根据产品ID和平台获取产品详情
|
||||
*
|
||||
* @param productId 产品ID
|
||||
* @return 产品详情响应对象,如果产品ID为空或未找到产品则返回null
|
||||
* @param platform 平台标识(android / apple)
|
||||
* @return 产品详情响应对象,如果未找到产品则返回null
|
||||
*/
|
||||
@Override
|
||||
public KeyboardProductItemRespVO getProductDetailByProductId(String productId) {
|
||||
// 参数校验:产品ID不能为空
|
||||
public KeyboardProductItemRespVO getProductDetailByProductId(String productId, String platform) {
|
||||
if (productId == null || productId.isBlank()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 根据产品ID查询产品信息
|
||||
KeyboardProductItems item = this.lambdaQuery()
|
||||
.eq(KeyboardProductItems::getProductId, productId)
|
||||
.eq(KeyboardProductItems::getPlatform, platform)
|
||||
.one();
|
||||
|
||||
// 将实体对象转换为响应VO对象并返回
|
||||
return item == null ? null : BeanUtil.copyProperties(item, KeyboardProductItemRespVO.class);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user