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