@@ -887,6 +887,7 @@ def member_activity_create(request, administrator): |
||
887 | 887 |
activity_state = int(request.POST.get('activity_state', 0)) |
888 | 888 |
poster_kv_img_url = request.POST.get('poster_kv_img_url', '') |
889 | 889 |
poster_content = request.POST.get('poster_content', '') |
890 |
+ contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '') |
|
890 | 891 |
|
891 | 892 |
act = MemberActivityInfo.objects.create( |
892 | 893 |
brand_id=administrator.brand_id, |
@@ -914,7 +915,7 @@ def member_activity_create(request, administrator): |
||
914 | 915 |
activity_state=activity_state, |
915 | 916 |
poster_kv_img_url=poster_kv_img_url, |
916 | 917 |
poster_content=poster_content, |
917 |
- contribution_content_placeholder=contribution_content_placeholder |
|
918 |
+ contribution_content_placeholder=contribution_content_placeholder, |
|
918 | 919 |
) |
919 | 920 |
|
920 | 921 |
return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功', data={ |
@@ -964,8 +965,8 @@ def member_activity_register_list(request, administrator): |
||
964 | 965 |
}) |
965 | 966 |
|
966 | 967 |
|
967 |
-@check_admin |
|
968 | 968 |
@logit |
969 |
+@check_admin |
|
969 | 970 |
def member_activity_contribute_list(request, administrator): |
970 | 971 |
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
971 | 972 |
activity_id = request.POST.get('activity_id', '') |
@@ -0,0 +1,87 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+from __future__ import division |
|
4 |
+ |
|
5 |
+from django.conf import settings |
|
6 |
+from django_logit import logit |
|
7 |
+from django_response import response |
|
8 |
+from paginator import pagination |
|
9 |
+ |
|
10 |
+from kodo.decorators import check_admin |
|
11 |
+from tenancy.models import TenancyShotInfo |
|
12 |
+from utils.error.errno_utils import TenancyStatusCode |
|
13 |
+ |
|
14 |
+ |
|
15 |
+@logit |
|
16 |
+@check_admin |
|
17 |
+def shot_list(request, administrator): |
|
18 |
+ page = request.POST.get('page', 1) |
|
19 |
+ num = request.POST.get('num', 20) |
|
20 |
+ |
|
21 |
+ shots = TenancyShotInfo.objects.filter(status=True).order_by('-pk') |
|
22 |
+ shots = [shot.data for shot in shots] |
|
23 |
+ shots, left = pagination(shots, page, num) |
|
24 |
+ |
|
25 |
+ return response(data={ |
|
26 |
+ 'shots': shots, |
|
27 |
+ 'left': left, |
|
28 |
+ }) |
|
29 |
+ |
|
30 |
+ |
|
31 |
+@logit |
|
32 |
+@check_admin |
|
33 |
+def shot_detail(request, administrator): |
|
34 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
35 |
+ shot_id = request.POST.get('shot_id', '') |
|
36 |
+ |
|
37 |
+ try: |
|
38 |
+ shot = TenancyShotInfo.objects.get(shot_id=shot_id, status=True) |
|
39 |
+ except TenancyShotInfo.DoesNotExist: |
|
40 |
+ return response(TenancyStatusCode.TENANCY_SHOT_NOT_FOUND) |
|
41 |
+ |
|
42 |
+ return response(data={ |
|
43 |
+ 'shot': shot.data, |
|
44 |
+ }) |
|
45 |
+ |
|
46 |
+ |
|
47 |
+@logit |
|
48 |
+@check_admin |
|
49 |
+def shot_create(request, administrator): |
|
50 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
51 |
+ model_name = request.POST.get('model_name', '') |
|
52 |
+ sn = request.POST.get('sn', '') |
|
53 |
+ fittings_type = request.POST.get('fittings_type', 0) |
|
54 |
+ tenancy_status = request.POST.get('tenancy_status', 0) |
|
55 |
+ |
|
56 |
+ shot = TenancyShotInfo.objects.create( |
|
57 |
+ model_name=model_name, |
|
58 |
+ sn=sn, |
|
59 |
+ fittings_type=fittings_type, |
|
60 |
+ tenancy_status=tenancy_status, |
|
61 |
+ ) |
|
62 |
+ |
|
63 |
+ return response(data={ |
|
64 |
+ 'shot': shot.data, |
|
65 |
+ }) |
|
66 |
+ |
|
67 |
+ |
|
68 |
+@logit |
|
69 |
+@check_admin |
|
70 |
+def shot_update(request, administrator): |
|
71 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
72 |
+ shot_id = request.POST.get('shot_id', '') |
|
73 |
+ model_name = request.POST.get('model_name', '') |
|
74 |
+ sn = request.POST.get('sn', '') |
|
75 |
+ fittings_type = request.POST.get('fittings_type', 0) |
|
76 |
+ tenancy_status = request.POST.get('tenancy_status', 0) |
|
77 |
+ |
|
78 |
+ shot, _ = TenancyShotInfo.objects.update_or_create(shot_id=shot_id, defaults={ |
|
79 |
+ 'model_name': model_name, |
|
80 |
+ 'sn': sn, |
|
81 |
+ 'fittings_type': fittings_type, |
|
82 |
+ 'tenancy_status': tenancy_status, |
|
83 |
+ }) |
|
84 |
+ |
|
85 |
+ return response(data={ |
|
86 |
+ 'shot': shot.data, |
|
87 |
+ }) |
@@ -0,0 +1,42 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+from __future__ import division |
|
4 |
+ |
|
5 |
+from django.conf import settings |
|
6 |
+from django_logit import logit |
|
7 |
+from django_response import response |
|
8 |
+from paginator import pagination |
|
9 |
+ |
|
10 |
+from tenancy.models import TenancyShotInfo |
|
11 |
+from utils.error.errno_utils import TenancyStatusCode |
|
12 |
+ |
|
13 |
+ |
|
14 |
+@logit |
|
15 |
+def shot_list(request): |
|
16 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
17 |
+ page = request.POST.get('page', 1) |
|
18 |
+ num = request.POST.get('num', 20) |
|
19 |
+ |
|
20 |
+ shots = TenancyShotInfo.objects.filter(status=True).order_by('-pk') |
|
21 |
+ shots = [shot.data for shot in shots] |
|
22 |
+ shots, left = pagination(shots, page, num) |
|
23 |
+ |
|
24 |
+ return response(data={ |
|
25 |
+ 'shots': shots, |
|
26 |
+ 'left': left, |
|
27 |
+ }) |
|
28 |
+ |
|
29 |
+ |
|
30 |
+@logit |
|
31 |
+def shot_detail(request): |
|
32 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
33 |
+ shot_id = request.POST.get('shot_id', '') |
|
34 |
+ |
|
35 |
+ try: |
|
36 |
+ shot = TenancyShotInfo.objects.get(shot_id=shot_id, status=True) |
|
37 |
+ except TenancyShotInfo.DoesNotExist: |
|
38 |
+ return response(TenancyStatusCode.TENANCY_SHOT_NOT_FOUND) |
|
39 |
+ |
|
40 |
+ return response(data={ |
|
41 |
+ 'shot': shot.data, |
|
42 |
+ }) |
@@ -5,7 +5,7 @@ from django_file_upload import views as file_views |
||
5 | 5 |
|
6 | 6 |
from api import (admin_views, clerk_views, complement_views, distributor_views, encrypt_views, express_views, log_views, |
7 | 7 |
maintenance_point_views, maintenance_views, mch_views, member_views, model_views, operator_views, |
8 |
- refresh_views, sr_views, staff_views, wx_views, wxa_views) |
|
8 |
+ refresh_views, sr_views, staff_views, tenancy_admin_views, tenancy_views, wx_views, wxa_views) |
|
9 | 9 |
from miniapp import qy_views |
10 | 10 |
from miniapp import views as mini_views |
11 | 11 |
from page import oauth_views, sale_views, screen_views |
@@ -307,15 +307,39 @@ urlpatterns += [ |
||
307 | 307 |
|
308 | 308 |
# 维修 |
309 | 309 |
urlpatterns += [ |
310 |
+ # 小程序接口 |
|
310 | 311 |
url(r'^maintenance/add$', maintenance_views.maintenance_add, name='maintenance_add'), |
311 | 312 |
url(r'^maintenance/delete$', maintenance_views.maintenance_delete, name='maintenance_delete'), |
312 | 313 |
url(r'^maintenance/list$', maintenance_views.maintenance_list, name='maintenance_list'), |
313 | 314 |
url(r'^maintenance/detail$', maintenance_views.maintenance_detail, name='maintenance_detail'), |
314 | 315 |
|
316 |
+ # 后台管理接口 |
|
315 | 317 |
url(r'^admin/maintenance/update$', maintenance_views.maintenance_update, name='maintenance_update'), |
316 | 318 |
url(r'^admin/maintenance/list$', maintenance_views.maintenance_list, name='maintenance_list'), |
317 | 319 |
url(r'^admin/maintenance/close$', maintenance_views.maintenance_close, name='maintenance_close'), |
318 | 320 |
|
319 | 321 |
url(r'^admin/maintenance/tracking/info$', maintenance_views.maintenance_tracking_info, name='maintenance_tracking_info'), |
322 |
+ |
|
323 |
+ # 快递信息回调接口 |
|
320 | 324 |
url(r'^maintenance/tracking/info/callback$', maintenance_views.maintenance_tracking_info_callback, name='maintenance_tracking_info_callback'), |
321 | 325 |
] |
326 |
+ |
|
327 |
+# 租赁 |
|
328 |
+urlpatterns += [ |
|
329 |
+ # 小程序接口 |
|
330 |
+ url(r'^tenancy/shot/list$', tenancy_views.shot_list, name='tenancy_shot_list'), |
|
331 |
+ url(r'^tenancy/shot/detail$', tenancy_views.shot_detail, name='tenancy_shot_detail'), |
|
332 |
+ |
|
333 |
+ # 后台管理接口 |
|
334 |
+ url(r'^admin/tenancy/shot/list$', tenancy_admin_views.shot_list, name='admin_tenancy_shot_list'), |
|
335 |
+ url(r'^admin/tenancy/shot/detail$', tenancy_admin_views.shot_detail, name='admin_tenancy_shot_detail'), |
|
336 |
+ url(r'^admin/tenancy/shot/create$', tenancy_admin_views.shot_create, name='admin_tenancy_shot_create'), |
|
337 |
+ url(r'^admin/tenancy/shot/update$', tenancy_admin_views.shot_update, name='admin_tenancy_shot_update'), |
|
338 |
+] |
|
339 |
+ |
|
340 |
+# 租赁申请 |
|
341 |
+urlpatterns += [ |
|
342 |
+ # 小程序接口 |
|
343 |
+ |
|
344 |
+ # 后台管理接口 |
|
345 |
+] |
@@ -16,17 +16,17 @@ class PermissionStatusCode(BaseStatusCode): |
||
16 | 16 |
class AdministratorStatusCode(BaseStatusCode): |
17 | 17 |
""" 操作员相关错误码 4002xx """ |
18 | 18 |
ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在') |
19 |
- ADMINISTRATOR_PERMISSION_DENIED = StatusCodeField(508002, 'Administrator Permission Denied', description=u'管理员权限不足') |
|
19 |
+ ADMINISTRATOR_PERMISSION_DENIED = StatusCodeField(400202, 'Administrator Permission Denied', description=u'管理员权限不足') |
|
20 | 20 |
|
21 |
- # 密码 |
|
22 |
- ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400202, 'Administrator Password Error', description=u'管理员密码错误') |
|
23 | 21 |
# 手机号 |
24 | 22 |
ADMINISTRATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400205, 'Administrator Phone Already Exists', description=u'管理员手机号已经存在') |
23 |
+ # 密码 |
|
24 |
+ ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400210, 'Administrator Password Error', description=u'管理员密码错误') |
|
25 | 25 |
# 状态 |
26 | 26 |
ADMINISTRATOR_NOT_ACTIVATED = StatusCodeField(400215, 'Administrator Not Activated', description=u'管理员未激活') |
27 | 27 |
ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用') |
28 | 28 |
ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除') |
29 |
- # 管理员 |
|
29 |
+ # 核销员 |
|
30 | 30 |
MAINTENANCE_NOT_FOUND = StatusCodeField(400251, 'Maintenance Not Found', description=u'核销员不存在') |
31 | 31 |
|
32 | 32 |
|
@@ -211,3 +211,8 @@ class MaintenanceStatusCode(BaseStatusCode): |
||
211 | 211 |
""" 维修相关错误码 5080xx """ |
212 | 212 |
MAINTENACE_NOT_FOUND = StatusCodeField(508001, 'Maintenance Not Found', description=u'维修不存在') |
213 | 213 |
MAINTENACE_PERMISSION_DENIED = StatusCodeField(508002, 'Maintenance Permission Denied', description=u'维修权限不足') |
214 |
+ |
|
215 |
+ |
|
216 |
+class TenancyStatusCode(BaseStatusCode): |
|
217 |
+ """ 租赁相关错误码 5090xx """ |
|
218 |
+ TENANCY_SHOT_NOT_FOUND = StatusCodeField(509001, 'Tenancy Shot Not Found', description=u'租赁镜头不存在') |