# 为选中的促销码生成二维码 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'}}