@@ -4,30 +4,42 @@ from django.contrib import admin  | 
            ||
| 4 | 4 | 
                from django_admin import ChangeOnlyModelAdmin, ReadOnlyModelAdmin  | 
            
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                from account.models import FranchiserInfo, SaleclerkInfo, UserInfo  | 
            
| 7 | 
                +from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo  | 
            |
| 8 | 
                +from mch.models import ConsumeInfoSubmitLogInfo  | 
            |
| 7 | 9 | 
                 | 
            
| 8 | 10 | 
                 | 
            
| 9 | 11 | 
                class UserInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):  | 
            
| 10 | 
                -    list_display = ('user_id', 'user_from', 'username', 'openid', 'unionid', 'name', 'sex', 'nickname', 'phone', 'location', 'islensman', 'istourguide', 'balance', 'user_status', 'outtake_status', 'status', 'created_at', 'updated_at')
               | 
            |
| 11 | 
                -    list_filter = ('user_from', 'sex', 'islensman', 'istourguide', 'user_status', 'outtake_status', 'status')
               | 
            |
| 12 | 
                +    list_display = ('user_id', 'username', 'openid', 'unionid', 'name', 'sex', 'nickname', 'phone', 'location', 'balance', 'user_status', 'status', 'created_at', 'updated_at')
               | 
            |
| 13 | 
                +    list_filter = ('test_user', 'sex', 'user_status', 'status')
               | 
            |
| 12 | 14 | 
                     readonly_fields = ('user_id', )
               | 
            
| 13 | 15 | 
                     search_fields = ('user_id', 'name', 'phone', 'location')
               | 
            
| 14 | 16 | 
                 | 
            
| 17 | 
                + def save_model(self, request, obj, form, change):  | 
            |
| 18 | 
                + obj.save()  | 
            |
| 19 | 
                + if obj.test_user:  | 
            |
| 20 | 
                + ConsumeInfoSubmitLogInfo.objects.filter(user_id=obj.user_id).update(test_user=True)  | 
            |
| 21 | 
                +  | 
            |
| 15 | 22 | 
                 | 
            
| 16 | 23 | 
                class FranchiserInfoAdmin(admin.ModelAdmin):  | 
            
| 17 | 
                -    readonly_fields = ('franchiser_id', )
               | 
            |
| 18 | 24 | 
                     list_display = ('franchiser_id', 'franchiser_name', 'franchiser_addr', 'franchiser_phone', 'franchiser_boss_name', 'franchiser_boss_phone', 'status', 'created_at', 'updated_at')
               | 
            
| 19 | 
                -    search_fields = ('franchiser_id', 'franchiser_name', 'franchiser_addr', 'franchiser_phone', 'franchiser_boss_name', 'franchiser_boss_phone')
               | 
            |
| 20 | 25 | 
                     list_filter = ('status', )
               | 
            
| 26 | 
                +    readonly_fields = ('franchiser_id',)
               | 
            |
| 27 | 
                +    search_fields = ('franchiser_id', 'franchiser_name', 'franchiser_addr', 'franchiser_phone', 'franchiser_boss_name', 'franchiser_boss_phone')
               | 
            |
| 21 | 28 | 
                 | 
            
| 22 | 29 | 
                 | 
            
| 23 | 30 | 
                class SaleclerkInfoAdmin(admin.ModelAdmin):  | 
            
| 24 | 
                -    readonly_fields = ('franchiser_id', )
               | 
            |
| 25 | 31 | 
                     list_display = ('franchiser_id', 'clerk_id', 'clerk_name', 'clerk_sex', 'clerk_phone', 'user_status', 'status', 'created_at', 'updated_at')
               | 
            
| 32 | 
                +    list_filter = ('test_user', 'user_status', 'status')
               | 
            |
| 33 | 
                +    readonly_fields = ('franchiser_id', )
               | 
            |
| 26 | 34 | 
                     search_fields = ('franchiser_id', 'clerk_id', 'clerk_name', 'clerk_phone')
               | 
            
| 27 | 
                -    list_filter = ('user_status', 'status')
               | 
            |
| 28 | 35 | 
                 | 
            
| 36 | 
                + def save_model(self, request, obj, form, change):  | 
            |
| 37 | 
                + obj.save()  | 
            |
| 38 | 
                + if obj.test_user:  | 
            |
| 39 | 
                + SaleclerkIntegralIncomeExpensesInfo.objects.filter(franchiser_id=obj.franchiser_id).update(test_user=True)  | 
            |
| 40 | 
                + SaleclerkSubmitLogInfo.objects.filter(franchiser_id=obj.franchiser_id).update(test_user=True)  | 
            |
| 29 | 41 | 
                 | 
            
| 30 | 
                -admin.site.register(UserInfo, UserInfoAdmin)  | 
            |
| 31 | 42 | 
                 | 
            
| 43 | 
                +admin.site.register(UserInfo, UserInfoAdmin)  | 
            |
| 32 | 44 | 
                admin.site.register(FranchiserInfo, FranchiserInfoAdmin)  | 
            
| 33 | 45 | 
                admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin)  | 
            
                @@ -0,0 +1,25 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.11 on 2018-04-17 02:31  | 
            |
| 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 | 
                +        ('account', '0030_userinfo_membercardid'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AddField(  | 
            |
| 16 | 
                + model_name='saleclerkinfo',  | 
            |
| 17 | 
                + name='test_user',  | 
            |
| 18 | 
                + field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u4e3a\u6d4b\u8bd5\u7528\u6237', verbose_name='test_user'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + migrations.AddField(  | 
            |
| 21 | 
                + model_name='userinfo',  | 
            |
| 22 | 
                + name='test_user',  | 
            |
| 23 | 
                + field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u4e3a\u6d4b\u8bd5\u7528\u6237', verbose_name='test_user'),  | 
            |
| 24 | 
                + ),  | 
            |
| 25 | 
                + ]  | 
            
                @@ -337,6 +337,8 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin):  | 
            ||
| 337 | 337 | 
                has_membercard = models.BooleanField(_(u'has_membercard'), default=False, help_text=_(u'是否激活会员卡'), db_index=True)  | 
            
| 338 | 338 | 
                membercardid = models.CharField(_(u'membercardid'), max_length=32, blank=True, null=True, help_text=_(u'会员卡编号'))  | 
            
| 339 | 339 | 
                 | 
            
| 340 | 
                + test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True)  | 
            |
| 341 | 
                +  | 
            |
| 340 | 342 | 
                class Meta:  | 
            
| 341 | 343 | 
                verbose_name = _(u'userinfo')  | 
            
| 342 | 344 | 
                verbose_name_plural = _(u'userinfo')  | 
            
                @@ -485,6 +487,8 @@ class SaleclerkInfo(BaseModelMixin, SexModelMixin):  | 
            ||
| 485 | 487 | 
                user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=UNVERIFIED, help_text=u'用户状态', db_index=True)  | 
            
| 486 | 488 | 
                refused_reason = models.TextField(_(u'refused_reason'), blank=True, null=True, help_text=u'审核拒绝原因')  | 
            
| 487 | 489 | 
                 | 
            
| 490 | 
                + test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True)  | 
            |
| 491 | 
                +  | 
            |
| 488 | 492 | 
                class Meta:  | 
            
| 489 | 493 | 
                verbose_name = _(u'saleclerkinfo')  | 
            
| 490 | 494 | 
                verbose_name_plural = _(u'saleclerkinfo')  | 
            
                @@ -11,7 +11,7 @@ from pywe_storage import RedisStorage  | 
            ||
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                from account.models import UserInfo  | 
            
| 13 | 13 | 
                from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo, ModelInfo, OperatorInfo  | 
            
| 14 | 
                -from utils.error.errno_utils import OperatorStatusCode  | 
            |
| 14 | 
                +from utils.error.errno_utils import OperatorStatusCode, UserStatusCode  | 
            |
| 15 | 15 | 
                from utils.redis.connect import r  | 
            
| 16 | 16 | 
                 | 
            
| 17 | 17 | 
                 | 
            
                @@ -159,8 +159,15 @@ def consumer_info_api(request):  | 
            ||
| 159 | 159 | 
                 | 
            
| 160 | 160 | 
                purePhoneNumber = purePhoneNumber or getPhoneNumber(request)  | 
            
| 161 | 161 | 
                 | 
            
| 162 | 
                + # 校验用户是否存在  | 
            |
| 163 | 
                + try:  | 
            |
| 164 | 
                + user = UserInfo.objects.get(user_id=user_id)  | 
            |
| 165 | 
                + except UserInfo.DoesNotExist:  | 
            |
| 166 | 
                + return response(UserStatusCode.USER_NOT_FOUND)  | 
            |
| 167 | 
                +  | 
            |
| 162 | 168 | 
                # 更新用户手机号  | 
            
| 163 | 
                - UserInfo.objects.filter(user_id=user_id).update(phone=purePhoneNumber)  | 
            |
| 169 | 
                + user.phone = purePhoneNumber  | 
            |
| 170 | 
                + user.save()  | 
            |
| 164 | 171 | 
                 | 
            
| 165 | 172 | 
                # 记录用户信息提交记录  | 
            
| 166 | 173 | 
                ConsumeInfoSubmitLogInfo.objects.create(  | 
            
                @@ -172,6 +179,7 @@ def consumer_info_api(request):  | 
            ||
| 172 | 179 | 
                lon=lon,  | 
            
| 173 | 180 | 
                serialNo=serialNo,  | 
            
| 174 | 181 | 
                verifyResult=verifyResult,  | 
            
| 182 | 
                + test_user=user.test_user,  | 
            |
| 175 | 183 | 
                )  | 
            
| 176 | 184 | 
                 | 
            
| 177 | 185 | 
                return response(200, 'Submit Consumer Info Success', u'提交消费者信息成功')  | 
            
                @@ -8,14 +8,14 @@ from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmit  | 
            ||
| 8 | 8 | 
                 | 
            
| 9 | 9 | 
                class SaleclerkIntegralIncomeExpensesInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):  | 
            
| 10 | 10 | 
                     list_display = ('franchiser_id', 'clerk_id', 'type', 'code', 'integral', 'left_integral', 'remark', 'status', 'created_at', 'updated_at')
               | 
            
| 11 | 
                -    list_filter = ('franchiser_id', 'type', 'status')
               | 
            |
| 11 | 
                +    list_filter = ('franchiser_id', 'test_user', 'type', 'status')
               | 
            |
| 12 | 12 | 
                     readonly_fields = ('franchiser_id', 'clerk_id', 'type', 'code', 'integral', 'left_integral')
               | 
            
| 13 | 13 | 
                     search_fields = ('code', 'remark')
               | 
            
| 14 | 14 | 
                 | 
            
| 15 | 15 | 
                 | 
            
| 16 | 16 | 
                class SaleclerkSubmitLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):  | 
            
| 17 | 17 | 
                     list_display = ('franchiser_id', 'clerk_id', 'code', 'remark', 'status', 'created_at', 'updated_at')
               | 
            
| 18 | 
                -    list_filter = ('franchiser_id', 'status')
               | 
            |
| 18 | 
                +    list_filter = ('franchiser_id', 'test_user', 'status')
               | 
            |
| 19 | 19 | 
                     search_fields = ('code', 'remark')
               | 
            
| 20 | 20 | 
                 | 
            
| 21 | 21 | 
                 | 
            
                @@ -0,0 +1,25 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.11 on 2018-04-17 02:31  | 
            |
| 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', '0003_auto_20180402_1904'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AddField(  | 
            |
| 16 | 
                + model_name='saleclerkintegralincomeexpensesinfo',  | 
            |
| 17 | 
                + name='test_user',  | 
            |
| 18 | 
                + field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u4e3a\u6d4b\u8bd5\u7528\u6237', verbose_name='test_user'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + migrations.AddField(  | 
            |
| 21 | 
                + model_name='saleclerksubmitloginfo',  | 
            |
| 22 | 
                + name='test_user',  | 
            |
| 23 | 
                + field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u4e3a\u6d4b\u8bd5\u7528\u6237', verbose_name='test_user'),  | 
            |
| 24 | 
                + ),  | 
            |
| 25 | 
                + ]  | 
            
                @@ -39,6 +39,8 @@ class SaleclerkIntegralIncomeExpensesInfo(BaseModelMixin):  | 
            ||
| 39 | 39 | 
                 | 
            
| 40 | 40 | 
                remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')  | 
            
| 41 | 41 | 
                 | 
            
| 42 | 
                + test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True)  | 
            |
| 43 | 
                +  | 
            |
| 42 | 44 | 
                class Meta:  | 
            
| 43 | 45 | 
                verbose_name = _(u'saleclerkintegralincomeexpensesinfo')  | 
            
| 44 | 46 | 
                verbose_name_plural = _(u'saleclerkintegralincomeexpensesinfo')  | 
            
                @@ -73,6 +75,8 @@ class SaleclerkSubmitLogInfo(BaseModelMixin):  | 
            ||
| 73 | 75 | 
                 | 
            
| 74 | 76 | 
                remark = models.CharField(_(u'remark'), max_length=255, blank=True, null=True, help_text=u'备注')  | 
            
| 75 | 77 | 
                 | 
            
| 78 | 
                + test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True)  | 
            |
| 79 | 
                +  | 
            |
| 76 | 80 | 
                class Meta:  | 
            
| 77 | 81 | 
                verbose_name = _(u'saleclerksubmitloginfo')  | 
            
| 78 | 82 | 
                verbose_name_plural = _(u'saleclerksubmitloginfo')  | 
            
                @@ -0,0 +1,20 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.11 on 2018-04-17 02:31  | 
            |
| 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', '0012_auto_20180401_2012'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AddField(  | 
            |
| 16 | 
                + model_name='consumeinfosubmitloginfo',  | 
            |
| 17 | 
                + name='test_user',  | 
            |
| 18 | 
                + field=models.BooleanField(db_index=True, default=False, help_text='\u662f\u5426\u4e3a\u6d4b\u8bd5\u7528\u6237', verbose_name='test_user'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + ]  | 
            
                @@ -223,6 +223,8 @@ class ConsumeInfoSubmitLogInfo(BaseModelMixin):  | 
            ||
| 223 | 223 | 
                 | 
            
| 224 | 224 | 
                verifyResult = models.IntegerField(_(u'verifyResult'), default=0, help_text=u'验证结果')  | 
            
| 225 | 225 | 
                 | 
            
| 226 | 
                + test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True)  | 
            |
| 227 | 
                +  | 
            |
| 226 | 228 | 
                class Meta:  | 
            
| 227 | 229 | 
                verbose_name = _(u'消费者信息提交记录')  | 
            
| 228 | 230 | 
                verbose_name_plural = _(u'消费者信息提交记录')  | 
            
                @@ -70,6 +70,7 @@ def clerk_sale_submit_api(request):  | 
            ||
| 70 | 70 | 
                lat=lat,  | 
            
| 71 | 71 | 
                lon=lon,  | 
            
| 72 | 72 | 
                image=file_path,  | 
            
| 73 | 
                + test_user=clerk.test_user,  | 
            |
| 73 | 74 | 
                )  | 
            
| 74 | 75 | 
                 | 
            
| 75 | 76 | 
                if SaleclerkIntegralIncomeExpensesInfo.objects.filter(code=serialNo, status=True).exists():  | 
            
                @@ -103,6 +104,7 @@ def clerk_sale_submit_api(request):  | 
            ||
| 103 | 104 | 
                image=file_path,  | 
            
| 104 | 105 | 
                integral=integral,  | 
            
| 105 | 106 | 
                left_integral=clerk.total_integral,  | 
            
| 107 | 
                + test_user=clerk.test_user,  | 
            |
| 106 | 108 | 
                )  | 
            
| 107 | 109 | 
                 | 
            
| 108 | 110 | 
                     return response(200, data={
               | 
            
                @@ -221,6 +223,7 @@ def clerk_sale_submit_api_bak(request):  | 
            ||
| 221 | 223 | 
                code=code,  | 
            
| 222 | 224 | 
                integral=product.integral,  | 
            
| 223 | 225 | 
                left_integral=clerk.integral,  | 
            
| 226 | 
                + test_user=clerk.test_user,  | 
            |
| 224 | 227 | 
                )  | 
            
| 225 | 228 | 
                 | 
            
| 226 | 229 | 
                     return response(200, 'Submit Success', u'提交成功', {})
               | 
            
                @@ -24,7 +24,7 @@ django-rlog==1.0.7  | 
            ||
| 24 | 24 | 
                django-shortuuidfield==0.1.3  | 
            
| 25 | 25 | 
                django-six==1.0.4  | 
            
| 26 | 26 | 
                django-uniapi==1.0.1  | 
            
| 27 | 
                -django-we==1.2.1  | 
            |
| 27 | 
                +django-we==1.2.3  | 
            |
| 28 | 28 | 
                djangorestframework==3.7.7  | 
            
| 29 | 29 | 
                furl==1.0.1  | 
            
| 30 | 30 | 
                hiredis==0.2.0  |