审核商品种子脚本改用小程序默认头像相对路径 beijing/morentouxiang.jpg。

优先读取 tupianpeizhi leixing=2 配置;已存在商品会同步更新图标路径。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-11 01:29:47 +08:00
parent 241a362eb4
commit 59af2fc18a

View File

@@ -19,8 +19,24 @@ from django.db import transaction
from shangpin.models import Shangpin, ShangpinLeixing, ShangpinZhuanqu
# 与 UserMain 默认头像一致,前端 OSS 拼接后可正常显示
DEFAULT_PRODUCT_IMAGE = 'a_long/morentouxiang.jpg'
# 小程序点单/头像拼接用的相对路径(与 peizhi GetDynamicConfig otherConfig.morentouxiang 默认一致)
FALLBACK_DEFAULT_AVATAR = 'beijing/morentouxiang.jpg'
def get_default_avatar_relative_url():
"""
默认头像相对 URL
1. 优先读后台 tupianpeizhi 表 leixing=2默认头像图片配置
2. 否则用 beijing/morentouxiang.jpg小程序动态配置默认值
"""
try:
from peizhi.models import Tupianpeizhi
row = Tupianpeizhi.objects.filter(leixing=2).only('tupian').first()
if row and row.tupian:
return str(row.tupian).strip().lstrip('/')
except Exception:
pass
return FALLBACK_DEFAULT_AVATAR
AUDIT_TYPE_NAME = '电竞休闲体验'
@@ -112,7 +128,9 @@ class Command(BaseCommand):
return
if dry_run:
avatar_url = get_default_avatar_relative_url()
self.stdout.write(self.style.NOTICE('【预览模式】将写入以下结构:'))
self.stdout.write(f' 商品图标相对路径: {avatar_url}')
self.stdout.write(f' 类型 1 个: {AUDIT_TYPE_NAME} (shenhezhuangtai=2)')
self.stdout.write(f' 专区 {len(ZONES)}')
self.stdout.write(f' 商品 {len(PRODUCTS)} 个 (shenhezhuangtai=2)')
@@ -122,17 +140,23 @@ class Command(BaseCommand):
return
with transaction.atomic():
default_image = get_default_avatar_relative_url()
leixing, _ = ShangpinLeixing.objects.get_or_create(
jieshao=AUDIT_TYPE_NAME,
shenhezhuangtai=2,
defaults={
'tupian_url': DEFAULT_PRODUCT_IMAGE,
'tupian_url': default_image,
'paixu': 9999,
'is_cross_enabled': False,
'is_special_type': False,
},
)
# 已存在类型时同步图标为当前默认头像
if leixing.tupian_url != default_image:
leixing.tupian_url = default_image
leixing.save(update_fields=['tupian_url'])
zone_map = {}
for name, paixu in ZONES:
zone, _ = ShangpinZhuanqu.objects.get_or_create(
@@ -147,11 +171,13 @@ class Command(BaseCommand):
skipped = 0
for zone_name, title, price, sales, sort_weight, desc in PRODUCTS:
zhuanqu = zone_map[zone_name]
if Shangpin.objects.filter(
exists_qs = Shangpin.objects.filter(
biaoqian=title,
shenhezhuangtai=2,
zhuanqu_id=zhuanqu.id,
).exists():
)
if exists_qs.exists():
exists_qs.update(tupian_url=default_image)
skipped += 1
continue
Shangpin.objects.create(
@@ -164,7 +190,7 @@ class Command(BaseCommand):
duiwai_xiaoliang=sales,
jieshao=desc,
xiadan_xuzhi=ORDER_NOTICE,
tupian_url=DEFAULT_PRODUCT_IMAGE,
tupian_url=default_image,
yaoqiuleixing=None,
huiyuan_id=None,
yongjin=None,
@@ -177,7 +203,7 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS(
f'完成:类型 id={leixing.id},专区 {len(zone_map)} 个,'
f'新建商品 {created} 个,跳过已存在 {skipped} 个。'
f'新建商品 {created} 个,跳过已存在 {skipped},图标={default_image}'
))
self.stdout.write('请将 xcx_sys_peizhi.shangpin_shenhe_mode 设为 2 后,小程序点单页即展示审核商品。')