- json: id加入exclouded和editexclouded(不显示不输入) - 新增 api/promo_code_qr.dspy:为选中促销码生成二维码 - 修改 promote/index.dspy:支持code参数,未登录引导登录/注册 - toolbar添加'生成二维码'按钮,选中行后弹窗显示二维码
77 lines
2.6 KiB
Plaintext
77 lines
2.6 KiB
Plaintext
# 为选中的促销码生成二维码
|
|
from ahserver.serverenv import ServerEnv
|
|
from appPublic.qr import gen_qr_withlogo
|
|
from appPublic.jsonConfig import getConfig
|
|
from ahserver.filestorage import FileStorage
|
|
from sqlor.dbpools import DBPools
|
|
from appPublic.uniqueID import getID
|
|
|
|
result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid', 'type': 'error'}}
|
|
|
|
try:
|
|
env = ServerEnv()
|
|
dbname = env.get_module_dbname('discount')
|
|
promo_id = params_kw.get('id', '')
|
|
|
|
if not promo_id:
|
|
raise Exception('Missing promo code id')
|
|
|
|
async with DBPools().sqlorContext(dbname) as sor:
|
|
recs = await sor.R('discount_promo_code', {'id': promo_id})
|
|
if not recs:
|
|
raise Exception(f'Promo code {promo_id} not found')
|
|
|
|
# QR code URL: 扫码后进入促销绑定页面
|
|
config = getConfig()
|
|
qr_url = env.entire_url('./promote') + f'?code={promo_id}'
|
|
fs = FileStorage()
|
|
p = fs._name2path(f'{getID()}.png')
|
|
gen_qr_withlogo(qr_url, p, logopath=config.logopath, logoloc='cc')
|
|
webp = fs.webpath(p)
|
|
qr_file_url = env.entire_url('/idfile') + f'?path={webp}'
|
|
|
|
result = {
|
|
"widgettype": "VBox",
|
|
"options": {"width": "100%", "height": "100%", "spacing": 10},
|
|
"subwidgets": [
|
|
{
|
|
"widgettype": "Image",
|
|
"options": {
|
|
"width": "340px",
|
|
"height": "340px",
|
|
"url": qr_file_url
|
|
}
|
|
},
|
|
{
|
|
"widgettype": "HBox",
|
|
"options": {"width": "100%", "cheight": 2},
|
|
"subwidgets": [
|
|
{
|
|
"widgettype": "Text",
|
|
"options": {"otext": "促销码:", "i18n": True, "cwidth": 5}
|
|
},
|
|
{
|
|
"widgettype": "Text",
|
|
"options": {"text": promo_id}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"widgettype": "HBox",
|
|
"options": {"width": "100%", "cheight": 2},
|
|
"subwidgets": [
|
|
{
|
|
"widgettype": "Text",
|
|
"options": {"otext": "链接:", "i18n": True, "cwidth": 5}
|
|
},
|
|
{
|
|
"widgettype": "Text",
|
|
"options": {"text": qr_url, "css": "text-muted"}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
except Exception as e:
|
|
result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': str(e), 'type': 'error'}}
|