@@ -0,0 +1,40 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.22 on 2019-08-12 06:29 |
|
| 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', '0037_auto_20190418_1736'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.AddField( |
|
| 16 |
+ model_name='userinfo', |
|
| 17 |
+ name='clerk_id', |
|
| 18 |
+ field=models.CharField(blank=True, db_index=True, help_text='\u5e97\u5458\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='clerk_id'), |
|
| 19 |
+ ), |
|
| 20 |
+ migrations.AlterField( |
|
| 21 |
+ model_name='lensmaninfo', |
|
| 22 |
+ name='sex', |
|
| 23 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], default=0, help_text='\u6444\u5f71\u5e08\u6027\u522b', verbose_name='sex'), |
|
| 24 |
+ ), |
|
| 25 |
+ migrations.AlterField( |
|
| 26 |
+ model_name='tourguideinfo', |
|
| 27 |
+ name='sex', |
|
| 28 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], default=0, help_text='\u5bfc\u6e38\u6027\u522b', verbose_name='sex'), |
|
| 29 |
+ ), |
|
| 30 |
+ migrations.AlterField( |
|
| 31 |
+ model_name='userinfo', |
|
| 32 |
+ name='sex', |
|
| 33 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], default=0, help_text='\u7528\u6237\u6027\u522b', verbose_name='sex'), |
|
| 34 |
+ ), |
|
| 35 |
+ migrations.AlterField( |
|
| 36 |
+ model_name='wechatinfo', |
|
| 37 |
+ name='sex', |
|
| 38 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], default=0, help_text='\u7528\u6237\u6027\u522b', verbose_name='sex'), |
|
| 39 |
+ ), |
|
| 40 |
+ ] |
@@ -340,6 +340,8 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin): |
||
| 340 | 340 |
membercardid = models.CharField(_(u'membercardid'), max_length=32, blank=True, null=True, help_text=_(u'会员卡编号'), db_index=True) |
| 341 | 341 |
memberusercardcode = models.CharField(_(u'memberusercardcode'), max_length=32, blank=True, null=True, help_text=_(u'用户会员卡编号'), db_index=True) |
| 342 | 342 |
|
| 343 |
+ clerk_id = models.CharField(_(u'clerk_id'), max_length=32, blank=True, null=True, help_text=u'店员唯一标识', db_index=True) |
|
| 344 |
+ |
|
| 343 | 345 |
test_user = models.BooleanField(_(u'test_user'), default=False, help_text=_(u'是否为测试用户'), db_index=True) |
| 344 | 346 |
|
| 345 | 347 |
class Meta: |
@@ -390,9 +392,9 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin): |
||
| 390 | 392 |
] |
| 391 | 393 |
|
| 392 | 394 |
def brandata(self, brand_id=None): |
| 393 |
- if self.unionid: |
|
| 395 |
+ if self.clerk_id: |
|
| 394 | 396 |
try: |
| 395 |
- saleclerk = SaleclerkInfo.objects.get(brand_id=brand_id, unionid=self.unionid, status=True) |
|
| 397 |
+ saleclerk = SaleclerkInfo.objects.get(clerk_id=self.clerk_id, status=True) |
|
| 396 | 398 |
except SaleclerkInfo.DoesNotExist: |
| 397 | 399 |
saleclerk = None |
| 398 | 400 |
saleclerk_info = saleclerk.data if saleclerk and saleclerk.is_auth else {}
|
@@ -227,6 +227,7 @@ urlpatterns += [ |
||
| 227 | 227 |
|
| 228 | 228 |
urlpatterns += [ |
| 229 | 229 |
url(r'^clerk/submit$', oauth_views.clerk_submit_api, name='clerk_submit_api'), # 店员信息提交 |
| 230 |
+ url(r'^clerk/submit2$', oauth_views.clerk_submit2_api, name='clerk_submit2_api'), # 店员信息提交 |
|
| 230 | 231 |
url(r'^clerk/sale/decrypt$', sale_views.clerk_sale_decrypt_api, name='clerk_sale_decrypt_api'), |
| 231 | 232 |
url(r'^clerk/sale/submit$', sale_views.clerk_sale_submit_api, name='clerk_sale_submit_api'), # 店员销售信息提交 |
| 232 | 233 |
url(r'^clerk/integral/list$', sale_views.clerk_integral_list_api, name='clerk_integral_list_api'), # |
@@ -0,0 +1,20 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.22 on 2019-08-12 06:29 |
|
| 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 |
+ ('guideline', '0002_auto_20181117_0052'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.AlterField( |
|
| 16 |
+ model_name='screenadmininfo', |
|
| 17 |
+ name='sex', |
|
| 18 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], default=0, help_text='\u7528\u6237\u6027\u522b', verbose_name='sex'), |
|
| 19 |
+ ), |
|
| 20 |
+ ] |
@@ -0,0 +1,34 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.22 on 2019-08-12 06:29 |
|
| 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', '0040_auto_20190810_1619'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.AddField( |
|
| 16 |
+ model_name='saleclerkinfo', |
|
| 17 |
+ name='user_id', |
|
| 18 |
+ field=models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id'), |
|
| 19 |
+ ), |
|
| 20 |
+ migrations.AlterField( |
|
| 21 |
+ model_name='saleclerkinfo', |
|
| 22 |
+ name='clerk_sex', |
|
| 23 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], db_index=True, default=1, help_text='\u5e97\u5458\u6027\u522b', verbose_name='clerk_sex'), |
|
| 24 |
+ ), |
|
| 25 |
+ migrations.AlterField( |
|
| 26 |
+ model_name='saleclerkinfo', |
|
| 27 |
+ name='sex', |
|
| 28 |
+ field=models.IntegerField(choices=[(0, '\u672a\u77e5'), (1, '\u7537'), (2, '\u5973')], db_index=True, default=0, help_text='Sex', verbose_name='sex'), |
|
| 29 |
+ ), |
|
| 30 |
+ migrations.AlterUniqueTogether( |
|
| 31 |
+ name='saleclerkinfo', |
|
| 32 |
+ unique_together=set([('brand_id', 'unionid'), ('brand_id', 'user_id')]),
|
|
| 33 |
+ ), |
|
| 34 |
+ ] |
@@ -377,6 +377,7 @@ class SaleclerkInfo(BaseModelMixin, SexModelMixin): |
||
| 377 | 377 |
clerk_sex = models.IntegerField(_(u'clerk_sex'), choices=SexModelMixin.SEX_TUPLE, default=SexModelMixin.MALE, help_text=u'店员性别', db_index=True) |
| 378 | 378 |
clerk_phone = models.CharField(_(u'clerk_phone'), max_length=11, blank=True, null=True, help_text=u'店员联系电话') |
| 379 | 379 |
|
| 380 |
+ user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
|
| 380 | 381 |
unionid = models.CharField(_(u'unionid'), max_length=32, blank=True, null=True, help_text=u'微信 UnionID', db_index=True) |
| 381 | 382 |
openid = models.CharField(_(u'openid'), max_length=32, blank=True, null=True, help_text=u'微信 OpenID', db_index=True) |
| 382 | 383 |
|
@@ -396,7 +397,8 @@ class SaleclerkInfo(BaseModelMixin, SexModelMixin): |
||
| 396 | 397 |
verbose_name = _(u'经销商销售员信息') |
| 397 | 398 |
verbose_name_plural = _(u'经销商销售员信息') |
| 398 | 399 |
unique_together = ( |
| 399 |
- ('unionid', 'brand_id'),
|
|
| 400 |
+ ('brand_id', 'unionid'),
|
|
| 401 |
+ ('brand_id', 'user_id'),
|
|
| 400 | 402 |
) |
| 401 | 403 |
|
| 402 | 404 |
def __unicode__(self): |
@@ -7,7 +7,7 @@ from django_logit import logit |
||
| 7 | 7 |
from django_response import response |
| 8 | 8 |
from json_render import json_render |
| 9 | 9 |
|
| 10 |
-from account.models import LensmanInfo, TourGuideInfo |
|
| 10 |
+from account.models import LensmanInfo, TourGuideInfo, UserInfo |
|
| 11 | 11 |
from mch.models import BrandInfo, DistributorInfo, SaleclerkInfo |
| 12 | 12 |
from utils.error.errno_utils import ProductBrandStatusCode, ProductDistributorStatusCode, SaleclerkStatusCode |
| 13 | 13 |
from utils.redis.connect import r |
@@ -121,3 +121,49 @@ def clerk_submit_api(request): |
||
| 121 | 121 |
clerk.save() |
| 122 | 122 |
|
| 123 | 123 |
return response(200, 'Submit Success', u'提交成功', {})
|
| 124 |
+ |
|
| 125 |
+ |
|
| 126 |
+@logit |
|
| 127 |
+@transaction.atomic |
|
| 128 |
+def clerk_submit2_api(request): |
|
| 129 |
+ """ 店员授权信息提交 """ |
|
| 130 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 131 |
+ distributor_id = request.POST.get('distributor_id', '')
|
|
| 132 |
+ user_id = request.POST.get('user_id', '')
|
|
| 133 |
+ unionid = request.POST.get('unionid', '')
|
|
| 134 |
+ openid = request.POST.get('openid', '')
|
|
| 135 |
+ phone = request.POST.get('phone', '')
|
|
| 136 |
+ |
|
| 137 |
+ if SaleclerkInfo.objects.filter(brand_id=brand_id, clerk_phone=phone).exclude(user_id=user_id).exists(): |
|
| 138 |
+ return response(SaleclerkStatusCode.CLERK_PHONE_ALREADY_EXISTS) |
|
| 139 |
+ |
|
| 140 |
+ try: |
|
| 141 |
+ distributor = DistributorInfo.objects.get(distributor_id=distributor_id) |
|
| 142 |
+ except DistributorInfo.DoesNotExist: |
|
| 143 |
+ return response(ProductDistributorStatusCode.DISTRIBUTOR_NOT_FOUND) |
|
| 144 |
+ |
|
| 145 |
+ fields = {
|
|
| 146 |
+ 'distributor_id': distributor_id, |
|
| 147 |
+ 'distributor_name': distributor.distributor_name, |
|
| 148 |
+ 'clerk_name': request.POST.get('name', ''),
|
|
| 149 |
+ 'clerk_sex': int(request.POST.get('sex', 1)),
|
|
| 150 |
+ 'clerk_phone': phone, |
|
| 151 |
+ 'unionid': unionid, |
|
| 152 |
+ 'openid': openid, |
|
| 153 |
+ 'user_status': SaleclerkInfo.UNVERIFIED, |
|
| 154 |
+ } |
|
| 155 |
+ |
|
| 156 |
+ clerk, created = SaleclerkInfo.objects.select_for_update().get_or_create(brand_id=brand_id, user_id=user_id, defaults=fields) |
|
| 157 |
+ # clerk.user_status = SaleclerkInfo.UNVERIFIED |
|
| 158 |
+ clerk.status = True |
|
| 159 |
+ # 状态为 UNVERIFIED 的允许修改, 其他需要登录摄影师 APP 进行信息的修改 |
|
| 160 |
+ if clerk.user_status not in [SaleclerkInfo.UNVERIFIED, SaleclerkInfo.REFUSED]: |
|
| 161 |
+ return response(SaleclerkStatusCode.CLERK_ALREADY_NOT_UNVERIFIED) |
|
| 162 |
+ if not created: |
|
| 163 |
+ for key, value in fields.iteritems(): |
|
| 164 |
+ setattr(clerk, key, value) |
|
| 165 |
+ clerk.save() |
|
| 166 |
+ |
|
| 167 |
+ UserInfo.objects.filter(user_id=user_id).update(clerk_id=clerk.clerk_id) |
|
| 168 |
+ |
|
| 169 |
+ return response(200, 'Submit Success', u'提交成功', {})
|