Esempio n. 1
0
 public XiakeTypeData SetXiakeType (long xiakeIds, XiakeType xiakeType)
 {
     lock (LockObject)
     {
         Init();
         return mClient.Service.SetXiakeType(xiakeIds,xiakeType);
     }
 }
Esempio n. 2
0
        public SaguaModuleInfo(Type type, bool loadForAssembly = false)
        {
            XiakeTypes = new XiakeType[0];
            IsMustLoged = false;

            if(loadForAssembly)
            {
                LoadForAssembly(type);
            } else
            {
                LoadForInside(type);

            }

        }
Esempio n. 3
0
        public void AddXiake (long id, string name, string tokenPass, XiakeType xiakeType, XiakeLevel xiakeLevel)
        {
            lock(LockObject)
            {
                var newXiake = new LoginXiake()
                {
                    Id = id,
                    Name = name,
                    Token = tokenPass,
                    XiakeType = xiakeType,
                    XiakeLevel = xiakeLevel
                };

                var oldXiake = mLoginXiakes.FirstOrDefault(a => a.Id == id);
                if(oldXiake != null)
                {
                    mLoginXiakes.Remove(oldXiake);
                }
                mLoginXiakes.Add(newXiake); 
            } 
        }
Esempio n. 4
0
        public LoginXiakeData XiakeJoin(string xiakeName, string password, string qq, string mail, string tel, XiakeType xiakeType,string inviteCode)
        {
            var result = new LoginXiakeData();
            using (WebDbContext db = DbContextFactory.CreateDbContext())
            { 
                var settins = ConfigSettings.GetConfigSettings(  db.Settingses.FirstOrDefault().ConfigData);

                if(settins != null && settins.SystemStatusSet.IsDisableRegister)
                {
                    throw new FaultException(settins.SystemStatusSet.DisableRegisterReason);
                }
                if(settins != null && settins.SystemStatusSet.IsDisableSystem)
                {
                    throw new FaultException(settins.SystemStatusSet.DisableSystemReason);
                }

                if(settins.InviteSet.IsEnableInvite && settins.InviteSet.IsRejectNoInviteRegister &&
                   string.IsNullOrEmpty(inviteCode))
                {
                    throw new FaultException("Sorry, 没有邀请码不可注册!");
                }

                if (db.Xiakes.Any(a => a.XiakeName.Equals(xiakeName)))
                {
                    throw new FaultException("用户名已被使用中,请更换");
                }

                if(db.Xiakes.Any(a => a.Mail.Equals(mail)))
                {
                    throw new FaultException("邮箱已被使用中,请更换");
                }

                if (db.Xiakes.Any(a => a.Tel.Equals(tel)))
                {
                    throw new FaultException("手机已被使用中,请更换");
                }

                if (db.Xiakes.Any(a => a.QQ.Equals(qq)))
                {
                    throw new FaultException("QQ已被使用中,请更换");
                }

                var ip = WcfHelper.GetClientIp();
                
                var xiake = new Xiake
                {
                    XiakeName = xiakeName,
                    Password = password,
                    QQ = qq,
                    Mail = mail,
                    Tel = tel, 
                    RegisterIp = ip,
                    Credits =  new XiakeCredits()
                    {
                        FreeCredits=0,
                        FreezeCredits = 0
                    },
                    InviteStorage = new InviteStorage(),
                    IsAuthorized = true,
                    IsFrozen = false, 
                    LoginCount = 1,
                    LastLoginTime = DateTime.Now,
                    LastLoginIp = ip,
                    UserType = xiakeType,
                    Level = XiakeLevel.Guest,
                    Status = XiakeStatus.Enabled,
                    LastReadGonggaoId = 0
                };
                db.Xiakes.Add(xiake);

                var gift = 
                        xiakeType == XiakeType.Biaoju
                            ? settins.CreditsPolicySet.GifrForBiaoju
                            : settins.CreditsPolicySet.GiftForZhanggui;
                if(gift > 0)
                {
                    var charge = new Charge()
                    {
                        ChargeMode = ChargeMode.ByOwner,
                        Comments="新会员赠送",
                        Handler= xiake,
                        PayType= PayType.ByPresent,
                        TargetXiake= xiake,
                        Value = gift
                    };
                
                    xiake.Credits.FreeCredits = charge.Value;
                    db.Charges.Add(charge); 
                }

                if(!string.IsNullOrEmpty(inviteCode))
                {
                    var masterId = InviteCodeHelper.GetXiakeIdWithInviteCode(inviteCode);
                    var master = db.Xiakes.FirstOrDefault(a => a.Id == masterId);
                    if(master == null)
                    {
                        throw new FaultException("Sorry, 邀请码错误!");
                    }
                    var invite = new Invite() {Slave = xiake , Master = master};
                    db.Invites.Add(invite);
                    
                   
                }
                //if(settins.InviteSet.IsEnableInvite)
                //{
                //    var inviteStorage = new InviteStorage() {Credits = 0, Xiake = xiake};
                //    db.InviteStorages.Add(inviteStorage);
                //}
                
                
                db.SaveChanges(); 
                result.ID  = xiake.Id;
                result.Name  = xiake.XiakeName;
                result.XiakeType  = xiake.UserType;
                result.XiakeLevel  = xiake.Level;
                result.Token = Guid.NewGuid().ToString();
                
            }
            return result;
        }
Esempio n. 5
0
 public string[] XiakeJoin (long id, string name, string token, XiakeType xiakeType, XiakeLevel level)
 { 
     return mService.Service.XiakeJoin(id, name, token, xiakeType, level);
 }
Esempio n. 6
0
 public LoginXiakeData XiakeJoin (string xiakeName, string password, string qq, string mail, string tel, XiakeType xiakeType, string inviteCode)
 {
     lock(LockObject)
     {
         int errorCount = 0;
         while(true)
         {
             try
             {
                 Init();
                 var rv = mClient.Service.XiakeJoin(xiakeName, password, qq, mail, tel, xiakeType, inviteCode);
                 //Xiake.XiakeID = rv.ID;
                 //Xiake.XiakeName = rv.Name;
                 //Xiake.XiakeType = rv.XiakeType;
                 //Xiake.Level = rv.XiakeLevel;
                 //Xiake.Token = rv.Token;
                 //mEventAggregator.GetEvent<LoginEvent>().Publish(true);
                 return rv;
             }
             catch (FaultException e)
             {
                 throw;
             }
             catch (CommunicationException exception)
             {
                 errorCount++;
                 if (errorCount > mClientFuwuqiCacaheService.GetServers().Count())
                     throw new Exception("无法连接上服务器,请稍后再试");
                 mClientFuwuqiCacaheService.SetServerDisable();
             }
         }
         
     } 
 }
Esempio n. 7
0
        public string[] XiakeJoin (long id, string name, string token, XiakeType xiakeType, XiakeLevel level)
        {
            try
            {
                string[] servers = null;

                using (var db = DbContextFactory.CreateDbContext())
                {

                    servers = db.Fuwuqis.Select(a => a.Url).ToArray();
                } 
                var urls = new List<string>(); 
                var firstUrl = servers[RandomObject.Next(0, servers.Length)];
                if (xiakeType == XiakeType.Mengzhu || xiakeType == XiakeType.Xiaoer || xiakeType == XiakeType.Tangzhu)
                {
                    firstUrl = MasterBaseUrl;
                }
                urls.Add(firstUrl);
                urls.AddRange(servers.Where(a => a != firstUrl));

                mOnlineXiakeManager.AddXiake(new LoginXiake()
                {
                    Id = id,
                    Name = name,
                    Token = token,
                    XiakeLevel = level,
                    XiakeType = xiakeType
                });

                return urls.ToArray();
            } catch(Exception)
            {
                return new string[]
                {
                    MasterBaseUrl 
                };
                
            }
            
        }
Esempio n. 8
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;
        }
Esempio n. 9
0
        public XiakeTypeData SetXiakeType(long xiakeId, XiakeType xiakeType)
        {
            var result = new XiakeTypeData();
            using (WebDbContext db = DbContextFactory.CreateDbContext())
            { 
                var xk = db.Xiakes.FirstOrDefault(a =>  a.Id == xiakeId);
                if (xk == null)
                    throw new Exception("没找到相应的侠客");
                if (xk.XiakeName == Thread.CurrentPrincipal.Identity.Name)
                    throw new Exception("不能设置自己的类型");
                 
                        xk.UserType = xiakeType;
                        xk.Token = "";
                        result.XiakeId = xk.Id;
                        result.XiakeType = xiakeType;
                

                try
                {
                     db.SaveChanges();
                } catch(DbUpdateConcurrencyException e)
                {
                    return SetXiakeType(xiakeId, xiakeType);
                } 
            }
            return   result ;
        }
Esempio n. 10
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);
     }
 }