using System; using System.Collections.Generic; using System.Text; using System.Data; using WeiSha.Common; using Song.Entities; using WeiSha.Data; using Song.ServiceInterfaces; using System.Data.Common; namespace Song.ServiceImpls { public class UserCom : IUser { #region 用户组部分 public void AddGroup(UserGroup entity) { object obj = Gateway.Default.Max(UserGroup._.UGrp_Tax, UserGroup._.UGrp_Id > -1); if (obj != DBNull.Value) { entity.UGrp_Tax = Convert.ToInt32(obj)+1; } else { entity.UGrp_Tax = 1; } Song.Entities.Organization org = Business.Do().OrganCurrent(); if (org != null) { entity.Org_ID = org.Org_ID; entity.Org_Name = org.Org_Name; } Gateway.Default.Save(entity); } public void SaveGroup(UserGroup entity) { using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(entity); //修改用户信息中的组名称 tran.Update(new Field[] { User._.UGrp_Name }, new object[] { entity.UGrp_Name }, User._.UGrp_Id == entity.UGrp_Id); tran.Commit(); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } } public int DeleteGroup(UserGroup entity) { object num = Gateway.Default.Count(User._.UGrp_Id == entity.UGrp_Id); if (num != null && Convert.ToInt32(num) > 0) { return -1; } if (entity.UGrp_IsDefault) { return -2; } Gateway.Default.Delete(UserGroup._.UGrp_Id == entity.UGrp_Id); return 0; } public int DeleteGroup(int identify) { UserGroup ug = this.GetGroupSingle(identify); return DeleteGroup(ug); } public UserGroup GetGroupSingle(int identify) { return Gateway.Default.From().Where(UserGroup._.UGrp_Id == identify).ToFirst(); } public UserGroup GetGroupDefault() { return Gateway.Default.From().Where(UserGroup._.UGrp_IsDefault == true).ToFirst(); } public UserGroup GetGroupSingle(string name) { return Gateway.Default.From().Where(UserGroup._.UGrp_Name == name).ToFirst(); } public UserGroup[] GetGroupAll() { return Gateway.Default.From().OrderBy(UserGroup._.UGrp_Tax.Desc).ToArray(); } public UserGroup[] GetGroupAll(bool? isUse) { if (isUse == null) { return this.GetGroupAll(); } return Gateway.Default.From().Where(UserGroup._.UGrp_IsUse == (bool)isUse).OrderBy(UserGroup._.UGrp_Tax.Desc).ToArray(); } public UserGroup GetGroup4User(int UserId) { return Gateway.Default.From().InnerJoin(UserGroup._.UGrp_Id == User._.UGrp_Id).Where(User._.User_Id == UserId).ToFirst(); } public User[] GetUser4Group(int grpId) { return Gateway.Default.From().Where(User._.UGrp_Id==grpId).ToArray(); } public User[] GetUser4Group(int grpId, bool use) { return Gateway.Default.From().Where(User._.UGrp_Id == grpId && User._.User_IsUse == use).ToArray(); } public bool IsGroupExist(string name) { object num = Gateway.Default.Count(UserGroup._.UGrp_Name == name); if (num != null && Convert.ToInt32(num) > 0) { return true; } return false; } public bool GroupRemoveUp(int id) { Song.Entities.UserGroup current = this.GetGroupSingle(id); //当前对象排序号 int orderValue = (int)current.UGrp_Tax; //上一个对象,即兄长对象;存在当前优先级 Song.Entities.UserGroup up = Gateway.Default.From().Where(UserGroup._.UGrp_Tax > orderValue).OrderBy(UserGroup._.UGrp_Tax.Asc).ToFirst(); if (up == null) { //如果兄长对象不存在,则表示当前节点在兄弟中是老大;即是最顶点; return false; } //交换排序号 current.UGrp_Tax = up.UGrp_Tax; up.UGrp_Tax = orderValue; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(current); tran.Save(up); tran.Commit(); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } return true; } public bool GroupRemoveDown(int id) { //当前对象 Song.Entities.UserGroup current = this.GetGroupSingle(id); //当前对象排序号 int orderValue = (int)current.UGrp_Tax; //下一个对象,即弟弟对象; Song.Entities.UserGroup down = Gateway.Default.From().Where(UserGroup._.UGrp_Tax < orderValue).OrderBy(UserGroup._.UGrp_Tax.Desc).ToFirst(); if (down == null) { //如果弟对象不存在,则表示当前节点在兄弟中是老幺;即是最底端; return false; } //交换排序号 current.UGrp_Tax = down.UGrp_Tax; down.UGrp_Tax = orderValue; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save(current); tran.Save(down); tran.Commit(); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } return true; } #endregion #region 网站用户信息 public int AddUser(User entity) { //判断是否帐号重复 object num = Gateway.Default.Count(User._.User_AccName == entity.User_AccName); if (num != null && Convert.ToInt32(num) > 0) { return -1; } //设置默认组 UserGroup group = this.GetGroupDefault(); entity.UGrp_Id = group.UGrp_Id; entity.UGrp_Name = group.UGrp_Name; // return Gateway.Default.Save(entity); } public void SaveUser(User entity) { Gateway.Default.Save(entity); } public void DeleteUser(User entity) { Gateway.Default.Delete(entity); } public void DeleteUser(int identify) { Gateway.Default.Delete(User._.User_Id == identify); } public void DeleteUser(string accname) { Gateway.Default.Delete(User._.User_AccName == accname); } public User GetUserSingle(int identify) { return Gateway.Default.From().Where(User._.User_Id == identify).ToFirst(); } public User GetUserSingle(string accname) { return Gateway.Default.From().Where(User._.User_AccName == accname).ToFirst(); } public User GetUserSingle(string accname, string pw) { return Gateway.Default.From().Where(User._.User_AccName == accname && User._.User_Pw == pw).ToFirst(); } public bool LoginCheck(string accname, string pw) { //验证员工帐号与密码 WhereClip wc = User._.User_AccName == accname && User._.User_Pw == pw; //员工必须在职 wc.And(User._.User_IsUse == true); User ac = Gateway.Default.From().Where(wc).ToFirst(); if (ac == null) return false; //判断用户组是否被禁用,如果禁用,同样返回false UserGroup grp = this.GetGroupSingle((int)ac.UGrp_Id); if (grp == null && grp.UGrp_IsUse == false) return false; return true; } public bool IsUserExist(string accname) { object num = Gateway.Default.Count(User._.User_AccName == accname); if (num != null && Convert.ToInt32(num) > 0) { return true; } return false; } public User[] GetUserAll() { return Gateway.Default.From().OrderBy(User._.User_RegTime.Desc).ToArray(); } public User[] GetUserAll(bool? isUse, string searName) { WhereClip wc = User._.User_Id != -1; if (isUse != null) { wc.And(User._.User_IsUse == isUse); } if (searName != "" && searName != String.Empty) { wc.And(User._.User_Name.Like("%" + searName + "%")); } return Gateway.Default.From().Where(wc).OrderBy(User._.User_RegTime.Desc).ToArray(); } public User[] GetUserAll(int grpid, bool? isUse, string searName) { WhereClip wc = User._.UGrp_Id == grpid; if (isUse != null) { wc.And(User._.User_IsUse == isUse); } if (searName != "" && searName != String.Empty) { wc.And(User._.User_Name.Like("%" + searName + "%")); } return Gateway.Default.From().Where(wc).OrderBy(User._.User_RegTime.Desc).ToArray(); } public User[] GetUserAll(int grpid, bool isUse) { WhereClip wc = User._.UGrp_Id == grpid; wc.And(User._.User_IsUse == isUse); return Gateway.Default.From().Where(wc).OrderBy(User._.User_RegTime.Desc).ToArray(); } public User[] GetUserPager(int size, int index, out int countSum) { countSum = Gateway.Default.Count(User._.User_Id != -1); return Gateway.Default.From().OrderBy(User._.User_RegTime.Desc).ToArray(size, (index - 1) * size); } public User[] GetUserPager(int grpid, int size, int index, out int countSum) { WhereClip wc = User._.UGrp_Id == grpid; countSum = Gateway.Default.Count(wc); Song.Entities.User[] ac = Gateway.Default.From().Where(wc).OrderBy(User._.User_RegTime.Desc).ToArray(size, (index - 1) * size); return ac; } public User[] GetUserPager(int? grpid, bool? isUse, string searName, int size, int index, out int countSum) { WhereClip wc = User._.User_Id != -1; if (grpid != null && grpid >-1) { wc.And(User._.UGrp_Id == grpid); } if (isUse != null) { wc.And(User._.User_IsUse == isUse); } if (searName != "" && searName != String.Empty) { wc.And(User._.User_Name.Like("%" + searName + "%")); } countSum = Gateway.Default.Count(wc); Song.Entities.User[] ac = Gateway.Default.From().Where(wc).OrderBy(User._.User_RegTime.Desc).ToArray(size, (index - 1) * size); return ac; } #endregion } }