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