@@ -6,9 +6,9 @@ from django_models_ext import BaseModelMixin, upload_file_path, upload_file_url, |
||
| 6 | 6 |
from jsonfield import JSONField |
| 7 | 7 |
from shortuuidfield import ShortUUIDField |
| 8 | 8 |
from TimeConvert import TimeConvert as tc |
| 9 |
-from simditor.fields import RichTextField |
|
| 10 | 9 |
|
| 11 | 10 |
from account.models import UserInfo |
| 11 |
+from simditor.fields import RichTextField |
|
| 12 | 12 |
|
| 13 | 13 |
|
| 14 | 14 |
class GoodsInfo(BaseModelMixin): |
@@ -67,6 +67,7 @@ class PackInfo(BaseModelMixin): |
||
| 67 | 67 |
'pack_detail': self.pack_detail, |
| 68 | 68 |
} |
| 69 | 69 |
|
| 70 |
+ |
|
| 70 | 71 |
class PackGoodsInfo(BaseModelMixin): |
| 71 | 72 |
pack_id = models.CharField(_('pack_id'), max_length=32, blank=True, null=True, help_text='包唯一标识', db_index=True)
|
| 72 | 73 |
good_id = models.CharField(_('good_id'), max_length=32, blank=True, null=True, help_text='商品唯一标识', db_index=True)
|
@@ -1,10 +1,12 @@ |
||
| 1 |
-from django.contrib import admin |
|
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 | 2 |
|
| 3 |
+from django.contrib import admin |
|
| 3 | 4 |
|
| 4 |
-# Register your models here. |
|
| 5 | 5 |
from pay.models import OrderInfo |
| 6 | 6 |
|
| 7 |
+ |
|
| 7 | 8 |
class OrderInfoAdmin(admin.ModelAdmin): |
| 8 | 9 |
list_display = ('kol_id', 'pack_id', 'goods_info', 'user_id', 'total_fee', 'name', 'phone', 'address', 'tracking_number', 'pay_status')
|
| 9 | 10 |
|
| 11 |
+ |
|
| 10 | 12 |
admin.site.register(OrderInfo, OrderInfoAdmin) |
@@ -3,9 +3,9 @@ |
||
| 3 | 3 |
from django.db import models |
| 4 | 4 |
from django.utils.translation import ugettext_lazy as _ |
| 5 | 5 |
from django_models_ext import BaseModelMixin |
| 6 |
-from shortuuidfield import ShortUUIDField |
|
| 7 | 6 |
from jsonfield import JSONField |
| 8 |
-from TimeConvert import TimeConvert as tc |
|
| 7 |
+from shortuuidfield import ShortUUIDField |
|
| 8 |
+ |
|
| 9 | 9 |
|
| 10 | 10 |
class OrderInfo(BaseModelMixin): |
| 11 | 11 |
|
@@ -71,4 +71,4 @@ class OrderInfo(BaseModelMixin): |
||
| 71 | 71 |
verbose_name_plural = _(u'订单信息') |
| 72 | 72 |
|
| 73 | 73 |
def __unicode__(self): |
| 74 |
- return u'{0.pk}'.format(self)
|
|
| 74 |
+ return self.pk |
@@ -1,5 +1,8 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 |
+import json |
|
| 4 |
+from functools import reduce |
|
| 5 |
+ |
|
| 3 | 6 |
from django.conf import settings |
| 4 | 7 |
from django.db import transaction |
| 5 | 8 |
from django.shortcuts import HttpResponse |
@@ -9,17 +12,13 @@ from pywe_exception import WeChatPayException |
||
| 9 | 12 |
from pywe_pay import WeChatPay |
| 10 | 13 |
from pywe_pay_notify import check_pay_notify |
| 11 | 14 |
from pywe_response import WXPAY_NOTIFY_FAIL, WXPAY_NOTIFY_SUCCESS |
| 12 |
-from pywe_sign import check_signature |
|
| 13 | 15 |
from TimeConvert import TimeConvert as tc |
| 14 |
-import json |
|
| 15 |
-from functools import reduce |
|
| 16 | 16 |
|
| 17 | 17 |
from account.models import UserInfo |
| 18 | 18 |
from goods.models import PackInfo, PackGoodsInfo, GoodsInfo, PackGoodsSaleInfo |
| 19 | 19 |
from kol.models import KOLInfo |
| 20 | 20 |
from pay.models import OrderInfo |
| 21 |
-from utils.error.errno_utils import (PackStatusCode, KOLStatusCode, PackGoodsStatusCode, OrderStatusCode, UserStatusCode, |
|
| 22 |
- WithdrawStatusCode) |
|
| 21 |
+from utils.error.errno_utils import KOLStatusCode, OrderStatusCode, PackGoodsStatusCode, PackStatusCode, UserStatusCode |
|
| 23 | 22 |
|
| 24 | 23 |
|
| 25 | 24 |
WECHAT = settings.WECHAT |
@@ -49,7 +48,7 @@ def wx_order_create_api(request): |
||
| 49 | 48 |
kol = KOLInfo.objects.get(kol_id=kol_id, status=True) |
| 50 | 49 |
except KOLInfo.DoesNotExist: |
| 51 | 50 |
return response(KOLStatusCode.KOL_NOT_FOUND) |
| 52 |
- |
|
| 51 |
+ |
|
| 53 | 52 |
# 包校验 |
| 54 | 53 |
try: |
| 55 | 54 |
pack = PackInfo.objects.get(kol_id=kol_id, pack_id=pack_id, status=True) |
@@ -59,7 +58,7 @@ def wx_order_create_api(request): |
||
| 59 | 58 |
body = request.POST.get('body', '') # 商品描述
|
| 60 | 59 |
total_fee = int(request.POST.get('total_fee', 0)) # 总金额,单位分
|
| 61 | 60 |
|
| 62 |
- #包-商品校验 |
|
| 61 |
+ # 包-商品校验 |
|
| 63 | 62 |
for g in goods_info: |
| 64 | 63 |
try: |
| 65 | 64 |
PackGoodsInfo.objects.get(pack_id=pack_id, good_id=g.get('good_id', ''))
|
@@ -124,7 +123,7 @@ def wx_order_create_api(request): |
||
| 124 | 123 |
def order_paid_success(order): |
| 125 | 124 |
if order.pay_status == OrderInfo.PAID: |
| 126 | 125 |
return |
| 127 |
- |
|
| 126 |
+ |
|
| 128 | 127 |
order.pay_status = OrderInfo.PAID |
| 129 | 128 |
order.paid_at = tc.utc_datetime() |
| 130 | 129 |
order.save() |
@@ -143,6 +142,7 @@ def order_paid_fail(order): |
||
| 143 | 142 |
order.pay_status = OrderInfo.FAIL |
| 144 | 143 |
order.save() |
| 145 | 144 |
|
| 145 |
+ |
|
| 146 | 146 |
@logit |
| 147 | 147 |
@transaction.atomic |
| 148 | 148 |
def wx_notify_url_api(request): |
@@ -1,5 +1,5 @@ |
||
| 1 | 1 |
pywe_miniapp==1.1.5 |
| 2 | 2 |
pywe-oauth==1.1.1 |
| 3 | 3 |
pywe-pay==1.0.13 |
| 4 |
-pywe-pay-notify==1.0.4 |
|
| 4 |
+pywe-pay-notify==1.0.5 |
|
| 5 | 5 |
pywe-response==1.0.1 |
@@ -9,6 +9,7 @@ from django.core.files.uploadedfile import InMemoryUploadedFile |
||
| 9 | 9 |
|
| 10 | 10 |
from simditor import utils |
| 11 | 11 |
|
| 12 |
+ |
|
| 12 | 13 |
try: |
| 13 | 14 |
from PIL import Image, ImageOps |
| 14 | 15 |
except ImportError: |
@@ -2,13 +2,13 @@ |
||
| 2 | 2 |
from __future__ import absolute_import |
| 3 | 3 |
|
| 4 | 4 |
import django |
| 5 |
- |
|
| 6 | 5 |
from django.conf import settings |
| 7 |
-from django.conf.urls import url, static |
|
| 6 |
+from django.conf.urls import static, url |
|
| 8 | 7 |
from django.contrib.admin.views.decorators import staff_member_required |
| 9 | 8 |
|
| 10 | 9 |
from . import views |
| 11 | 10 |
|
| 11 |
+ |
|
| 12 | 12 |
if django.VERSION >= (2, 0): |
| 13 | 13 |
# pylint disable=C0103 |
| 14 | 14 |
from django.urls import path |
@@ -3,7 +3,6 @@ from __future__ import absolute_import |
||
| 3 | 3 |
|
| 4 | 4 |
import os.path |
| 5 | 5 |
import random |
| 6 |
- |
|
| 7 | 6 |
import string |
| 8 | 7 |
|
| 9 | 8 |
from django.core.files.storage import default_storage |
@@ -6,13 +6,11 @@ from datetime import datetime |
||
| 6 | 6 |
|
| 7 | 7 |
from django.conf import settings |
| 8 | 8 |
from django.core.files.storage import default_storage |
| 9 |
- |
|
| 10 | 9 |
from django.http import JsonResponse |
| 11 |
- |
|
| 12 | 10 |
from django.views import generic |
| 13 | 11 |
from django.views.decorators.csrf import csrf_exempt |
| 14 | 12 |
|
| 15 |
-from . import utils, image_processing |
|
| 13 |
+from . import image_processing, utils |
|
| 16 | 14 |
|
| 17 | 15 |
|
| 18 | 16 |
def get_upload_filename(upload_name): |
@@ -5,12 +5,12 @@ from django import forms |
||
| 5 | 5 |
from django.conf import settings |
| 6 | 6 |
from django.core.exceptions import ImproperlyConfigured |
| 7 | 7 |
from django.core.serializers.json import DjangoJSONEncoder |
| 8 |
- |
|
| 9 | 8 |
from django.template.loader import render_to_string |
| 10 | 9 |
from django.utils.encoding import force_text |
| 11 |
-from django.utils.safestring import mark_safe |
|
| 12 |
-from django.utils.html import conditional_escape |
|
| 13 | 10 |
from django.utils.functional import Promise |
| 11 |
+from django.utils.html import conditional_escape |
|
| 12 |
+from django.utils.safestring import mark_safe |
|
| 13 |
+ |
|
| 14 | 14 |
|
| 15 | 15 |
try: |
| 16 | 16 |
# Django >=2.1 |
@@ -2,17 +2,6 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
from StatusCode import BaseStatusCode, StatusCodeField |
| 4 | 4 |
|
| 5 |
-class UserStatusCode(BaseStatusCode): |
|
| 6 |
- USER_NOT_FOUND = StatusCodeField(400001, 'User Not Found', description=u'用户不存在') |
|
| 7 |
- |
|
| 8 |
-class KOLStatusCode(BaseStatusCode): |
|
| 9 |
- KOL_NOT_FOUND = StatusCodeField(400001, 'KOL Not Found', description=u'KOL不存在') |
|
| 10 |
- |
|
| 11 |
-class PackStatusCode(BaseStatusCode): |
|
| 12 |
- PACK_NOT_FOUND = StatusCodeField(100001, 'Pack Not Found', description=u'包不存在') |
|
| 13 |
- |
|
| 14 |
-class PackGoodsStatusCode(BaseStatusCode): |
|
| 15 |
- PACK_GOODS_NOT_FOUND = StatusCodeField(100001, 'Pack Goods Not Found', description=u'包商品不存在') |
|
| 16 | 5 |
|
| 17 | 6 |
class ParamStatusCode(BaseStatusCode): |
| 18 | 7 |
""" 4000xx 参数相关错误码 """ |
@@ -31,6 +20,22 @@ class PhoneStatusCode(BaseStatusCode): |
||
| 31 | 20 |
PHONE_ALREADY_EXISTS = StatusCodeField(400202, 'Phone Already Exists', description=u'手机号已存在') |
| 32 | 21 |
|
| 33 | 22 |
|
| 23 |
+class UserStatusCode(BaseStatusCode): |
|
| 24 |
+ USER_NOT_FOUND = StatusCodeField(400301, 'User Not Found', description=u'用户不存在') |
|
| 25 |
+ |
|
| 26 |
+ |
|
| 27 |
+class KOLStatusCode(BaseStatusCode): |
|
| 28 |
+ KOL_NOT_FOUND = StatusCodeField(401001, 'KOL Not Found', description=u'KOL不存在') |
|
| 29 |
+ |
|
| 30 |
+ |
|
| 31 |
+class PackStatusCode(BaseStatusCode): |
|
| 32 |
+ PACK_NOT_FOUND = StatusCodeField(402001, 'Pack Not Found', description=u'包不存在') |
|
| 33 |
+ |
|
| 34 |
+ |
|
| 35 |
+class PackGoodsStatusCode(BaseStatusCode): |
|
| 36 |
+ PACK_GOODS_NOT_FOUND = StatusCodeField(403001, 'Pack Goods Not Found', description=u'包商品不存在') |
|
| 37 |
+ |
|
| 38 |
+ |
|
| 34 | 39 |
class OrderStatusCode(BaseStatusCode): |
| 35 | 40 |
""" 4040xx 订单/支付相关错误码 """ |
| 36 | 41 |
UNIFIED_ORDER_FAIL = StatusCodeField(404000, 'Unified Order Fail', description=u'统一下单失败') |