Ejemplo n.º 1
0
 public void SetXiakeStatus (long xiakeIds, XiakeStatus xiakeStatus)
 {
     lock (LockObject)
     {
         Init();
         mClient.Service.SetXiakeStatus(xiakeIds,xiakeStatus);
     }
 }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
                }
               
            } 
        }
Ejemplo n.º 4
0
 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);
     }
 }