需要落库的字段与前端 form 一致,分为两类:
| 类别 | 字段 | 类型 | 说明 |
|---|---|---|---|
| 检索条件 | rifle, pistol, smg, shotgun, machinegun | string[](存 JSON) | 武器类型多选 value |
| quality, category, exterior, collection | string[](存 JSON) | 品质/类别/外观/收藏品多选 value | |
| excludeIds | string | 排除的商品 id,多行文本 | |
| specifiedIds | string | 指定商品 id,多行文本 | |
| 选品条件 | steamCardRatio | number | Steam 卡价比例 |
| profitRate | number | 利润率(%) | |
| buffPriceMin, buffPriceMax | number | BUFF 价格区间 | |
| buffSalesMin, buffSalesMax | number | BUFF 销量区间 | |
| assistantLevel | string | 智能选品助手:low/standard/high |
两种常见方式:
建议采用方案 B,便于后续扩展「配置列表 + 切换」而不必改表结构。
推荐:主表 + 单列 JSON 存「检索条件 + 选品条件」。若未来需要对某几项做查询,再考虑在表上增加个别冗余列或独立统计表。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint unsigned, PK, AUTO_INCREMENT | 主键 |
| user_id | int unsigned, NOT NULL | 用户 ID,关联 users.id |
| name | varchar(64), NOT NULL | 配置名称(如「默认」「高利润」),同用户下建议唯一 |
| config_json | text/json, NOT NULL | 整份配置的 JSON:包含 rifle、pistol、…、excludeIds、specifiedIds、steamCardRatio、profitRate、buffPriceMin/Max、buffSalesMin/Max、assistantLevel,与前端 form 结构一致 |
| is_default | tinyint(1), DEFAULT 0 | 是否该用户的默认配置:0-否,1-是;同用户至多一个为 1 |
| is_deleted | tinyint(1), DEFAULT 0 | 软删:0-否,1-是 |
| created_at | datetime | 创建时间 |
| updated_at | datetime | 更新时间 |
(user_id, name),且仅当 is_deleted = 0 时唯一(若数据库支持条件唯一索引则可加,否则在业务层保证「同用户下未删除的 name 不重复」)。user_id、user_id + is_default(便于查某用户的默认配置)。与当前前端保存的 JSON 保持一致即可,例如:
{
"rifle": ["weapon_ak47", "weapon_awp"],
"pistol": [],
"smg": [],
"shotgun": [],
"machinegun": [],
"quality": ["ancient_weapon", "legendary_weapon"],
"category": [],
"exterior": ["wearcategory0", "wearcategory1"],
"collection": ["set_community_36"],
"excludeIds": "123\n456",
"specifiedIds": "",
"steamCardRatio": 0.85,
"profitRate": 10,
"buffPriceMin": 10,
"buffPriceMax": 500,
"buffSalesMin": null,
"buffSalesMax": null,
"assistantLevel": "standard"
}
name(可选,默认如「默认」)、config_json、是否设为 is_default;后端按 user_id 写入或更新 buff_selection_config。| 项目 | 建议 |
|---|---|
| 表名 | buff_selection_config |
| 与用户 | user_id 必填,按用户隔离 |
| 多套配置 | 支持,用 name 区分,is_default 标记默认 |
| 内容存储 | 单列 config_json,与前端 form 结构一致 |
| 软删 | is_deleted,便于「删除」后保留历史或恢复 |
按此思路可实现「保存配置信息」落库、多端同步与多套配置,且与当前前端数据结构兼容,后续若要对部分字段做统计再在表或统计库中做冗余即可。