123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Threading;
- using Library;
- using LitJson;
- using MySystem;
- using MySystem.Models;
- public class CheckWifiData
- {
- public readonly static CheckWifiData Instance = new CheckWifiData();
- private CheckWifiData()
- { }
- public void Start()
- {
- Thread th = new Thread(DoWorks);
- th.IsBackground = true;
- th.Start();
- Thread th2 = new Thread(DoWorks2);
- th2.IsBackground = true;
- th2.Start();
- Thread th3 = new Thread(NewWifi);
- th3.IsBackground = true;
- th3.Start();
- }
- public void DoWorks()
- {
- while (true)
- {
- string content = RedisDbconn.Instance.RPop<string>("yc_device");
- if (!string.IsNullOrEmpty(content))
- {
- try
- {
- string[] dataList = content.Replace("\r", "").Replace("\n", "").Split(new string[] { "#cut#" }, StringSplitOptions.None);
- string Kind = dataList[0];
- JsonData jsonObj = JsonMapper.ToObject(dataList[1]);
- string sign = jsonObj["sign"].ToString();
- string brhNo = jsonObj["brhNo"].ToString(); //机构号
- string timestamp = jsonObj["timestamp"].ToString(); //时间戳。签名用参数
- string dataString = jsonObj["data"].ToString();
- dataString = dataString.Replace("null", "\"\"");
- JsonData data = JsonMapper.ToObject(dataString);
- WebCMSEntities db = new WebCMSEntities();
- for (int i = 0; i < data.Count; i++)
- {
- JsonData dataItem = data[i];
- string status = dataItem["status"].ToString(); //状态 0:可用 1:待充值 2:待激活 3:冻结中
- string iccid = dataItem["iccid"].ToString(); //设备 id
- string sim = dataItem["sim"].ToString(); //设备号
- string activeTime = dataItem["activeTime"] != null ? dataItem["activeTime"].ToString() : ""; //激活时间,格式:yyyy-MM-dd HH:mm:ss
- string expiredTime = dataItem["expiredTime"] != null ? dataItem[prop_name: "expiredTime"].ToString() : ""; //生效日期,格式:yyyy-MM-dd HH:mm:ss
- string isRealName = dataItem["isRealName"].ToString(); //实名状态 0-否 1-是
- string mobile = dataItem["mobile"] != null ? dataItem["mobile"].ToString() : ""; //用户手机号
- // Dictionary<string, string> obj = new Dictionary<string, string>();
- // obj.Add("brhNo", brhNo);
- // obj.Add("iccid", iccid);
- // obj.Add("sim", sim);
- // obj.Add("status", status);
- // obj.Add("activeTime", activeTime);
- // obj.Add("expiredTime", expiredTime);
- // obj.Add("isRealName", isRealName);
- string model = "";
- if(Kind == "init")
- {
- model = dataItem["model"].ToString(); //设备型号
- // obj.Add("model", model);
- }
- // obj.Add("mobile", mobile);
- // string dataString = dataList[0] + "#cut#" + Newtonsoft.Json.JsonConvert.SerializeObject(obj);
- // RedisDbconn.Instance.AddList("kxs_bind_list_23", dataString);
- if(status == "0" && !db.BindRecord.Any(m => m.MerSnNo == sim))
- {
- db.BindRecord.Add(new BindRecord()
- {
- MerName = mobile,
- MerNewSnNo = mobile,
- MerNo = mobile,
- Field3 = model,
- Field2 = isRealName,
- CreateTime = DateTime.Now,
- UpdateTime = DateTime.Now,
- UpdateDate = DateTime.Parse(expiredTime),
- CreateDate = DateTime.Parse(activeTime),
- Field1 = iccid,
- MerSnNo = sim,
- ProductType = "23", //产品类型
- Status = 1,
- });
- db.Merchants.Add(new Merchants()
- {
- UpdateDate = DateTime.Parse(expiredTime),
- CreateDate = DateTime.Parse(activeTime),
- MerNo = mobile, //商户编号
- MerName = mobile, //商户名称
- AgentName = brhNo, //机构名称
- ProductType = "23", //产品类型
- Remark = "商户入库", //注释
- CreateTime = DateTime.Now, //创建时间
- UpdateTime = DateTime.Now, //更新时间
- SnNo = sim, //SN号
- MerMobile = mobile,
- Status = 1,
- });
- db.SaveChanges();
- }
- }
- db.Dispose();
- }
- catch(Exception ex)
- {
- function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "接收云长WIFI设备绑定异常");
- }
- }
- else
- {
- Thread.Sleep(5000);
- }
- }
- }
- public void DoWorks2()
- {
- while (true)
- {
- string content = RedisDbconn.Instance.RPop<string>("yc_order");
- if (!string.IsNullOrEmpty(content))
- {
- try
- {
- string[] dataList = content.Replace("\r", "").Replace("\n", "").Split(new string[] { "#cut#" }, StringSplitOptions.None);
- string Kind = dataList[0];
- string JsonString = dataList[1];
- JsonData jsonObj = JsonMapper.ToObject(JsonString);
- string sign = jsonObj["sign"].ToString();
- string brhNo = jsonObj["brhNo"].ToString(); //机构号
- string timestamp = jsonObj["timestamp"].ToString(); //时间戳。签名用参数
- string dataString = jsonObj["data"].ToString();
- dataString = dataString.Replace("null", "\"\"");
- JsonData data = JsonMapper.ToObject(dataString);
- WebCMSEntities db = new WebCMSEntities();
- for (int i = 0; i < data.Count; i++)
- {
- JsonData dataItem = data[i];
- string status = dataItem["status"].ToString(); //订单状态,未支付_1 完成_2 线上退款_3 线下退款_4 APP 退款_5 上 游失败_6 原路退回_7 标记打款_8 退款_9
- if(Kind == "init")
- {
- string orderNo = dataItem["orderNo"].ToString(); //订单编号
- string mobile = dataItem["mobile"].ToString(); //用户手机号
- string iccid = dataItem["iccid"].ToString(); //设备 id
- string sim = dataItem["sim"].ToString(); //设备号
- string userName = dataItem["userName"].ToString(); //所属客户
- string packageName = dataItem["packageName"].ToString(); //套餐名称
- string realTotalAmount = dataItem["realTotalAmount"] != null ? dataItem["realTotalAmount"].ToString() : "0"; //实付金额,单位分
- string orderAmount = dataItem["orderAmount"] != null ? dataItem["orderAmount"].ToString() : "0"; //订单金额,单位分
- string refundMoney = dataItem["refundMoney"] != null ? dataItem["refundMoney"].ToString() : "0"; //退款金额,单位分
- string orderType = dataItem["orderType"].ToString(); //订单类型"首次充值_1","续费_2","接口首次_3","接口续费_4","批量充值_5","自带套餐_6","赠送套餐_7","花呗充值_8"
- string payCategory = dataItem["payCategory"].ToString(); //充值类型"微信充值_1", "接口充值 _2"," 余 额 充 值_3", "批量充值_4","赠送套 餐 _5"," 支 付 宝 充 值_7","APP 兑换_8","APP 订购_9","自带套餐_10","自带套餐(激活前)_11","设备余额_12"
- string payAppid = dataItem["payAppid"].ToString(); //商户号
- string outTradeNo = dataItem["outTradeNo"].ToString(); //交易单号
- string createTime = dataItem["createTime"].ToString(); //充值时间,格式:yyyy-MM-dd HH:mm:ss
- string refundTime = dataItem["refundTime"] != null ? dataItem["refundTime"].ToString() : ""; //退款时间,格式:yyyy-MM-dd HH:mm:ss
- string beginTime = dataItem["beginTime"].ToString();
- string endTime = dataItem["endTime"].ToString();
- // Dictionary<string, string> obj = new Dictionary<string, string>();
- // obj.Add("brhNo", brhNo);
- // obj.Add("orderNo", orderNo);
- // obj.Add("mobile", mobile);
- // obj.Add("iccid", iccid);
- // obj.Add("sim", sim);
- // obj.Add("userName", userName);
- // obj.Add("packageName", packageName);
- // obj.Add("realTotalAmount", realTotalAmount);
- // obj.Add("orderAmount", orderAmount);
- // obj.Add("refundMoney", refundMoney);
- // obj.Add("orderType", orderType);
- // obj.Add("payCategory", payCategory);
- // obj.Add("payAppid", payAppid);
- // obj.Add("outTradeNo", outTradeNo);
- // obj.Add("createTime", createTime);
- // obj.Add("refundTime", refundTime);
- // obj.Add("status", status);
- // string dataString = dataList[0] + "#cut#" + Newtonsoft.Json.JsonConvert.SerializeObject(obj);
- // RedisDbconn.Instance.AddList("kxs_trade_list_23", dataString);
- int months = MonthDifference(DateTime.Parse(beginTime), DateTime.Parse(endTime).AddSeconds(1));
- db.TradeRecord.Add(new TradeRecord()
- {
- CreateDate = DateTime.Now,
- UpdateDate = DateTime.Now,
- Field3 = packageName,
- Field2 = refundMoney,
- Field1 = orderAmount,
- TradeType = orderType,
- Field4 = refundTime,
- BankCardNo = iccid,
- BankCardType = payCategory,
- TradeStatus = status,
- AgentNo = brhNo,
- TradeAmount = decimal.Parse(realTotalAmount),
- Field5 = createTime,
- TradeSerialNo = orderNo,
- MerNo = mobile,
- TradeSnNo = sim,
- ProductType = "23",
- Status = status == "2" ? 1 : 0,
- QueryCount = months,
- });
- db.SaveChanges();
- }
- else if(Kind == "change")
- {
- //change#cut#{"brhNo":"YCJG10010003","data":"[{\"orderNo\":\"695580\",\"status\":2,\"refundMoney\":null,\"operatorName\":null,\"refundTime\":null}]","sign":"e449LqlIeA2Lc2CBXi0ehsc6+P5y4TBwrxe6+Na8V7EwnUalFkOBDCevG9BaNntLqZrC9meuuWTFiEURQ9tJtcbC0mK0f2g2C8yx8ZwuURfP8MB6XshjLKIGstWRNZromstaOM4Mbz+1sc3i54SJ+x1Kr5Is7BqDjPRSUwEDlQI=","timestamp":1722240000}
- string orderNo = dataItem["orderNo"].ToString(); //订单编号
- if(status == "2")
- {
- TradeRecord edit = db.TradeRecord.FirstOrDefault(m => m.TradeSerialNo == orderNo && m.Status == 0);
- if(edit != null)
- {
- edit.Status = 1;
- db.SaveChanges();
- }
- }
- if(status == "3" || status == "4" || status == "5" || status == "7")
- {
- RedisDbconn.Instance.AddList("WifiRefundQueue", orderNo);
- }
- // Dictionary<string, string> obj = new Dictionary<string, string>();
- // obj.Add("brhNo", brhNo);
- // obj.Add("orderNo", orderNo);
- // obj.Add("status", status);
- // string dataString = dataList[0] + "#cut#" + Newtonsoft.Json.JsonConvert.SerializeObject(obj);
- // RedisDbconn.Instance.AddList("kxs_trade_list_23", dataString);
- }
- }
- db.Dispose();
- }
- catch(Exception ex)
- {
- function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "接收云长WIFI设备交易异常");
- }
- }
- else
- {
- Thread.Sleep(5000);
- }
- }
- }
- public void NewWifi()
- {
- while (true)
- {
- string data = RedisDbconn.Instance.RPop<string>("wifi_data_list");
- if (!string.IsNullOrEmpty(data))
- {
- try
- {
- string[] dataList = data.Split(new string[] { "#cut#" }, StringSplitOptions.None);
- string Kind = dataList[0];
- JsonData jsonObj = JsonMapper.ToObject(dataList[1]);
- string content = jsonObj["content"].ToString();
- content = Decrypt(content);
- jsonObj = JsonMapper.ToObject(content);
- WebCMSEntities db = new WebCMSEntities();
- if(Kind == "bind")
- {
- string sn = jsonObj["sn"].ToString(); //设备号
- string mchNo = jsonObj["mchNo"].ToString(); //商户号
- string bindTime = jsonObj["bindTime"].ToString(); //绑定时间
- string snType = jsonObj["snType"].ToString(); //设备类型 UFI=0 MIFI=1 CPE=2 能量塔=3
- string notifyType = jsonObj["notifyType"].ToString(); //通知类型 1绑定 0解绑
- db.BindRecord.Add(new BindRecord()
- {
- MerName = mchNo,
- MerNewSnNo = mchNo,
- MerNo = mchNo,
- Field3 = snType,
- CreateTime = DateTime.Now,
- UpdateTime = DateTime.Now,
- UpdateDate = DateTime.Parse(bindTime),
- CreateDate = DateTime.Parse(bindTime),
- Field1 = notifyType == "1" ? "绑定" : "解绑",
- MerSnNo = sn,
- ProductType = "23", //产品类型
- Status = 1,
- Field2 = "v2",
- });
- db.Merchants.Add(new Merchants()
- {
- UpdateDate = DateTime.Parse(bindTime),
- CreateDate = DateTime.Parse(bindTime),
- MerNo = mchNo, //商户编号
- MerName = mchNo, //商户名称
- ProductType = "23", //产品类型
- Remark = "商户入库", //注释
- CreateTime = DateTime.Now, //创建时间
- UpdateTime = DateTime.Now, //更新时间
- SnNo = sn, //SN号
- MerMobile = mchNo,
- Field1 = "v2",
- Field2 = notifyType == "1" ? "绑定" : "解绑",
- Status = 1,
- });
- db.SaveChanges();
- }
- else if(Kind == "trade")
- {
- //{"sn": "217F8972461", "mchNo": "19218587888", "snType": 1, "orderSn": "CA1838166424084348928", "cashFlag": 1, "tradeAmt": "120.00", "tradeTime": "2024-09-23 18:44:08", "isFirstRecharge": 0}
- string sn = jsonObj["sn"].ToString(); //设备号
- string orderSn = jsonObj["orderSn"].ToString(); //订单号
- string mchNo = jsonObj["mchNo"].ToString(); //商户号
- string snType = jsonObj["snType"].ToString(); //设备类型 UFI=0 MIFI=1 CPE=2 能量塔=3
- string tradeAmt = jsonObj["tradeAmt"].ToString(); //交易金额(元)
- string duration = content.Contains("\"duration\"") ? jsonObj[prop_name: "duration"].ToString() : "0"; //设备套餐时长
- string unit = content.Contains("\"unit\"") ? jsonObj["unit"].ToString() : "0"; //套餐单位 0:按天 1:按月
- string isFirstRecharge = content.Contains("\"isFirstRecharge\"") ? jsonObj["isFirstRecharge"].ToString() : "0"; //是否首充 0否 1是
- string cashFlag = jsonObj["cashFlag"].ToString(); //押金标识 0否 1是
- string tradeTime = jsonObj["tradeTime"].ToString(); //交易时间
- db.TradeRecord.Add(new TradeRecord()
- {
- CreateDate = DateTime.Now,
- UpdateDate = DateTime.Now,
- Field1 = snType,
- Field2 = duration,
- Field3 = unit,
- Field4 = isFirstRecharge,
- SerEntryMode = cashFlag,
- BankCardNo = sn,
- TradeStatus = "2",
- TradeAmount = decimal.Parse(tradeAmt),
- Field5 = tradeTime,
- TradeSerialNo = orderSn,
- MerNo = mchNo,
- TradeSnNo = sn,
- ProductType = "23",
- Status = 1,
- SeoTitle = "v2",
- });
- db.SaveChanges();
- }
- db.Dispose();
- }
- catch(Exception ex)
- {
- function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "接收来量吧WIFI设备交易异常");
- }
- }
- else
- {
- Thread.Sleep(5000);
- }
- }
- }
- string prikey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCPs8Mn9EtUNqz9eg+Zv9Hu4gwjKgqma+Ud5A+LpiMQFK83fQX1zmg9oGtaXL11guQBJT9pui3vBn4cZXkadOd03x22lxDd18hBmEWBA8b2MTC4u2gZ7jKGjMBurDZ4Uit8yk2Ls8Qe6Jzf7f2cdTwzw6JrLGyZ6jx+Xl7zHcylvY6YHio8t1zW/ZuP2PuY6XWXL/1gbChhxUIs/LhZbHzPazvnjqxM7ioZkLU0Of3W0keO6AcJo01DGqUHZ/l9FsZU/8697o1W3IyhQ9PDTg9mVWS46hIMhd70nNpCTlDKn6iiv2H0GtZ1FbczX7uoTXI9oqP2uU1qahk10CdbeLW1AgMBAAECggEADnMnBpd8E6XD02E4vF8bfwff7JFHrOBgk5bhMUutbuqFi/DYbpUoyjmdUeLNckmNH8hdDgaYo9ZlS/mwKcbjl07wL/IU0hnmmyHyqzxz/0GHAqxllWXsUrdIilhqycKJeOzmy0tyRyFg1OubeuYW/aWIaXp4GSoClzpqFcxDTc8RE7rSn5JxwfBug9p1dNrv0/RfeXSecJ2puqWO3w6+sJxCyMt7/SmIa5sczc9ehSDYhWH0Zs5FBwfhfpyxECyQWeHoIM6I+AkJqjbNRBKT5TCho66Ie5H/PwHVJ0GxhEyc7xKn+/9ZA+5AAYCrlqDzZyqQQUDK8cDyjZfLFx6fAQKBgQDRpnAD+jRE6wJ1fSBEPUe8J3x7IxlFR2K4k6XXj+hNHdqDP/Oo1lssj64U4eeXHyvbe9bJVbVvJ28jM1cSsGHmcQMj3bHLWhWHlwOYqIc9FZgGB9T//NyMhVUsSUhZ4LPPA5eJOJeDCnKPPwevK2Iaj1iopeO2+DQPffPNYyRPlQKBgQCveN7tX3NFH9944iATS8RZX2C1reXjIf6wH3dLg5ttLJhH9Une//RvKPEjlnPL7sJnyt8jGiXQOma6Xr3cHztDjdCdaEC6lZmoiUL4aN1amUjz7cET2BeJjtv9fRG+bk5RSCemcHyuvALMmLeRwm8cAfdWnNsEv+ikshkUyZHFoQKBgQC8SmtYZyMCsr8mnhaYsyD2T9BxF3jey9pSQ+kyzUCp4iIatxkzjjGct/51Kt9AzvIo0fR6Jswo5JXgW3/cfSWwPdfAIqBILsQfXvYP6Wxs5DQBVo9qycObQTTZ7YdZkYJsbqFu0LDjNELnfIh+PsyBZjUOYs89yXWYZFrPIDfAcQKBgHZDVqxRapUqGCmW7dtTc3Bw0fNg0tG0db0qV/KzLqv0JGZLMZB0nb/VrkA4BK9rqebeWmmEE/w1gEsX04pqGj07dWDBhO68KSXn7RUTSCzppruQgFLpj2OMv0QnaTAZk/tAUEjjA4WY/aH7Q62fh9culA7yBMM8vIVT64eRGwhBAoGAc5vyY2in0OCwDVApi5IO+ilorfHMKWSVub1oG/9R85V21n9Ux6SWkLCs+tTY80VvQzfjrWS/vAkaOV9usfuJL7cotroyUgxFp8+I5bPdgThD0uP2078n92huoacVp49eKL+WGGmHBl1aSz9YJguQ0neaTxJUlEuAokfMO6dhHro=";
- public string Decrypt(string data)
- {
- var toDecryptArray = Convert.FromBase64String(data);
- var rsa2 = RSA.Create();
- rsa2.ImportPkcs8PrivateKey(Convert.FromBase64String(prikey), out _);
- var ContentArray = rsa2.Decrypt(toDecryptArray, RSAEncryptionPadding.Pkcs1);
- string result = System.Text.Encoding.UTF8.GetString(ContentArray);
- return result;
- }
- public int MonthDifference(DateTime start, DateTime end)
- {
- int yearsDifference = end.Year - start.Year;
- int monthsDifference = end.Month - start.Month;
-
- // 如果结束年份比开始年份大1,则月份差减去1
- if (end.AddYears(-yearsDifference) < start)
- {
- monthsDifference--;
- }
-
- return yearsDifference * 12 + monthsDifference;
- }
- }
|