diff --git a/config/migrations/0011_clubminiappicon_is_uploaded.py b/config/migrations/0011_clubminiappicon_is_uploaded.py new file mode 100644 index 0000000..7c6b1c2 --- /dev/null +++ b/config/migrations/0011_clubminiappicon_is_uploaded.py @@ -0,0 +1,16 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('config', '0010_club_miniapp_icon_pindao'), + ] + + operations = [ + migrations.AddField( + model_name='clubminiappicon', + name='is_uploaded', + field=models.BooleanField(default=False, verbose_name='是否已在后台上传'), + ), + ] diff --git a/config/models.py b/config/models.py index c492119..ee9afd4 100644 --- a/config/models.py +++ b/config/models.py @@ -469,6 +469,7 @@ class ClubMiniappIcon(QModel): image_path = models.CharField(max_length=500, blank=True, default='', verbose_name='图片相对路径') description = models.CharField(max_length=300, blank=True, default='', verbose_name='说明') is_active = models.BooleanField(default=True, verbose_name='是否启用') + is_uploaded = models.BooleanField(default=False, verbose_name='是否已在后台上传') CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') UpdateTime = models.DateTimeField(auto_now=True, verbose_name='更新时间') diff --git a/jituan/services/miniapp_assets.py b/jituan/services/miniapp_assets.py index ee2ffbd..3e89201 100644 --- a/jituan/services/miniapp_assets.py +++ b/jituan/services/miniapp_assets.py @@ -45,14 +45,12 @@ def default_icon_path(icon_key: str) -> str: def get_miniapp_icons_dict(club_id: str) -> dict: from config.models import ClubMiniappIcon - rows = ClubMiniappIcon.query.filter(club_id=club_id, is_active=True) - db_map = {r.icon_key: (r.image_path or '').strip() for r in rows if r.icon_key} - result = {} - for key in MINIAPP_ICON_KEYS: - path = db_map.get(key) or default_icon_path(key) - if path: - result[key] = path - return result + rows = ClubMiniappIcon.query.filter(club_id=club_id, is_active=True, is_uploaded=True) + return { + r.icon_key: (r.image_path or '').strip() + for r in rows + if r.icon_key and (r.image_path or '').strip() + } def get_pindao_payload(club_id: str) -> dict: @@ -119,6 +117,7 @@ def copy_miniapp_assets(template_club_id: str, new_club_id: str): image_path=row.image_path, description=row.description, is_active=row.is_active, + is_uploaded=row.is_uploaded, ) src_pindao = ClubPindao.query.filter(club_id=template_club_id).first() diff --git a/jituan/views_miniapp_assets.py b/jituan/views_miniapp_assets.py index ee96929..f508abd 100644 --- a/jituan/views_miniapp_assets.py +++ b/jituan/views_miniapp_assets.py @@ -52,6 +52,7 @@ class ClubMiniappIconListView(APIView): 'image_path': (row.image_path if row else '') or default_icon_path(key), 'description': (row.description if row else '') or '', 'is_active': row.is_active if row else True, + 'is_uploaded': row.is_uploaded if row else False, 'id': row.id if row else None, }) return Response({ @@ -127,7 +128,8 @@ class ClubMiniappIconManageView(APIView): row.image_path = oss_path row.label = MINIAPP_ICON_LABELS[icon_key] row.is_active = True - row.save(update_fields=['image_path', 'label', 'is_active', 'UpdateTime']) + row.is_uploaded = True + row.save(update_fields=['image_path', 'label', 'is_active', 'is_uploaded', 'UpdateTime']) else: ClubMiniappIcon.query.create( club_id=club_id, @@ -135,6 +137,7 @@ class ClubMiniappIconManageView(APIView): label=MINIAPP_ICON_LABELS[icon_key], image_path=oss_path, is_active=True, + is_uploaded=True, ) return Response({'code': 0, 'msg': '上传成功', 'data': {'image_path': oss_path}})