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文件数据异常");
}
}
}
}