@@ -1,17 +1,17 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 |
+from django.conf import settings |
|
| 3 | 4 |
from django.contrib import admin |
| 4 | 5 |
from django.contrib.auth.hashers import make_password |
| 5 |
-from django.conf import settings |
|
| 6 |
- |
|
| 7 | 6 |
from pysnippets.strsnippets import strip |
| 8 | 7 |
|
| 9 |
-from account.models import UserInfo, AdministratorInfo |
|
| 8 |
+from account.models import AdministratorInfo, UserInfo |
|
| 10 | 9 |
|
| 11 | 10 |
|
| 12 | 11 |
class UserInfoAdmin(admin.ModelAdmin): |
| 13 | 12 |
list_display = ('user_id', 'unionid', 'openid', 'nickname', 'sex', 'avatar', 'phone', 'country', 'province', 'city', 'status', 'created_at', 'updated_at')
|
| 14 | 13 |
|
| 14 |
+ |
|
| 15 | 15 |
class AdministratorInfoAdmin(admin.ModelAdmin): |
| 16 | 16 |
list_display = ('admin_id', 'admin_type', 'password', 'encryption', 'name', 'user_status', 'status', 'created_at', 'updated_at')
|
| 17 | 17 |
list_filter = ('admin_type', 'user_status', 'status')
|
@@ -20,7 +20,7 @@ class UserInfo(BaseModelMixin): |
||
| 20 | 20 |
province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份') |
| 21 | 21 |
city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市') |
| 22 | 22 |
|
| 23 |
- #收货信息 |
|
| 23 |
+ # 收货信息 |
|
| 24 | 24 |
consignee_name = models.CharField(_(u'consignee_name'), max_length=255, blank=True, null=True, help_text=u'收货人姓名') |
| 25 | 25 |
consignee_phone = models.CharField(_(u'consignee_phone'), max_length=255, blank=True, null=True, help_text=u'收货人电话') |
| 26 | 26 |
consignee_address = models.CharField(_(u'consignee_address'), max_length=255, blank=True, null=True, help_text=u'收货人地址') |
@@ -57,6 +57,7 @@ class UserInfo(BaseModelMixin): |
||
| 57 | 57 |
'avatar': self.avatar, |
| 58 | 58 |
} |
| 59 | 59 |
|
| 60 |
+ |
|
| 60 | 61 |
class AdministratorInfo(BaseModelMixin): |
| 61 | 62 |
ADMINISTRATOR = 0 |
| 62 | 63 |
|
@@ -89,4 +90,4 @@ class AdministratorInfo(BaseModelMixin): |
||
| 89 | 90 |
verbose_name_plural = _(u'管理员信息') |
| 90 | 91 |
|
| 91 | 92 |
def __unicode__(self): |
| 92 |
- return u'{}-{}'.format(self.name, self.phone)
|
|
| 93 |
+ return u'{}-{}'.format(self.name, self.phone)
|
@@ -2,24 +2,23 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
import logging |
| 4 | 4 |
|
| 5 |
-from django.conf import settings |
|
| 5 |
+from django.contrib.auth.hashers import check_password |
|
| 6 | 6 |
from django.db import transaction |
| 7 |
+from django.db.models import Q |
|
| 7 | 8 |
from django_logit import logit |
| 8 | 9 |
from django_response import response |
| 9 |
-from django.contrib.auth.hashers import check_password |
|
| 10 |
-from django.db.models import Q |
|
| 11 |
- |
|
| 12 | 10 |
from TimeConvert import TimeConvert as tc |
| 13 | 11 |
|
| 14 |
-from account.models import UserInfo, AdministratorInfo |
|
| 12 |
+from account.models import AdministratorInfo |
|
| 15 | 13 |
from goods.models import GoodsInfo, PackInfo |
| 16 | 14 |
from kol.models import KOLInfo |
| 17 | 15 |
from pay.models import OrderInfo |
| 16 |
+from utils.error.errno_utils import AdministratorStatusCode, OrderStatusCode |
|
| 18 | 17 |
|
| 19 |
-from utils.error.errno_utils import AdministratorStatusCode |
|
| 20 | 18 |
|
| 21 | 19 |
logger = logging.getLogger('logit')
|
| 22 | 20 |
|
| 21 |
+ |
|
| 23 | 22 |
@logit(res=True) |
| 24 | 23 |
def login(request): |
| 25 | 24 |
name = request.POST.get('name', '')
|
@@ -49,60 +48,68 @@ def login(request): |
||
| 49 | 48 |
@logit(res=True) |
| 50 | 49 |
@transaction.atomic |
| 51 | 50 |
def order_list(request): |
| 52 |
- admin_id = request.POST.get('admin_id', '')
|
|
| 53 |
- kol_id = request.POST.get('kol_id', '')
|
|
| 54 |
- pack_id = request.POST.get('pack_id', '')
|
|
| 55 |
- ftime = request.POST.get('ftime', '')
|
|
| 56 |
- ttime = request.POST.get('ttime', '')
|
|
| 57 |
- query = request.POST.get('query', '')
|
|
| 51 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 52 |
+ kol_id = request.POST.get('kol_id', '')
|
|
| 53 |
+ pack_id = request.POST.get('pack_id', '')
|
|
| 54 |
+ ftime = request.POST.get('ftime', '')
|
|
| 55 |
+ ttime = request.POST.get('ttime', '')
|
|
| 56 |
+ query = request.POST.get('query', '')
|
|
| 58 | 57 |
|
| 59 |
- page = request.POST.get('page', 0)
|
|
| 60 |
- num = request.POST.get('num', 20)
|
|
| 58 |
+ page = request.POST.get('page', 0)
|
|
| 59 |
+ num = request.POST.get('num', 20)
|
|
| 61 | 60 |
|
| 62 |
- try: |
|
| 63 |
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 64 |
- except AdministratorInfo.DoesNotExist: |
|
| 65 |
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 61 |
+ try: |
|
| 62 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 63 |
+ except AdministratorInfo.DoesNotExist: |
|
| 64 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 66 | 65 |
|
| 67 |
- infos = OrderInfo.objects.filter(Q(phone__contains=query) | Q(name__contains=query) & Q(kol_id__contains=kol_id) & Q(pack_id__contains=pack_id)& Q(pay_status=1)).order_by('-paid_at')
|
|
| 66 |
+ infos = OrderInfo.objects.filter( |
|
| 67 |
+ Q(phone__contains=query) | Q(name__contains=query) & Q(kol_id__contains=kol_id) & Q( |
|
| 68 |
+ pack_id__contains=pack_id) & Q(pay_status=1)).order_by('-paid_at')
|
|
| 68 | 69 |
|
| 69 |
- res = [] |
|
| 70 |
+ res = [] |
|
| 70 | 71 |
|
| 71 |
- for info in infos: |
|
| 72 |
- goods_info = [] |
|
| 73 |
- try: |
|
| 74 |
- pack = PackInfo.objects.get(pack_id=info.pack_id) |
|
| 75 |
- kol = KOLInfo.objects.get(kol_id=info.kol_id) |
|
| 72 |
+ for info in infos: |
|
| 73 |
+ goods_info = [] |
|
| 74 |
+ try: |
|
| 75 |
+ pack = PackInfo.objects.get(pack_id=info.pack_id) |
|
| 76 |
+ except PackInfo.DoesNotExist: |
|
| 77 |
+ continue |
|
| 76 | 78 |
|
| 77 |
- for g in info.goods_info: |
|
| 78 | 79 |
try: |
| 79 |
- goods = GoodsInfo.objects.get(good_id=g.get('good_id', ''))
|
|
| 80 |
- goods_info.append({
|
|
| 81 |
- 'title': goods.title, |
|
| 82 |
- 'num': g.get('num', 0)
|
|
| 83 |
- }) |
|
| 84 |
- except: |
|
| 85 |
- continue |
|
| 86 |
- |
|
| 87 |
- res.append({
|
|
| 88 |
- 'name': info.name, |
|
| 89 |
- 'phone': info.phone, |
|
| 90 |
- 'address': info.address, |
|
| 91 |
- 'paid_at': tc.local_string(utc_dt=info.paid_at, format='%Y-%m-%d %H:%M'), |
|
| 92 |
- 'order_id': info.order_id, |
|
| 93 |
- 'transaction_id': info.transaction_id, |
|
| 94 |
- 'tracking_number': info.tracking_number, |
|
| 95 |
- 'goods_info': goods_info, |
|
| 96 |
- 'kol_name': kol.name, |
|
| 97 |
- 'pack_title': pack.title |
|
| 98 |
- }) |
|
| 99 |
- except: |
|
| 100 |
- continue |
|
| 101 |
- |
|
| 102 |
- return response(200, 'Order List Success', u'获取订单列表成功', {
|
|
| 80 |
+ kol = KOLInfo.objects.get(kol_id=info.kol_id) |
|
| 81 |
+ except KOLInfo.DoesNotExist: |
|
| 82 |
+ continue |
|
| 83 |
+ |
|
| 84 |
+ for g in info.goods_info: |
|
| 85 |
+ try: |
|
| 86 |
+ goods = GoodsInfo.objects.get(good_id=g.get('good_id', ''))
|
|
| 87 |
+ except GoodsInfo.DoesNotExist: |
|
| 88 |
+ continue |
|
| 89 |
+ |
|
| 90 |
+ goods_info.append({
|
|
| 91 |
+ 'title': goods.title, |
|
| 92 |
+ 'num': g.get('num', 0)
|
|
| 93 |
+ }) |
|
| 94 |
+ |
|
| 95 |
+ res.append({
|
|
| 96 |
+ 'name': info.name, |
|
| 97 |
+ 'phone': info.phone, |
|
| 98 |
+ 'address': info.address, |
|
| 99 |
+ 'paid_at': tc.local_string(utc_dt=info.paid_at, format='%Y-%m-%d %H:%M'), |
|
| 100 |
+ 'order_id': info.order_id, |
|
| 101 |
+ 'transaction_id': info.transaction_id, |
|
| 102 |
+ 'tracking_number': info.tracking_number, |
|
| 103 |
+ 'goods_info': goods_info, |
|
| 104 |
+ 'kol_name': kol.name, |
|
| 105 |
+ 'pack_title': pack.title |
|
| 106 |
+ }) |
|
| 107 |
+ |
|
| 108 |
+ return response(200, 'Order List Success', u'获取订单列表成功', {
|
|
| 103 | 109 |
'orders': res |
| 104 | 110 |
}) |
| 105 | 111 |
|
| 112 |
+ |
|
| 106 | 113 |
@logit(res=True) |
| 107 | 114 |
@transaction.atomic |
| 108 | 115 |
def order_update(request): |
@@ -111,15 +118,16 @@ def order_update(request): |
||
| 111 | 118 |
tracking_number = request.POST.get('tracking_number', '')
|
| 112 | 119 |
|
| 113 | 120 |
try: |
| 114 |
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 121 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 115 | 122 |
except AdministratorInfo.DoesNotExist: |
| 116 |
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 123 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 117 | 124 |
|
| 118 | 125 |
try: |
| 119 |
- order = OrderInfo.objects.get(order_id=order_id) |
|
| 120 |
- order.tracking_number = tracking_number |
|
| 121 |
- order.save() |
|
| 126 |
+ order = OrderInfo.objects.get(order_id=order_id) |
|
| 122 | 127 |
except OrderInfo.DoesNotExist: |
| 123 |
- return response(400001, 'Order Not Found', u'订单不存在') |
|
| 124 |
- |
|
| 125 |
- return response(200, 'Order Update Success', u'订单更新成功') |
|
| 128 |
+ return response(OrderStatusCode.ORDER_NOT_FOUND) |
|
| 129 |
+ |
|
| 130 |
+ order.tracking_number = tracking_number |
|
| 131 |
+ order.save() |
|
| 132 |
+ |
|
| 133 |
+ return response(200, 'Order Update Success', u'订单更新成功') |
@@ -2,7 +2,7 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
from django.conf.urls import url |
| 4 | 4 |
|
| 5 |
-from api import mini_views, oauth_views, pack_views, admin_views |
|
| 5 |
+from api import admin_views, mini_views, oauth_views, pack_views |
|
| 6 | 6 |
from pay import views as pay_views |
| 7 | 7 |
|
| 8 | 8 |
|
@@ -27,8 +27,6 @@ urlpatterns += [ |
||
| 27 | 27 |
url(r'^admin/order/update$', admin_views.order_update, name='order_update'), # 订单列表 |
| 28 | 28 |
] |
| 29 | 29 |
|
| 30 |
- |
|
| 31 |
- |
|
| 32 | 30 |
urlpatterns += [ |
| 33 | 31 |
url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'), |
| 34 | 32 |
url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'), |
@@ -87,7 +87,7 @@ class PackGoodsInfo(BaseModelMixin): |
||
| 87 | 87 |
good = GoodsInfo.objects.get(good_id=self.good_id) |
| 88 | 88 |
except GoodsInfo.DoesNotExist: |
| 89 | 89 |
good = {}
|
| 90 |
- |
|
| 90 |
+ |
|
| 91 | 91 |
data = good.data |
| 92 | 92 |
data.update({'inventory': self.inventory, 'has_sale_num': self.has_sale_num})
|
| 93 | 93 |
return data |
@@ -1,7 +1,7 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 | 3 |
from django.contrib import admin |
| 4 |
-from django_admin import ReadOnlyModelAdmin, Readonly2ModelAdmin |
|
| 4 |
+from django_admin import Readonly2ModelAdmin, ReadOnlyModelAdmin |
|
| 5 | 5 |
|
| 6 | 6 |
from pay.models import OrderInfo |
| 7 | 7 |
|
@@ -71,4 +71,4 @@ class OrderInfo(BaseModelMixin): |
||
| 71 | 71 |
verbose_name_plural = _('订单信息')
|
| 72 | 72 |
|
| 73 | 73 |
def __unicode__(self): |
| 74 |
- return self.pk |
|
| 74 |
+ return self.pk |
@@ -76,7 +76,7 @@ def wx_order_create_api(request): |
||
| 76 | 76 |
for g in goods_info: |
| 77 | 77 |
try: |
| 78 | 78 |
good = GoodsInfo.objects.get(good_id=g.get('good_id', ''))
|
| 79 |
- except: |
|
| 79 |
+ except GoodsInfo.DoesNotExist: |
|
| 80 | 80 |
continue |
| 81 | 81 |
amount = amount + good.price * g.get('num', 0)
|
| 82 | 82 |
|
@@ -116,7 +116,7 @@ def wx_order_create_api(request): |
||
| 116 | 116 |
except WeChatPayException as e: |
| 117 | 117 |
order.unifiedorder_result = e.args |
| 118 | 118 |
order.save() |
| 119 |
- return response(OrderStatusCode.WX_UNIFIED_ORDER_FAIL) |
|
| 119 |
+ return response(OrderStatusCode.UNIFIED_ORDER_FAIL) |
|
| 120 | 120 |
|
| 121 | 121 |
prepay_id = prepay_data.get('prepay_id', '')
|
| 122 | 122 |
order.prepay_id = prepay_id |
@@ -2,6 +2,7 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
from StatusCode import BaseStatusCode, StatusCodeField |
| 4 | 4 |
|
| 5 |
+ |
|
| 5 | 6 |
class AdministratorStatusCode(BaseStatusCode): |
| 6 | 7 |
""" 操作员相关错误码 4002xx """ |
| 7 | 8 |
ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在') |
@@ -14,6 +15,7 @@ class AdministratorStatusCode(BaseStatusCode): |
||
| 14 | 15 |
ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用') |
| 15 | 16 |
ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除') |
| 16 | 17 |
|
| 18 |
+ |
|
| 17 | 19 |
class ParamStatusCode(BaseStatusCode): |
| 18 | 20 |
""" 4000xx 参数相关错误码 """ |
| 19 | 21 |
PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description=u'参数不存在') |
@@ -48,7 +50,6 @@ class PackGoodsStatusCode(BaseStatusCode): |
||
| 48 | 50 |
PACK_GOODS_INVENTORY_SHORTAGE = StatusCodeField(403002, 'Pack Goods Inventory Shortage', description=u'库存不足') |
| 49 | 51 |
|
| 50 | 52 |
|
| 51 |
- |
|
| 52 | 53 |
class OrderStatusCode(BaseStatusCode): |
| 53 | 54 |
""" 4040xx 订单/支付相关错误码 """ |
| 54 | 55 |
UNIFIED_ORDER_FAIL = StatusCodeField(404000, 'Unified Order Fail', description=u'统一下单失败') |