using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Security; using System.Windows.Markup; using DatabaseHelper; using HMI.Core.Util; using HMI.MenuManage.Entity; namespace HMI.MenuManage.Util { public class UserRoleRelHelper { /// /// 根据roleCode获取rel数据 /// /// /// /// public static ObservableCollection SelectUserRoleData(SqliteHelper sqliteHelper, string username) { ObservableCollection datas = new ObservableCollection(); DataTable dt = sqliteHelper.GetDataTable($@"SELECT r.*,t.username FROM role AS r LEFT JOIN (SELECT u.username,rel.roleCode FROM user AS u INNER JOIN user_role_rel AS rel ON u.username = rel.username AND u.username='{username}') AS t ON r.code = t.roleCode ORDER BY r.id;"); if (dt != null) { foreach (DataRow dr in dt.Rows) { var role = new UserRoleRel { Id = dr["id"].ToString(), RoleCode = dr["code"].ToString(), RoleName = dr["name"].ToString(), Selected = !(dr["username"] is DBNull) }; datas.Add(role); } } return datas; } public static void SaveUserRoleRel(SqliteHelper sqliteHelper, IEnumerable roles, UserData data, string firstSql, string lastSql) { var rels = roles.Where(d => d.Selected).ToList(); var sqls = new List { firstSql, $"DELETE FROM user_role_rel WHERE username = '{data.Username}';", }; foreach (var rel in rels) { sqls.Add($"INSERT INTO user_role_rel (username,roleCode) " + $"VALUES ('{data.Username}','{rel.RoleCode}');"); } sqls.Add(lastSql); sqliteHelper.ExecuteBatchSql(sqls); } } }