审核商品种子脚本改用小程序默认头像相对路径 beijing/morentouxiang.jpg。
优先读取 tupianpeizhi leixing=2 配置;已存在商品会同步更新图标路径。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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 后,小程序点单页即展示审核商品。')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user