| | |
| | | using PdmSwPlugin.Common.Interface; |
| | | using SolidWorks.Interop.sldworks; |
| | | using System.Windows.Threading; |
| | | using SuperSocket.SocketBase; |
| | | using SuperSocket.SocketBase.Protocol; |
| | | using PdmSwPlugin.Main.Tcp; |
| | | |
| | | namespace PdmSwPlugin.Main |
| | | { |
| | |
| | | /// </summary> |
| | | public partial class MainControl : UserControl, ISwAppSetter |
| | | { |
| | | private TcpServer tcpServer; |
| | | public void InitTcpServer() |
| | | { |
| | | tcpServer = new TcpServer(); |
| | | tcpServer.NewRequestReceived += new RequestHandler<TcpSession, StringRequestInfo>(HandleRequest); |
| | | if (!tcpServer.Setup(5678)) |
| | | { |
| | | Logger.Error("Tcp Server Setup Error."); |
| | | } |
| | | if (!tcpServer.Start()) |
| | | { |
| | | Logger.Error("Tcp Server Start Error."); |
| | | } |
| | | } |
| | | |
| | | #region 控件 |
| | | #endregion |
| | | public void StopTcpServer() |
| | | { |
| | | tcpServer?.Stop(); |
| | | tcpServer = null; |
| | | } |
| | | |
| | | public void HandleRequest(TcpSession session, StringRequestInfo info) |
| | | { |
| | | byte[] msg = new byte[1]; |
| | | if (PdmUser.LoginUser != null) |
| | | { |
| | | // 登录返回1 |
| | | msg[0] = 1; |
| | | } |
| | | else |
| | | { |
| | | // 没登录返回0 |
| | | msg[0] = 0; |
| | | } |
| | | session.Send(msg, 0, 1); |
| | | } |
| | | |
| | | #region 检查更新相关 |
| | | /// <summary> |
| | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | /// <summary> |
| | | /// 自动登录 |
| | | /// </summary> |
| | | /// <param name="callback"></param> |
| | | /// <param name="reject"></param> |
| | | private void AutoLogin(Action<PdmUser> callback, Action<Exception> reject) |
| | | { |
| | | MaskAdorner.ShowMask(mainBorder, "登陆中..."); |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | if (GlobalConfig.ClassicLogin) |
| | | { |
| | | callback(null); |
| | | return; |
| | | } |
| | | Result<PdmUser> res = HttpClientCreator.GetSyncAction<PdmUser>("openApi/wpf/simpleLogin", new PdmUser |
| | | { |
| | | username = System.Environment.UserName, |
| | | appId = PluginConst.AppId, |
| | | pluginVersion = PluginConst.Version |
| | | }); |
| | | PdmUser user = res.HandleResult(); |
| | | user.appId = PluginConst.AppId; |
| | | user.pluginVersion = PluginConst.Version; |
| | | callback(user); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | reject(e); |
| | | } |
| | | finally |
| | | { |
| | | MaskAdorner.HideMask(mainBorder); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载插件主Tab |
| | | /// </summary> |
| | |
| | | { |
| | | // 自动登录成功 |
| | | clientCreator = new HttpClientCreator(); |
| | | tabControl = new TabControl(); |
| | | AddPlugin(); |
| | | mainBorder.Child = tabControl; |
| | | if (tabControl.Items.Count > 0) |
| | | if (mainTab == null) |
| | | { |
| | | TabItem tabItem = tabControl.Items[0] as TabItem; |
| | | mainTab = new MainTab(Logout); |
| | | mainTab.SetSwApp(SwApp); |
| | | } |
| | | AddPlugin(); |
| | | mainBorder.Child = mainTab; |
| | | if (mainTab.tabControl.Items.Count > 0) |
| | | { |
| | | TabItem tabItem = mainTab.tabControl.Items[0] as TabItem; |
| | | tabItem.Focus(); |
| | | (tabItem.Content as UIElement).Focus(); |
| | | } |
| | | } |
| | | |
| | | public void Logout() |
| | | { |
| | | string binPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "HengXin", "PdmSwPlugin", "bin"); |
| | | File.Delete(binPath); |
| | | DeActiveHandler(); |
| | | mainTab.tabControl.Items.Clear(); |
| | | PdmUser.SetLoginUser(null); |
| | | mainBorder.Child = new LoginControl(LoginSuccess); |
| | | } |
| | | |
| | | public void MainControl_Loaded(object sender, RoutedEventArgs e) |
| | |
| | | // 最后检查更新 |
| | | CheckUpdate(); |
| | | |
| | | AutoLogin( |
| | | (user) => |
| | | { |
| | | if (user != null) |
| | | { |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | PdmUser.SetLoginUser(user); |
| | | if (PdmUser.HasLogin()) |
| | | { |
| | | LoginSuccess(); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | (ex) => |
| | | { |
| | | Logger.Error("登陆失败!", ex); |
| | | this.Error($"登陆失败! {ex.Message}"); |
| | | }); |
| | | mainBorder.Child = new LoginControl(LoginSuccess); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 登陆点击事件 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void Button_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | MaskAdorner.ShowMask(mainBorder, "登陆中..."); |
| | | PdmUser param = new PdmUser |
| | | { |
| | | username = usernameTextBlock.Text, |
| | | password = passwordTextBlock.Password, |
| | | appId = PluginConst.AppId, |
| | | pluginVersion = PluginConst.Version |
| | | }; |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | Result<PdmUser> res = HttpClientCreator.PostSyncAction<PdmUser>("openApi/wpf/login", param); |
| | | PdmUser user = res.HandleResult(); |
| | | user.appId = PluginConst.AppId; |
| | | user.pluginVersion = PluginConst.Version; |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | PdmUser.SetLoginUser(user); |
| | | if (PdmUser.HasLogin()) |
| | | { |
| | | LoginSuccess(); |
| | | } |
| | | }); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Logger.Error("登陆失败!", ex); |
| | | this.Error($"登陆失败! {ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | MaskAdorner.HideMask(mainBorder); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | public void SetSwApp(SldWorks SwApp) |
| | | { |
| | | this.SwApp = SwApp; |
| | | } |
| | | |
| | | private void self_Unloaded(object sender, RoutedEventArgs e) |
| | | { |
| | | StopTcpServer(); |
| | | } |
| | | } |
| | | } |