public void SetXiakeStatus (long xiakeIds, XiakeStatus xiakeStatus) { lock (LockObject) { Init(); mClient.Service.SetXiakeStatus(xiakeIds,xiakeStatus); } }
public CombinationSearchXiakeData SearchXiakesByMengzhu(XiakeType[] xiakeTypes, XiakeLevel[] xiakeLevels, XiakeStatus[] xiakeStatus, string xiakeName, long lastID, bool isTimeRangeRequired, SearchTimeType timeType, DateTime startTime, DateTime endTime, bool isOnline) { var result = new CombinationSearchXiakeData(); using (WebDbContext db = DbContextFactory.CreateDbContext()) { IQueryable<Xiake> xiakes = db.Xiakes.OrderByDescending(a => a.Id); if (!string.IsNullOrEmpty(xiakeName)) { xiakes = xiakes.Where(a => a.XiakeName == xiakeName); } else { if (lastID != 0) { xiakes = xiakes.Where(a => a.Id <lastID); } xiakes = xiakes.Where(a => xiakeTypes.Contains(a.UserType)) .Where(a => xiakeLevels.Contains(a.Level)) .Where(a => xiakeStatus.Contains(a.Status)); if (isTimeRangeRequired) { if (timeType == SearchTimeType.JoinTime) { xiakes = xiakes.Where(a => a.CreateTime >= startTime && a.CreateTime <= endTime); } else { xiakes = xiakes.Where(a => a.LastLoginTime >= startTime && a.LastLoginTime <= endTime); } } if(isOnline) { var ids = this.OnlineXiakeManager.GetOnlineXiakes().Select(a => a.Id); xiakes = xiakes.Where(a => ids.Contains(a.Id)); } } if (lastID == 0) { result.TotalCount = xiakes.Count(); } xiakes = xiakes.Take(DomainDefinition.PAGE_SIZE); xiakes = xiakes.Include(a => a.Credits); foreach (Xiake xk in xiakes) { var x = new SearchXiakeData() { ID = xk.Id, Name = xk.XiakeName, QQ = xk.QQ, Mail = xk.Mail, Type = xk.UserType, Level = xk.Level, Status = xk.Status, JoinTime = xk.CreateTime, LastLoginTime = xk.LastLoginTime, LoginCount = xk.LoginCount, Credits = xk.Credits.FreeCredits, IsOnline = OnlineXiakeManager.IsXiakeOnline(xk.Id) }; result.Items.Add(x); } if (result.Items.Count < DomainDefinition.PAGE_SIZE) { result.IsLoadedAllData = true; } } return result; }
public void SetXiakeStatus(long xiakeId, XiakeStatus xiakeStatus) { using (WebDbContext db = DbContextFactory.CreateDbContext()) { var xike = db.Xiakes.FirstOrDefault(a => a.Id == xiakeId); if(xike == null) throw new Exception("没找到相应的侠客"); if (xike.XiakeName == Thread.CurrentPrincipal.Identity.Name) throw new Exception("不能设置自己的状态"); xike.Status = xiakeStatus; xike.Token = ""; if(xiakeStatus == XiakeStatus.Disabled) { if(xike.UserType == XiakeType.Biaoju) { // var vals = db.Validations.Where(a => a.Biaoshi.Biaoju.Id == xiakeId); foreach(var item in vals) db.Validations.Remove(item); // var rws = db.Renwus.Include(a => a.Biao) .Include(a => a.Biao.Zhanggui) .Include(a => a.Biaoju).Where(a => a.Biaoju.Id == xiakeId && a.IsDisabled == false && a.NextStep != null ); foreach(var rw in rws) { rw.IsDisabled = true; rw.Biao.Running -= 1; mMasterServiceProxy.PushBiaoActiveMessage(rw.Biao.Id); mMasterServiceProxy.PushBiaoCountChangedMessage(rw.Biao.Zhanggui.Id, rw.Biao.Id, rw.Biao.Running, rw.Biao.Finished); } } if(xike.UserType == XiakeType.Zhanggui) { var biaos = db.Biaos.Where(a => a.Zhanggui.Id == xiakeId && a.IsEnable == true && a.Finished < a.PlanCount ); foreach(var item in biaos) { item.IsEnable = false; mMasterServiceProxy.PushBiaoCancelMessage(item.Id); } } mMasterServiceProxy.PushShutdownMessage(xike.Id, "SORRY,您的帐号被管理员暂时冻结。"); } try { db.SaveChanges(); } catch (DbUpdateConcurrencyException e) { SetXiakeStatus(xiakeId, xiakeStatus); return; } } }
public CombinationSearchXiakeData SearchXiakesByMengzhu (XiakeType[] xiakeTypes, XiakeLevel[] xiakeLevels, XiakeStatus[] xiakeStatus, string xiakeName, long lastID, bool isTimeRangeRequired, SearchTimeType timeType, DateTime startTime, DateTime endTime, bool isOnline) { lock (LockObject) { Init(); return mClient.Service.SearchXiakesByMengzhu(xiakeTypes,xiakeLevels,xiakeStatus,xiakeName,lastID,isTimeRangeRequired,timeType,startTime,endTime,isOnline); } }