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