mysql开发收银_农银e管家收银台PC版收款语音播报插件开发实录(二)

本文介绍了如何监听扫码盒子请求并将交易明细保存到mysql数据库,包括导入mysql模块,创建数据库及交易明细表,编写mysql操作类以及优化rules以在收款成功时插入数据。
摘要由CSDN通过智能技术生成

〇、序

前期已经实现了对扫码盒子请求的监听,本章将研究如何将交易明细记录保存至mysql数据库。

一、开发实战

(一)导入mysql模块

使用如下命令为项目添加mysql依赖包

npm i mysql --save

(二)新建mysql数据库

新建交易明细表transactions

3ab0b7837696

2019-04-17_001614.png

(三)编写mysql的操作类

初步的想法是在rules文件内,监听逻辑里面,当识别收款成功就新开一次mysql连接进行数据保存,为了更好节省数据库网络连接开销,将使用mysql数据连接池新开连接,新建lib文件夹并新建连接池类mysql.js:

var mysql=require("mysql");

var pool = mysql.createPool({

host: 'localhost',

user: 'user',

password: 'code',

database: 'eabcpay',

port: 3306

});

var query=function(sql,callback){

pool.getConnection(function(err,conn){

if(err){

callback(err,null,null);

}else{

conn.query(sql,function(qerr,vals,fields){

//释放连接

conn.release();

//事件驱动回调

callback(qerr,vals,fields);

});

}

});

};

module.exports=query;

(二)优化rules

myRuleModule示例

const dateUtil = require("./lib/dateFormat.js");

var query = require("./lib/mysql.js");

module.exports = {

replaceServerResDataAsync: function (req, res, serverResData, callback) {

// console.log(req.url);

// console.log(req.headers.host);

// console.log(req.url.indexOf("/site/CashCollect/DirectCashCollect"));

var flag = false;

var orderNo = "1";

var amount = 0.00;

var cashier = "default";

var createtime = dateUtil.formatTime(new Date());

var unusedamount = 0.00;

var queryStr;

if (req.headers.host == "e.abchina.com" && req.url.indexOf("/site/CashCollect/DirectCashCollect") > -1) {

var resData = serverResData.toString();

resData = JSON.parse(resData);

// 会有支付时候并不是马上支付完毕的情况,当IsWaiting为true时还在支付当中,稍后才会调用/site/BranchMarketOrder/PayQuery查询方支付结果

if (resData.Code == 0 && !resData.Value.IsWaiting) {

flag = true;

orderNo = resData.Value.OrderNo;

amount = 0.01;

cashier = "wang";

createtime = dateUtil.formatTime(new Date());

unusedamount = 100000.00;

}

} else if (req.headers.host == "e.abchina.com" && req.url.indexOf("/site/BranchMarketOrder/PayQuery") > -1) {

var billId;

var resData = serverResData.toString();

resData = JSON.parse(resData);

if (req.url.indexOf("?") > -1) {

var arrUrl = req.url.split("?");

var billIdStr = arrUrl[1];

var billIdSplit = billIdStr.split("=");

billId = billIdSplit[1];

}

var para = arrUrl[1];

console.log(resData.Code);

console.log(resData);

if (resData.Code == 0 && resData.Message == "成功") {

flag = true;

orderNo = billId;

amount = 0.01;

cashier = "wang";

createtime = dateUtil.formatTime(new Date());

unusedamount = 100000.00;

}

}

if (flag) {

queryStr = "INSERT INTO transactions(orderno,amount,cashier,createtime,unusedamount) VALUES ('" + orderNo + "', " + amount + ", '" + cashier + "', '" + createtime + "', " + unusedamount + ");";

console.log(queryStr);

query(queryStr, function (err, vals, fields) {

console.log(vals);

});

}

callback(serverResData);

}

}

四、下一步研究计划

1.对语音播报模块进行研究;

2.对利用订单号查找金额进行实验;

3.优化mysql数据库模块,研发交易记录功能和收银员交班功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值