using System; using System.Collections.Generic; using System.Linq; using System.Data; using System.Threading; using Library; using LitJson; using System.Net; using System.IO; using MySystem.SpModels; namespace MySystem { /// /// 获取好哒ftp数据 /// public class GetHaoDaFTPInfoService { public readonly static GetHaoDaFTPInfoService Instance = new GetHaoDaFTPInfoService(); private GetHaoDaFTPInfoService() { } // 47.108.253.46 // 用户名:hdftp // 密:haodatradeftp2024 // 目录:/haoda-trade public string ftpServerAddress = "ftp://47.108.253.46"; public string ftpUser = "hdftp"; public string ftpPassword = "haodatradeftp2024"; public void Start() { //每天凌晨执行获取好哒FTP昨日交易数据 Thread th2 = new Thread(GetDepositDataReady); th2.IsBackground = true; th2.Start(); } /// /// 获取好哒FTP昨日交易数据 /// public void GetDepositDataReady() { while (true) { // if (DateTime.Now.Hour > 10 && DateTime.Now.Hour < 22) // { // string check = function.ReadInstance("/GetFTPDepositYesterday/check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt"); // if (string.IsNullOrEmpty(check)) // { // function.WritePage("/GetFTPDepositYesterday/", "check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString()); GetDepositData(); Thread.Sleep(600000); // } // } // else // { // Thread.Sleep(1800000); // } } } public void GetDepositData() { // 要下载的文件路径 string filePath = "/haoda-deposit/deposit_" + DateTime.Now.AddDays(-1).ToString("yyyyMMdd") + ".csv"; try { // 创建FtpWebRequest对象 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServerAddress + filePath); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(ftpUser, ftpPassword); // 使用WebResponse获取响应 FtpWebResponse response = (FtpWebResponse)request.GetResponse(); // 打开数据流 Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); // 读取数据 string fileContents = reader.ReadToEnd(); if (!string.IsNullOrEmpty(fileContents)) { WebCMSEntities db = new WebCMSEntities(); var DataInfo = fileContents.TrimEnd('\n').Split('\n', 2); var DataList = DataInfo[1].Split('\n'); foreach (var DataListItem in DataList) { var DataListInfo = DataListItem.Split(','); string SnNo = DataListInfo[0]; //sn string MerNo = DataListInfo[1]; //商户编号 string ActDate = DataListInfo[2]; //激活时间 string Deposit = DataListInfo[3]; //押金金额 string PrizeAmt = DataListInfo[4]; //奖励金额 string PrizeDate = DataListInfo[5]; //奖励发放时间 string Name = DataListInfo[6]; //发放人姓名 string PosKind = DataListInfo[7]; //机具型号 string ActDateString = ActDate.Substring(0, 4) + "-" + ActDate.Substring(4, 2) + "-" + ActDate.Substring(6, 2); string PrizeDateString = PrizeDate.Substring(0, 4) + "-" + PrizeDate.Substring(4, 2) + "-" + PrizeDate.Substring(6, 2); string ProductType = "0"; if(PosKind == "1") ProductType = "18"; if(PosKind == "4G收款王M820") ProductType = "19"; if(PosKind == "4G收款王M826") ProductType = "20"; if(PosKind == "4") ProductType = "21"; db.BindRecord.Add(new BindRecord() { CreateDate = DateTime.Now, UpdateTime = DateTime.Parse(ActDateString), //机具绑定、解绑时间 CreateTime = DateTime.Parse(ActDateString), //商户操作时间 MerSnNo = SnNo, //序列号 MerNo = MerNo, //商户编号 MerName = Name, SeoTitle = PrizeAmt, SeoKeyword = ActDateString, ProductType = ProductType, Field1 = Deposit, Field2 = PrizeDate, Status = 1, }); db.Merchants.Add(new Merchants() { SnNo = SnNo, CreateTime = DateTime.Now, UpdateTime = DateTime.Parse(ActDateString), AgentName = Name, MerRealName = Name, MerNo = MerNo, MerName = Name, ProductType = ProductType, Status = 1, }); db.SaveChanges(); db.ActivateRecord.Add(new ActivateRecord() { SnNo = SnNo, CreateDate = DateTime.Now, SeoTitle = Deposit, ActivateDate = DateTime.Parse(ActDateString), AgentNo = MerNo, MerRealName = Name, MerNo = MerNo, MerName = Name, ProductType = ProductType, ChannelSerial = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), Status = 1, }); db.SaveChanges(); } db.Dispose(); } // 关闭响应 reader.Dispose(); responseStream.Dispose(); response.Close(); } catch (WebException ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "获取好哒FTP文件数据异常"); } } public void StartTrade() { //每天凌晨执行获取好哒FTP昨日交易数据 Thread th2 = new Thread(GetTradeDataReady); th2.IsBackground = true; th2.Start(); } /// /// 获取好哒FTP昨日交易数据 /// public void GetTradeDataReady() { while (true) { // if (DateTime.Now.Hour > 10 && DateTime.Now.Hour < 22) // { // string check = function.ReadInstance("/GetFTPTradeYesterday/check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt"); // if (string.IsNullOrEmpty(check)) // { // function.WritePage("/GetFTPTradeYesterday/", "check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString()); GetTradeData(); Thread.Sleep(600000); // } // } // else // { // Thread.Sleep(1800000); // } } } public void GetTradeData() { // 要下载的文件路径 string filePath = "/haoda-trade/" + DateTime.Now.AddDays(-1).ToString("yyyyMMdd") + ".csv"; try { // 创建FtpWebRequest对象 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServerAddress + filePath); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(ftpUser, ftpPassword); // 使用WebResponse获取响应 FtpWebResponse response = (FtpWebResponse)request.GetResponse(); // 打开数据流 Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); // 读取数据 string fileContents = reader.ReadToEnd(); if (!string.IsNullOrEmpty(fileContents)) { WebCMSEntities db = new WebCMSEntities(); var DataInfo = fileContents.TrimEnd('\n').Split('\n', 2); var DataList = DataInfo[1].Split('\n'); foreach (var DataListItem in DataList) { var DataListInfo = DataListItem.Split(','); string MerNo = DataListInfo[0]; // 商户号 string SnNo = DataListInfo[1]; // 设备号 string OrderNo = DataListInfo[2]; // 订单号 string PayMode = DataListInfo[3]; // 支付方式(微信 支付宝) string TradeType = DataListInfo[4]; // 交易类型 string TradeAmount = DataListInfo[5]; // 交易金额 string TradeFee = DataListInfo[6]; // 交易手续费 string TradeDate = DataListInfo[7]; // 交易时间 string TradeCycle = DataListInfo[8]; // 结算周期 string PosKind = DataListInfo[9]; string TradeDateString = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2) + " " + TradeDate.Substring(8, 2) + ":" + TradeDate.Substring(10, 2) + ":" + TradeDate.Substring(12, 2); string ProductType = "0"; if(PosKind == "1") ProductType = "18"; if(PosKind == "4G收款王M820") ProductType = "19"; if(PosKind == "4G收款王M826") ProductType = "20"; if(PosKind == "4") ProductType = "21"; db.TradeRecord.Add(new TradeRecord() { CreateDate = DateTime.Now, UpdateDate = DateTime.Parse(TradeDateString), TradeSnNo = SnNo, //序列号 MerNo = MerNo, //商户编号 Remark = "交易成功", SettleFee = decimal.Parse(function.CheckNum(TradeFee)), BankCardType = "02", TradeType = TradeType, TradeStatus = "00", TradeAmount = decimal.Parse(function.CheckNum(TradeAmount)), TradeSerialNo = OrderNo, ProductType = ProductType, Field1 = PayMode, Field2 = TradeCycle, Status = 1, }); db.SaveChanges(); } db.Dispose(); } // 关闭响应 reader.Dispose(); responseStream.Dispose(); response.Close(); } catch (WebException ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "获取好哒FTP文件数据异常"); } } } }