265 lines
12 KiB
C#
265 lines
12 KiB
C#
using AllBase;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using Work;
|
|
|
|
namespace _29WxOrder
|
|
{
|
|
static class Program
|
|
{
|
|
/// <summary>
|
|
/// 应用程序的主入口点。
|
|
/// </summary>
|
|
[STAThread]
|
|
static void Main(string[] args)
|
|
{
|
|
try
|
|
{
|
|
//设置应用程序处理异常方式:ThreadException处理
|
|
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
|
//处理UI线程异常
|
|
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
|
|
//处理非UI线程异常
|
|
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
|
|
|
Application.EnableVisualStyles();
|
|
Application.SetCompatibleTextRenderingDefault(false);
|
|
StartUp.Init();
|
|
new Initialization().Get();
|
|
|
|
//BaseClass.IsPinbaobao = true;
|
|
//BaseClass.Ico = Resource1.icoy;
|
|
//BaseClass.ToolName = "拍单王";
|
|
//GetAuthConfig();
|
|
#region 贴牌
|
|
//本地缓存文件
|
|
string IgPakFile = "locales/ig.pak";//贴牌客服端码
|
|
string OenVersionFile = "locales/igv.pak";//贴牌资源配置版本
|
|
string IaPakFile = "locales/ia.pak";//logo
|
|
//string IbPakFile = "locales/ib.pak";//ico
|
|
string LoPakFile = "locales/lo.pak";
|
|
string IcPakFile = "locales/ic.pak";//功能配置
|
|
|
|
OenMechanism(IgPakFile, OenVersionFile, IaPakFile, LoPakFile, IcPakFile);
|
|
#endregion
|
|
|
|
//启动界面
|
|
LoginForm login = new LoginForm(args);
|
|
login.ShowDialog();
|
|
if (login.DialogResult == DialogResult.OK)
|
|
{
|
|
login.Dispose();
|
|
Application.Run(new MainForm());
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string str = GetExceptionMsg(ex, string.Empty);
|
|
NaiBa.Util.Helper.LogHelper.WriteWithTime("SystemError:" + str);
|
|
MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
|
|
{
|
|
string str = GetExceptionMsg(e.Exception, e.ToString());
|
|
NaiBa.Util.Helper.LogHelper.WriteWithTime("SystemError:" + str);
|
|
MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
//LogManager.WriteLog(str);
|
|
}
|
|
|
|
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
|
{
|
|
string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
|
|
NaiBa.Util.Helper.LogHelper.WriteWithTime("SystemError:" + str);
|
|
MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
//LogManager.WriteLog(str);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成自定义异常消息
|
|
/// </summary>
|
|
/// <param name="ex">异常对象</param>
|
|
/// <param name="backStr">备用异常消息:当ex为null时有效</param>
|
|
/// <returns>异常字符串文本</returns>
|
|
static string GetExceptionMsg(Exception ex, string backStr)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.AppendLine("****************************异常文本****************************");
|
|
sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());
|
|
if (ex != null)
|
|
{
|
|
sb.AppendLine("【异常类型】:" + ex.GetType().Name);
|
|
sb.AppendLine("【异常信息】:" + ex.Message);
|
|
sb.AppendLine("【堆栈调用】:" + ex.StackTrace);
|
|
}
|
|
else
|
|
{
|
|
sb.AppendLine("【未处理异常】:" + backStr);
|
|
}
|
|
sb.AppendLine("***************************************************************");
|
|
NaiBa.Util.Helper.LogHelper.WriteWithTime("Error:" + sb);
|
|
return sb.ToString();
|
|
}
|
|
|
|
#region 贴牌
|
|
/// <summary>
|
|
/// Oen贴牌机制
|
|
/// </summary>
|
|
/// <param name="sIgPakFile">贴牌商客户端码文件</param>
|
|
/// <param name="sOenVersionFile">贴牌配置版本号文件</param>
|
|
/// <param name="sIaPakFile">ico本地缓存文件</param>
|
|
/// <param name="sIbPakFile">logo本地缓存文件</param>
|
|
/// <param name="sIcPakFile">贴牌配置本地缓存文件</param>
|
|
private static void OenMechanism(string IgPakFile, string OenVersionFile, string IaPakFile, string LogoBitmapFile, string IcPakFile)
|
|
{
|
|
//先检测是否是贴牌版本
|
|
if (!FileBase.Exists(IgPakFile))
|
|
{
|
|
return;
|
|
}
|
|
string sOenCode = FileBase.ReadAllText(IgPakFile);
|
|
if (string.IsNullOrEmpty(sOenCode))
|
|
{
|
|
MessageBox.Show("缺少配置数据,请重试或联系客服\r\nMissing ig", "提示");
|
|
Process.GetCurrentProcess().Kill();
|
|
return;
|
|
}
|
|
string data = UserLogin.GetSignaturex() + "&agent_code=" + sOenCode;
|
|
string url = BaseClass.Build29WxObjString("oem_config&act=get_version");
|
|
string html = GetHtml.PostUtf8(url, data);
|
|
string oem_version = "0";
|
|
|
|
if (JObject.Parse(html)["code"].ToString() == "200")
|
|
{
|
|
oem_version = JObject.Parse(html)["data"].ToString();
|
|
data = UserLogin.GetSignaturex() + "&agent_code=" + sOenCode;
|
|
url = BaseClass.Build29WxObjString("oem_config&act=get_config_info");
|
|
if (Convert.ToInt32(oem_version) > BaseClass.oem_version)
|
|
{
|
|
html = GetHtml.PostUtf8(url, data);
|
|
if (JObject.Parse(html)["code"].ToString() == "200")
|
|
{
|
|
//还差 判断没有贴牌文件就自动下载, 把贴牌图标引用到所有窗体中
|
|
string agent_name = JObject.Parse(html)["data"]["agent_name"].ToString();
|
|
string softname = JObject.Parse(html)["data"]["oem_title"].ToString();
|
|
string oem_logo_link = JObject.Parse(html)["data"]["oem_logo_link"].ToString();//logo图片 ia
|
|
string oem_icon_link = JObject.Parse(html)["data"]["oem_icon_link"].ToString();//icon图片 ib
|
|
string version = JObject.Parse(html)["data"]["version"].ToString();
|
|
FileBase.WriteAllText(OenVersionFile, version);
|
|
FileBase.WriteAllText(IcPakFile, agent_name + "\r\n" + softname);
|
|
if (!GetHtml.DownloadFile(oem_logo_link, IaPakFile))//logo图片
|
|
{
|
|
OenArchieveFailedToExit();
|
|
}
|
|
if (!GetHtml.DownloadFile(oem_icon_link, LogoBitmapFile))//icon图片
|
|
{
|
|
OenArchieveFailedToExit();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("缺少配置数据,请重试或联系客服\r\nError19238", "提示");
|
|
Process.GetCurrentProcess().Kill();
|
|
return;
|
|
}
|
|
}
|
|
if (!FileBase.Exists(IaPakFile))
|
|
{
|
|
html = GetHtml.PostUtf8(url, data);
|
|
string oem_logo_link = JObject.Parse(html)["data"]["oem_logo_link"].ToString();//logo图片 ia
|
|
if (JObject.Parse(html)["code"].ToString() == "200")
|
|
{
|
|
if (!GetHtml.DownloadFile(oem_logo_link, IaPakFile))//logo图片
|
|
{
|
|
OenArchieveFailedToExit();
|
|
}
|
|
}
|
|
}
|
|
if (!FileBase.Exists(LogoBitmapFile))
|
|
{
|
|
html = GetHtml.PostUtf8(url, data);
|
|
string oem_icon_link = JObject.Parse(html)["data"]["oem_icon_link"].ToString();//icon图片 ib
|
|
if (JObject.Parse(html)["code"].ToString() == "200")
|
|
{
|
|
if (!GetHtml.DownloadFile(oem_icon_link, IaPakFile))//logo图片
|
|
{
|
|
OenArchieveFailedToExit();
|
|
}
|
|
}
|
|
}
|
|
if (!FileBase.Exists(IcPakFile))
|
|
{
|
|
html = GetHtml.PostUtf8(url, data);
|
|
if (JObject.Parse(html)["code"].ToString() == "200")
|
|
{
|
|
string agent_name = JObject.Parse(html)["data"]["agent_name"].ToString();
|
|
string softname = JObject.Parse(html)["data"]["oem_title"].ToString();
|
|
FileBase.WriteAllText(IcPakFile, agent_name + "\r\n" + softname);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("缺少配置数据,请重试或联系客服\r\nError26730", "提示");
|
|
Process.GetCurrentProcess().Kill();
|
|
return;
|
|
}
|
|
|
|
#region 读贴牌
|
|
//BaseClass.ProgromLogo = Environment.CurrentDirectory + "\\locales\\ia.pak";//logo
|
|
//BaseClass.ProgromLogoIco = Environment.CurrentDirectory + "\\locales\\ib.pak";//ico
|
|
//var config = FileBase.ReadAllText("locales\\ic.pak");
|
|
//var configArr = config.Split(new string[] { "\r\n" }, StringSplitOptions.None);
|
|
//if (configArr.Length >= 2)
|
|
//{
|
|
// BaseClass.ProgramName = configArr[1];
|
|
// BaseClass.AgentName = configArr[0];
|
|
//}
|
|
#endregion
|
|
}
|
|
|
|
/// <summary>
|
|
/// Oen资源有更新
|
|
/// </summary>
|
|
/// <param name="iSvrOenVer">服务端版本号</param>
|
|
/// <param name="iLocOenVer">本地版本号</param>
|
|
/// <returns></returns>
|
|
private static bool NeedUpdate(int iSvrOenVer, int iLocOenVer)
|
|
{
|
|
return iSvrOenVer > iLocOenVer;
|
|
}
|
|
|
|
/// <summary>
|
|
/// OEN资源无更新,但是本地缓存的资源配置不完整
|
|
/// </summary>
|
|
/// <param name="iSvrOenVer">服务端版本号</param>
|
|
/// <param name="iLocOenVer">客户端版本号</param>
|
|
/// <param name="sIaPakFile">本地缓存资源文件ia</param>
|
|
/// <param name="sIbPakFile">本地缓存资源文件ib</param>
|
|
/// <param name="sIcPakFile">本地缓存资源文件ic</param>
|
|
/// <returns></returns>
|
|
private static bool LocalOenResourceLost(int iSvrOenVer, int iLocOenVer, string sIaPakFile, string sIbPakFile, string sIcPakFile)
|
|
{
|
|
return iSvrOenVer == iLocOenVer && (!FileBase.Exists(sIaPakFile) || !FileBase.Exists(sIbPakFile) || !FileBase.Exists(sIcPakFile));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 当OEN贴牌配置数据获取失败时应用程序退出
|
|
/// </summary>
|
|
private static void OenArchieveFailedToExit()
|
|
{
|
|
LogSave.Add("下载或生成Oen配置出现异常!");
|
|
Process.GetCurrentProcess().Kill();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|