-- ============================================================
-- 商品表新增「置顶」字段 is_top，并调整默认排序（方案 B）
-- ------------------------------------------------------------
-- 约定说明（依据本项目代码 /Users/gxwebsoft/VUE/guilixu-admin）：
--   1. is_top = 1 表示置顶，0（默认）表示不置顶
--   2. 表名/字段名 snake_case 约定（Node + TypeORM 常见）；
--      若你的库列名是驼峰（goodsId / isTop），请自行替换
--   3. 与 recommend（推荐）同为「列表内联一键切换」的布尔开关
--   4. 混合排序思路：置顶的永远在最前；置顶内部按排序号升序；
--      其余商品按创建时间倒序（绝大多数商品无需手动排）
-- ============================================================

-- 第一步：新增字段（已存在则跳过；MySQL 5.7 / 8 通用）
ALTER TABLE shop_goods
    ADD COLUMN is_top TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否置顶：1置顶 0不置顶';

-- （可选）联合索引，置顶 + 排序号分页查询更稳
-- ALTER TABLE shop_goods
--     ADD INDEX idx_is_top_sort (is_top, sort_number);

-- 第二步：调整分页查询(page 接口)默认排序
--   原（示例）：ORDER BY create_time DESC
--   改：        ORDER BY is_top DESC, sort_number ASC, create_time DESC
--   说明：若后端排序字段来自前端 orders 参数，需放开 is_top / sort_number 参与排序
--         （前端「置顶」「排序号」列已开启 sorter，会向后端传 orders）

-- 第三步（验证）：确认字段已加、数据默认 0，且排序符合预期
SELECT goods_id,
       name,
       is_top,
       sort_number,
       create_time
FROM shop_goods
ORDER BY is_top DESC, sort_number ASC, create_time DESC
LIMIT 20;
