RedpackSendLogInfo

Kimi.Huang 6 年之前
父節點
當前提交
73214880bf
共有 6 個文件被更改,包括 98 次插入15 次删除
  1. 25 0
      api/hb_views.py
  2. 2 7
      api/mch_views.py
  3. 2 7
      commands/management/commands/hb.py
  4. 6 1
      logs/admin.py
  5. 35 0
      logs/migrations/0007_redpacksendloginfo.py
  6. 28 0
      logs/models.py

+ 25 - 0
api/hb_views.py

@@ -0,0 +1,25 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+from logs.models import RedpackSendLogInfo
6
+from miniapp.redpack_views import send_jsapi_hb
7
+
8
+
9
+def exec_send_jsapi_hb(user, elog, amount):
10
+    send_jsapi_hb(user.openid, amount, transfer=False)
11
+
12
+    elog.has_send_redpack = True
13
+    elog.user_id = user.user_id
14
+    elog.nickname = user.nickname
15
+    elog.save()
16
+
17
+    RedpackSendLogInfo.objects.create(
18
+        brand_id=user.brand_id,
19
+        user_id=user.user_id,
20
+        nickname=user.nickname,
21
+        phone=user.phone,
22
+        sn=elog.sn,
23
+        redpack_type=RedpackSendLogInfo.WX_REDPACK,
24
+        redpack_amount=amount,
25
+    )

+ 2 - 7
api/mch_views.py

@@ -12,10 +12,10 @@ from pywe_storage import RedisStorage
12 12
 from TimeConvert import TimeConvert as tc
13 13
 
14 14
 from account.models import UserInfo
15
+from api.hb_views import exec_send_jsapi_hb
15 16
 from logs.models import MchInfoEncryptLogInfo
16 17
 from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo,
17 18
                         LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo)
18
-from miniapp.redpack_views import send_jsapi_hb
19 19
 from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo
20 20
 from utils.error.errno_utils import (AdministratorStatusCode, OperatorStatusCode, ProductBrandStatusCode,
21 21
                                      ProductModelStatusCode, UserStatusCode)
@@ -384,12 +384,7 @@ def consumer_info_api(request):
384 384
     if elog and not dupload:
385 385
         amount = 100
386 386
         if user.openid:
387
-            send_jsapi_hb(user.openid, amount, transfer=False)
388
-
389
-            elog.has_send_redpack = True
390
-            elog.user_id = user.user_id
391
-            elog.nickname = user.nickname
392
-            elog.save()
387
+            exec_send_jsapi_hb(user, elog, amount)
393 388
         else:
394 389
             r.rpushjson(REDPACK_WAITING_SEND_LIST, {
395 390
                 'sn': serialNo,

+ 2 - 7
commands/management/commands/hb.py

@@ -6,8 +6,8 @@ from django.db import transaction
6 6
 from django_six import CompatibilityBaseCommand, close_old_connections
7 7
 
8 8
 from account.models import UserInfo
9
+from api.hb_views import exec_send_jsapi_hb
9 10
 from logs.models import MchInfoEncryptLogInfo
10
-from miniapp.redpack_views import send_jsapi_hb
11 11
 from utils.redis.connect import r
12 12
 from utils.redis.rkeys import REDPACK_WAITING_SEND_LIST
13 13
 
@@ -48,11 +48,6 @@ class Command(CompatibilityBaseCommand):
48 48
                         r.rpushjson(REDPACK_WAITING_SEND_LIST, v)
49 49
                         continue
50 50
 
51
-                    send_jsapi_hb(user.openid, v.get('amount', 100), transfer=False)
52
-
53
-                    elog.has_send_redpack = True
54
-                    elog.user_id = user.user_id
55
-                    elog.nickname = user.nickname
56
-                    elog.save()
51
+                    exec_send_jsapi_hb(user, elog, v.get('amount', 100))
57 52
 
58 53
                 close_old_connections()

+ 6 - 1
logs/admin.py

@@ -3,7 +3,7 @@
3 3
 from django.contrib import admin
4 4
 from django_admin import ReadOnlyModelAdmin
5 5
 
6
-from logs.models import MchInfoDecryptLogInfo, MchInfoEncryptLogInfo, MchLogInfo
6
+from logs.models import MchInfoDecryptLogInfo, MchInfoEncryptLogInfo, MchLogInfo, RedpackSendLogInfo
7 7
 
8 8
 
9 9
 class MchInfoEncryptLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
@@ -22,6 +22,11 @@ class MchLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
22 22
     search_fields = ('operator_id', 'app_version')
23 23
 
24 24
 
25
+class RedpackSendLogInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
26
+    list_display = ('brand_id', 'user_id', 'nickname', 'phone', 'sn', 'redpack_type', 'redpack_amount', 'status', 'created_at', 'updated_at')
27
+
28
+
25 29
 admin.site.register(MchInfoDecryptLogInfo, MchInfoDecryptLogInfoAdmin)
26 30
 admin.site.register(MchInfoEncryptLogInfo, MchInfoEncryptLogInfoAdmin)
27 31
 admin.site.register(MchLogInfo, MchLogInfoAdmin)
32
+admin.site.register(RedpackSendLogInfo, RedpackSendLogInfoAdmin)

+ 35 - 0
logs/migrations/0007_redpacksendloginfo.py

@@ -0,0 +1,35 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.20 on 2019-04-24 18:16
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
+        ('logs', '0006_auto_20190417_1717'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.CreateModel(
16
+            name='RedpackSendLogInfo',
17
+            fields=[
18
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+                ('status', models.BooleanField(db_index=True, 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
+                ('brand_id', models.CharField(blank=True, db_index=True, help_text='\u54c1\u724c\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='brand_id')),
23
+                ('user_id', models.CharField(blank=True, db_index=True, help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='user_id')),
24
+                ('nickname', models.CharField(blank=True, help_text='\u7528\u6237\u6635\u79f0', max_length=255, null=True, verbose_name='nickname')),
25
+                ('phone', models.CharField(blank=True, help_text='\u7528\u6237\u7535\u8bdd', max_length=11, null=True, verbose_name='phone')),
26
+                ('sn', models.CharField(blank=True, help_text='\u5e8f\u5217\u53f7', max_length=32, null=True, verbose_name='sn')),
27
+                ('redpack_type', models.IntegerField(choices=[(0, '\u5fae\u4fe1\u7ea2\u5305'), (1, '\u4f01\u4e1a\u4ed8\u6b3e')], db_index=True, default=0, help_text='\u7ea2\u5305\u53d1\u653e\u65b9\u5f0f', verbose_name='redpack_type')),
28
+                ('redpack_amount', models.IntegerField(default=0, help_text='\u7ea2\u5305\u53d1\u653e\u91d1\u989d', verbose_name='redpack_amount')),
29
+            ],
30
+            options={
31
+                'verbose_name': '\u7ea2\u5305\u53d1\u653e\u8bb0\u5f55',
32
+                'verbose_name_plural': '\u7ea2\u5305\u53d1\u653e\u8bb0\u5f55',
33
+            },
34
+        ),
35
+    ]

+ 28 - 0
logs/models.py

@@ -73,3 +73,31 @@ class MchLogInfo(BaseModelMixin):
73 73
 
74 74
     def __unicode__(self):
75 75
         return unicode(self.pk)
76
+
77
+
78
+class RedpackSendLogInfo(BaseModelMixin):
79
+    WX_REDPACK = 0
80
+    QY_TRANSFER = 1
81
+
82
+    REDPACK_TYPE_TUPLE = (
83
+        (WX_REDPACK, u'微信红包'),
84
+        (QY_TRANSFER, u'企业付款'),
85
+    )
86
+
87
+    brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)
88
+
89
+    user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
90
+    nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称')
91
+    phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'用户电话')
92
+
93
+    sn = models.CharField(_(u'sn'), max_length=32, blank=True, null=True, help_text=u'序列号')
94
+
95
+    redpack_type = models.IntegerField(_(u'redpack_type'), default=WX_REDPACK, choices=REDPACK_TYPE_TUPLE, help_text=u'红包发放方式', db_index=True)
96
+    redpack_amount = models.IntegerField(_(u'redpack_amount'), default=0, help_text=u'红包发放金额')
97
+
98
+    class Meta:
99
+        verbose_name = _(u'红包发放记录')
100
+        verbose_name_plural = _(u'红包发放记录')
101
+
102
+    def __unicode__(self):
103
+        return unicode(self.pk)