导入和平精英商品目录并优化皮肤列表展示
- 皮肤增加 sku 字段,启动时按 sku 幂等导入 27 个和平精英商品 - 佣金默认 0,支持中英文名搜索 - 列表去掉品类列并固定列宽,避免中文名列空白过大 - 新增商品中英文名对照文档
This commit is contained in:
@@ -34,7 +34,8 @@ func (s *SkinService) List(q SkinListQuery) ([]model.Skin, int64, error) {
|
||||
}
|
||||
tx := s.db.Model(&model.Skin{})
|
||||
if q.Keyword != "" {
|
||||
tx = tx.Where("name LIKE ?", "%"+q.Keyword+"%")
|
||||
like := "%" + q.Keyword + "%"
|
||||
tx = tx.Where("name LIKE ? OR sku LIKE ?", like, like)
|
||||
}
|
||||
if q.Game != "" {
|
||||
tx = tx.Where("game = ?", q.Game)
|
||||
@@ -91,16 +92,75 @@ func (s *SkinService) Delete(id uint) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SkinService) SeedDemo() error {
|
||||
var count int64
|
||||
s.db.Model(&model.Skin{}).Count(&count)
|
||||
if count > 0 {
|
||||
return nil
|
||||
// SeedCatalog 按 sku 幂等导入商品目录(已存在则跳过)
|
||||
func (s *SkinService) SeedCatalog() error {
|
||||
// 清理早期无 sku 的演示数据,避免唯一索引冲突
|
||||
_ = s.db.Where("sku = ? OR sku IS NULL", "").Delete(&model.Skin{}).Error
|
||||
|
||||
for _, item := range peaceEliteCatalog {
|
||||
var existing model.Skin
|
||||
err := s.db.Where("sku = ?", item.SKU).First(&existing).Error
|
||||
if err == nil {
|
||||
// 已存在:仅同步默认佣金为 0(不改价格等业务字段)
|
||||
if existing.Commission != 0 {
|
||||
_ = s.db.Model(&existing).Update("commission", 0).Error
|
||||
}
|
||||
continue
|
||||
}
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return err
|
||||
}
|
||||
skin := model.Skin{
|
||||
Name: item.Name,
|
||||
SKU: item.SKU,
|
||||
Game: "和平精英",
|
||||
Category: item.Category,
|
||||
Price: 0,
|
||||
CostPrice: 0,
|
||||
Commission: 0,
|
||||
Stock: -1,
|
||||
Status: 1,
|
||||
}
|
||||
if err := s.db.Create(&skin).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
demos := []model.Skin{
|
||||
{Name: "龙之觉醒", Game: "王者荣耀", Category: "史诗", Price: 88, CostPrice: 50, Commission: 0.15, Stock: -1, Status: 1, Description: "史诗皮肤示例"},
|
||||
{Name: "星空旅人", Game: "和平精英", Category: "限定", Price: 128, CostPrice: 80, Commission: 0.12, Stock: 100, Status: 1, Description: "限定皮肤示例"},
|
||||
{Name: "暗夜骑士", Game: "英雄联盟", Category: "传说", Price: 199, CostPrice: 120, Commission: 0.10, Stock: 50, Status: 1, Description: "传说皮肤示例"},
|
||||
}
|
||||
return s.db.Create(&demos).Error
|
||||
return nil
|
||||
}
|
||||
|
||||
type catalogItem struct {
|
||||
Name string
|
||||
SKU string
|
||||
Category string
|
||||
}
|
||||
|
||||
// 和平精英商品目录(中文名保持原样,英文名为固定 sku)
|
||||
var peaceEliteCatalog = []catalogItem{
|
||||
{Name: "套装-Alan Walker", SKU: "suit_alan_walker", Category: "套装"},
|
||||
{Name: "套装-暗影哥特", SKU: "suit_shadow_gothic", Category: "套装"},
|
||||
{Name: "黑色高级特训官上衣", SKU: "top_black_elite_trainer", Category: "上衣"},
|
||||
{Name: "M416-仓鼠灰灰", SKU: "m416_hamster_gray", Category: "枪械"},
|
||||
{Name: "萌熊伴侣背包", SKU: "bag_cute_bear", Category: "背包"},
|
||||
{Name: "套装-双彩绵绵", SKU: "suit_dual_fluffy", Category: "套装"},
|
||||
{Name: "套装-糯粉咩咩", SKU: "suit_pink_sheep", Category: "套装"},
|
||||
{Name: "套装-恋恋初桃", SKU: "suit_first_peach", Category: "套装"},
|
||||
{Name: "套装-浪漫天命", SKU: "suit_romantic_destiny", Category: "套装"},
|
||||
{Name: "西部牛仔大礼包", SKU: "pack_western_cowboy", Category: "礼包"},
|
||||
{Name: "烟雾弹-糯粉咩咩", SKU: "smoke_pink_sheep", Category: "投掷物"},
|
||||
{Name: "破片手榴弹-糯粉咩咩", SKU: "frag_pink_sheep", Category: "投掷物"},
|
||||
{Name: "套装-仓鼠灰灰", SKU: "suit_hamster_gray", Category: "套装"},
|
||||
{Name: "套装-萌熊伴侣", SKU: "suit_cute_bear", Category: "套装"},
|
||||
{Name: "糯粉咩咩背包", SKU: "bag_pink_sheep", Category: "背包"},
|
||||
{Name: "糯粉咩咩头盔", SKU: "helmet_pink_sheep", Category: "头盔"},
|
||||
{Name: "仓鼠灰灰背包", SKU: "bag_hamster_gray", Category: "背包"},
|
||||
{Name: "仓鼠灰灰头盔", SKU: "helmet_hamster_gray", Category: "头盔"},
|
||||
{Name: "套装-西部谜踪", SKU: "suit_western_mystery", Category: "套装"},
|
||||
{Name: "国宝胖达头盔", SKU: "helmet_panda_treasure", Category: "头盔"},
|
||||
{Name: "套装-胖达圆圆", SKU: "suit_panda_round", Category: "套装"},
|
||||
{Name: "套装-胖达团团", SKU: "suit_panda_tuan", Category: "套装"},
|
||||
{Name: "熔岩游骑兵礼包", SKU: "pack_lava_ranger", Category: "礼包"},
|
||||
{Name: "套装-狂沙舞者", SKU: "suit_sand_dancer", Category: "套装"},
|
||||
{Name: "星际漫游服装礼包", SKU: "pack_star_roam_outfit", Category: "礼包"},
|
||||
{Name: "星际漫游枪械礼包", SKU: "pack_star_roam_weapon", Category: "礼包"},
|
||||
{Name: "套装-绵云熊熊", SKU: "suit_cloud_bear", Category: "套装"},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user