import jmespath import requests from django.core.files.uploadedfile import InMemoryUploadedFile from django.forms import model_to_dict from rest_framework import status from rest_framework.decorators import action from rest_framework.request import Request from rest_framework.response import Response from rest_framework.routers import DefaultRouter from rest_framework.viewsets import ViewSet from sixGuoDjango import BaseResponse, ResData from wechat_token.token工具包 import sixToken from wechat_数据库.用户数据库.小程序登陆用户 import weiuser class 小程序用户头像昵称接口ViewSets(ViewSet): @action(detail=False, methods=["post"], url_path="chooseAvatar") def 用户头像接口(self, request: Request): """""" chooseAvatar: InMemoryUploadedFile | None = request.FILES.get("chooseAvatar", None) print(chooseAvatar) self_user_unionid = request.data.get("self_user_unionid", None) self_mini_openid = request.data.get("self_mini_openid", None) print(self_user_unionid) httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump() return Response(data=httpResData, status=status.HTTP_200_OK) @action(detail=False, methods=["post"], url_path="nickName") def 更新用户昵称(self, request: Request): """""" self_user_unionid = request.data.get("self_user_unionid", None) self_mini_openid = request.data.get("self_mini_openid", None) nickName = request.data.get("nickName", None) print("获取到的用户昵称", nickName) httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump() return Response(data=httpResData, status=status.HTTP_200_OK) @action(detail=False, methods=["post"], url_path="getPhoneNumber") def 获取用户手机号码(self, request: Request): """""" self_user_unionid = request.data.get("self_user_unionid", None) self_mini_openid = request.data.get("self_mini_openid", None) code = request.data.get("code", None) mini_token = sixToken.get_mini_token() url = f"https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={mini_token}" jsonData = {"code": code} resData = requests.post(url=url, json=jsonData).json() print(resData, "❌❌❌❌❌❌❌❌❌❌❌❌") phoneNumber = jmespath.search(data=resData, expression="phone_info.phoneNumber") print(phoneNumber) httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"phoneNumber": phoneNumber}), ).model_dump() return Response(data=httpResData, status=status.HTTP_200_OK) @action(detail=False, methods=["post"], url_path="search") def 查询用户头像和昵称(self, request: Request): """""" self_mini_openid = request.data.get("self_mini_openid", None) self_mini_unionid = request.data.get("self_mini_unionid", None) 用户头像信息 = weiuser.objects.get(unionid=self_mini_unionid) resData = model_to_dict(instance=用户头像信息, fields=["avatar", "nickName"]) print(self_mini_unionid) httpResData = BaseResponse(resData=ResData(listData=[""], dictData=resData), ).model_dump() return Response(data=httpResData, status=status.HTTP_200_OK)