Files

48 lines
1.9 KiB
Python
Raw Permalink Normal View History

2026-08-02 14:07:04 +08:00
from typing import cast
from channels.layers import BaseChannelLayer, get_channel_layer
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.viewsets import ViewSet
from sixGuoDjango import BaseResponse, ResData
from wechat_数据库.支付订单数据库.商品订单数据 import order订单
default_channel_layer = cast(BaseChannelLayer, get_channel_layer(alias="default"))
from functools import wraps
import threading
def sync_lock(lock):
def decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
with lock:
return fn(*args, **kwargs)
return wrapper
return decorator
class 用户评价ViewSets(ViewSet):
lock = threading.Lock() # 所有请求 共享这一个 lock对象
@sync_lock(lock=lock) # 锁住这个接口所有并发请求,
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="用户发起评价")
def 用户发起评价(self, request: Request):
""""""
self_mini_openid = request.data.get("self_mini_openid", None)
self_mini_unionid = request.data.get("self_mini_unionid", None)
order物流订单号 = request.data.get("order物流订单号", None)
order物流公司订单编号 = request.data.get("order物流公司订单编号", None)
order订单.objects.filter(order物流订单号=order物流订单号, order物流公司订单编号=order物流公司订单编号).update(
order物流状态="已评价",
)
订单查询列表 = order订单.objects.filter(order支付者openid=self_mini_openid, order支付状态="支付成功").values()
httpResData = BaseResponse(resData=ResData(listData=订单查询列表, dictData={}), ).model_dump()
return Response(data=httpResData, status=status.HTTP_200_OK)