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(60000); GetTradeData(); Thread.Sleep(600000); } } else { Thread.Sleep(1800000); } } } public void GetDepositData() { // 要下载的文件路径 string filePath = "/haoda-deposit/deposit_" + DateTime.Now.AddDays(-2).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 PosKind = DataListInfo[2]; //机具型号 string ActDate = DataListInfo[3]; //激活时间 string Deposit = DataListInfo[4]; //押金金额 string PrizeAmt = DataListInfo[5]; //奖励金额 string PrizeDate = DataListInfo[6]; //奖励发放时间 string Name = 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 == "好哒语音王Y512") ProductType = "18"; if(PosKind == "4G收款王M820") ProductType = "19"; if(PosKind == "4G收款王M826") ProductType = "20"; if(PosKind == "好哒S312") ProductType = "21"; db.BindRecord.Add(new BindRecord() { CreateDate = DateTime.Now, UpdateTime = DateTime.Now, //机具绑定、解绑时间 CreateTime = DateTime.Now, //商户操作时间 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.Now, 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.Now, 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)) { MpMainModels2.WebCMSEntities db = new MpMainModels2.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[3]; PayWay = DataListInfo[4]; TradeType = DataListInfo[5]; TradeAmount = DataListInfo[6]; TradeFee = DataListInfo[7]; TradeDate = DataListInfo[8]; TradeCycle = DataListInfo[9]; 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 MpMainModels2.MerchantAddInfo(); if (merchantAddInfo.Id > 0) { var merchantInfo = db.MerchantInfo.FirstOrDefault(m => m.Id == merchantAddInfo.Id) ?? new MpMainModels2.MerchantInfo(); if(merchantInfo.IsAct == 0) { merchantInfo.IsAct = 1; } var orders = db.ConsumerOrders.FirstOrDefault(m => m.SeoTitle == OrderNo && OrderNo == OrderNo) ?? new MpMainModels2.ConsumerOrders(); if (orders.Id == 0) { var query = db.ConsumerOrders.Add(new MpMainModels2.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文件数据异常"); } } } }