clerk_submit2_api

Kimi.Huang 5 年 前
コミット
54ccf34031
共有7 個のファイルを変更した149 個の追加4 個の削除を含む
  1. 40 0
      account/migrations/0038_auto_20190812_1429.py
  2. 4 2
      account/models.py
  3. 1 0
      api/urls.py
  4. 20 0
      guideline/migrations/0003_auto_20190812_1429.py
  5. 34 0
      mch/migrations/0041_auto_20190812_1429.py
  6. 3 1
      mch/models.py
  7. 47 1
      page/oauth_views.py

+ 40 - 0
account/migrations/0038_auto_20190812_1429.py

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

+ 4 - 2
account/models.py

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

+ 1 - 0
api/urls.py

@@ -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'),  #

+ 20 - 0
guideline/migrations/0003_auto_20190812_1429.py

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

+ 34 - 0
mch/migrations/0041_auto_20190812_1429.py

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

+ 3 - 1
mch/models.py

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

+ 47 - 1
page/oauth_views.py

@@ -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'提交成功', {})