@@ -6,7 +6,7 @@ from django.contrib.auth.hashers import check_password, make_password |
||
6 | 6 |
from django_response import response |
7 | 7 |
from logit import logit |
8 | 8 |
|
9 |
-from mch.models import BrandInfo, DistributorInfo, LatestAppInfo, ModelInfo, OperatorInfo |
|
9 |
+from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo, ModelInfo, OperatorInfo |
|
10 | 10 |
from utils.error.errno_utils import OperatorStatusCode |
11 | 11 |
|
12 | 12 |
|
@@ -105,3 +105,29 @@ def upgrade_api(request): |
||
105 | 105 |
return response(200, 'Get Latest App Success', u'获取最新版信息成功', { |
106 | 106 |
'appinfo': appinfo, |
107 | 107 |
}) |
108 |
+ |
|
109 |
+ |
|
110 |
+@logit |
|
111 |
+def consume_info_api(request): |
|
112 |
+ user_id = request.POST.get('user_id', '') |
|
113 |
+ iv = request.POST.get('iv', '') |
|
114 |
+ encryptedData = request.POST.get('encryptedData', '') |
|
115 |
+ lat = request.POST.get('lat', '') |
|
116 |
+ lon = request.POST.get('lon', '') |
|
117 |
+ serialNo = request.POST.get('SerialNo', '') |
|
118 |
+ verifyResult = request.POST.get('verifyResult', '') |
|
119 |
+ |
|
120 |
+ # To Get Phone |
|
121 |
+ |
|
122 |
+ ConsumeInfoSubmitLogInfo.objects.create( |
|
123 |
+ user_id=user_id, |
|
124 |
+ phone='', |
|
125 |
+ iv=iv, |
|
126 |
+ encryptedData=encryptedData, |
|
127 |
+ lat=lat, |
|
128 |
+ lon=long, |
|
129 |
+ serialNo=serialNo, |
|
130 |
+ verifyResult=verifyResult, |
|
131 |
+ ) |
|
132 |
+ |
|
133 |
+ return response() |
@@ -203,3 +203,7 @@ urlpatterns += [ |
||
203 | 203 |
urlpatterns += [ |
204 | 204 |
url(r'^api/upgrade$', mch_views.upgrade_api, name='upgrade_api'), # APP 升级 |
205 | 205 |
] |
206 |
+ |
|
207 |
+urlpatterns += [ |
|
208 |
+ url(r'^api/consume_info$', mch_views.consume_info_api, name='consume_info_api'), |
|
209 |
+] |
@@ -1,12 +1,13 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
-from djadmin import DeleteModelAdmin |
|
3 |
+from djadmin import DeleteModelAdmin, ReadOnlyModelAdmin |
|
4 | 4 |
from django.conf import settings |
5 | 5 |
from django.contrib import admin |
6 | 6 |
from django.contrib.auth.hashers import check_password, make_password |
7 | 7 |
from pysnippets.strsnippets import strip |
8 | 8 |
|
9 |
-from mch.models import BrandInfo, DistributorInfo, LatestAppInfo, ModelImageInfo, ModelInfo, OperatorInfo |
|
9 |
+from mch.models import (BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo, ModelImageInfo, ModelInfo, |
|
10 |
+ OperatorInfo) |
|
10 | 11 |
|
11 | 12 |
|
12 | 13 |
class OperatorInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
@@ -90,9 +91,15 @@ class LatestAppInfoAdmin(admin.ModelAdmin): |
||
90 | 91 |
obj.save() |
91 | 92 |
|
92 | 93 |
|
94 |
+class ConsumeInfoSubmitLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin): |
|
95 |
+ list_display = ('user_id', 'phone', 'iv', 'encryptedData', 'lat', 'lon', 'serialNo', 'verifyResult', 'status', 'created_at', 'updated_at') |
|
96 |
+ list_filter = ('status', ) |
|
97 |
+ |
|
98 |
+ |
|
93 | 99 |
admin.site.register(OperatorInfo, OperatorInfoAdmin) |
94 | 100 |
admin.site.register(BrandInfo, BrandInfoAdmin) |
95 | 101 |
admin.site.register(ModelInfo, ModelInfoAdmin) |
96 | 102 |
admin.site.register(ModelImageInfo, ModelImageInfoAdmin) |
97 | 103 |
admin.site.register(DistributorInfo, DistributorInfoAdmin) |
98 | 104 |
admin.site.register(LatestAppInfo, LatestAppInfoAdmin) |
105 |
+admin.site.register(ConsumeInfoSubmitLogInfo, ConsumeInfoSubmitLogInfoAdmin) |
@@ -0,0 +1,36 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+# Generated by Django 1.11.9 on 2018-01-28 20:13 |
|
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 |
+ ('mch', '0006_auto_20180115_0047'), |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.CreateModel( |
|
16 |
+ name='ConsumeInfoSubmitLogInfo', |
|
17 |
+ fields=[ |
|
18 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
19 |
+ ('status', models.BooleanField(db_index=True, default=True, help_text='Status', verbose_name='status')), |
|
20 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
21 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
22 |
+ ('user_id', models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id')), |
|
23 |
+ ('phone', models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u624b\u673a', max_length=11, null=True, verbose_name='phone')), |
|
24 |
+ ('iv', models.CharField(blank=True, help_text='iv', max_length=11, null=True, verbose_name='iv')), |
|
25 |
+ ('encryptedData', models.CharField(blank=True, help_text='encryptedData', max_length=11, null=True, verbose_name='encryptedData')), |
|
26 |
+ ('lat', models.IntegerField(default=1.0, help_text='\u7eac\u5ea6', verbose_name='lat')), |
|
27 |
+ ('lon', models.IntegerField(default=1.0, help_text='\u7ecf\u5ea6', verbose_name='lon')), |
|
28 |
+ ('serialNo', models.CharField(blank=True, db_index=True, help_text='\u5e8f\u5217\u53f7', max_length=16, null=True, verbose_name='serialNo')), |
|
29 |
+ ('verifyResult', models.IntegerField(default=0, help_text='\u9a8c\u8bc1\u7ed3\u679c', verbose_name='verifyResult')), |
|
30 |
+ ], |
|
31 |
+ options={ |
|
32 |
+ 'verbose_name': '\u6d88\u8d39\u8005\u4fe1\u606f\u63d0\u4ea4\u8bb0\u5f55', |
|
33 |
+ 'verbose_name_plural': '\u6d88\u8d39\u8005\u4fe1\u606f\u63d0\u4ea4\u8bb0\u5f55', |
|
34 |
+ }, |
|
35 |
+ ), |
|
36 |
+ ] |
@@ -189,3 +189,25 @@ class LatestAppInfo(BaseModelMixin): |
||
189 | 189 |
'latest_adr_version_name': self.latest_adr_version_name, |
190 | 190 |
'latest_adr_url': self.final_latest_adr_url, |
191 | 191 |
} |
192 |
+ |
|
193 |
+ |
|
194 |
+class ConsumeInfoSubmitLogInfo(BaseModelMixin): |
|
195 |
+ user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
|
196 |
+ |
|
197 |
+ phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'用户手机', db_index=True) |
|
198 |
+ iv = models.CharField(_(u'iv'), max_length=11, blank=True, null=True, help_text=u'iv') |
|
199 |
+ encryptedData = models.CharField(_(u'encryptedData'), max_length=11, blank=True, null=True, help_text=u'encryptedData') |
|
200 |
+ |
|
201 |
+ lat = models.IntegerField(_(u'lat'), default=1.0, help_text=u'纬度') |
|
202 |
+ lon = models.IntegerField(_(u'lon'), default=1.0, help_text=u'经度') |
|
203 |
+ |
|
204 |
+ serialNo = models.CharField(_(u'serialNo'), max_length=16, blank=True, null=True, help_text=u'序列号', db_index=True) |
|
205 |
+ |
|
206 |
+ verifyResult = models.IntegerField(_(u'verifyResult'), default=0, help_text=u'验证结果') |
|
207 |
+ |
|
208 |
+ class Meta: |
|
209 |
+ verbose_name = _(u'消费者信息提交记录') |
|
210 |
+ verbose_name_plural = _(u'消费者信息提交记录') |
|
211 |
+ |
|
212 |
+ def __unicode__(self): |
|
213 |
+ return unicode(self.pk) |
@@ -13,7 +13,7 @@ django-file-md5==1.0.1 |
||
13 | 13 |
django-ip==1.0.2 |
14 | 14 |
django-json-render==1.0.0 |
15 | 15 |
django-json-response==1.1.5 |
16 |
-django-logit==1.0.6 |
|
16 |
+django-logit==1.0.8 |
|
17 | 17 |
django-mobi==0.1.7 |
18 | 18 |
django-models-ext==1.1.0 |
19 | 19 |
django-multidomain==1.1.4 |
@@ -42,7 +42,7 @@ pywe-sign==1.0.6 |
||
42 | 42 |
pywe-xml==1.0.0 |
43 | 43 |
qiniu==7.2.0 |
44 | 44 |
redis==2.10.6 |
45 |
-redis-extensions==1.1.6 |
|
45 |
+redis-extensions==1.2.0 |
|
46 | 46 |
requests==2.18.4 |
47 | 47 |
rlog==0.3 |
48 | 48 |
rsa==3.4.2 |