This commit is contained in:
18
backend/shop/migrations/0037_wechatuser_has_web_badge.py
Normal file
18
backend/shop/migrations/0037_wechatuser_has_web_badge.py
Normal 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徽章'),
|
||||
),
|
||||
]
|
||||
@@ -27,6 +27,9 @@ class WeChatUser(models.Model):
|
||||
skills = models.JSONField(default=list, verbose_name="专家技能", blank=True, help_text="格式: [{'icon': 'url', 'text': 'React'}, ...]")
|
||||
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="创建时间")
|
||||
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ class WeChatUserSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = WeChatUser
|
||||
fields = ['id', 'openid', 'nickname', 'avatar_url', 'gender', 'country', 'province', 'city', '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']
|
||||
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', 'has_web_badge']
|
||||
|
||||
def get_is_admin(self, obj):
|
||||
# 检查是否关联了系统用户且具有管理员权限
|
||||
|
||||
@@ -1109,6 +1109,9 @@ def wechat_login(request):
|
||||
mp_user.avatar_url = phone_user.avatar_url
|
||||
if mp_user.gender == 0 and phone_user.gender != 0:
|
||||
mp_user.gender = phone_user.gender
|
||||
|
||||
# 标记拥有Web徽章
|
||||
mp_user.has_web_badge = True
|
||||
mp_user.save()
|
||||
|
||||
# 删除旧用户
|
||||
|
||||
@@ -331,11 +331,13 @@ export default function UserIndex() {
|
||||
</View>
|
||||
)}
|
||||
|
||||
{/* 网页用户 */}
|
||||
<View className={`badge web ${userInfo.has_web_account ? 'active' : 'disabled'}`}>
|
||||
<Text className='badge-icon'>🌐</Text>
|
||||
<Text className='badge-text'>网页用户</Text>
|
||||
</View>
|
||||
{/* 网页用户徽章 - 仅在 has_web_badge 为 true 时显示 */}
|
||||
{userInfo.has_web_badge && (
|
||||
<View className='badge web active'>
|
||||
<Text className='badge-icon'>🌐</Text>
|
||||
<Text className='badge-text'>网页用户</Text>
|
||||
</View>
|
||||
)}
|
||||
</View>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user