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'订单更新成功')

+ 1 - 3
api/urls.py

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

+ 1 - 1
goods/models.py

@@ -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 - 1
pay/admin.py

@@ -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
 

+ 1 - 1
pay/models.py

@@ -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

+ 2 - 2
pay/views.py

@@ -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 - 1
utils/error/errno_utils.py

@@ -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'统一下单失败')

kodo - Gogs: Go Git Service

Aucune description

basic.html 8.8KB

    {% load staticfiles %} <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="format-detection" content="telephone=no,email=no,address=no"> <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <title>{% block title %}{% endblock %}</title> <link href="//cdnjs.cloudflare.com/ajax/libs/pure/0.6.2/pure-min.css" rel="stylesheet"> <link href="//cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/flexslider.min.css" rel="stylesheet"> <link href="//res.wx.qq.com/open/libs/weui/0.4.3/weui.min.css" rel="stylesheet" type="text/css" /> <link href="{% static 'page/css/flexslider.ext.css' %}" rel="stylesheet" type="text/css" /> <link href="{% static 'page/css/weui.ext.css' %}" rel="stylesheet" type="text/css" /> {% block link %}{% endblock %} <style> body { font-family: Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif !important; background: #fff; } img { pointer-events: none; } .clickable { pointer-events: auto; } /* Input 自动填充后,移除 Chrome 默认黄色 */ input:-webkit-autofill { box-shadow: 0 0 0 1000px white inset !important; } .container { padding-bottom: 45px; } .text-center { text-align: center; } .empty { color: #999; padding: .9375rem 0; font-size: .625rem; } .text_ellipsis { overflow:hidden; white-space:nowrap; text-overflow: ellipsis; } .fl { float: left; } .fr { float: right; } .clearfix { zoom: 1; } .clearfix:after { content: "\200B"; display: block; height: 0; clear: both; } </style> {% block tohomecss %} <style> .tohome { width: 40px; height: 40px; background-color: rgba(139, 139, 139, 0.7); position: fixed; right: 10px; bottom: 20px; border-radius: 9999px; border-top-left-radius: 9999px; border-top-right-radius: 9999px; border-bottom-left-radius: 9999px; border-bottom-right-radius: 9999px; z-index: 99999999; } .tohome img { display: block; width: 18px; height: 13px; margin: 6px auto 2px; } .tohome p { color: #ffffff; } </style> {% endblock %} {% block css %}{% endblock %} <script> {% block rem %} //这段js的最后面有两个参数记得要设置,一个为设计稿实际宽度,一个为制作稿最大宽度,例如设计稿为750,最大宽度为750,则为(750,750) !function(e,t){function n(){var n=l.getBoundingClientRect().width;t=t||540,n>t&&(n=t);var i=100*n/e;r.innerHTML="html{font-size:"+i+"px;}"}var i,d=document,o=window,l=d.documentElement,r=document.createElement("style");if(l.firstElementChild)l.firstElementChild.appendChild(r);else{var a=d.createElement("div");a.appendChild(r),d.write(a.innerHTML),a=null}n(),o.addEventListener("resize",function(){clearTimeout(i),i=setTimeout(n,300)},!1),o.addEventListener("pageshow",function(e){e.persisted&&(clearTimeout(i),i=setTimeout(n,300))},!1),"complete"===d.readyState?d.body.style.fontSize="16px":d.addEventListener("DOMContentLoaded",function(e){d.body.style.fontSize="16px"},!1)}(750,750); {% endblock %} </script> </head> <body> {% block somehtml %}{% endblock %} <div class="container"> {% block container %}{% endblock %} {% block tohomehtml %} <div class="tohome"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAMAAABzP0xhAAAAS1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////+DmQsHAAAAGHRSTlMAoHDw+q0VCufg187DuI+OgGJUSDwyKCBlxSbJAAAAi0lEQVQ4y+3SuRKEIBBFUaQbcd+X9/9fOpRDjaXQGJnNiW/SiwpkmXpiW6C16Sav4dR5qtlKHMpNbhaCR4vUTIwfnuKNxoWONR1uunB0g4Cxt9EbRDSXVewVoqr9bNYCgmJV3kwQ0fxtRkYCj8oZ8GBQqieHIWByev9DEPjfeisy+mDk6Dy9/kevRR9/MjHbEpIcQAAAAABJRU5ErkJggg=="> <p style="text-align:center;font-size:8px">回首页</p> </div> {% endblock %} </div> {% block somehtml2 %}{% endblock %} <script> window.onerror = function(errorMessage, scriptURI, lineNo, columnNo, error) { // 构建错误对象 var errorObj = { lineNo: lineNo || null, columnNo: columnNo || null, scriptURI: scriptURI || null, errorMessage: errorMessage || null, stack: error && error.stack ? error.stack : null }; // 构建Http请求 if (XMLHttpRequest) { var xhr = new XMLHttpRequest(); xhr.open('post', '/e/report', true); xhr.setRequestHeader('Content-Type', 'application/json'); // 设置请求头 xhr.send(JSON.stringify(errorObj)); // 发送参数 } } </script> {# <script src="//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.6/zepto.min.js"></script>#} <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider-min.js"></script> {% block script %}{% endblock %} <script> // History 压入本地连接 function pushHistory() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } pushHistory(); // 延时监听 setTimeout(function () { // 监听``返回``、``后退``、``上一页`` window.addEventListener("popstate", function (e) { if (confirm("确认退出") == true) { window.history.back(-1); } else { pushHistory(); } }, false); }, 300); </script> <script> {% block glbjs %}{% endblock %} $(function() { /** 格式化输入字符串**/ //用法: "hello{0}".format('world');返回'hello world' String.prototype.format= function(){ var args = arguments; return this.replace(/\{(\d+)\}/g,function(s,i){ return args[i]; }); } {% block flexsliderjs %} // 轮播图 $('.flexslider').flexslider({ slideshowSpeed: 2000, pauseOnHover: true, controlNav: false, directionNav: false, }); {% endblock %} {% block tohomejs %} // 返回首页 $('.tohome').click(function () { window.location.href = '{{ domain }}/page/nav?{{ params|safe }}' }) {% endblock %} {% block js %}{% endblock %} }); </script> <script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript" src="{% static 'machine/js/jswe-1.0.0.js' %}"></script> <script> {# V.initWxData({#} {# imgUrl: '{{ domain }}{% static 'page/img/logo.jpg' %}',#} {# link: 'http://hpsgift.hphcclub.com/we/ws',#} {# desc: '惠普销售红包系统',#} {# title: '惠普销售红包系统',#} {# timeLine: ''#} {# }, true);#} V.hideOptionMenu(); {% block jswe %}{% endblock %} </script> {% block scriptag %}{% endblock %} </body> </html>