From 1b38b9e976f9355e961eef0b6e79fbc84fd8f6ad Mon Sep 17 00:00:00 2001 From: ankio Date: Wed, 18 Dec 2024 13:46:21 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20(utils):=20=E6=B7=BB=E5=8A=A0=20sp?= =?UTF-8?q?litShop=20=E5=87=BD=E6=95=B0=E7=94=A8=E4=BA=8E=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=BA=97=E9=93=BA=E5=90=8D=E7=A7=B0=E5=92=8C=E5=95=86?= =?UTF-8?q?=E5=93=81=E5=90=8D=E7=A7=B0=E7=9A=84=E5=88=86=E9=9A=94=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20#475?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :sparkles: (rule): 新增招商银行微信公众号交易提醒规则及测试用例 :white_check_mark: (test): 添加招商银行消费测试用例 --- .../main.js" | 38 +++++++++++++++++++ .../main.test.js" | 25 ++++++++++++ ...6\350\241\214\346\266\210\350\264\271.txt" | 13 +++++++ src/utils/Html.js | 26 +++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 "src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/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\267\346\213\233\345\225\206\351\223\266\350\241\214/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\267\346\213\233\345\225\206\351\223\266\350\241\214/tests/\346\213\233\345\225\206\351\223\266\350\241\214\346\266\210\350\264\271.txt" diff --git "a/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/main.js" "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/main.js" new file mode 100644 index 00000000..592b631d --- /dev/null +++ "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/main.js" @@ -0,0 +1,38 @@ +import { BillType, Currency, formatDate, parseWechat, RuleObject, toFloat } from 'common/index.js'; +import { splitShop } from 'common/Html.js'; + +// 定义源名称和需要匹配的标题数组 +const SOURCE = '招商银行'; +const TITLE = ['交易提醒']; + +// 正则表达式和处理函数的映射关系 +const rules = [ + [ + // 交易卡号:**** 5157\n交易时间:11月07日 11:50\n交易类型:财付通-微信支付-群收款快捷支付扣款\n交易金额:人民币20.00元 + /交易卡号:.*? (\d+)\n交易时间:(.*?)\n交易类型:(.*?)\n交易金额:人民币(.*?)元/, + match => { + const [,number, time, shopItem_, money] = match; + let {shopName,shopItem} = splitShop(shopItem_); + return new RuleObject( + BillType.Expend, + toFloat(money), + shopName, + shopItem, + `${SOURCE}(${number})`, + '', + 0.0, + Currency['人民币'], + formatDate(time, 'M月D日 h:i'), + `微信[${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\267\346\213\233\345\225\206\351\223\266\350\241\214/main.test.js" "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/main.test.js" new file mode 100644 index 00000000..4fe07874 --- /dev/null +++ "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/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('招商银行消费', () => + testAnkio('招商银行消费', [ + { + "type": "Expend", + "money": 20, + "fee": 0, + "shopName": '财付通-微信支付', + "shopItem": '群收款快捷支付扣款', + "accountNameFrom": '招商银行(5157)', + "accountNameTo": '', + "currency": 'CNY', + "time": formatDate('11月07日 11:50', 'M月D日 h:i'), + "channel": '微信[招商银行-消费]', + }, + + ])); diff --git "a/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/tests/\346\213\233\345\225\206\351\223\266\350\241\214\346\266\210\350\264\271.txt" "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/tests/\346\213\233\345\225\206\351\223\266\350\241\214\346\266\210\350\264\271.txt" new file mode 100644 index 00000000..f173de14 --- /dev/null +++ "b/src/rule/com.tencent.mm/app/\345\276\256\344\277\241\345\205\254\344\274\227\345\217\267\346\213\233\345\225\206\351\223\266\350\241\214/tests/\346\213\233\345\225\206\351\223\266\350\241\214\346\266\210\350\264\271.txt" @@ -0,0 +1,13 @@ +{ +"mMap": { +"tableName": "AppMessage", +"description": "交易卡号:**** 5157\n交易时间:11月07日 11:50\n交易类型:财付通-微信支付-群收款快捷支付扣款\n交易金额:人民币20.00元", +"source": "招商银行", +"t": 1730951431953, +"arg": "msgId", +"type": 5, +"appId": "", +"msgId": 254303, +"title": "交易提醒" +} +} diff --git a/src/utils/Html.js b/src/utils/Html.js index ea485fb8..6bc5d5f8 100644 --- a/src/utils/Html.js +++ b/src/utils/Html.js @@ -10,3 +10,29 @@ export function findNonEmptyString() { } return ''; } + +export function splitShop(shopItem, shopName, split) { + split = split || "-"; // 默认分隔符为 "-" + + // 如果 shopName 已有值,直接返回 + if (shopName) { + return { shopName, shopItem }; + } + + if (!shopItem) { + return { shopName, shopItem }; // 如果 shopItem 为空,直接返回 + } + + const parts = shopItem.split(split); + + // 分隔逻辑 + if (parts.length > 1) { + shopName = parts.slice(0, -1).join(split); // 前部分作为 shopName + shopItem = parts[parts.length - 1]; // 最后部分作为 shopItem + } else { + shopName = null; // 无分隔符时,默认 shopName 为 null + } + + return { shopName, shopItem }; +} +