Add clerk integral list api

Brightcells 7 years ago
parent
commit
df63cfed08
4 changed files with 69 additions and 1 deletions
  1. 1 0
      api/urls.py
  2. 25 0
      integral/migrations/0003_auto_20180402_1904.py
  3. 12 0
      integral/models.py
  4. 31 1
      page/sale_views.py

+ 1 - 0
api/urls.py

@@ -214,6 +214,7 @@ urlpatterns += [
214 214
 urlpatterns += [
215 215
     url(r'^clerk/submit$', oauth_views.clerk_submit_api, name='clerk_submit_api'),  # 店员信息提交
216 216
     url(r'^clerk/sale/submit$', sale_views.clerk_sale_submit_api, name='clerk_sale_submit'),  # 店员销售信息提交
217
+    url(r'^clerk/integral/list$', sale_views.clerk_integral_list_api, name='clerk_integral_list_api'),  # 店员销售积分列表
217 218
 ]
218 219
 
219 220
 urlpatterns += [

+ 25 - 0
integral/migrations/0003_auto_20180402_1904.py

@@ -0,0 +1,25 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.11 on 2018-04-02 11:04
3
+from __future__ import unicode_literals
4
+
5
+from django.db import migrations, models
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    dependencies = [
11
+        ('integral', '0002_auto_20180308_1440'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.AddField(
16
+            model_name='saleclerkintegralincomeexpensesinfo',
17
+            name='model_id',
18
+            field=models.CharField(blank=True, db_index=True, help_text='\u578b\u53f7\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='model_id'),
19
+        ),
20
+        migrations.AddField(
21
+            model_name='saleclerkintegralincomeexpensesinfo',
22
+            name='model_name',
23
+            field=models.CharField(blank=True, help_text='\u578b\u53f7\u540d\u79f0', max_length=255, null=True, verbose_name='model_name'),
24
+        ),
25
+    ]

+ 12 - 0
integral/models.py

@@ -21,6 +21,9 @@ class SaleclerkIntegralIncomeExpensesInfo(BaseModelMixin):
21 21
 
22 22
     type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别', db_index=True)
23 23
 
24
+    model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True)
25
+    model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称')
26
+
24 27
     code = models.CharField(_(u'code'), max_length=32, blank=True, null=True, help_text=u'机身码', db_index=True)
25 28
 
26 29
     consumer_name = models.CharField(_(u'consumer_name'), max_length=32, blank=True, null=True, help_text=u'消费者姓名')
@@ -43,6 +46,15 @@ class SaleclerkIntegralIncomeExpensesInfo(BaseModelMixin):
43 46
     def __unicode__(self):
44 47
         return unicode(self.pk)
45 48
 
49
+    @property
50
+    def data(self):
51
+        return {
52
+            'type': self.type,
53
+            'integral': self.integral,
54
+            'modelName': self.model_name,
55
+            'serialNo': self.code,
56
+        }
57
+
46 58
 
47 59
 class SaleclerkSubmitLogInfo(BaseModelMixin):
48 60
     franchiser_id = models.CharField(_(u'franchiser_id'), max_length=32, blank=True, null=True, help_text=u'经销商唯一标识', db_index=True)

+ 31 - 1
page/sale_views.py

@@ -7,6 +7,7 @@ from django.db import transaction
7 7
 from django.shortcuts import render
8 8
 from django_logit import logit
9 9
 from django_response import response
10
+from paginator import pagination
10 11
 
11 12
 from account.models import SaleclerkInfo, UserInfo
12 13
 from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo
@@ -77,10 +78,12 @@ def clerk_sale_submit_api(request):
77 78
     # 店员积分
78 79
     # TODO: 序列号 vs. 积分
79 80
     try:
80
-        integral = ModelInfo.objects.get(ModelID=ModelID).integral
81
+        model = ModelInfo.objects.get(ModelID=ModelID)
81 82
     except ModelInfo.DoesNotExist:
82 83
         return response(ProductModelStatusCode.MODEL_NOT_FOUND)
83 84
 
85
+    integral = model.integral
86
+
84 87
     clerk.integral += integral
85 88
     clerk.total_integral += integral
86 89
     clerk.save()
@@ -90,6 +93,8 @@ def clerk_sale_submit_api(request):
90 93
         franchiser_id=clerk.franchiser_id,
91 94
         clerk_id=clerk.clerk_id,
92 95
         type=SaleclerkIntegralIncomeExpensesInfo.INCOME,
96
+        model_id=model.model_id,
97
+        model_name=model.model_name,
93 98
         code=serialNo,
94 99
         consumer_name=consumer_name,
95 100
         consumer_phone=consumer_phone,
@@ -107,6 +112,31 @@ def clerk_sale_submit_api(request):
107 112
 
108 113
 
109 114
 @logit
115
+def clerk_integral_list_api(request):
116
+    user_id = request.POST.get('user_id', '')
117
+    page = int(request.POST.get('page', 1))
118
+    num = int(request.POST.get('num', settings.GROUP_NUM_PER_PAGE))
119
+
120
+    try:
121
+        user = UserInfo.objects.get(user_id=user_id, status=True)
122
+    except UserInfo.DoesNotExist:
123
+        return response(SaleclerkStatusCode.CLERK_NOT_FOUND)
124
+
125
+    try:
126
+        clerk = SaleclerkInfo.objects.get(unionid=user.unionid, status=True)
127
+    except SaleclerkInfo.DoesNotExist:
128
+        return response(SaleclerkStatusCode.CLERK_NOT_FOUND)
129
+
130
+    integrals = SaleclerkIntegralIncomeExpensesInfo.objects.filter(clerk_id=clerk.clerk_id).order_by('-pk')
131
+    integrals, left = pagination(integrals, page, num)
132
+    integrals = [integral.data for integral in integrals]
133
+
134
+    return response(200, data={
135
+        'integrals': integrals,
136
+    })
137
+
138
+
139
+@logit
110 140
 @transaction.atomic
111 141
 def clerk_sale_submit_api_bak(request):
112 142
     """ 店员信息提交 """