记录删除销售员和用户的提交记录

FFIB 4 ans auparavant
Parent
Commettre
1854038416
4 fichiers modifiés avec 139 ajouts et 8 suppressions
  1. 65 5
      api/staff_views.py
  2. 7 2
      staff/admin.py
  3. 51 0
      staff/migrations/0003_auto_20201225_1400.py
  4. 16 1
      staff/models.py

+ 65 - 5
api/staff_views.py

@@ -1,5 +1,7 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3
+import json
4
+
3 5
 from django.conf import settings
4 6
 from django.db import transaction
5 7
 from django_logit import logit
@@ -8,14 +10,16 @@ from django_response import response
8 10
 from account.models import UserInfo
9 11
 from coupon.models import CouponInfo, UserCouponInfo
10 12
 from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo
11
-from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo
13
+from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo, AdministratorInfo
14
+from staff.models import StaffDeleteClerkSaleSubmitLogInfo, StaffDeleteConsumerSubmitLogInfo
12 15
 from member.models import RightInfo
13 16
 from statistic.models import (ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo,
14 17
                               DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo,
15 18
                               SaleclerkSaleStatisticInfo, SaleStatisticInfo)
19
+from utils.error.errno_utils import AdministratorStatusCode
16 20
 
17 21
 
18
-def exec_del_clerk_sale_submit(pk):
22
+def exec_del_clerk_sale_submit(pk, admin_id):
19 23
     try:
20 24
         ssli = SaleclerkSubmitLogInfo.objects.select_for_update().get(pk=pk)
21 25
     except SaleclerkSubmitLogInfo.DoesNotExist:
@@ -66,6 +70,15 @@ def exec_del_clerk_sale_submit(pk):
66 70
         clerk.integral -= integral
67 71
         clerk.total_integral -= integral
68 72
         clerk.save()
73
+
74
+        #记录删除日志
75
+        StaffDeleteClerkSaleSubmitLogInfo.objects.create(
76
+            admin_id=admin_id,
77
+            log_pk=pk,
78
+            model_name=model.model_name,
79
+            code=model.code
80
+        )
81
+
69 82
         # 日销量统计
70 83
         ssi, _ = SaleStatisticInfo.objects.select_for_update().get_or_create(
71 84
             brand_id=brand.brand_id,
@@ -214,14 +227,33 @@ def exec_del_clerk_sale_submit(pk):
214 227
 @transaction.atomic
215 228
 def del_clerk_sale_submit_api(request):
216 229
     brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
230
+    admin_id = request.POST.get('admin_id', '')
217 231
     pk = int(request.POST.get('pk', ''))
218 232
 
219
-    exec_del_clerk_sale_submit(pk)
233
+    if not AdministratorInfo.objects.filter(admin_id=admin_id, admin_type=AdministratorInfo.MAINTENANCE, user_status=AdministratorInfo.ACTIVATED, status=True).exists():
234
+        return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
235
+
236
+    exec_del_clerk_sale_submit(pk, admin_id)
220 237
 
221 238
     return response(200, 'Del Success', u'删除成功')
222 239
 
240
+@logit
241
+@transaction.atomic
242
+def batch_del_clerk_sale_submit_api(request):
243
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
244
+    admin_id = request.POST.get('admin_id', '')
245
+    pk = json.loads(request.POST.get('pks', []))
246
+
247
+    if not AdministratorInfo.objects.filter(admin_id=admin_id, admin_type=AdministratorInfo.MAINTENANCE, user_status=AdministratorInfo.ACTIVATED, status=True).exists():
248
+        return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
223 249
 
224
-def exec_del_consumer_submit(pk):
250
+    for pk in pks:
251
+        exec_del_clerk_sale_submit(pk, admin_id)
252
+
253
+    return response(200, 'Del Success', u'删除成功')
254
+
255
+
256
+def exec_del_consumer_submit(pk, admin_id):
225 257
     try:
226 258
         ssli = ConsumeInfoSubmitLogInfo.objects.select_for_update().get(pk=pk)
227 259
     except ConsumeInfoSubmitLogInfo.DoesNotExist:
@@ -254,6 +286,14 @@ def exec_del_consumer_submit(pk):
254 286
         user = UserInfo.objects.select_for_update().get(user_id=ssli.user_id)
255 287
     except UserInfo.DoesNotExist:
256 288
         return response()
289
+    
290
+    #记录删除日志
291
+    StaffDeleteConsumerSubmitLogInfo.objects.create(
292
+        admin_id=admin_id,
293
+        log_pk=pk,
294
+        model_name=model.model_name,
295
+        code=model.code
296
+    )
257 297
 
258 298
     # 消除用户劵
259 299
     if user.shots_num <= 5:
@@ -437,8 +477,28 @@ def exec_del_consumer_submit(pk):
437 477
 @transaction.atomic
438 478
 def del_consumer_submit_api(request):
439 479
     brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
480
+    admin_id = request.POST.get('admin_id', '')
440 481
     pk = int(request.POST.get('pk', ''))
441 482
 
442
-    exec_del_consumer_submit(pk)
483
+    if not AdministratorInfo.objects.filter(admin_id=admin_id, admin_type=AdministratorInfo.MAINTENANCE, user_status=AdministratorInfo.ACTIVATED, status=True).exists():
484
+        return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
485
+
486
+    exec_del_consumer_submit(pk, admin_id)
443 487
 
444 488
     return response(200, 'Del Success', u'删除成功')
489
+
490
+
491
+@logit
492
+@transaction.atomic
493
+def batch_del_consumer_submit_api(request):
494
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
495
+    admin_id = request.POST.get('admin_id', '')
496
+    pk = json.loads(request.POST.get('pks', []))
497
+
498
+    if not AdministratorInfo.objects.filter(admin_id=admin_id, admin_type=AdministratorInfo.MAINTENANCE, user_status=AdministratorInfo.ACTIVATED, status=True).exists():
499
+        return response(AdministratorStatusCode.MAINTENANCE_NOT_FOUND)
500
+    
501
+    for pk in pks:
502
+        exec_del_consumer_submit(pk, admin_id)
503
+
504
+    return response(200, 'Del Success', u'删除成功')

+ 7 - 2
staff/admin.py

@@ -2,11 +2,16 @@
2 2
 
3 3
 from django.contrib import admin
4 4
 
5
-from staff.models import StaffDeleteClerkSaleSubmitLogInfo
5
+from staff.models import StaffDeleteClerkSaleSubmitLogInfo, StaffDeleteConsumerSubmitLogInfo
6 6
 
7 7
 
8 8
 class StaffDeleteClerkSaleSubmitLogInfoAdmin(admin.ModelAdmin):
9
-    list_display = ('username', 'code', 'status', 'created_at', 'updated_at')
9
+    list_display = ('admin_id', 'log_pk', 'model_name', 'code', 'status', 'created_at', 'updated_at')
10
+
11
+class StaffDeleteConsumerSubmitLogInfoAdmin(admin.ModelAdmin):
12
+    list_display = ('admin_id', 'log_pk', 'model_name', 'code', 'status', 'created_at', 'updated_at')
10 13
 
11 14
 
12 15
 admin.site.register(StaffDeleteClerkSaleSubmitLogInfo, StaffDeleteClerkSaleSubmitLogInfoAdmin)
16
+admin.site.register(StaffDeleteConsumerSubmitLogInfo, StaffDeleteConsumerSubmitLogInfoAdmin)
17
+

+ 51 - 0
staff/migrations/0003_auto_20201225_1400.py

@@ -0,0 +1,51 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.26 on 2020-12-25 06:00
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
+        ('staff', '0002_auto_20201130_0131'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.CreateModel(
16
+            name='StaffDeleteConsumerSubmitLogInfo',
17
+            fields=[
18
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+                ('status', models.BooleanField(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
+                ('admin_id', models.CharField(blank=True, db_index=True, help_text='\u7ba1\u7406\u5458ID', max_length=32, null=True, verbose_name='admin_id')),
23
+                ('log_pk', models.CharField(blank=True, db_index=True, help_text='\u6d88\u8d39\u8005\u63d0\u4ea4\u8bb0\u5f55\u5173\u8054pk', max_length=32, null=True, verbose_name='log_pk')),
24
+                ('model_name', models.CharField(blank=True, db_index=True, help_text='\u578b\u53f7', max_length=32, null=True, verbose_name='model_name')),
25
+                ('code', models.CharField(blank=True, db_index=True, help_text='\u673a\u8eab\u7801', max_length=32, null=True, verbose_name='code')),
26
+            ],
27
+            options={
28
+                'verbose_name': 'StaffDeleteConsumerSubmitLogInfo',
29
+                'verbose_name_plural': 'StaffDeleteConsumerSubmitLogInfo',
30
+            },
31
+        ),
32
+        migrations.RemoveField(
33
+            model_name='staffdeleteclerksalesubmitloginfo',
34
+            name='username',
35
+        ),
36
+        migrations.AddField(
37
+            model_name='staffdeleteclerksalesubmitloginfo',
38
+            name='admin_id',
39
+            field=models.CharField(blank=True, db_index=True, help_text='\u7ba1\u7406\u5458ID', max_length=32, null=True, verbose_name='admin_id'),
40
+        ),
41
+        migrations.AddField(
42
+            model_name='staffdeleteclerksalesubmitloginfo',
43
+            name='log_pk',
44
+            field=models.CharField(blank=True, db_index=True, help_text='\u9500\u552e\u5458\u63d0\u4ea4\u8bb0\u5f55\u5173\u8054pk', max_length=32, null=True, verbose_name='log_pk'),
45
+        ),
46
+        migrations.AddField(
47
+            model_name='staffdeleteclerksalesubmitloginfo',
48
+            name='model_name',
49
+            field=models.CharField(blank=True, db_index=True, help_text='\u578b\u53f7', max_length=32, null=True, verbose_name='model_name'),
50
+        ),
51
+    ]

+ 16 - 1
staff/models.py

@@ -6,7 +6,9 @@ from django_models_ext import BaseModelMixin
6 6
 
7 7
 
8 8
 class StaffDeleteClerkSaleSubmitLogInfo(BaseModelMixin):
9
-    username = models.CharField(_(u'username'), max_length=32, blank=True, null=True, help_text=u'用户名', db_index=True)
9
+    admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'管理员ID', db_index=True)
10
+    log_pk = models.CharField(_(u'log_pk'), max_length=32, blank=True, null=True, help_text=u'销售员提交记录关联pk', db_index=True)
11
+    model_name = models.CharField(_(u'model_name'), max_length=32, blank=True, null=True, help_text=u'型号', db_index=True)
10 12
     code = models.CharField(_(u'code'), max_length=32, blank=True, null=True, help_text=u'机身码', db_index=True)
11 13
 
12 14
     class Meta:
@@ -15,3 +17,16 @@ class StaffDeleteClerkSaleSubmitLogInfo(BaseModelMixin):
15 17
 
16 18
     def __unicode__(self):
17 19
         return '%d' % self.pk
20
+
21
+class StaffDeleteConsumerSubmitLogInfo(BaseModelMixin):
22
+    admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'管理员ID', db_index=True)
23
+    log_pk = models.CharField(_(u'log_pk'), max_length=32, blank=True, null=True, help_text=u'消费者提交记录关联pk', db_index=True)
24
+    model_name = models.CharField(_(u'model_name'), max_length=32, blank=True, null=True, help_text=u'型号', db_index=True)
25
+    code = models.CharField(_(u'code'), max_length=32, blank=True, null=True, help_text=u'机身码', db_index=True)
26
+
27
+    class Meta:
28
+        verbose_name = _(u'StaffDeleteConsumerSubmitLogInfo')
29
+        verbose_name_plural = _(u'StaffDeleteConsumerSubmitLogInfo')
30
+
31
+    def __unicode__(self):
32
+        return '%d' % self.pk