debug
All checks were successful
Deploy to Server / deploy (push) Successful in 26s

This commit is contained in:
jeremygan2021
2026-02-26 18:55:46 +08:00
parent 6571d83912
commit f57edbd4ee
5 changed files with 33 additions and 7 deletions

View File

@@ -0,0 +1,18 @@
# Generated by Django 6.0.1 on 2026-02-26 10:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shop', '0036_alter_wechatuser_options_wechatuser_order'),
]
operations = [
migrations.AddField(
model_name='wechatuser',
name='has_web_badge',
field=models.BooleanField(default=False, verbose_name='是否拥有Web徽章'),
),
]

View File

@@ -27,6 +27,9 @@ class WeChatUser(models.Model):
skills = models.JSONField(default=list, verbose_name="专家技能", blank=True, help_text="格式: [{'icon': 'url', 'text': 'React'}, ...]") skills = models.JSONField(default=list, verbose_name="专家技能", blank=True, help_text="格式: [{'icon': 'url', 'text': 'React'}, ...]")
order = models.IntegerField(default=0, verbose_name="排序权重", help_text="数字越小越靠前") order = models.IntegerField(default=0, verbose_name="排序权重", help_text="数字越小越靠前")
# 徽章标识
has_web_badge = models.BooleanField(default=False, verbose_name="是否拥有Web徽章")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间") updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")

View File

@@ -25,8 +25,8 @@ class WeChatUserSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = WeChatUser model = WeChatUser
fields = ['id', 'openid', 'nickname', 'avatar_url', 'gender', 'country', 'province', 'city', 'phone_number', 'is_star', 'title', 'skills', 'is_admin', 'has_web_account'] fields = ['id', 'openid', 'nickname', 'avatar_url', 'gender', 'country', 'province', 'city', 'phone_number', 'is_star', 'title', 'skills', 'is_admin', 'has_web_account', 'has_web_badge']
read_only_fields = ['id', 'openid', 'phone_number', 'is_star', 'title', 'skills', 'is_admin', 'has_web_account'] read_only_fields = ['id', 'openid', 'phone_number', 'is_star', 'title', 'skills', 'is_admin', 'has_web_account', 'has_web_badge']
def get_is_admin(self, obj): def get_is_admin(self, obj):
# 检查是否关联了系统用户且具有管理员权限 # 检查是否关联了系统用户且具有管理员权限

View File

@@ -1109,6 +1109,9 @@ def wechat_login(request):
mp_user.avatar_url = phone_user.avatar_url mp_user.avatar_url = phone_user.avatar_url
if mp_user.gender == 0 and phone_user.gender != 0: if mp_user.gender == 0 and phone_user.gender != 0:
mp_user.gender = phone_user.gender mp_user.gender = phone_user.gender
# 标记拥有Web徽章
mp_user.has_web_badge = True
mp_user.save() mp_user.save()
# 删除旧用户 # 删除旧用户

View File

@@ -331,11 +331,13 @@ export default function UserIndex() {
</View> </View>
)} )}
{/* 网页用户 */} {/* 网页用户徽章 - 仅在 has_web_badge 为 true 时显示 */}
<View className={`badge web ${userInfo.has_web_account ? 'active' : 'disabled'}`}> {userInfo.has_web_badge && (
<Text className='badge-icon'>🌐</Text> <View className='badge web active'>
<Text className='badge-text'></Text> <Text className='badge-icon'>🌐</Text>
</View> <Text className='badge-text'></Text>
</View>
)}
</View> </View>
)} )}