add query_usergoods and userinfo

FFIB преди 5 години
родител
ревизия
7be92b9fe4
променени са 4 файла, в които са добавени 95 реда и са изтрити 0 реда
  1. 22 0
      account/models.py
  2. 56 0
      api/admin_views.py
  3. 3 0
      api/urls.py
  4. 14 0
      mch/models.py

+ 22 - 0
account/models.py

@@ -4,6 +4,7 @@ from django.db import models
4 4
 from django.utils.translation import ugettext_lazy as _
5 5
 from django_models_ext import BaseModelMixin, SexModelMixin
6 6
 from jsonfield import JSONField
7
+from TimeConvert import TimeConvert as tc
7 8
 
8 9
 from kodo.basemodels import LensmanTypeBoolMixin
9 10
 from mch.models import SaleclerkInfo
@@ -461,6 +462,27 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin):
461 462
     def sendcustomwxamessage(self):
462 463
         # 关注公众号 + 未领保修卡 + 已绑定镜头
463 464
         return self.subscribe and not self.has_membercard and self.shots_num
465
+    
466
+    @property
467
+    def admindata(self):
468
+        return {
469
+            'user_id': self.user_id,
470
+            'nickname': self.nickname,
471
+            'avatar': self.avatar,
472
+            'phone': self.phone,
473
+            'sex': self.sex,
474
+            'province': self.province,
475
+            'city': self.city,
476
+            'subscribe': self.subscribe,
477
+            'membercardid': self.membercardid,
478
+            'memberusercardcode': self.memberusercardcode,
479
+            'created_at': tc.local_string(self.created_at, format='%Y-%m-%d'),
480
+
481
+            #会员信息
482
+            'integral': self.integral,
483
+            'shots_num': self.shots_num,
484
+            'level': self.level,
485
+        }
464 486
 
465 487
 
466 488
 class UserLoginLogInfo(BaseModelMixin):

+ 56 - 0
api/admin_views.py

@@ -6,9 +6,12 @@ from django.conf import settings
6 6
 from django.db import transaction
7 7
 from django_logit import logit
8 8
 from django_response import response
9
+from paginator import pagination
9 10
 from TimeConvert import TimeConvert as tc
10 11
 
11 12
 from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo
13
+from account.models import UserInfo
14
+from integral.models import SaleclerkSubmitLogInfo
12 15
 from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode,
13 16
                                      ProductMachineStatusCode)
14 17
 
@@ -97,3 +100,56 @@ def usecoupon(request):
97 100
     log.save()
98 101
 
99 102
     return response(200, 'Use Coupon Success', u'核销优惠券成功')
103
+
104
+@logit
105
+def userinfo(request):
106
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
107
+    admin_id = request.POST.get('admin_id', '')
108
+    page = request.POST.get('page', 1)
109
+    num = request.POST.get('num', 20)
110
+
111
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
112
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
113
+
114
+    try:
115
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
116
+    except AdministratorInfo.DoesNotExist:
117
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
118
+
119
+    userinfos = UserInfo.objects.filter(status=True).order_by('-created_at')
120
+    count = userinfos.count()
121
+    userinfos, left = pagination(userinfos, page, num)
122
+    userinfos = [userinfo.admindata for userinfo in userinfos]
123
+
124
+    return response(200, 'Userinfo Success', u'用户列表获取成功', data={
125
+        'userinfos': userinfos,
126
+        'count': count,
127
+        'left': left,
128
+    })
129
+
130
+@logit
131
+def query_usergoods(request):
132
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
133
+    admin_id = request.POST.get('admin_id', '')
134
+    user_id = request.POST.get('user_id', '')
135
+
136
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
137
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
138
+
139
+    # 校验用户是否存在
140
+    try:
141
+        user = UserInfo.objects.get(user_id=user_id)
142
+    except UserInfo.DoesNotExist:
143
+        return response(UserStatusCode.USER_NOT_FOUND)
144
+
145
+    try:
146
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
147
+    except AdministratorInfo.DoesNotExist:
148
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
149
+
150
+    logs = ConsumeInfoSubmitLogInfo.objects.filter(brand_id=administrator.brand_id, user_id=user_id, status=True).order_by('-created_at')
151
+    logs = [log.adminuserdata for log in logs]
152
+
153
+    return response(200, 'Userinfo Success', u'用户列表获取成功', data={
154
+        'logs': logs,
155
+    })

+ 3 - 0
api/urls.py

@@ -288,6 +288,9 @@ urlpatterns += [
288 288
     url(r'^admin/querysn$', admin_views.querysn, name='querysn'),
289 289
     url(r'^admin/queryusedsn$', admin_views.queryusedsn, name='queryusedsn'),
290 290
     url(r'^admin/usecoupon$', admin_views.usecoupon, name='usecoupon'),
291
+
292
+    url(r'^admin/userinfo$', admin_views.userinfo, name='userinfo'),
293
+    url(r'^admin/query_usergoods$', admin_views.query_usergoods, name='query_usergoods'),
291 294
 ]
292 295
 
293 296
 urlpatterns += [

+ 14 - 0
mch/models.py

@@ -602,6 +602,20 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin):
602 602
             'used_at': self.used_at,
603 603
         }
604 604
 
605
+    @property
606
+    def adminuserdata(self):
607
+        try:
608
+            model_info = ModelInfo.objects.get(model_id=self.model_id)
609
+        except ModelInfo.DoesNotExist:
610
+            model_info = {}
611
+        
612
+        return {
613
+            'model_name': self.model_name,
614
+            'serialNo': self.serialNo,
615
+            'integral': model_info.shot_member_integral,
616
+            'dupload': self.dupload,
617
+            'created_at': tc.local_string(self.created_at, format='%Y-%m-%d'),
618
+        }
605 619
 
606 620
 class ActivityInfo(BaseModelMixin):
607 621
     FIXED_EXPIRED_TIME = 0