123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- // 由于没有确切的类型定义,我们先定义一些可能需要的类型
- import Message from "../../Communication/Message";
- import LoginUserInfo from "@/views/front/platfrom/common/RunningParameters/LoginUserInfo";
- import { IPage } from "@/views/front/platfrom/presentation/Interfaces/Ipage";
- import { TransitType } from "@/views/front/develop/Communication/MessageHelper/TransitType";
- // interface IPage {
- // // 这里需要根据实际情况补充IPage接口的属性和方法
- // OwnerContainer: any;
- // CallServer(msg: Message): boolean;
- // DoTransit(msg: Message, transitName?: string): boolean;
- // GetTradeInfoData(): TradeInfoData;
- // // 其他可能的方法
- // }
-
- // interface Message {
- // BitMapType: any;
- // Fd2: string;
- // Fd3: string;
- // Fd5: string;
- // Fd6: string;
- // Fd7: string;
- // Fd10: string;
- // Fd16: string;
- // Fd17: string;
- // Fd18: string;
- // Fd30: string;
- // Fd66: string;
- // Fd74: string;
- // Fd79: string;
- // TransitNode: TransitType;
- // TransitName: string;
- // CustomizeTransitEntry: any;
- // DoTransit(): boolean;
- // Init(): void;
- // InitGateway2CBS(txCode: string, serviceCode: string, svcSubCode: string, predicate2retCode: ((code: string) => boolean) | null): void;
- // InitHfmsApp(url: string, predicate2retCode: ((code: string) => boolean) | null): void;
- // FileData: string;
- // // 其他可能的属性和方法
- // }
-
- // interface LoginUserInfo {
- // KinbrNo: string;
- // TradeDate: string;
- // TellerNo: string;
- // TtyName: string;
- // // 其他可能的属性
- // }
-
- interface LoginAuthentication {
- PaymentNo: string;
- }
-
- interface TradeInfoData {
- LatestMessage: Message;
- // 其他可能的属性
- }
-
- // enum TransitType {
- // Unknown,
- // CallServer,
- // CallAgn,
- // CallAgn_JWK,
- // CallAgnCard,
- // CallAgnIBPS,
- // CallAgnIDC,
- // CallAgnRun,
- // CallAgnTips,
- // CallAgnCnaps2,
- // CallAgn_FGJWQ,
- // CallGateway2CBS,
- // CallHfmsApp,
- // CallAgnCIS,
- // CallAgn_EasyPay,
- // CallAgn_Ebill,
- // CallAgn_SDYCT,
- // CallAgn_CZYYSW,
- // CallAgn_GasFee,
- // CallAgnCLFJG,
- // CallAgn_NJT,
- // CallNoFileSys,
- // CallAgnNew_WL,
- // CallAgn_FGJWQ_HH,
- // CallAgn_DF,
- // CallAgn_CW,
- // CallAgn_ZJJG,
- // CallAgn_CKXT,
- // CallAgn_GGJ
- // }
-
- // 假设的全局变量
- // const LoginUserInfo: LoginUserInfo = {
- // KinbrNo: "",
- // TradeDate: "",
- // TellerNo: "",
- // TtyName: ""
- // };
-
- const LoginAuthentication = {
- PaymentNo: ""
- };
-
- export default class SystemFunction {
- static SubSwipeCardData(dataString: string): string {
- // todo
- return dataString;
- }
-
- static InitFd(target: IPage, message: Message): void {
- message.Init(Message.BitMap);
- }
-
- static CommSend(target: IPage, message: Message): void {
- message.Fd2 = LoginUserInfo.KinbrNo;
- message.Fd3 = LoginUserInfo.KinbrNo;
- message.Fd5 = LoginUserInfo.TradeDate;
- message.Fd6 = new Date().toLocaleTimeString().replace(/:/g, '').substring(0, 6);
- message.Fd7 = LoginUserInfo.TellerNo;
- message.Fd10 = LoginUserInfo.TtyName;
-
- switch (message.BitMapType) {
- case Message.BitMap.Server:
- //TODO:交易号
- // UserFunction.CommSend96(target, message);
- break;
- case Message.BitMap.Agn:
- break;
- case Message.BitMap.Cnaps2:
- message.Fd17 = LoginAuthentication.PaymentNo;
- break;
- default:
- break;
- }
- }
-
- static CommSend_Agn(target: IPage, message: Message): void {
- message.Fd2 = LoginUserInfo.KinbrNo;
- message.Fd3 = LoginUserInfo.KinbrNo;
- message.Fd5 = LoginUserInfo.TradeDate;
- message.Fd6 = new Date().toLocaleTimeString().replace(/:/g, '').substring(0, 6);
- message.Fd7 = LoginUserInfo.TellerNo;
- message.Fd10 = LoginUserInfo.TtyName;
- message.Fd92 = LoginUserInfo.TellerNo;
- }
-
- static Registration(target: IPage, tellerNo: string): string {
- let result = "";
- if (tellerNo.trim() === "") return result;
- const msg = new Message();
- SystemFunction.CommSend(target, msg);
- msg.Fd16 = "1827";
- msg.Fd30 = tellerNo.trim();
- // target.CallServer(msg);//hulei这里没有Callsever
- if (msg.Fd66.trim() !== "0" && msg.Fd66.trim() !== "2") {
- result = "";
- }
- return result = msg.Fd66;
- }
-
- static CheckTransit(message: Message): void {
- switch (message.TransitNode) {
- case TransitType.CallAgn:
- if (message.Fd18 === "") {
- message.Fd18 = "ECI";
- }
- message.TransitNode = TransitType.CallAgn;
- break;
- case TransitType.CallAgn_JWK:
- if (message.Fd18 === "") {
- message.Fd18 = "JWK";
- }
- message.TransitNode = TransitType.CallAgn_JWK;
- break;
- case TransitType.CallAgnCard:
- message.Fd18 = "CBP";
- message.TransitNode = TransitType.CallAgn;
- break;
- case TransitType.CallAgnIBPS:
- message.Fd18 = "SNB";
- message.TransitNode = TransitType.CallAgn;
- break;
- case TransitType.CallAgnIDC:
- message.Fd18 = "C101";
- message.Fd17 = LoginAuthentication.PaymentNo;
- if (LoginUserInfo.KinbrNo.substring(0, 3) === "118") {
- message.Fd17 = "320465100015";
- }
- message.TransitNode = TransitType.CallAgnIDC;
- break;
- case TransitType.CallAgnRun:
- message.Fd18 = "RUNB";
- message.TransitNode = TransitType.CallAgn;
- break;
- case TransitType.CallAgnTips:
- message.Fd18 = "TIBP";
- message.TransitNode = TransitType.CallAgn;
- break;
- case TransitType.CallAgnCnaps2:
- message.Fd18 = "CBS";
- message.Fd17 = LoginAuthentication.PaymentNo;
- message.TransitNode = TransitType.CallAgnCnaps2;
- break;
- case TransitType.CallAgn_FGJWQ:
- message.Fd6 = new Date().toLocaleTimeString().replace(/:/g, '').substring(0, 6);
- message.TransitNode = TransitType.CallAgn_FGJWQ;
- break;
- case TransitType.CallGateway2CBS:
- if (message.CustomizeTransitEntry === null) {
- let txCode = message["__TxCode__"] as string;
- let serviceCode: string | null = null;
- let svcSubCode: string | null = null;
- const tmp = txCode.split('.');
- switch (tmp.length) {
- case 1:
- break;
- case 2:
- serviceCode = tmp[0];
- svcSubCode = "01";
- txCode = tmp[1];
- break;
- case 3:
- serviceCode = tmp[0];
- svcSubCode = tmp[1];
- txCode = tmp[2];
- break;
- default:
- throw new Error("未设置有效的交易码[__TxCode__]!" + txCode);
- }
- const retCodeRegex = message["__RetCodeRegex__"] as string;
- const predicate2retCode = retCodeRegex === "" ? null : (code: string) => new RegExp(retCodeRegex).test(code);
- message.InitGateway2CBS(txCode, serviceCode!, svcSubCode!, predicate2retCode);
- }
- break;
- case TransitType.CallHfmsApp:
- if (message.CustomizeTransitEntry === null) {
- const url = message["__TxCode__"] as string;
- const retCodeRegex = message["__RetCodeRegex__"] as string;
- const predicate2retCode = retCodeRegex === "" ? null : (code: string) => new RegExp(retCodeRegex).test(code);
- message.InitHfmsApp(url, predicate2retCode);
- }
- break;
- }
- // 兼容处理
- try {
- // 假设这里有获取_transitList的逻辑
- const _transitList: string[] = [];
- if (message.TransitName.startsWith("CallAgn") && !_transitList.includes(message.TransitName)) {
- console.log(`CheckTransit:调整[${message.TransitName}]=>[CallAgn],fd16=[${message.Fd16}],fd18=[${message.Fd18}]`);
- message.TransitNode = TransitType.CallAgn;
- }
- } catch (ex) {
- console.error("CheckTransit:获取服务端配置信息报错!", ex);
- }
- try {
- // 假设这里有获取服务端时间的逻辑
- const serverTime = new Date().toLocaleTimeString().replace(/:/g, '').substring(0, 6);
- message.Fd6 = serverTime;
- // 假设LoginUserInfoExt有TradeTime属性
- // LoginUserInfoExt.TradeTime = message.Fd6;
- } catch (ex) {
- console.error("CheckTransit:同步服务端时间信息报错!", ex);
- }
- }
-
- static DoTransit(target: IPage, message: Message, transitName?: string): boolean {
- //hulei 通讯逻辑需要改写不能按原有的处理
- if (message === null) return false;
- if (transitName !== undefined) message.TransitName = transitName;
- SystemFunction.CheckTransit(message);
- let returnValue = false;
- const action = () => {
- returnValue = message.DoTransit();
- };
- if (target.OwnerContainer !== null) {
- // 假设这里有获取主页面的逻辑
- const page = MainPageManager.GetMainPage() as IPage;//hulei创建页面
- // if (page === null || !page.isAncestorOf(target)) {
- // page = target;
- // }
- // 假设这里有ModalInvoke的逻辑
- // page.OwnerContainer.ModalInvoke(action, "网络通讯中,请稍后...");
- //hulei
- } else {
- action();
- }
- // target.GetTradeInfoData().LatestMessage = message;
- return returnValue;
- }
-
- static CallServer(target: IPage, message: Message): boolean {
- return this.DoTransit(target, message, "TransitType.CallServer");//hulei 改为字符
- }
-
- static CallAgn(target: IPage, message: Message): boolean {
- return this.DoTransit(target, message, "TransitType.CallAgn");
- }
-
- // 其他方法...
-
- static Atoi(number: string): number {
- if (number.trim() === "") {
- number = "0";
- }
- return parseInt(number, 10);
- }
-
- static Itoa(number: number, format: string): string {
- const rgx = /^%{1}(-)?(([0-9]*)[dD]{1})|(([0-9]*)(.)?([0-9]*)[fF]{1})$/;
- if (!rgx.test(format)) {
- throw new Error("不支持该格式转换!");
- }
-
- let outdata = "";
- let width = -1;
- let sindex = 0;
- let eindex = 0;
- let signindex = format.includes("-") ? format.indexOf("-") : -1;
- let dotindex = -1;
- let formatparse = format;
- let hasZero = false;
-
- if (signindex === -1) {
- if (format.substring(1, 2) === "0") {
- formatparse = format.substring(0, 1) + format.substring(2);
- hasZero = true;
- }
- } else {
- if (format.substring(2, 3) === "0") {
- formatparse = format.substring(0, 2) + format.substring(3);
- hasZero = true;
- }
- }
-
- if (formatparse === "" || formatparse.includes("d") || formatparse.includes("D")) {
- eindex = formatparse.includes("d") ? formatparse.indexOf("d") : formatparse.indexOf("D");
- outdata = number.toFixed(0);
- }
-
- if (formatparse.includes("f") || formatparse.includes("F")) {
- dotindex = formatparse.indexOf(".");
- eindex = formatparse.includes("f") ? formatparse.indexOf("f") : formatparse.indexOf("F");
-
- if (dotindex === -1) {
- outdata = number.toFixed(0);
- } else {
- if (eindex - dotindex === 1) {
- outdata = number.toFixed(0);
- } else {
- const precision = parseInt(formatparse.substring(dotindex + 1, eindex), 10);
- outdata = number.toFixed(precision);
- }
- }
- }
-
- if (dotindex === -1) {
- if (signindex === -1) {
- width = eindex - sindex === 1 ? -1 : parseInt(formatparse.substring(sindex + 1, eindex), 10);
- } else {
- width = eindex - signindex === 1 ? -1 : parseInt(formatparse.substring(signindex + 1, eindex), 10);
- }
- } else {
- if (signindex === -1) {
- width = dotindex - sindex === 1 ? -1 : parseInt(formatparse.substring(sindex + 1, dotindex), 10);
- } else {
- width = dotindex - signindex === 1 ? -1 : parseInt(formatparse.substring(signindex + 1, dotindex), 10);
- }
- }
-
- if (width === -1) {
- return outdata;
- } else {
- if (outdata.length >= width) {
- return outdata;
- } else {
- if (signindex === -1) {
- if (hasZero) {
- return outdata.padStart(width, '0');
- } else {
- return outdata.padStart(width);
- }
- } else {
- if (hasZero) {
- return outdata.padEnd(width, '0');
- } else {
- return outdata.padEnd(width);
- }
- }
- }
- }
- }
-
- // 其他字符串数字处理方法...
- }
-
- export { SystemFunction };
- //hulei 这个文件还缺少很多方法 原文件由3328行后面缺的在补。
|