@@ -275,6 +275,7 @@ urlpatterns += [ |
||
| 275 | 275 |
urlpatterns += [ |
| 276 | 276 |
url(r'^get_limit_scene_qrcode_url$', wx_views.get_limit_scene_qrcode_url, name='get_limit_scene_qrcode_url'), |
| 277 | 277 |
url(r'^get_wxa_code$', wxa_views.get_wxa_code, name='get_wxa_code'), |
| 278 |
+ url(r'^get_wxa_code_scene$', wxa_views.get_wxa_code_scene, name='get_wxa_code_scene'), |
|
| 278 | 279 |
] |
| 279 | 280 |
|
| 280 | 281 |
urlpatterns += [ |
@@ -5,6 +5,7 @@ from django_response import response |
||
| 5 | 5 |
from pywe_storage import RedisStorage |
| 6 | 6 |
from pywe_wxa_qrcode import get_wxa_code_unlimit |
| 7 | 7 |
|
| 8 |
+from miniapp.models import SceneInfo |
|
| 8 | 9 |
from utils.qiniucdn import qiniu_file_url, upload |
| 9 | 10 |
from utils.redis.connect import r |
| 10 | 11 |
|
@@ -16,18 +17,38 @@ def get_wxa_code(request): |
||
| 16 | 17 |
scene = request.POST.get('scene', '')
|
| 17 | 18 |
page = request.POST.get('page', '')
|
| 18 | 19 |
|
| 20 |
+ si, created = SceneInfo.objects.get_or_create(scene=scene, page=page, status=True) |
|
| 21 |
+ |
|
| 22 |
+ if si.qiniu_url: |
|
| 23 |
+ return response(data={
|
|
| 24 |
+ 'qiniu_url': si.qiniu_url, |
|
| 25 |
+ }) |
|
| 26 |
+ |
|
| 19 | 27 |
wxcfg = WECHAT.get('MINIAPP', {})
|
| 20 | 28 |
|
| 21 | 29 |
appid = wxcfg.get('appID')
|
| 22 | 30 |
secret = wxcfg.get('appsecret')
|
| 23 | 31 |
|
| 24 |
- res = get_wxa_code_unlimit(scene, page, res_to_base64=False, appid=appid, secret=secret, storage=RedisStorage(r)) |
|
| 32 |
+ res = get_wxa_code_unlimit(si.sid, page, res_to_base64=False, appid=appid, secret=secret, storage=RedisStorage(r)) |
|
| 25 | 33 |
|
| 26 | 34 |
if res.headers and res.headers.get('Content-disposition'):
|
| 27 | 35 |
qiniu_url = qiniu_file_url(upload(res.content)) |
| 28 | 36 |
else: |
| 29 | 37 |
qiniu_url = '' |
| 30 | 38 |
|
| 39 |
+ si.qiniu_url = qiniu_url |
|
| 40 |
+ si.save() |
|
| 41 |
+ |
|
| 31 | 42 |
return response(data={
|
| 32 | 43 |
'qiniu_url': qiniu_url, |
| 33 | 44 |
}) |
| 45 |
+ |
|
| 46 |
+ |
|
| 47 |
+def get_wxa_code_scene(request): |
|
| 48 |
+ sid = request.POST.get('sid', '')
|
|
| 49 |
+ |
|
| 50 |
+ scene = SceneInfo.objects.get(sid=sid, status=True) |
|
| 51 |
+ |
|
| 52 |
+ return response(data={
|
|
| 53 |
+ 'scene': scene.scene, |
|
| 54 |
+ }) |
@@ -0,0 +1,18 @@ |
||
| 1 |
+# Generated by Django 3.2.16 on 2022-10-27 14:30 |
|
| 2 |
+ |
|
| 3 |
+from django.db import migrations, models |
|
| 4 |
+ |
|
| 5 |
+ |
|
| 6 |
+class Migration(migrations.Migration): |
|
| 7 |
+ |
|
| 8 |
+ dependencies = [ |
|
| 9 |
+ ('member', '0048_merge_20221027_2056'),
|
|
| 10 |
+ ] |
|
| 11 |
+ |
|
| 12 |
+ operations = [ |
|
| 13 |
+ migrations.AlterField( |
|
| 14 |
+ model_name='memberactivityinfo', |
|
| 15 |
+ name='limit_image_num', |
|
| 16 |
+ field=models.IntegerField(default=0, help_text='限制图片数量', verbose_name='limit_image_num'), |
|
| 17 |
+ ), |
|
| 18 |
+ ] |
@@ -1,4 +1,13 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 1 | 3 |
from django.contrib import admin |
| 2 | 4 |
|
| 5 |
+from miniapp.models import SceneInfo |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+class SceneInfoAdmin(admin.ModelAdmin): |
|
| 9 |
+ list_display = ('sid', 'scene', 'page', 'qiniu_url', 'status', 'created_at', 'updated_at')
|
|
| 10 |
+ list_filter = ('status', )
|
|
| 11 |
+ |
|
| 3 | 12 |
|
| 4 |
-# Register your models here. |
|
| 13 |
+admin.site.register(SceneInfo, SceneInfoAdmin) |
@@ -0,0 +1,33 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 3.2.16 on 2022-10-27 14:30 |
|
| 3 |
+ |
|
| 4 |
+from django.db import migrations, models |
|
| 5 |
+import shortuuidfield.fields |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+class Migration(migrations.Migration): |
|
| 9 |
+ |
|
| 10 |
+ initial = True |
|
| 11 |
+ |
|
| 12 |
+ dependencies = [ |
|
| 13 |
+ ] |
|
| 14 |
+ |
|
| 15 |
+ operations = [ |
|
| 16 |
+ migrations.CreateModel( |
|
| 17 |
+ name='SceneInfo', |
|
| 18 |
+ fields=[ |
|
| 19 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
| 20 |
+ ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
|
|
| 21 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
|
|
| 22 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
|
|
| 23 |
+ ('sid', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='Sid', max_length=22, null=True, unique=True)),
|
|
| 24 |
+ ('scene', models.CharField(blank=True, help_text='Scene', max_length=255, null=True, verbose_name='scene')),
|
|
| 25 |
+ ('page', models.CharField(blank=True, help_text='Page', max_length=255, null=True, verbose_name='page')),
|
|
| 26 |
+ ('qiniu_url', models.CharField(blank=True, help_text='七牛链接', max_length=255, null=True, verbose_name='qiniu_url')),
|
|
| 27 |
+ ], |
|
| 28 |
+ options={
|
|
| 29 |
+ 'verbose_name': 'Scene', |
|
| 30 |
+ 'verbose_name_plural': 'Scene', |
|
| 31 |
+ }, |
|
| 32 |
+ ), |
|
| 33 |
+ ] |
@@ -1,4 +1,24 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+ |
|
| 1 | 3 |
from django.db import models |
| 4 |
+from django.utils.translation import ugettext_lazy as _ |
|
| 5 |
+from django_models_ext import BaseModelMixin |
|
| 6 |
+from shortuuidfield import ShortUUIDField |
|
| 7 |
+ |
|
| 8 |
+ |
|
| 9 |
+class SceneInfo(BaseModelMixin): |
|
| 10 |
+ sid = ShortUUIDField(_(u'sid'), max_length=32, blank=True, null=True, help_text=u'Sid', db_index=True, unique=True) |
|
| 11 |
+ scene = models.CharField(_(u'scene'), max_length=255, blank=True, null=True, help_text=u'Scene') |
|
| 12 |
+ page = models.CharField(_(u'page'), max_length=255, blank=True, null=True, help_text=u'Page') |
|
| 13 |
+ qiniu_url = models.CharField(_(u'qiniu_url'), max_length=255, blank=True, null=True, help_text=u'七牛链接') |
|
| 14 |
+ |
|
| 15 |
+ class Meta: |
|
| 16 |
+ verbose_name = _(u'Scene') |
|
| 17 |
+ verbose_name_plural = _(u'Scene') |
|
| 2 | 18 |
|
| 19 |
+ unique_together = ( |
|
| 20 |
+ ('scene', 'page'),
|
|
| 21 |
+ ) |
|
| 3 | 22 |
|
| 4 |
-# Create your models here. |
|
| 23 |
+ def __unicode__(self): |
|
| 24 |
+ return '%d' % self.pk |