using IWareDataAccess.EF; using IWareDataAccess.Entity.Sys; using IWareDataAccess.Helper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IWareDataAccess.Sys.USER { public static class ViewUserSqlFunc { /// /// 搜索用户(视图) /// public static List SearchView(UserWebEntity webEntity, int page, int onePageNum) { using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.updateTime > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.updateTime < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } List list = edm.View_SYS_USER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 搜索用户总数 /// public static int SearchViewNum(UserWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.updateTime > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.updateTime < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } int num = edm.View_SYS_USER.Where(f.Compile()).Count(); return num; } } /// /// 搜索用户(表) /// public static List Search(UserWebEntity webEntity, int page, int onePageNum, out string msg) { msg = ""; using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.UPDATETIME > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.UPDATETIME < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } List list = edm.SYS_USER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 添加用户 /// /// public static bool AddOrUpdate(UserWebEntity webUser, out string msg) { msg = ""; using (Model edm = new Model()) { //查询是否已存在此用户 SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webUser.userName); if (user == null) { //无此用户,属于新建 user = new SYS_USER(); } string pas = ""; if (webUser.password.Contains(",")) { pas = webUser.password.Split(',')[0]; } else { pas = webUser.password; } user.IsWeldingAuditGroup = webUser.IsWeldingAuditGroup;//是否是焊装审核组 user.USERNAME = webUser.userName ?? user.USERNAME; user.USERTRUENAME = webUser.userTrueName ?? user.USERTRUENAME; user.PASSWORD = pas ?? user.PASSWORD; user.ENABLE = webUser.enable ?? user.ENABLE; SYS_USER creator = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webUser.createName); if (creator != null) { user.CREATORID = creator.ID; } user.UPDATETIME = DateTime.Now; //绑定角色 SYS_ROLE role = edm.SYS_ROLE.FirstOrDefault(x => x.ROLENAME == webUser.roleName); if (role != null) { SYS_USER_VS_ROLE uvr = edm.SYS_USER_VS_ROLE.FirstOrDefault(x => x.USERID == user.ID); if (uvr == null)//新建或修改角色 { uvr = new SYS_USER_VS_ROLE(); } //判断用户是否新建 if (user.ID == 0) { uvr.SYS_USER = user; } else { uvr.USERID = user.ID; } uvr.ROLEID = role.ID; edm.SYS_USER_VS_ROLE.AddOrUpdateExtension(uvr); } //绑定部门 SYS_DEPT dept = edm.SYS_DEPT.FirstOrDefault(x => x.DEPTNAME == webUser.deptName); if (dept != null) { user.SYS_DEPT = dept; } edm.SYS_USER.AddOrUpdateExtension(user); if (edm.SaveChanges() > 0) { return true; } else { msg = "修改失败"; return false; } } } /// /// 删除用户 /// /// /// public static bool Delete(UserWebEntity webUser, out string msg) { msg = ""; using (Model edm = new Model()) { //查询是否已存在此用户 SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webUser.userName); if (user == null) { //无此用户,错误 msg = "无此用户"; return false; } else { return DeleteUserRelevance(user, out msg); } } } /// /// 关联删除(逻辑删除) /// /// /// public static bool DeleteUserRelevance(SYS_USER user, out string msg) { msg = ""; using (Model edm = new Model()) { //因已释放连接,故重新指向数据库对象进行索引 SYS_USER userDelte = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == user.USERNAME); ////删除角色关系 //edm.SYS_USER_VS_ROLE.RemoveRange(userDelte.SYS_USER_VS_ROLE); ////删除一些创建人 //List srList = userDelte.SYS_ROLE.ToList(); //foreach (var i in srList) //{ // i.CREATORID = 0; //} //删除用户 //edm.SYS_USER.Remove(userDelte); userDelte.ENABLE = 0; if (edm.SaveChanges() > 0) { return true; } else { msg = "删除失败"; return false; } } } } }