diff --git a/backend/shop/views.py b/backend/shop/views.py index 5b28058..be4f218 100644 --- a/backend/shop/views.py +++ b/backend/shop/views.py @@ -974,12 +974,14 @@ def get_current_wechat_user(request): @extend_schema( summary="微信小程序登录", - description="支持通过 code 登录,以及可选的 phone_code 用于直接获取手机号并合并 Web 用户账号。同时支持传入用户基本信息(gender, country, province, city)。", + description="支持通过 code 登录,以及可选的 phone_code 用于直接获取手机号并合并 Web 用户账号。同时支持传入用户基本信息(nickname, avatar_url, gender, country, province, city)。", request={ 'application/json': { 'properties': { 'code': {'type': 'string', 'description': 'wx.login获取的code'}, 'phone_code': {'type': 'string', 'description': 'getPhoneNumber获取的code (可选)'}, + 'nickname': {'type': 'string', 'description': '昵称 (可选)'}, + 'avatar_url': {'type': 'string', 'description': '头像URL (可选)'}, 'gender': {'type': 'integer', 'description': '性别 0未知 1男 2女 (可选)'}, 'country': {'type': 'string', 'description': '国家 (可选)'}, 'province': {'type': 'string', 'description': '省份 (可选)'}, @@ -996,6 +998,8 @@ def wechat_login(request): phone_code = request.data.get('phone_code') # 获取可选的用户信息 + nickname = request.data.get('nickname') + avatar_url = request.data.get('avatar_url') gender = request.data.get('gender') country = request.data.get('country') province = request.data.get('province') @@ -1095,9 +1099,8 @@ def wechat_login(request): user = mp_user # 更新手机号 - if not user.phone_number: - user.phone_number = phone_number - user.save() + user.phone_number = phone_number + user.save() else: # 同一个用户 user = mp_user @@ -1145,6 +1148,10 @@ def wechat_login(request): user.unionid = unionid # 更新用户基本信息 (如果有传入) + if nickname: + user.nickname = nickname + if avatar_url: + user.avatar_url = avatar_url if gender is not None: user.gender = gender if country: