From 0fcc54cfed515acf69a2effa727596aa382fcb87 Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Sun, 29 Dec 2024 23:05:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=99=BB=E5=BD=95=E7=94=BB=E9=9D=A2db?= =?UTF-8?q?=E5=85=B3=E8=81=94=EF=BC=8C=E7=AE=97=E6=B3=95=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=8E=E5=88=87=E5=B7=A5=E4=BB=AA=E9=85=8D=E7=BD=AE=E7=9A=84?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LoginWindow.xaml.cs | 41 +++++----- SparkClient.csproj | 2 +- SparkDB.db | Bin 196608 -> 196608 bytes ViewModel/Configuration/AlgorithmConfigVM.cs | 81 +++++++++++-------- ViewModel/Configuration/CutConfigVM.cs | 16 +++- ViewModel/Grading/DiamondSelectVM.cs | 19 ++++- Views/Configuration/AlgorithmConfigPage.xaml | 2 +- Views/Configuration/CutConfigPage.xaml | 2 +- 8 files changed, 102 insertions(+), 61 deletions(-) diff --git a/LoginWindow.xaml.cs b/LoginWindow.xaml.cs index b7091c8..95c3fd4 100644 --- a/LoginWindow.xaml.cs +++ b/LoginWindow.xaml.cs @@ -37,15 +37,16 @@ public partial class LoginWindow : Window private void ConfirmButton_Click(object sender, RoutedEventArgs e) { #if DEBUG + new MainWindow().Show(); this.Close(); + #else string account = AccountTextBox.Text; string password = PasswordBox.Password; string passwordEnc = Common.GenerateMd5Hash(password); string passworddb = getPassword(account); - string passworddbEnc = Common.GenerateMd5Hash(passworddb); - if (string.IsNullOrEmpty(passworddb) || !passwordEnc.Equals(passworddbEnc)) + if (string.IsNullOrEmpty(password) || !passworddb.Equals(passwordEnc)) { MessageBox.Show(MultilingualHelper.getString("NoPassword")); return; @@ -58,22 +59,24 @@ public partial class LoginWindow : Window private void savePassword() { - if (IsRemberPassword.IsChecked ?? false || "Admin".Equals(AccountTextBox.Text)) + if (IsRemberPassword.IsChecked ?? false) { - Settings saveAccount = new Settings() - { - Key = "SAVE_ACCOUNT", - ItemName = "保存用户名", - Value = AccountTextBox.Text, - }; - saveAccount.insert(); - Settings savePassword = new Settings() - { - Key = "SAVE_PASSWORD", - ItemName = "保存密码", - Value = PasswordBox.Password, - }; - savePassword.insert(); + if (!"admin".Equals(AccountTextBox.Text)){ + Settings saveAccount = new Settings() + { + Key = "SAVE_ACCOUNT", + ItemName = "保存用户名", + Value = AccountTextBox.Text, + }; + saveAccount.insert(); + Settings savePassword = new Settings() + { + Key = "SAVE_PASSWORD", + ItemName = "保存密码", + Value = PasswordBox.Password, + }; + savePassword.insert(); + } } else { @@ -96,7 +99,7 @@ public partial class LoginWindow : Window { Key = "PERMISSIONS", ItemName = "权限", - Value = PasswordBox.Password, + Value = AccountTextBox.Text, }; PERMISSIONS.insert(); } @@ -104,7 +107,7 @@ public partial class LoginWindow : Window private string getPassword(string userName) { string password = string.Empty; - string sql = $"SELECT USER_PASSWORD FROM USER WHERE USER_NAME='{userName}'"; + string sql = $"SELECT USER_PASSWORD FROM USER WHERE USER_NAME='{userName}';"; DataTable dt = DataBaseHelper.ExecuteQuery(sql); if (dt != null && dt.Rows.Count > 0) { diff --git a/SparkClient.csproj b/SparkClient.csproj index a9cc9e6..1d8246f 100644 --- a/SparkClient.csproj +++ b/SparkClient.csproj @@ -74,7 +74,7 @@ Always - Always + PreserveNewest diff --git a/SparkDB.db b/SparkDB.db index 1136fa724b38fc10ec5c6dafa512ca93c823d495..70ebe870b6d15176e25bc39634a444739538a011 100644 GIT binary patch delta 20665 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 diff --git a/ViewModel/Configuration/AlgorithmConfigVM.cs b/ViewModel/Configuration/AlgorithmConfigVM.cs index 3568c4e..3bb8c71 100644 --- a/ViewModel/Configuration/AlgorithmConfigVM.cs +++ b/ViewModel/Configuration/AlgorithmConfigVM.cs @@ -7,32 +7,35 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SparkClient.Model.Entity; using SparkClient.Model.Helper; +using SparkClient.ViewModel.Configuration.SettingsPages; namespace SparkClient.ViewModel.Configuration; public class AlgorithmConfigVM : BaseViewModel { - public ICommand SaveAlgorithmDataCommand { get; } - public ICommand BeautifyJsonCommand { get; } - public ICommand UglifyJsonCommand { get; } - - - private string _AlgorithmConfigJson; - public string AlgorithmConfigJson { get { return _AlgorithmConfigJson; } set { _AlgorithmConfigJson = value; OnPropertyChanged("AlgorithmConfigJson"); } } - public AlgorithmConfigVM() - { - SaveAlgorithmDataCommand = new RelayCommand(SaveAlgorithmData); - BeautifyJsonCommand = new RelayCommand(BeautifyJson); - UglifyJsonCommand = new RelayCommand(UglifyJson); - InitAlgorithmData(null); - } - - /// - /// 初始化算法数据 - /// - /// - public void InitAlgorithmData(object param) - { + public ICommand SaveAlgorithmDataCommand { get; } + public ICommand BeautifyJsonCommand { get; } + public ICommand UglifyJsonCommand { get; } + + private bool _isEnabled; + public bool IsEnabled { get { return _isEnabled; } set { _isEnabled = value; OnPropertyChanged(nameof(IsEnabled)); } } + + private string _AlgorithmConfigJson; + public string AlgorithmConfigJson { get { return _AlgorithmConfigJson; } set { _AlgorithmConfigJson = value; OnPropertyChanged("AlgorithmConfigJson"); } } + public AlgorithmConfigVM() + { + SaveAlgorithmDataCommand = new RelayCommand(SaveAlgorithmData); + BeautifyJsonCommand = new RelayCommand(BeautifyJson); + UglifyJsonCommand = new RelayCommand(UglifyJson); + InitAlgorithmData(null); + } + + /// + /// 初始化算法数据 + /// + /// + public void InitAlgorithmData(object param) + { AlgorithmConfigJson = "{}"; string sql = @"SELECT JSON as json FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER"; DataTable dataTable = DataBaseHelper.ExecuteQuery(sql); @@ -44,26 +47,26 @@ public class AlgorithmConfigVM : BaseViewModel sb.Append(row["json"].ToString()); } } - if(sb.Length>0) + if (sb.Length > 0) { AlgorithmConfigJson = JToken.Parse(sb.ToString()).ToString(); } } - - /// - /// 保存数据 - /// - /// - public void SaveAlgorithmData(object param) - { + + /// + /// 保存数据 + /// + /// + public void SaveAlgorithmData(object param) + { DataBaseHelper.BeginTransaction(); string temp = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(AlgorithmConfigJson)); string deleteSql = @"DELETE FROM ALGORITHM_CONFIG"; DataBaseHelper.ExecuteNonQuery(deleteSql); int order = 0; int insertCount = 0; - while (temp.Length>2000) + while (temp.Length > 2000) { AlgorithmConfigEntity entity = new AlgorithmConfigEntity() { @@ -80,7 +83,7 @@ public class AlgorithmConfigVM : BaseViewModel }; insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters); } - if (temp.Length>0) + if (temp.Length > 0) { AlgorithmConfigEntity entity = new AlgorithmConfigEntity() { @@ -106,8 +109,18 @@ public class AlgorithmConfigVM : BaseViewModel Growl.Error(MultilingualHelper.getString("SaveFail")); DataBaseHelper.rollback(); } - } - + } + private void IsEnabledByRole (){ + string PERMISSIONS = Settings.SelectValueByName("PERMISSIONS"); + if ("admin".Equals(PERMISSIONS)) + { + IsEnabled = true; + } + else + { + IsEnabled = false; + } + } /// /// 美化JSON /// @@ -122,8 +135,6 @@ public class AlgorithmConfigVM : BaseViewModel { Growl.ErrorGlobal(ex.Message); } - - } /// diff --git a/ViewModel/Configuration/CutConfigVM.cs b/ViewModel/Configuration/CutConfigVM.cs index 4f3dd7b..f774c8c 100644 --- a/ViewModel/Configuration/CutConfigVM.cs +++ b/ViewModel/Configuration/CutConfigVM.cs @@ -7,6 +7,7 @@ using SparkClient.Model.Helper; using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip; using System.Text.RegularExpressions; using Microsoft.Data.Sqlite; +using SparkClient.ViewModel.Configuration.SettingsPages; namespace SparkClient.ViewModel.Configuration; @@ -16,6 +17,8 @@ public class CutConfigVM: BaseViewModel public ICommand SaveCutConfigDataCommand { get; } public ICommand DelCutRowCommand { get; } + private bool _isEnabled; + public bool IsEnabled { get { return _isEnabled; } set { _isEnabled = value; OnPropertyChanged(nameof(IsEnabled)); } } public DataTable _cutterInfos; public DataTable CutterInfos { get { return _cutterInfos; } set { _cutterInfos = value; OnPropertyChanged("CutterInfos"); } } @@ -144,7 +147,18 @@ public class CutConfigVM: BaseViewModel Growl.Error("保存失败"); } } - + private void IsEnabledByRole() + { + string PERMISSIONS = Settings.SelectValueByName("PERMISSIONS"); + if ("admin".Equals(PERMISSIONS)) + { + IsEnabled = true; + } + else + { + IsEnabled = false; + } + } /// /// 删除一行数据 /// diff --git a/ViewModel/Grading/DiamondSelectVM.cs b/ViewModel/Grading/DiamondSelectVM.cs index 2d7d3a7..9af3dcc 100644 --- a/ViewModel/Grading/DiamondSelectVM.cs +++ b/ViewModel/Grading/DiamondSelectVM.cs @@ -116,7 +116,7 @@ public class DiamondSelectVM : BaseViewModel { #if DEBUG DoStartGrading(param); - #else +#else LoadingDialog loading = new LoadingDialog(); try { @@ -204,7 +204,7 @@ public class DiamondSelectVM : BaseViewModel ShowErrorMessage(MultilingualHelper.getString("JsonParseFailure"), loading); return; } - parameter.Standard = "IGI 2024"; + parameter.Standard = getStandardName(); parameter.Shape = value.Split(" ")[0]; parameter.CrownType = value.Split(" ")[1]; parameter.PavType = value.Split(" ")[2]; @@ -238,9 +238,22 @@ public class DiamondSelectVM : BaseViewModel finally { } - #endif +#endif } + private string getStandardName() + { + string sql = $"select\r\nRULE_NAME AS NAME,\r\nRULE_EN_NAME AS EN_NAME\r\nfrom\r\nsetting\r\nleft join rule\r\non setting.SETTING_P = rule.RULE_ID\r\nwhere\r\nsetting.SETTING_ID = 'RuleId'\r\n"; + DataTable dataTable = DataBaseHelper.ExecuteQuery(sql); + if (dataTable == null || dataTable.Rows.Count == 0) + { + return ""; + } + else + { + return dataTable.Rows[0][MultilingualHelper.getString("NameType")].ToString()??""; + } + } // 将 UI 操作调度到主线程并显示错误信息 void ShowErrorMessage(string errorMessage, LoadingDialog loading) { diff --git a/Views/Configuration/AlgorithmConfigPage.xaml b/Views/Configuration/AlgorithmConfigPage.xaml index 3b6268b..7c6ce8b 100644 --- a/Views/Configuration/AlgorithmConfigPage.xaml +++ b/Views/Configuration/AlgorithmConfigPage.xaml @@ -23,7 +23,7 @@