567 lines
29 KiB
C#
567 lines
29 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Globalization;
|
||
using System.Linq;
|
||
using System.Net;
|
||
using System.Net.Sockets;
|
||
using System.Text;
|
||
using System.Threading;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using System.Windows.Data;
|
||
using System.Windows.Documents;
|
||
using System.Windows.Input;
|
||
using System.Windows.Media;
|
||
using System.Windows.Media.Imaging;
|
||
using System.Windows.Navigation;
|
||
using System.Windows.Shapes;
|
||
using System.Windows.Threading;
|
||
|
||
|
||
namespace ConnectPoint
|
||
{
|
||
/// <summary>
|
||
/// MainWindow.xaml 的交互逻辑
|
||
/// </summary>
|
||
public partial class MainWindow : Window
|
||
{
|
||
#region 属性
|
||
/// <summary>
|
||
/// 状态反馈主定时器
|
||
/// </summary>
|
||
private readonly DispatcherTimer WorkerTimer;
|
||
/// <summary>
|
||
/// 平台稽核结果校验线程定时器
|
||
/// </summary>
|
||
private readonly DispatcherTimer CheckAuditTimer;
|
||
/// <summary>
|
||
/// 数据传输接口地址
|
||
/// </summary>
|
||
private string WebServiceUrl { get; set; }
|
||
/// <summary>
|
||
/// 主支付通道接口地址
|
||
/// </summary>
|
||
private string PayServiceUrl { get; set; }
|
||
///// <summary>
|
||
///// 数据传输线程类
|
||
///// </summary>
|
||
//GetHttpData.SDK.ThreadPool.ClientThread DataClientThread { get; set; }
|
||
|
||
ESSupport.Transfer.PosDataUpload DataUpload { get; set; }
|
||
ESSupport.Transfer.PosDataDownload PosDataDownload { get; set; }
|
||
#endregion
|
||
|
||
public MainWindow()
|
||
{
|
||
InitializeComponent();
|
||
|
||
#region 状态反馈主定时器,每分钟执行一次
|
||
WorkerTimer = new DispatcherTimer
|
||
{
|
||
Interval = TimeSpan.FromSeconds(60)
|
||
};
|
||
WorkerTimer.Tick += WorkerTimer_Tick;
|
||
WorkerTimer.Start();
|
||
#endregion
|
||
|
||
#region 检测并获取长款智能稽核记录的后台补录流水记录,10分钟执行一次
|
||
CheckAuditTimer = new DispatcherTimer
|
||
{
|
||
Interval = TimeSpan.FromMinutes(10)
|
||
};
|
||
CheckAuditTimer.Tick += CheckAuditTimer_Tick;
|
||
CheckAuditTimer.Start();
|
||
#endregion
|
||
}
|
||
|
||
#region 事件 -> 主程序启动加载事件
|
||
/// <summary>
|
||
/// 主程序启动加载事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||
{
|
||
this.Hide();
|
||
#region 程序启动时,进行过期日志、备份文件清理操作并升级本地表结构
|
||
new Thread(() =>
|
||
{
|
||
int _FileCount = 0;
|
||
//清理程序根目录下过期日志文件
|
||
//try { ESSupport.Lib.FileHelper.DeleteFiles(AppDomain.CurrentDomain.BaseDirectory, new string[] { ".log" }, false, false, 10, ref _FileCount); } catch { }
|
||
//清理错误日志文件夹中过期日志文件
|
||
//try { ESSupport.Lib.FileHelper.DeleteFiles(AppDomain.CurrentDomain.BaseDirectory + "\\log", new string[] { ".log" }, false, false, 10, ref _FileCount); } catch { }
|
||
//清理流水日志文件
|
||
try { ESSupport.Lib.FileHelper.DeleteFiles(AppDomain.CurrentDomain.BaseDirectory + "\\selldata", new string[] { ".log" }, false, false, 60, ref _FileCount); } catch { }
|
||
//升级本地数据库表结构
|
||
try { ESSupport.Lib.DataBaseUpdate.PosDataBaseUpdate(); } catch { }
|
||
//清理采集的过期客群图像文件
|
||
try { ESSupport.Lib.DataBaseUpdate.ClearCustomerInfo(AppDomain.CurrentDomain.BaseDirectory + "\\CustomerInfo", 7); } catch { }
|
||
try
|
||
{
|
||
#region 清理本地数据库历史数据,默认清理60天以前的数据
|
||
//获取服务区编码
|
||
string _ServerPartCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("serverpartcode", string.Empty);
|
||
//获取门店编码
|
||
string _ShopCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("shopcode", string.Empty);
|
||
//获取数据保留时长
|
||
int _EffectiveDay = int.Parse(ESSupport.Pos.PosConfigInit.ConfigurationValues("effective_day", "60"));
|
||
//获取门店ID
|
||
string _ServerPartShopID = ESSupport.Lib.SyBaseHelper.QueryOdbc(
|
||
$@"SELECT SERVERPARTSHOP_ID FROM T_SHOPMESSAGE
|
||
WHERE SERVERPARTCODE = '{_ServerPartCode}' AND
|
||
SHOPCODE = '{_ShopCode}'").Tables[0].Rows[0]["SERVERPARTSHOP_ID"].ToString();
|
||
//清理历史过期数据
|
||
//读取上次启动同步的时间
|
||
string _strLocalDate = ESSupport.Pos.PosConfigInit.ConfigurationValues("syncdtime", "2021/01/01 00:00:00");
|
||
if (DateTime.TryParse(_strLocalDate, out DateTime _LocalDate))
|
||
{
|
||
//本地时间与上次同步时间误差在3天内时,启动数据库过期数据清理
|
||
if (DateTime.Now.Subtract(_LocalDate).TotalDays < 3 && DateTime.Now.Subtract(_LocalDate).TotalDays >= 0)
|
||
{
|
||
ESSupport.Lib.DataBaseUpdate.ClearData(_ServerPartCode, _ShopCode, _ServerPartShopID, _EffectiveDay);
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
catch { }
|
||
//清理过期备份数据文件
|
||
try
|
||
{
|
||
#region 清理过期的历史交易文本备份文件
|
||
//读取上次启动同步的时间
|
||
string _strLocalDate = ESSupport.Pos.PosConfigInit.ConfigurationValues("syncdtime", "2021/01/01 00:00:00");
|
||
if (DateTime.TryParse(_strLocalDate, out DateTime _LocalDate))
|
||
{
|
||
//本地时间同步失败超过3天或本地时间小于上次同步时间,不执行超时备份文件直接清理
|
||
if (DateTime.Now.Subtract(_LocalDate).TotalDays > 3 || DateTime.Now.Subtract(_LocalDate).TotalDays < 0)
|
||
{
|
||
ESSupport.Lib.DataBaseUpdate.ClearDataBackup(AppDomain.CurrentDomain.BaseDirectory + "\\DataBackup", 60, false);
|
||
}
|
||
else
|
||
{
|
||
ESSupport.Lib.DataBaseUpdate.ClearDataBackup(AppDomain.CurrentDomain.BaseDirectory + "\\DataBackup", 60, true);
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
catch { }
|
||
//检查自动更新配置文件Update.xml参数
|
||
ESSupport.Pos.ThreadHelper.NewSystemConfig();
|
||
})
|
||
{ IsBackground = true }.Start();
|
||
#endregion
|
||
//打开被禁用的网卡
|
||
ESSupport.Lib.PCHelper.OpenNetWork();
|
||
string str_ServerIP = Common.PosControl.IsCloudURL ? "pos.eshangtech.com" : ESSupport.Pos.PosConfigInit.ServerIP;
|
||
|
||
#region 程序启动时立即上报一次心跳数据,解决PB版本收银系统结账后立即关机导致版本信息未回传至服务器的问题
|
||
//程序启动时立即上报一次心跳数据,解决PB版本收银系统结账后立即关机导致版本信息未回传至服务器的问题
|
||
try
|
||
{
|
||
if (ESSupport.Common.PosControl.StateFeedbackThread == null ||
|
||
!ESSupport.Common.PosControl.StateFeedbackThread.IsAlive)
|
||
{
|
||
ESSupport.Common.PosControl.StateFeedbackThread = new Thread(() =>
|
||
{
|
||
if (DataUpload == null)
|
||
{
|
||
//内网模式下,通过本地服务器Nginx代理访问云端接口
|
||
DataUpload = new ESSupport.Transfer.PosDataUpload(ESSupport.Pos.PosConfigInit.ServerpartCode,
|
||
ESSupport.Pos.PosConfigInit.ShopCode, ESSupport.Pos.PosConfigInit.MachineCode,
|
||
$"http://{str_ServerIP}:7198/webApi_publish");
|
||
//绑定消息回调监听事件
|
||
DataUpload.NotifyEvent += DataUpload_NotifyEvent;
|
||
}
|
||
|
||
DataUpload.DataUpload(ESSupport.Transfer.TableDataType.RecordStateFeedBack, DateTime.Now);
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
ESSupport.Common.PosControl.StateFeedbackThread.Start();
|
||
}
|
||
}
|
||
catch { }
|
||
#endregion
|
||
|
||
#region PB系统开机时进行一次传输和数据下载,仅用于PB版本系统
|
||
#region 初始化数据传输程序
|
||
//初始化数据传输程序
|
||
if (PosDataDownload == null)
|
||
{
|
||
//测试当前网络是否可以直接访问公网
|
||
if (Common.PosControl.IsCloudURL)
|
||
{
|
||
//公网模式下,直接访问云端接口地址
|
||
PosDataDownload = new ESSupport.Transfer.PosDataDownload(ESSupport.Pos.PosConfigInit.ServerpartCode,
|
||
ESSupport.Pos.PosConfigInit.ShopCode, ESSupport.Pos.PosConfigInit.MachineCode, Common.PosControl.PosDataDownloadURL);
|
||
}
|
||
else
|
||
{
|
||
//内网模式下,通过本地服务器Nginx代理访问云端接口
|
||
PosDataDownload = new ESSupport.Transfer.PosDataDownload(ESSupport.Pos.PosConfigInit.ServerpartCode,
|
||
ESSupport.Pos.PosConfigInit.ShopCode, ESSupport.Pos.PosConfigInit.MachineCode, $"http://{ESSupport.Pos.PosConfigInit.ServerIP}:7198/webApi_publish");
|
||
}
|
||
PosDataDownload.NotifyEvent += PosDataDownload_NotifyEvent; ;
|
||
}
|
||
#endregion
|
||
|
||
try
|
||
{
|
||
if (ESSupport.Pos.PosConfigInit.ConfigurationValues("NewSystem", "1") == "0")
|
||
{
|
||
try
|
||
{
|
||
//与服务器校对时间
|
||
DateTime date_Loacl = DateTime.Now;
|
||
DateTime date_Server = date_Loacl;
|
||
date_Server = ESSupport.Lib.HttpHelper.GetBeijingTime($"http://{str_ServerIP}:17080/DataTransferService/Service.asmx", date_Loacl);
|
||
if (date_Server != date_Loacl && date_Server > new DateTime(2021, 06, 01))
|
||
{
|
||
if (Common.LocalTimeHelper.SetLocalDateTime(date_Server))
|
||
{
|
||
ESSupport.Pos.PosConfigInit.UpdateConfigUration("syncdtime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"与服务器校准时间成功。校准前本地收银机时间【{date_Loacl}】;获取到的云服务器时间【{date_Server}】");
|
||
}
|
||
else
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"与服务器校准时间失败。校准前本地收银机时间【{date_Loacl}】;获取到的云服务器时间【{date_Server}】");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"与服务器时间一致。校准前本地收银机时间【{date_Loacl}】;获取到的云服务器时间【{date_Server}】");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"收银软件启动,与服务器校准时间失败。原因:{ex.Message}");
|
||
}
|
||
//获取服务区编码
|
||
string str_ServerPartCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("serverpartcode", string.Empty);
|
||
//获取门店编码
|
||
string str_ShopCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("shopcode", string.Empty);
|
||
//h获取收银机号
|
||
string str_MachineCode = ESSupport.Pos.PosConfigInit.ConfigurationValues("machinecode", string.Empty);
|
||
if (Common.PosControl.DataTransByPB == null)
|
||
{
|
||
Common.PosControl.DataTransByPB = new Common.CashierDataTransByPB(str_ServerPartCode, str_ShopCode, str_MachineCode, str_ServerIP);
|
||
}
|
||
//上传机器信息到总部
|
||
DataUpload.DataUpload(ESSupport.Transfer.TableDataType.UploadMachineInfo, DateTime.Now);
|
||
#region 开机后启动Socket通讯客户端
|
||
//启动Socket客户端连接线程
|
||
if (Common.PosControl.PosSocket == null)
|
||
{
|
||
//未设置内网Nginx代理服务器时,默认直接访问云端接口地址
|
||
|
||
Common.PosControl.PosSocket = new ESSupport.Transfer.PosSuperSocketClient(
|
||
$"ws://{str_ServerIP}:7199/?ServerpartCode={str_ServerPartCode}&" +
|
||
$"ShopCode={str_ShopCode}&MachineCode={str_MachineCode}",
|
||
str_ServerPartCode, str_ShopCode, str_MachineCode, $"http://{str_ServerIP}:7198/webApi_publish");
|
||
Common.PosControl.PosSocket.NotifyEvent += PosSocket_NotifyEvent;
|
||
}
|
||
if (!Common.PosControl.PosSocket.ClientRuning)
|
||
{
|
||
Common.PosControl.PosSocket.Start();
|
||
}
|
||
#endregion
|
||
|
||
#region PB区服传输指令通知检测程序启动
|
||
if (Common.PosControl.DataTransThread == null || !Common.PosControl.DataTransThread.IsAlive)
|
||
{
|
||
Common.PosControl.DataTransThread = new Thread(() =>
|
||
{
|
||
try
|
||
{
|
||
//下载基础数据
|
||
Common.PosControl.DataTransByPB.CashierDataDownload();
|
||
//上传本地数据
|
||
Common.PosControl.DataTransByPB.CashierDataUpload();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"PB传输检测程序启动失败。原因:{ex.Message}");
|
||
}
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
Common.PosControl.DataTransThread.Start();
|
||
}
|
||
#endregion
|
||
}
|
||
}
|
||
catch { }
|
||
#endregion
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region 数据下载执行结果上报
|
||
/// <summary>
|
||
/// 数据下载执行结果上报
|
||
/// </summary>
|
||
/// <param name="triggerTime">操作时间</param>
|
||
/// <param name="notifyMessage">消息内容</param>
|
||
/// <param name="tableName">消息类型</param>
|
||
private void PosDataDownload_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
//记录到本地文本日志
|
||
ESSupport.Lib.LogHelper.WriteServiceLog(e.NotifyLoggerMessage);
|
||
}
|
||
#endregion
|
||
|
||
#region 数据上传执行结果上报
|
||
/// <summary>
|
||
/// 数据上传执行结果上报
|
||
/// </summary>
|
||
/// <param name="triggerTime">操作时间</param>
|
||
/// <param name="notifyMessage">消息内容</param>
|
||
/// <param name="tableName">消息类型</param>
|
||
private void DataUpload_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
//记录到本地文本日志
|
||
ESSupport.Lib.LogHelper.WriteServiceLog(e.NotifyLoggerMessage);
|
||
}
|
||
#endregion
|
||
|
||
#region 事件 -> 指令执行结果上报
|
||
/// <summary>
|
||
/// 指令执行结果上报
|
||
/// </summary>
|
||
/// <param name="triggerTime">操作时间</param>
|
||
/// <param name="notifyMessage">消息内容</param>
|
||
/// <param name="tableName">消息类型</param>
|
||
private void PosSocket_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
//记录到本地文本日志
|
||
ESSupport.Lib.LogHelper.WriteServiceLog(e.NotifyLoggerMessage);
|
||
}
|
||
#endregion
|
||
|
||
#region 计时器方法 -> 主定时器运行事件
|
||
/// <summary>
|
||
/// 主定时器运行事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void WorkerTimer_Tick(object sender, EventArgs e)
|
||
{
|
||
//每分钟检查一次Socket客户端是否正常连接
|
||
if (Common.PosControl.PosSocket != null && !Common.PosControl.PosSocket.ClientRuning)
|
||
{
|
||
Common.PosControl.PosSocket.Start();
|
||
}
|
||
|
||
#region 初始化移动支付交易检测接口地址
|
||
//初始化移动支付交易检测接口地址
|
||
if (string.IsNullOrWhiteSpace(PayServiceUrl))
|
||
{
|
||
PayServiceUrl = $"http://{ESSupport.Pos.PosConfigInit.ServerIP}:" +
|
||
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("service_port", "7080")}/Service.asmx";
|
||
}
|
||
#endregion
|
||
|
||
#region 系统运行日志记录线程,每隔5分钟保存一条运行记录到本地数据库
|
||
//启动运行日志记录线程
|
||
if (ESSupport.Common.PosControl.RuningLogThread == null ||
|
||
!ESSupport.Common.PosControl.RuningLogThread.IsAlive)
|
||
{
|
||
ESSupport.Common.PosControl.RuningLogThread = new Thread(() =>
|
||
{
|
||
if (ESSupport.Pos.ThreadHelper.RuningLog(ESSupport.Common.PosControl.RuningTime))
|
||
{
|
||
ESSupport.Common.PosControl.RuningTime = DateTime.Now;
|
||
}
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
ESSupport.Common.PosControl.RuningLogThread.Start();
|
||
}
|
||
#endregion
|
||
|
||
#region 每隔10分钟启动一次移动支付交易验证线程
|
||
//定时启动移动支付交易校验线程
|
||
if (DateTime.Now > ESSupport.Common.PosControl.MobilePayCheckTime)
|
||
{
|
||
#region 每10分钟生成一次异常稽核数据压缩文件
|
||
if (Common.PosControl.DataTransThread == null || !Common.PosControl.DataTransThread.IsAlive)
|
||
{
|
||
Common.PosControl.DataTransThread = new Thread(() =>
|
||
{
|
||
try
|
||
{
|
||
if (ESSupport.Pos.PosConfigInit.ConfigurationValues("NewSystem", "1") == "0")
|
||
{
|
||
Common.PosControl.DataTransByPB.CreateIntervalDataZipFile();
|
||
}
|
||
}
|
||
catch { }
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
Common.PosControl.DataTransThread.Start();
|
||
}
|
||
#endregion
|
||
if (ESSupport.Common.PosControl.MobilePayCheckThread == null ||
|
||
!ESSupport.Common.PosControl.MobilePayCheckThread.IsAlive)
|
||
{
|
||
ESSupport.Common.PosControl.MobilePayCheckThread = new Thread(() =>
|
||
{
|
||
//对待确认的移动支付交易进行交易结果查询
|
||
ESSupport.Pos.ThreadHelper.MobilePayQueryCheck(DateTime.Today.AddMinutes(-10), DateTime.Now.AddMinutes(-5));
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
ESSupport.Common.PosControl.MobilePayCheckThread.Start();
|
||
}
|
||
//每隔10分钟执行一次移动支付交易验证
|
||
ESSupport.Common.PosControl.MobilePayCheckTime = DateTime.Now.AddMinutes(10);
|
||
}
|
||
#endregion
|
||
|
||
#region PB系统每分钟启动一次状态反馈(心跳)上报线程
|
||
//定时启动状态反馈线程
|
||
if (DateTime.Now > ESSupport.Common.PosControl.StateFeedBackTime)
|
||
{
|
||
if (ESSupport.Common.PosControl.StateFeedbackThread == null ||
|
||
!ESSupport.Common.PosControl.StateFeedbackThread.IsAlive)
|
||
{
|
||
if (ESSupport.Pos.PosConfigInit.ConfigurationValues("NewSystem", "1") == "0")
|
||
{
|
||
ESSupport.Common.PosControl.StateFeedbackThread = new Thread(() =>
|
||
{
|
||
if (DataUpload == null)
|
||
{
|
||
string str_ServerIP = Common.PosControl.IsCloudURL ? "pos.eshangtech.com" : ESSupport.Pos.PosConfigInit.ServerIP;
|
||
//内网模式下,通过本地服务器Nginx代理访问云端接口
|
||
DataUpload = new ESSupport.Transfer.PosDataUpload(ESSupport.Pos.PosConfigInit.ServerpartCode,
|
||
ESSupport.Pos.PosConfigInit.ShopCode, ESSupport.Pos.PosConfigInit.MachineCode, $"http://{str_ServerIP}:7198/webApi_publish");
|
||
//绑定消息回调监听事件
|
||
DataUpload.NotifyEvent += DataUpload_NotifyEvent;
|
||
}
|
||
DataUpload.DataUpload(ESSupport.Transfer.TableDataType.RecordStateFeedBack, DateTime.Now);
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
ESSupport.Common.PosControl.StateFeedbackThread.Start();
|
||
}
|
||
ESSupport.Common.PosControl.StateFeedBackTime = DateTime.Now.AddMinutes(1);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 每隔30分钟运行一次收银机基础信息更新检测线程
|
||
//每隔30分钟运行一次收银机基础信息更新检测线程
|
||
if (DateTime.Now > ESSupport.Common.PosControl.BaseInfoFeedbackTime)
|
||
{
|
||
if (ESSupport.Common.PosControl.BaseInfoFeedbackThread == null ||
|
||
!ESSupport.Common.PosControl.BaseInfoFeedbackThread.IsAlive)
|
||
{
|
||
ESSupport.Common.PosControl.BaseInfoFeedbackThread = new Thread(() =>
|
||
{
|
||
if (ESSupport.Pos.PosConfigInit.ConfigurationValues("NewSystem", "1") == "0")
|
||
{
|
||
//半小时记录一次软件版本
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"PB收银系统当前软件版本:【{ESSupport.Pos.PosConfigInit.PosVersion}】");
|
||
//数据传输异常日志检测校验
|
||
Common.PosControl.DataTransByPB.BusinessLogCheck();
|
||
//上传本地数据
|
||
Common.PosControl.DataTransByPB.CashierDataUpload();
|
||
//上传半小时营收趋势
|
||
DataUpload.DataUpload(ESSupport.Transfer.TableDataType.RecordRevenueTrend, DateTime.Now);
|
||
//半小时上传最新日志
|
||
PosDataDownload.DataDownload(ESSupport.Transfer.TableDataType.UploadSystemLog, DateTime.Now);
|
||
Common.PosUpdate.UpdateCheck(ESSupport.Pos.PosConfigInit.ServerIP, "11000", ESSupport.Pos.PosConfigInit.ServerpartCode,
|
||
ESSupport.Pos.PosConfigInit.ShopCode, "", out string Ver, out string softUpdateContent);
|
||
}
|
||
////基础数据版本接口上报
|
||
//ESSupport.Pos.ThreadHelper.BaseInfoFeedbackUpload(WebServiceUrl);
|
||
////收银机器信息接口上报
|
||
//ESSupport.Pos.ThreadHelper.MachineInfoFeedbackUpload(WebServiceUrl);
|
||
try
|
||
{
|
||
//读取后台配置的更新服务地址
|
||
string _UpdateIP = ESSupport.Pos.PosConfigInit.ConfigurationValues("UpdateIP", string.Empty);
|
||
if (string.IsNullOrWhiteSpace(_UpdateIP))
|
||
{
|
||
//更新服务地址未配置时,默认同收银服务器地址
|
||
_UpdateIP = ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty);
|
||
}
|
||
//读取后台配置的更新服务端口,默认:11000
|
||
string _UpdatePort = ESSupport.Pos.PosConfigInit.ConfigurationValues("UpdatePort", "11000");
|
||
if (!string.IsNullOrWhiteSpace(_UpdateIP) && !string.IsNullOrWhiteSpace(_UpdatePort))
|
||
{
|
||
//检测更新站点是否存在,存在则更新配置文件
|
||
if (ESSupport.Lib.HttpHelper.UrlIsExist($"http://{_UpdateIP}:{_UpdatePort}/Update.asmx"))
|
||
{
|
||
//修改更新服务IP地址
|
||
if (ESSupport.Lib.ConfigHelper.GetAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "IP") != _UpdateIP)
|
||
{
|
||
ESSupport.Lib.ConfigHelper.UpdateAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "IP", _UpdateIP);
|
||
}
|
||
//修改更新服务端口
|
||
if (ESSupport.Lib.ConfigHelper.GetAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port") != _UpdatePort)
|
||
{
|
||
ESSupport.Lib.ConfigHelper.UpdateAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port", _UpdatePort);
|
||
}
|
||
}
|
||
}
|
||
//更新配置文件不存在端口号配置项时,写入默认端口
|
||
if (string.IsNullOrWhiteSpace(ESSupport.Lib.ConfigHelper.GetAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port")))
|
||
{
|
||
ESSupport.Lib.ConfigHelper.UpdateAppConfig(AppDomain.CurrentDomain.BaseDirectory + "\\update.xml", "Port", "11000");
|
||
}
|
||
}
|
||
catch { }
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
ESSupport.Common.PosControl.BaseInfoFeedbackThread.Start();
|
||
ESSupport.Common.PosControl.BaseInfoFeedbackTime = DateTime.Now.AddMinutes(30);
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
#endregion
|
||
|
||
#region 计时器方法 -> PB系统智能稽核平台校验记录获取线程定时器运行事件
|
||
/// <summary>
|
||
/// 平台稽核记录校验记录获取线程定时器运行事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void CheckAuditTimer_Tick(object sender, EventArgs e)
|
||
{
|
||
//初始化移动支付交易检测接口地址
|
||
if (string.IsNullOrWhiteSpace(PayServiceUrl))
|
||
{
|
||
PayServiceUrl = $"http://{ESSupport.Pos.PosConfigInit.ConfigurationValues("server_ip", string.Empty)}:" +
|
||
$"{ESSupport.Pos.PosConfigInit.ConfigurationValues("service_port", "7080")}/Service.asmx";
|
||
}
|
||
//启动平台稽核反馈结果获取线程
|
||
if (ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread == null ||
|
||
!ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread.IsAlive)
|
||
{
|
||
ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread = new Thread(() =>
|
||
{
|
||
ESSupport.Pos.ThreadHelper.CheckAuditToPowerBuilder(PayServiceUrl);
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
ESSupport.Common.PosControl.CheckAuditToPowerBuilderThread.Start();
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
}
|