diff --git a/api/api/products/migrations/0096_codebatch_mini_prog_entry_path.py b/api/api/products/migrations/0096_codebatch_mini_prog_entry_path.py new file mode 100644 index 0000000..6e15fb9 --- /dev/null +++ b/api/api/products/migrations/0096_codebatch_mini_prog_entry_path.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.25 on 2025-03-01 13:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('products', '0095_auto_20250215_1138'), + ] + + operations = [ + migrations.AddField( + model_name='codebatch', + name='mini_prog_entry_path', + field=models.TextField(blank=True, default='pages/index/index', null=True, verbose_name='小程序入口路径(可选)'), + ), + ] diff --git a/api/api/products/miniprogram.py b/api/api/products/miniprogram.py index d8b4f2a..0acc6b2 100644 --- a/api/api/products/miniprogram.py +++ b/api/api/products/miniprogram.py @@ -8,11 +8,11 @@ def get_token(): r = requests.get(url) return r.json()['access_token'] -def mplink(query): +def mplink(query, path='pages/index/index'): token = get_token() url = 'https://api.weixin.qq.com/wxa/generate_urllink?access_token=' + token r = requests.post(url, json={ - 'path': 'pages/index/index', + 'path': path, 'query': query, 'expire_type': 1, 'expire_interval': 30, diff --git a/api/api/products/models.py b/api/api/products/models.py index eb8a72b..5590196 100644 --- a/api/api/products/models.py +++ b/api/api/products/models.py @@ -176,6 +176,8 @@ class CodeBatch(models.Model): verbose_name="自定义扫码重定向URL(可选)") enable_auto_torch = models.BooleanField(default=False, verbose_name="自动打开闪光灯") camera_sensitivity = models.FloatField(default=1.0, verbose_name="摄像头灵敏度") + mini_prog_entry_path = models.TextField(null=True, blank=True, default='pages/index/index', + verbose_name="小程序入口路径(可选)") def gen_code(self, n): a = 10 ** (self.num_digits - 1) diff --git a/api/api/products/views.py b/api/api/products/views.py index 3fd7425..a0f2dbf 100644 --- a/api/api/products/views.py +++ b/api/api/products/views.py @@ -1243,7 +1243,8 @@ def mini_prog_entry_redirect(code, tid): return redirect(sc.batch.scan_redirect_url) query = 'tenant=' + str(tid) key = 'mini-prog-entry.' + query - url = cache.get_or_set(key, lambda: mplink(query), 300) + path = code.batch.mini_prog_entry_path or 'pages/index/index' + url = cache.get_or_set(key, lambda: mplink(query, path), 300) return redirect(url) class MiniProgEntryView(BaseView):