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