using System; using System.Collections.Generic; using System.Linq; using System.Text; using HslCommunication.Enthernet; using HslCommunication.BasicFramework; using CommonLibrary; using System.Net; using System.Drawing; using System.Windows.Forms; using Newtonsoft.Json.Linq; namespace ClientsLibrary { /*********************************************************************************** * * 说明:用来存储客户端全局的变量数据,好在任何界面都可以直达数据 * * ***********************************************************************************/ /// /// 一个通用的用户客户端类, 包含了一些静态的资源 /// public class UserClient { /// /// 客户端需要进行本地存储的信息日志 /// public static JsonSettings JsonSettings = new JsonSettings(); /// /// 本软件的当前版本,用来验证更新的关键依据 /// public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171007"); /// /// 服务器的IP地址,默认为127.0.0.1,可用于单机调试, /// 云服务器端:117.48.203.204,注意,云端为最新版,客户端版本比较旧会调试失败 /// public static string ServerIp { get; } = "117.48.203.204";//用于测试的云服务器地址 /// /// 系统的分厂信息 /// public static List SystemFactories { get; set; } = new List(); /// /// 所有版本更新信息的对象 /// public static List HistoryVersions { get; } = new List { // 写入所有的历史版本信息,这样就能在更新日志的界面查看到信息 new VersionInfo() { VersionNum = new SystemVersion("1.0.0"), ReleaseDate = new DateTime(2017, 10, 1),//该版本发布的日期 UpdateDetails = new StringBuilder( "1.本系统第一版本正式发布使用。"+Environment.NewLine+ "2.提供了多客户端用时在线的功能。"+Environment.NewLine+ "3.支持个人的文件管理功能。"), }, }; /// /// 设置或获取系统的公告 /// public static string Announcement { get; set; } = ""; /// /// 当前系统的登录账户 /// public static UserAccount UserAccount { get; set; } = new UserAccount(); /// /// 服务器的时间,该时间与服务器同步,每隔10秒钟,防止客户端串改单机时间,可以作为各种时间条件判定 /// public static DateTime DateTimeServer { get; set; } = DateTime.Now; /// /// 用于访问服务器数据的网络对象类,必须修改这个端口参数,否则运行失败 /// public static NetSimplifyClient Net_simplify_client { get; set; } = new NetSimplifyClient( new IPEndPoint(IPAddress.Parse(ServerIp), CommonProtocol.Port_Second_Net)) { KeyToken = CommonProtocol.KeyToken, ConnectTimeout = 5000, }; /// /// 用于使用udp向服务器进行发送即时可丢失数据的对象 /// public static NetUdpClient Net_Udp_Client { get; set; } = new NetUdpClient( new IPEndPoint(IPAddress.Parse(ServerIp), CommonProtocol.Port_Udp_Server)) { KeyToken = CommonProtocol.KeyToken, }; /// /// 检查当前账户是否有role角色的权限 /// /// 角色名称 /// public static bool CheckUserAccountRole(string roleCode) { JObject json = new JObject { { "Name", UserAccount.UserName }, { "Role", roleCode } }; HslCommunication.OperateResultString result = Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.检查角色权限, json.ToString()); if(result.IsSuccess) { if(result.Content.ToUpper() == "TRUE") { return true; } } return false; } /// /// 用于绝大部分用途的文件上传下载操作 /// public static IntegrationFileClient Net_File_Client { get; set; } = new IntegrationFileClient() { KeyToken = CommonProtocol.KeyToken, LogNet = LogNet, ServerIpEndPoint = new IPEndPoint(IPAddress.Parse(ServerIp), CommonProtocol.Port_Ultimate_File_Server) }; /// /// 目前仅仅用于上传客户端更新文件操作 /// public static IntegrationFileClient Net_Update_Client { get; set; } = new IntegrationFileClient() { KeyToken = CommonProtocol.KeyToken, LogNet = LogNet, ServerIpEndPoint = new IPEndPoint(IPAddress.Parse(ServerIp), CommonProtocol.Port_Advanced_File_Server) }; /// /// 客户端的日志纪录对象 /// public static HslCommunication.LogNet.ILogNet LogNet { get; set; } /// /// 用来处理客户端发生的未捕获的异常,将通过网络组件发送至服务器存储,用于更好的跟踪错误 /// /// /// public static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { if (e.ExceptionObject is Exception ex) { // 使用TCP方法传送回服务器 string info = HslCommunication.LogNet.LogNetManagment.GetSaveStringFromException(null, ex); Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.异常消息, info); } } /// /// 统一的窗体图标显示 /// /// public static Icon GetFormWindowIcon() { return Icon.ExtractAssociatedIcon(Application.ExecutablePath); } } }