|
@@ -0,0 +1,92 @@
|
|
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
|
|
+"""Generate arg_template JSON samples + consolidated seed SQL."""
|
|
|
|
|
+import json
|
|
|
|
|
+import re
|
|
|
|
|
+from pathlib import Path
|
|
|
|
|
+
|
|
|
|
|
+base = Path(r"java/storlead-sasa/storlead-sales/src/main/java")
|
|
|
|
|
+out = Path(r"java/storlead-message/sql/arg_template")
|
|
|
|
|
+out.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
+
|
|
|
|
|
+vos = [
|
|
|
|
|
+ ("customer_message_arg_template.json", [10, 11], "CustomerMessageVO", "客户/线索",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/CustomerMessageVO.java"),
|
|
|
|
|
+ ("liaison_message_arg_template.json", 20, "LiaisonMessageVO", "联系人",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/LiaisonMessageVO.java"),
|
|
|
|
|
+ ("business_message_arg_template.json", 30, "BusinessMessageVO", "商机",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/BusinessMessageVO.java"),
|
|
|
|
|
+ ("order_message_arg_template.json", 40, "OrderMessageVO", "订单",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/OrderMessageVO.java"),
|
|
|
|
|
+ ("task_message_arg_template.json", 80, "TaskMessageVO", "任务",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/TaskMessageVO.java"),
|
|
|
|
|
+ ("follow_message_arg_template.json", 90, "FollowMessageVO", "跟进",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/FollowMessageVO.java"),
|
|
|
|
|
+ ("bulletin_message_arg_template.json", 120, "BulletinMessageVO", "公告",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/BulletinMessageVO.java"),
|
|
|
|
|
+ ("performance_goal_message_arg_template.json", 130, "PerformanceGoalMessgeVO", "业绩目标",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/PerformanceGoalMessgeVO.java"),
|
|
|
|
|
+ ("broadcast_total_message_arg_template.json", 200, "BroadcastTotalMessageVO", "播报汇总",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/report/BroadcastTotalMessageVO.java"),
|
|
|
|
|
+ ("other_extend_message_arg_template.json", 999, "OtherExtendMessageVO", "其他扩展",
|
|
|
|
|
+ base / "com/storlead/sales/pojo/vo/customer/OtherExtendMessageVO.java"),
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
|
|
+field_pat = re.compile(
|
|
|
|
|
+ r'@ApiModelProperty\s*\(\s*value\s*=\s*"([^"]*)"\s*\)\s*(?:@[^\n]+\s*)*private\s+[\w.<>,\s?]+\s+(\w+)\s*;',
|
|
|
|
|
+ re.M,
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+all_sql = [
|
|
|
|
|
+ "-- =============================================================================",
|
|
|
|
|
+ "-- message_template_event_group.arg_template_json 回填脚本(汇总)",
|
|
|
|
|
+ "-- =============================================================================",
|
|
|
|
|
+ "-- 说明:",
|
|
|
|
|
+ "-- 1. 由各 MessageVO 中带 @ApiModelProperty 的本类字段生成",
|
|
|
|
|
+ "-- 2. JSON 格式:[{propertyName, propertyKey}],propertyKey 形如 ${fieldName}$",
|
|
|
|
|
+ "-- 3. 仅更新 arg_template_json 为空的记录;需要按应用隔离时取消注释 AND app_id = 20",
|
|
|
|
|
+ "-- 4. 可读 JSON 样例见同目录 *.json;VO 变更后可运行本脚本重新生成",
|
|
|
|
|
+ "--",
|
|
|
|
|
+ "-- 类型对照(SalesMessageTypeEnum):",
|
|
|
|
|
+ "-- 10/11 CustomerMessageVO 客户/线索",
|
|
|
|
|
+ "-- 20 LiaisonMessageVO 联系人",
|
|
|
|
|
+ "-- 30 BusinessMessageVO 商机",
|
|
|
|
|
+ "-- 40 OrderMessageVO 订单",
|
|
|
|
|
+ "-- 80 TaskMessageVO 任务",
|
|
|
|
|
+ "-- 90 FollowMessageVO 跟进",
|
|
|
|
|
+ "-- 120 BulletinMessageVO 公告",
|
|
|
|
|
+ "-- 130 PerformanceGoalMessgeVO 业绩目标",
|
|
|
|
|
+ "-- 200 BroadcastTotalMessageVO 播报汇总",
|
|
|
|
|
+ "-- 999 OtherExtendMessageVO 其他扩展",
|
|
|
|
|
+ "-- =============================================================================",
|
|
|
|
|
+ "",
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
|
|
+for fname, types, cls, label, path in vos:
|
|
|
|
|
+ text = path.read_text(encoding="utf-8")
|
|
|
|
|
+ items = []
|
|
|
|
|
+ for m in field_pat.finditer(text):
|
|
|
|
|
+ items.append({"propertyName": m.group(1), "propertyKey": "${%s}$" % m.group(2)})
|
|
|
|
|
+ (out / fname).write_text(json.dumps(items, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
|
|
|
|
+ print("%s: %d fields -> %s" % (cls, len(items), fname))
|
|
|
|
|
+
|
|
|
|
|
+ json_one_line = json.dumps(items, ensure_ascii=False, separators=(",", ":"))
|
|
|
|
|
+ json_sql = json_one_line.replace("'", "''")
|
|
|
|
|
+ if isinstance(types, list):
|
|
|
|
|
+ type_cond = "`template_service_type` IN (%s)" % ", ".join(str(t) for t in types)
|
|
|
|
|
+ type_desc = "/".join(str(t) for t in types)
|
|
|
|
|
+ else:
|
|
|
|
|
+ type_cond = "`template_service_type` = %s" % types
|
|
|
|
|
+ type_desc = str(types)
|
|
|
|
|
+
|
|
|
|
|
+ all_sql.append("-- -----------------------------------------------------------------------------")
|
|
|
|
|
+ all_sql.append("-- type=%s %s %s(%d 个变量)" % (type_desc, cls, label, len(items)))
|
|
|
|
|
+ all_sql.append("-- -----------------------------------------------------------------------------")
|
|
|
|
|
+ all_sql.append("UPDATE `message_template_event_group`")
|
|
|
|
|
+ all_sql.append("SET `arg_template_json` = '%s'" % json_sql)
|
|
|
|
|
+ all_sql.append("WHERE %s" % type_cond)
|
|
|
|
|
+ all_sql.append(" AND (`arg_template_json` IS NULL OR `arg_template_json` = '');")
|
|
|
|
|
+ all_sql.append("-- AND `app_id` = 20;")
|
|
|
|
|
+ all_sql.append("")
|
|
|
|
|
+
|
|
|
|
|
+(out / "arg_template_json_seed.sql").write_text("\n".join(all_sql), encoding="utf-8")
|
|
|
|
|
+print("wrote arg_template_json_seed.sql")
|