From e5232f60fdbaf74eca052d286f016b02498ba345 Mon Sep 17 00:00:00 2001 From: ankio Date: Wed, 25 Dec 2024 23:35:06 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20(rule):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=85=AC=E4=BC=97=E5=8F=B7ETC=E5=8A=A9?= =?UTF-8?q?=E6=89=8B=E8=A7=84=E5=88=99=E5=8F=8A=E6=B5=8B=E8=AF=95=20#528?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增微信公众号ETC助手的规则解析逻辑,包括: - 添加 `main.js` 文件,用于解析ETC扣费通知并生成账单对象 - 添加 `微信公众号ETC助手.txt` 文件,包含测试数据 - 添加 `main.test.js` 文件,用于验证规则解析的正确性 该规则支持解析ETC扣费通知中的通行流水号、通行时间、扣费时间、通行详情及金额等信息,并生成相应的账单对象。 --- .../main.js" | 40 +++++++++++++++++++ .../main.test.js" | 25 ++++++++++++ ...45\217\267ETC\345\212\251\346\211\213.txt" | 13 ++++++ 3 files changed, 78 insertions(+) create mode 100644 "src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.js" create mode 100644 "src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.test.js" create mode 100644 "src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/tests/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213.txt" diff --git "a/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.js" "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.js" new file mode 100644 index 0000000..ab0a9bf --- /dev/null +++ "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.js" @@ -0,0 +1,40 @@ +import { BillType, Currency, formatDate, isPaymentType, parseWechat, RuleObject, toFloat } from 'common/index.js'; + +// 定义源名称和需要匹配的标题数组 +const SOURCE = 'ETC助手'; +const TITLE = ['ETC扣费成功通知']; + +// 正则表达式和处理函数的映射关系 +const rules = [ + [ + // 通行流水号:陕FF93513\n通行时间:2024-11-24 16:42:17\n扣费时间:2024-11-24 19:36:44\n通行详情:陕西新街子收费站驶入-陕西略阳收费站驶出\n金额:42.64元,出行频繁,请速领高速券 + /通行流水号:(.*?)\n通行时间:(.*?)\n扣费时间:(.*?)\n通行详情:(.*?)\n金额:(.*?)元,出行频繁,请速领高速券/, + match => { + const [, shopName,t,time,shopItem,money] = match; + + return new RuleObject( + BillType.Expend, + toFloat(money), + shopName, + shopItem, + '', + '', + 0.0, + Currency['人民币'], + formatDate(time, 'Y-M-D h:i:s'), // 11月14日 14:45 + `微信[${SOURCE}]` + ) + }, + ], +]; + + + +/** + * 获取规则对象 + * @param {string} data - JSON格式的数据 + * @returns {RuleObject|null} - 规则对象,如果获取失败则返回null + */ +export function get(data) { + return parseWechat(data, rules, SOURCE, TITLE); +} diff --git "a/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.test.js" "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.test.js" new file mode 100644 index 0000000..9d80c0a --- /dev/null +++ "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/main.test.js" @@ -0,0 +1,25 @@ +const { get } = require('./main'); +const fs = require('fs'); +const path = require('path'); +const { testAnkioInit, testAnkio } = require('../../../../tests/TestUtils'); + +const { formatDate } = require('common/index.js'); + +testAnkioInit(get, __dirname, 'com.tencent.mm'); + +test('微信公众号ETC助手', () => + testAnkio('微信公众号ETC助手', [ + { + "type": "Expend", + "money": 42.64, + "fee": 0, + "shopName": '陕FF93513', + "shopItem": '陕西新街子收费站驶入-陕西略阳收费站驶出', + "accountNameFrom": '', + "accountNameTo": '', + "currency": 'CNY', + "time": formatDate('2024-11-24 19:36:44', 'Y-M-D h:i:s'), + 'channel': '微信[ETC助手]' + }, + + ])); diff --git "a/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/tests/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213.txt" "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/tests/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213.txt" new file mode 100644 index 0000000..afd5f7d --- /dev/null +++ "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213/tests/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267ETC\345\212\251\346\211\213.txt" @@ -0,0 +1,13 @@ +{ +"mMap": { +"tableName": "AppMessage", +"description": "通行流水号:陕FF93513\n通行时间:2024-11-24 16:42:17\n扣费时间:2024-11-24 19:36:44\n通行详情:陕西新街子收费站驶入-陕西略阳收费站驶出\n金额:42.64元,出行频繁,请速领高速券", +"source": "ETC助手", +"t": 1732448209023, +"arg": "msgId", +"type": 5, +"appId": "", +"msgId": 668513, +"title": "ETC扣费成功通知" +} +}