|
|
@@ -43,20 +43,20 @@ private String domain; // 旧: 单值, 如 "body"
|
|
|
private String dimensionWeights; // 新: JSON, 如 {"body":30,"mind":0,"wisdom":0,"action":70,"wealth":0}
|
|
|
```
|
|
|
|
|
|
-**筛选逻辑(ProductService.list() 第56-62行):**
|
|
|
+**筛选逻辑(ProductService.list() 第56-67行):**
|
|
|
```java
|
|
|
-if (query.getDomain() != null && !query.getDomain().isEmpty()) {
|
|
|
- String domain = query.getDomain();
|
|
|
+String dimCode = query.getDimensionCode() != null ? query.getDimensionCode() : query.getDomain();
|
|
|
+if (dimCode != null && !dimCode.isEmpty()) {
|
|
|
wrapper.and(w -> w
|
|
|
- .apply("COALESCE(JSON_EXTRACT(dimension_weights, '$." + domain + "'), 0) > 0")
|
|
|
- .or().eq(Product::getDomain, domain)
|
|
|
+ .apply("COALESCE(JSON_EXTRACT(dimension_weights, '$." + dimCode + "'), 0) > 0")
|
|
|
+ .or().eq(Product::getDomain, dimCode)
|
|
|
);
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-**注意:** 查询参数名为 `domain`(ProductListQueryDTO 中定义),前端传的是 `dimensionCode` 还是 `domain` 需要确认对齐。
|
|
|
+**注意:** 查询参数名已统一为 `dimensionCode`,兼容旧版 `domain`。`ProductListQueryDTO` 中同时保留两个字段,优先使用 `dimensionCode`。
|
|
|
|
|
|
-**状态:** ✅ 已实现权重感知筛选,兼容旧版 `domain`
|
|
|
+**状态:** ✅ 已实现权重感知筛选,参数名已统一
|
|
|
|
|
|
### 3. Article(文章)✅ 已实现
|
|
|
|
|
|
@@ -178,13 +178,11 @@ COALESCE(JSON_EXTRACT(dimension_weights, '$.body'), 0) > 0
|
|
|
|
|
|
## 建议
|
|
|
|
|
|
-### 统一参数名
|
|
|
-商品列表使用 `domain` 而非 `dimensionCode`,与其他三个不统一。建议在 `ProductListQueryDTO` 中增加 `dimensionCode` 别名,内部映射到 `domain`。
|
|
|
+### 统一参数名 ✅ 已完成
|
|
|
+商品列表已将查询参数统一为 `dimensionCode`(兼容旧版 `domain`),与活动/文章/任务一致。
|
|
|
|
|
|
-### Task 增加维度支持
|
|
|
-如果任务需要按维度筛选,有两种方案:
|
|
|
-1. **轻量方案**:在 Task 实体增加 `dimensionCode` 字段(单值),通过 `category` → `dimensionCode` 映射表自动填充
|
|
|
-2. **完整方案**:增加 `dimensionWeights` JSON 字段,与活动/商品/文章保持一致
|
|
|
+### Task 增加维度支持 ✅ 已完成
|
|
|
+Task 已增加 `dimensionCode` + `dimensionWeights` 字段,创建任务时可传入,今日任务列表支持按维度筛选。
|
|
|
|
|
|
### 创建/编辑时的维度设置
|
|
|
| 实体 | 创建接口 | 维度参数 | 说明 |
|