using System; using System.Collections.Generic; using System.Linq; using System.Data; using System.Threading; using MySystem.Models.Main; using Library; using LitJson; using System.Net; using System.IO; using AppConfig; namespace MySystem { /// /// 获取好哒ftp数据 /// public class GetHaoDaFTPInfoService { public readonly static GetHaoDaFTPInfoService Instance = new GetHaoDaFTPInfoService(); private GetHaoDaFTPInfoService() { } public void Start() { // //半小时执行获取好哒FTP交易数据 // Thread th = new Thread(GetFTPDataInfoHalfHour); // th.IsBackground = true; // th.Start(); // //每天凌晨执行获取好哒FTP今日交易数据 // Thread th1 = new Thread(GetFTPDataInfoToday); // th1.IsBackground = true; // th1.Start(); //每天凌晨执行获取好哒FTP昨日交易数据 Thread th2 = new Thread(GetFTPDataInfoYesterdayReady); th2.IsBackground = true; th2.Start(); } /// /// 没半小时获取好哒FTP今日交易数据 /// public void GetFTPDataInfoHalfHour() { // 47.108.253.46 // 用户名:hdftp // 密:haodatradeftp2024 // 目录:/haoda-trade // FTP服务器的地址 string ftpServerAddress = Base.HaoDaFtpHost; // FTP登录凭证 string ftpUser = Base.HaoDaFtpLoginName; string ftpPassword = Base.HaoDaFtpLoginPwd; // 要下载的文件路径 string filePath = "/haoda-trade/" + DateTime.Now.ToString("yyyyMMdd") + ".csv"; while (true) { 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(); using (StreamReader reader = new StreamReader(responseStream)) { WebCMSEntities db = new WebCMSEntities(); // 读取数据 string fileContents = reader.ReadToEnd(); if (!string.IsNullOrEmpty(fileContents)) { var DataInfo = fileContents.TrimEnd('\n').Split('\n', 2); var DataList = DataInfo[1].Split('\n'); foreach (var DataListItem in DataList) { var DataListInfo = DataListItem.Split(','); var MerchantNo = ""; // 商户号 var BaseNo = ""; // 设备号 var OrderNo = ""; // 订单号 var PayWay = ""; // 支付方式(微信 支付宝) var TradeType = ""; // 交易类型 var TradeAmount = ""; // 交易金额 var TradeFee = ""; // 交易手续费 var TradeDate = ""; // 交易时间 var TradeCycle = ""; // 结算周期 MerchantNo = DataListInfo[0]; BaseNo = DataListInfo[1]; OrderNo = DataListInfo[2]; PayWay = DataListInfo[3]; TradeType = DataListInfo[4]; TradeAmount = DataListInfo[5]; TradeFee = DataListInfo[6]; TradeDate = DataListInfo[7]; TradeCycle = DataListInfo[8]; TradeDate = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2) + " " + TradeDate.Substring(8, 2) + ":" + TradeDate.Substring(10, 2) + ":" + TradeDate.Substring(12, 2); var PayMode = 0; if (PayWay.Contains("支付宝")) PayMode = 1; if (PayWay.Contains("微信")) PayMode = 2; var merchantAddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.MchtNo == MerchantNo) ?? new MerchantAddInfo(); if (merchantAddInfo.Id > 0) { var merchantInfo = db.MerchantInfo.FirstOrDefault(m => m.Id == merchantAddInfo.Id) ?? new MerchantInfo(); var orders = db.ConsumerOrders.FirstOrDefault(m => m.SeoTitle == OrderNo && OrderNo == OrderNo) ?? new ConsumerOrders(); if (orders.Id == 0) { var query = db.ConsumerOrders.Add(new ConsumerOrders() { Status = 1, CreateDate = DateTime.Parse(TradeDate), UpdateDate = DateTime.Parse(TradeDate), SnNo = BaseNo, PayMoney = decimal.Parse(TradeAmount), PayMode = PayMode, SeoTitle = OrderNo, OrderNo = OrderNo, MerchantId = merchantAddInfo.Id, UserId = merchantInfo.UserId }).Entity; } } } db.SaveChanges(); db.Dispose(); } // 关闭响应 response.Close(); Thread.Sleep(1800000); } } catch (WebException ex) { // 如果抛出WebException,则可能是文件不存在 // 根据响应状态码判断是否文件不存在 if (((FtpWebResponse)ex.Response).StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString() + "文件" + filePath + "不存在", "获取好哒FTP文件数据异常"); // 文件不存在,返回false } else { // 其他错误 function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "获取好哒FTP文件数据异常"); } } } } /// /// 获取好哒FTP今日交易数据 /// public void GetFTPDataInfoToday() { // 47.108.253.46 // 用户名:hdftp // 密:haodatradeftp2024 // 目录:/haoda-trade // FTP服务器的地址 string ftpServerAddress = Base.HaoDaFtpHost; // FTP登录凭证 string ftpUser = Base.HaoDaFtpLoginName; string ftpPassword = Base.HaoDaFtpLoginPwd; // 要下载的文件路径 string filePath = "/haoda-trade/" + DateTime.Now.ToString("yyyyMMdd") + ".csv"; while (true) { if (DateTime.Now.Hour > 0 && DateTime.Now.Hour < 9) { 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(); using (StreamReader reader = new StreamReader(responseStream)) { WebCMSEntities db = new WebCMSEntities(); // 读取数据 string fileContents = reader.ReadToEnd(); if (!string.IsNullOrEmpty(fileContents)) { var DataInfo = fileContents.TrimEnd('\n').Split('\n', 2); var DataList = DataInfo[1].Split('\n'); foreach (var DataListItem in DataList) { var DataListInfo = DataListItem.Split(','); var MerchantNo = ""; // 商户号 var BaseNo = ""; // 设备号 var OrderNo = ""; // 订单号 var PayWay = ""; // 支付方式(微信 支付宝) var TradeType = ""; // 交易类型 var TradeAmount = ""; // 交易金额 var TradeFee = ""; // 交易手续费 var TradeDate = ""; // 交易时间 var TradeCycle = ""; // 结算周期 MerchantNo = DataListInfo[0]; BaseNo = DataListInfo[1]; OrderNo = DataListInfo[2]; PayWay = DataListInfo[3]; TradeType = DataListInfo[4]; TradeAmount = DataListInfo[5]; TradeFee = DataListInfo[6]; TradeDate = DataListInfo[7]; TradeCycle = DataListInfo[8]; TradeDate = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2) + " " + TradeDate.Substring(8, 2) + ":" + TradeDate.Substring(10, 2) + ":" + TradeDate.Substring(12, 2); var PayMode = 0; if (PayWay.Contains("支付宝")) PayMode = 1; if (PayWay.Contains("微信")) PayMode = 2; var merchantAddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.MchtNo == MerchantNo) ?? new MerchantAddInfo(); if (merchantAddInfo.Id > 0) { var merchantInfo = db.MerchantInfo.FirstOrDefault(m => m.Id == merchantAddInfo.Id) ?? new MerchantInfo(); var orders = db.ConsumerOrders.FirstOrDefault(m => m.SeoTitle == OrderNo && OrderNo == OrderNo) ?? new ConsumerOrders(); if (orders.Id == 0) { var query = db.ConsumerOrders.Add(new ConsumerOrders() { Status = 1, CreateDate = DateTime.Parse(TradeDate), UpdateDate = DateTime.Parse(TradeDate), SnNo = BaseNo, PayMoney = decimal.Parse(TradeAmount), PayMode = PayMode, SeoTitle = OrderNo, OrderNo = OrderNo, MerchantId = merchantAddInfo.Id, UserId = merchantInfo.UserId }).Entity; } } } db.SaveChanges(); db.Dispose(); } // 关闭响应 response.Close(); Thread.Sleep(1800000); } } catch (WebException ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "获取好哒FTP文件数据异常"); } } } } /// /// 获取好哒FTP昨日交易数据 /// public void GetFTPDataInfoYesterdayReady() { while (true) { if (DateTime.Now.Hour > 10 && DateTime.Now.Hour < 22) { string check = function.ReadInstance("/GetFTPDataInfoYesterday/check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt"); if (string.IsNullOrEmpty(check)) { function.WritePage("/GetFTPDataInfoYesterday/", "check" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString()); GetFTPDataInfoYesterday(); Thread.Sleep(600000); } } else { Thread.Sleep(1800000); } } } public void GetFTPDataInfoYesterday() { // 47.108.253.46 // 用户名:hdftp // 密:haodatradeftp2024 // 目录:/haoda-trade // FTP服务器的地址 string ftpServerAddress = Base.HaoDaFtpHost; // FTP登录凭证 string ftpUser = Base.HaoDaFtpLoginName; string ftpPassword = Base.HaoDaFtpLoginPwd; // 要下载的文件路径 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(','); var MerchantNo = ""; // 商户号 var BaseNo = ""; // 设备号 var OrderNo = ""; // 订单号 var PayWay = ""; // 支付方式(微信 支付宝) var TradeType = ""; // 交易类型 var TradeAmount = ""; // 交易金额 var TradeFee = ""; // 交易手续费 var TradeDate = ""; // 交易时间 var TradeCycle = ""; // 结算周期 MerchantNo = DataListInfo[0]; BaseNo = DataListInfo[1]; OrderNo = DataListInfo[2]; PayWay = DataListInfo[3]; TradeType = DataListInfo[4]; TradeAmount = DataListInfo[5]; TradeFee = DataListInfo[6]; TradeDate = DataListInfo[7]; TradeCycle = DataListInfo[8]; TradeDate = TradeDate.Substring(0, 4) + "-" + TradeDate.Substring(4, 2) + "-" + TradeDate.Substring(6, 2) + " " + TradeDate.Substring(8, 2) + ":" + TradeDate.Substring(10, 2) + ":" + TradeDate.Substring(12, 2); var PayMode = 0; if (PayWay.Contains("支付宝")) PayMode = 1; if (PayWay.Contains("微信")) PayMode = 2; var merchantAddInfo = db.MerchantAddInfo.FirstOrDefault(m => m.MchtNo == MerchantNo) ?? new MerchantAddInfo(); if (merchantAddInfo.Id > 0) { var merchantInfo = db.MerchantInfo.FirstOrDefault(m => m.Id == merchantAddInfo.Id) ?? new MerchantInfo(); var orders = db.ConsumerOrders.FirstOrDefault(m => m.SeoTitle == OrderNo && m.OrderNo == OrderNo) ?? new ConsumerOrders(); if (orders.Id == 0) { var query = db.ConsumerOrders.Add(new ConsumerOrders() { Status = 1, CreateDate = DateTime.Parse(TradeDate), UpdateDate = DateTime.Parse(TradeDate), SnNo = BaseNo, PayMoney = decimal.Parse(TradeAmount), PayMode = PayMode, SeoTitle = OrderNo, OrderNo = OrderNo, MerchantId = merchantAddInfo.Id, UserId = merchantInfo.UserId }).Entity; } } } db.SaveChanges(); db.Dispose(); } // 关闭响应 reader.Dispose(); responseStream.Dispose(); response.Close(); } catch (WebException ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "获取好哒FTP文件数据异常"); } } } }