add order_id for lensman_origin_photo_upload_api & check multi paid

Brightcells 8 ans auparavant
Parent
Commettre
07da1c3383
4 fichiers modifiés avec 9 ajouts et 4 suppressions
  1. 3 4
      group/lensman_views.py
  2. 1 0
      pay/models.py
  3. 4 0
      pay/views.py
  4. 1 0
      utils/error/errno_utils.py

+ 3 - 4
group/lensman_views.py

@@ -283,6 +283,8 @@ def lensman_photo_upload_api(request):
283 283
 @logit
284 284
 @transaction.atomic
285 285
 def lensman_origin_photo_upload_api(request):
286
+    order_id = request.POST.get('order_id', '')
287
+
286 288
     user_id = lensman_id = request.POST.get('user_id', '')
287 289
     session_id = request.POST.get('session_id', '')
288 290
 
@@ -293,13 +295,10 @@ def lensman_origin_photo_upload_api(request):
293 295
     photo = request.FILES.get('photo', '')
294 296
 
295 297
     try:
296
-        order = OrderInfo.objects.get(session_id=session_id, lensman_photo_id=photo_id)
298
+        order = OrderInfo.objects.get(order_id=order_id, pay_status=OrderInfo.PAID)
297 299
     except OrderInfo.DoesNotExist:
298 300
         return response(OrderStatusCode.WX_ORDER_NOT_FOUND)
299 301
 
300
-    if order.pay_status != OrderInfo.PAID:
301
-        return response(OrderStatusCode.WX_ORDER_NOT_PAY)
302
-
303 302
     from_uid = order.from_uid
304 303
     # 原图已删除, 处理退款逻辑
305 304
     if deleted:

+ 1 - 0
pay/models.py

@@ -107,6 +107,7 @@ class OrderInfo(CreateUpdateMixin):
107 107
         except GroupPhotoInfo.DoesNotExist:
108 108
             group_photo = {}
109 109
         return {
110
+            'order_id': self.order_id,
110 111
             'session_id': self.session_id,
111 112
             'photo_id': self.lensman_photo_id,
112 113
             'group_photo_info': group_photo and group_photo.photo_info(user_id),

+ 4 - 0
pay/views.py

@@ -43,6 +43,10 @@ def wx_order_create_api(request):
43 43
     except GroupPhotoInfo.DoesNotExist:
44 44
         return response(GroupPhotoStatusCode.GROUP_PHOTO_NOT_FOUND)
45 45
 
46
+    # 判断是否重复购买
47
+    if OrderInfo.objects.filter(photo_id=photo_id, photo_type=photo_type, from_uid=user_id, pay_status=OrderInfo.PAID).exists():
48
+        return response(OrderStatusCode.WX_ORDER_PAID_ALREADY_EXISTS)
49
+
46 50
     body = request.POST.get('body', '')  # 商品描述
47 51
     total_fee = int(request.POST.get('total_fee', 0))  # 总金额,单位分
48 52
 

+ 1 - 0
utils/error/errno_utils.py

@@ -78,6 +78,7 @@ class OrderStatusCode(BaseStatusCode):
78 78
     SIGN_CHECK_FAIL = StatusCodeField(404010, u'Sign Check Fail', description=u'签名校验失败')
79 79
     FEE_CHECK_FAIL = StatusCodeField(404011, u'FEE Check Fail', description=u'金额校验失败')
80 80
     NO_DETAIL_PERMISSION = StatusCodeField(404015, u'No Detail Permission', description=u'没有详情权限')
81
+    WX_ORDER_PAID_ALREADY_EXISTS = StatusCodeField(404020, u'WX Order Paid Already Exists', description=u'照片已购买')
81 82
 
82 83
 
83 84
 class WithdrawStatusCode(BaseStatusCode):