using com.fly.secute; using CommunityToolkit.Mvvm.Input; using Flyad7_WPF.Converters; using Flyad7_WPF.Secute; using FlyADBase; using FObjBase; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; 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.Shapes; using Unity; namespace Flyad7_WPF { /// /// WdCreateAccess.xaml 的交互逻辑 /// public partial class WdCreateAccess : Window { WdCreateAccessVm viewModel; public WdCreateAccess() { InitializeComponent(); } [InjectionMethod] public void Init(FlyAD7 flyad, FlyADClientUI flyADClientUI) { viewModel = new WdCreateAccessVm(); viewModel.Init(flyad, flyADClientUI); this.DataContext = viewModel; } } public class WdCreateAccessVm : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; /// /// 使用码 /// [PropertyChanged.DoNotCheckEquality] public byte[] Access { get; set; } = new byte[8]; /// /// 序列码 /// [PropertyChanged.DoNotCheckEquality] public byte[] Code { get; set; } = new byte[7]; public int Hours { get; set; } = 8000; public string Message { get; set; } public bool IsConnected { get; private set; } public int SuccessCnt { get; private set; } public bool IsEnableReConnect => !IsConnected; public RelayCommand CreateAccessCmd { get; private set; } public RelayCommand CheckAccessCmd { get; private set; } public RelayCommand SetAccessCmd { get; private set; } public RelayCommand InitCodeCmd { get; private set; } public RelayCommand InitCodeAutoCmd { get; private set; } public RelayCommand ReConnectCmd { get; private set; } FlyAD7 flyad; FlyADClientUI flyADClientUI; CreateAccessHelper createA; public WdCreateAccessVm() { CreateAccessCmd = new RelayCommand(CreateAccess); CheckAccessCmd = new RelayCommand(CheckAccess); SetAccessCmd = new RelayCommand(SetAccess); InitCodeCmd = new RelayCommand(InitCode); ReConnectCmd = new RelayCommand(ReConnect); InitCodeAutoCmd = new RelayCommand(InitCodeAuto); createA = new CreateAccessHelper(); } public void Init(FlyAD7 flyad, FlyADClientUI flyADClientUI) { this.flyad = flyad; this.flyADClientUI = flyADClientUI; Code = flyad.Code.ToArray(); Access = flyad.Access.ToArray(); Misc.BindingOperations.SetBinding(flyad, nameof(flyad.IsConnected), this, nameof(IsConnected)); Misc.BindingOperations.SetBinding(flyad, nameof(flyad.Code), this, () => { Code = flyad.Code.ToArray(); }); Misc.BindingOperations.SetBinding(flyad, nameof(flyad.Access), this, () => { Access = flyad.Access.ToArray(); }); flyad.PropertyChanged += Flyad_PropertyChanged; } private void Flyad_PropertyChanged(object sender, PropertyChangedEventArgs e) { } private void CheckAccess() { bool ret = createA.CheckAccess(Code, Access, out int hours, out string message); if (ret) { Hours = hours; MessageBox.Show(message); } else { MessageBox.Show(message, "异常", MessageBoxButton.OK, MessageBoxImage.Error); } } private void CreateAccess() { bool ret = createA.CreateAccess(Code, Hours, out byte[] access, out string message); if (ret) { Access = access; Message = "生成授权码 成功"; MessageBox.Show(Message); } else { Message = $"生成授权码失败 {message}"; MessageBox.Show(Message, "异常", MessageBoxButton.OK, MessageBoxImage.Error); } } private void SetAccess() { bool ret = false; if (Code != null && Code.Count() == flyad.Code.Count()) { for (int i = 0; i < Code.Length; i++) { if (flyad.Code[i] != Code[i]) { break; } } ret = true; } if (!ret) { Message = "异常!!!序列码与AD盒不相同"; MessageBox.Show(Message, "异常", MessageBoxButton.OK, MessageBoxImage.Error); return; } ret = createA.CheckAccess(Code, Access, out int hours, out string message); Hours = hours; if (!ret) { Message = $"授权码异常!!!{message}"; MessageBox.Show(message, "授权码异常", MessageBoxButton.OK, MessageBoxImage.Error); return; } Message = $"正在写入授权码中。。。。。。。。。。。。。。。。。。。。。。。"; flyADClientUI.SetAccess( Access, new AsyncCBHandler( delegate (object AsyncState, object retData) { AccessInfo a = (AccessInfo)retData; //Access = a.access; Code = a.code; switch (a.ret) { case AREA_ERR.NO_ERR: { Message = "写入授权码成功"; MessageBox.Show(Message); SuccessCnt++; } break; case AREA_ERR.DUP_ACCESS: { Message = "设置失败!!!!!重复使用码"; MessageBox.Show(Message, "设置失败", MessageBoxButton.OK, MessageBoxImage.Error); } break; case AREA_ERR.ERR_ACCESS: { Message = "设置失败!!!!!无效使用码"; MessageBox.Show(Message, "设置失败", MessageBoxButton.OK, MessageBoxImage.Error); } break; } }), null); } void initCode_step01() { flyADClientUI.InitArea(new AsyncCBHandler( delegate (object AsyncState, object retData) { AccessInfo a = (AccessInfo)retData; Access = a.access; Code = a.code; Hours = a.surplus; switch (a.ret) { case AREA_ERR.NO_ERR: { Message = "初始化成功"; //MessageBox.Show(Message); initCode_step02(); } break; case AREA_ERR.DUP_ACCESS: { Message = "设置失败!!!!!重复使用码"; MessageBox.Show(Message, "设置失败", MessageBoxButton.OK, MessageBoxImage.Error); } break; case AREA_ERR.ERR_ACCESS: { Message = "设置失败!!!!!无效使用码"; MessageBox.Show(Message, "设置失败", MessageBoxButton.OK, MessageBoxImage.Error); } break; } }), null); } void initCode_step02() { bool ret = createA.CreateAccess(Code, Hours, out byte[] access, out string message); if (ret) { Access = access; Message = "生成授权码 成功"; //MessageBox.Show(Message); initCode_step03(); } else { Message = $"生成授权码失败 {message}"; MessageBox.Show(Message, "异常", MessageBoxButton.OK, MessageBoxImage.Error); } } void initCode_step03() { SetAccess(); } private void InitCode() { Message = $"正在初始化。。。。。。。。。。。。。。。。。。。。。。。"; flyADClientUI.InitArea(new AsyncCBHandler( delegate (object AsyncState, object retData) { AccessInfo a = (AccessInfo)retData; Access = a.access; Code = a.code; switch (a.ret) { case AREA_ERR.NO_ERR: { Message = "初始化成功"; MessageBox.Show(Message); } break; case AREA_ERR.DUP_ACCESS: { Message = "设置失败!!!!!重复使用码"; MessageBox.Show(Message, "设置失败", MessageBoxButton.OK, MessageBoxImage.Error); } break; case AREA_ERR.ERR_ACCESS: { Message = "设置失败!!!!!无效使用码"; MessageBox.Show(Message, "设置失败", MessageBoxButton.OK, MessageBoxImage.Error); } break; } }), null); } private void InitCodeAuto() { Message = $"正在初始化。。。。。。。。。。。。。。。。。。。。。。。"; initCode_step01(); } private void ReConnect() { flyad.ReConnect(); } } }