fix: 新订单服务号模板改为两字段并换新模板ID
对齐「新订单待受理通知」:short_thing4 游戏类型、thing15 下单项目;不改动广播触发点。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9,6 +9,11 @@ from users.models import OfficialAccountUser
|
|||||||
|
|
||||||
logger = logging.getLogger('weixin_broadcast')
|
logger = logging.getLogger('weixin_broadcast')
|
||||||
|
|
||||||
|
# 服务号模板「新订单待受理通知」(类目:休闲娱乐)
|
||||||
|
# 字段:游戏类型 short_thing4、下单项目 thing15
|
||||||
|
ORDER_NOTIFY_TEMPLATE_ID = 'jZ73G_0KbmFK864WVUr0QABDc0EfsjeXXLPS86Vwo-4'
|
||||||
|
|
||||||
|
|
||||||
class WeixinBroadcastSender:
|
class WeixinBroadcastSender:
|
||||||
"""
|
"""
|
||||||
微信模板消息广播发送器 - 调试版
|
微信模板消息广播发送器 - 调试版
|
||||||
@@ -17,7 +22,7 @@ class WeixinBroadcastSender:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.appid = getattr(settings, 'WEIXIN_OFFICIAL_APPID', '')
|
self.appid = getattr(settings, 'WEIXIN_OFFICIAL_APPID', '')
|
||||||
self.secret = getattr(settings, 'WEIXIN_OFFICIAL_SECRET', '')
|
self.secret = getattr(settings, 'WEIXIN_OFFICIAL_SECRET', '')
|
||||||
self.template_id = getattr(settings, 'WEIXIN_TEMPLATE_ID', '')
|
self.template_id = ORDER_NOTIFY_TEMPLATE_ID
|
||||||
|
|
||||||
# 发送控制参数
|
# 发送控制参数
|
||||||
self.batch_size = 100
|
self.batch_size = 100
|
||||||
@@ -50,48 +55,32 @@ class WeixinBroadcastSender:
|
|||||||
|
|
||||||
def build_order_message_data(self, order_info):
|
def build_order_message_data(self, order_info):
|
||||||
"""
|
"""
|
||||||
构建订单消息数据 - 【调试关键点1】
|
构建「新订单待受理通知」模板数据。
|
||||||
打印传入的 order_info 和构建出的最终数据
|
short_thing4=游戏类型(最多5字),thing15=下单项目/描述(最多20字)。
|
||||||
"""
|
"""
|
||||||
# 🟡 调试点1:打印传入的参数
|
logger.info(
|
||||||
logger.info(f"🟡【调试-输入】build_order_message_data 收到的 order_info: {json.dumps(order_info, ensure_ascii=False, indent=2)}")
|
f"🟡【调试-输入】build_order_message_data 收到的 order_info: "
|
||||||
|
f"{json.dumps(order_info, ensure_ascii=False, indent=2)}"
|
||||||
|
)
|
||||||
|
|
||||||
|
game_type = str(order_info.get('game_type') or '游戏订单').strip() or '游戏订单'
|
||||||
|
order_desc = str(order_info.get('order_desc') or '新订单').strip() or '新订单'
|
||||||
|
|
||||||
# 这是你现在的构建逻辑,我们原样保留但加上调试
|
|
||||||
# 注意:这里保持你目前的字段名(short_thing5, short_thing4, thing15, amount8)
|
|
||||||
data = {
|
data = {
|
||||||
"short_thing5": {
|
|
||||||
"value": order_info.get('order_type', '平台发单'),
|
|
||||||
"color": "#173177"
|
|
||||||
},
|
|
||||||
"short_thing4": {
|
"short_thing4": {
|
||||||
"value": order_info.get('game_type', '游戏订单'),
|
"value": game_type[:5],
|
||||||
"color": "#173177"
|
"color": "#173177",
|
||||||
},
|
},
|
||||||
"thing15": {
|
"thing15": {
|
||||||
"value": str(order_info.get('order_desc', '新订单'))[:20],
|
"value": order_desc[:20],
|
||||||
"color": "#173177"
|
"color": "#173177",
|
||||||
},
|
},
|
||||||
"amount8": {
|
|
||||||
"value": f"{order_info.get('amount', '0')}元",
|
|
||||||
"color": "#173177"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# 🟡 调试点2:打印构建出的最终数据结构
|
logger.info("🟡【调试-输出】构建完成的模板数据 data 字段:")
|
||||||
logger.info(f"🟡【调试-输出】构建完成的模板数据 data 字段:")
|
|
||||||
for key, content in data.items():
|
for key, content in data.items():
|
||||||
logger.info(f" 字段名: '{key}' -> 值: '{content.get('value', '')}'")
|
logger.info(f" 字段名: '{key}' -> 值: '{content.get('value', '')}'")
|
||||||
logger.info(f"🟡【调试-输出】完整 data 结构: {json.dumps(data, ensure_ascii=False)}")
|
logger.info(f"🟡【调试-输出】完整 data 结构: {json.dumps(data, ensure_ascii=False)}")
|
||||||
|
|
||||||
# 🔴 关键检查:确认 short_thing5 是否存在,值是否为空
|
|
||||||
if 'short_thing5' not in data:
|
|
||||||
logger.error("❌【致命错误】构建的数据中根本没有 'short_thing5' 这个字段!")
|
|
||||||
else:
|
|
||||||
st5_value = data['short_thing5'].get('value', '')
|
|
||||||
if not st5_value:
|
|
||||||
logger.error(f"❌【致命错误】'short_thing5' 字段的值为空!")
|
|
||||||
else:
|
|
||||||
logger.info(f"✅ 'short_thing5' 字段存在,值为: '{st5_value}'")
|
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user