| @@ -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: | 
| @@ -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), | 
| @@ -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 |  | 
| @@ -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): |