private KFSpreadData GetSpreadData(int pzoneID, int proleID) { KFSpreadKey pkey = KFSpreadKey.Get(pzoneID, proleID); KFSpreadData pData = null; if (!_spreadDataDic.TryGetValue(pkey, out pData)) { bool isSign = SpreadPersistence.Instance.DBSpreadSignCheck(pzoneID, proleID); if (!isSign) { return(null); } pData = new KFSpreadData() { ServerID = 0, ZoneID = pzoneID, RoleID = proleID, CountRole = SpreadPersistence.Instance.DBSpreadCountAll(pzoneID, proleID), CountVip = SpreadPersistence.Instance.DBSpreadCountVip(pzoneID, proleID), CountLevel = SpreadPersistence.Instance.DBSpreadCountLevel(pzoneID, proleID), }; _spreadDataDic.TryAdd(pkey, pData); } if (pData != null) { pData.UpdateLogtime(); } return(pData); }
public int SpreadSign(int serverID, int zoneID, int roleID) { int result; if (!this.IsAgent(serverID)) { result = -5; } else { KFSpreadKey key = KFSpreadKey.Get(zoneID, roleID); KFSpreadData oldData; if (this._spreadDataDic.TryGetValue(key, out oldData)) { oldData.UpdateLogtime(); result = -21; } else if (!SpreadPersistence.Instance.DBSpreadSign(zoneID, roleID)) { result = -1; } else { oldData = new KFSpreadData { ServerID = serverID, ZoneID = zoneID, RoleID = roleID }; this._spreadDataDic.TryAdd(key, oldData); result = 1; } } return(result); }
public bool SpreadVip(int pzoneID, int proleID, int czoneID, int croleID) { //推广员 KFSpreadData pData = GetSpreadData(pzoneID, proleID); if (pData == null) { return(false); } pData.UpdateLogtime(); //推广员 lock (pData) { bool result = SpreadPersistence.Instance.DBSpreadIsVip(pzoneID, proleID, czoneID, croleID); if (result) { pData.CountVip += 1; if (pData.ServerID > 0) { NotifySpreadData(pData); } return(true); } } return(false); }
public int SpreadSign(int serverID, int zoneID, int roleID) { if (!IsAgent(serverID)) { return((int)ESpreadState.EServer); } KFSpreadKey key = KFSpreadKey.Get(zoneID, roleID); KFSpreadData oldData; if (_spreadDataDic.TryGetValue(key, out oldData)) { oldData.UpdateLogtime(); return((int)ESpreadState.ESpreadIsSign); } bool result = SpreadPersistence.Instance.DBSpreadSign(zoneID, roleID); if (!result) { return((int)ESpreadState.Fail); } //添加或更新 oldData = new KFSpreadData() { ServerID = serverID, ZoneID = zoneID, RoleID = roleID, }; _spreadDataDic.TryAdd(key, oldData); return((int)ESpreadState.Success); }
public bool SpreadVip(int pzoneID, int proleID, int czoneID, int croleID) { KFSpreadData pData = this.GetSpreadData(pzoneID, proleID); bool result2; if (pData == null) { result2 = false; } else { pData.UpdateLogtime(); lock (pData) { bool result = SpreadPersistence.Instance.DBSpreadIsVip(pzoneID, proleID, czoneID, croleID); if (result) { pData.CountVip++; if (pData.ServerID > 0) { this.NotifySpreadData(pData); } return(true); } } result2 = false; } return(result2); }
public int TelCodeVerify(int serverID, int czoneID, int croleID, int telCode) { if (!IsAgent(serverID)) { return((int)ESpreadState.EServer); } KFSpreadKey ckey = KFSpreadKey.Get(czoneID, croleID); KFSpreadVerifyData verifyData = null; if (!_spreadVerifyDataDic.TryGetValue(ckey, out verifyData)) { return((int)ESpreadState.EVerifyNo); } //推广员 KFSpreadData pData = GetSpreadData(verifyData.PZoneID, verifyData.PRoleID); if (pData == null) { return((int)ESpreadState.EVerifyCodeWrong); } pData.UpdateLogtime(); if (verifyData.TelCode != telCode) { return((int)ESpreadState.ETelCodeWrong); } if (DateTime.Now.AddSeconds(-TEL_CODE_OUT_TIME) > verifyData.TelTime) { return((int)ESpreadState.ETelCodeOutTime); } //验证成功加数据库 bool result = SpreadPersistence.Instance.DBSpreadRoleAdd( verifyData.PZoneID, verifyData.PRoleID, verifyData.CUserID, verifyData.CZoneID, verifyData.CRoleID, verifyData.Tel, verifyData.IsVip, verifyData.IsLevel); if (!result) { return((int)ESpreadState.Fail); } //推广员 lock (pData) { pData.CountLevel += verifyData.IsLevel; pData.CountVip += verifyData.IsVip; pData.CountRole += 1; if (pData.ServerID > 0) { NotifySpreadData(pData); } } _spreadVerifyDataDic.TryRemove(ckey, out verifyData); return((int)ESpreadState.Success); }
public int TelCodeVerify(int serverID, int czoneID, int croleID, int telCode) { int result; if (!this.IsAgent(serverID)) { result = -5; } else { KFSpreadKey ckey = KFSpreadKey.Get(czoneID, croleID); KFSpreadVerifyData verifyData = null; if (!this._spreadVerifyDataDic.TryGetValue(ckey, out verifyData)) { result = -10; } else { KFSpreadData pData = this.GetSpreadData(verifyData.PZoneID, verifyData.PRoleID); if (pData == null) { result = -14; } else { pData.UpdateLogtime(); if (verifyData.TelCode != telCode) { result = -34; } else if (TimeUtil.NowDateTime().AddSeconds(-90.0) > verifyData.TelTime) { result = -35; } else if (!SpreadPersistence.Instance.DBSpreadRoleAdd(verifyData.PZoneID, verifyData.PRoleID, verifyData.CUserID, verifyData.CZoneID, verifyData.CRoleID, verifyData.Tel, verifyData.IsVip, verifyData.IsLevel)) { result = -1; } else { lock (pData) { pData.CountLevel += verifyData.IsLevel; pData.CountVip += verifyData.IsVip; pData.CountRole++; if (pData.ServerID > 0) { this.NotifySpreadData(pData); } } this._spreadVerifyDataDic.TryRemove(ckey, out verifyData); result = 1; } } } } return(result); }
public int CheckVerifyCode(int cserverID, string cuserID, int czoneID, int croleID, int pzoneID, int proleID, int isVip, int isLevel) { if (!IsAgent(cserverID)) { return((int)ESpreadState.EServer); } //推广员 KFSpreadData pData = GetSpreadData(pzoneID, proleID); if (pData == null) { return((int)ESpreadState.EVerifyCodeWrong); } //已验证 bool isVerify = SpreadPersistence.Instance.DBSpreadVeruftCheck(czoneID, croleID, cuserID); if (isVerify) { return((int)ESpreadState.EVerifyCodeHave); } //角色验证统计 KFSpreadRoleTotal roleTotalData = GetRoleTotalData(cserverID, czoneID, croleID); if (roleTotalData.IsStop) { return((int)ESpreadState.EVerifyMore); } //验证信息 KFSpreadKey ckey = KFSpreadKey.Get(czoneID, croleID); KFSpreadVerifyData verifyData = null; _spreadVerifyDataDic.TryRemove(ckey, out verifyData); verifyData = new KFSpreadVerifyData() { CUserID = cuserID, CServerID = cserverID, CZoneID = czoneID, CRoleID = croleID, PZoneID = pzoneID, PRoleID = proleID, IsVip = isVip, IsLevel = isLevel, }; _spreadVerifyDataDic.TryAdd(ckey, verifyData); return((int)ESpreadState.Success); }
private void NotifySpreadData(KFSpreadData data) { ClientAgentManager.Instance().PostAsyncEvent(data.ServerID, this.GameType, new AsyncDataItem(KuaFuEventTypes.SpreadCount, new object[] { data.ZoneID, data.RoleID, data.CountRole, data.CountVip, data.CountLevel })); }
public int CheckVerifyCode(int cserverID, string cuserID, int czoneID, int croleID, int pzoneID, int proleID, int isVip, int isLevel) { int result; if (!this.IsAgent(cserverID)) { result = -5; } else { KFSpreadData pData = this.GetSpreadData(pzoneID, proleID); if (pData == null) { result = -14; } else { bool isVerify = SpreadPersistence.Instance.DBSpreadVeruftCheck(czoneID, croleID, cuserID); if (isVerify) { result = -12; } else { KFSpreadRoleTotal roleTotalData = this.GetRoleTotalData(cserverID, czoneID, croleID, false); if (roleTotalData.IsStop) { result = -16; } else { KFSpreadKey ckey = KFSpreadKey.Get(czoneID, croleID); KFSpreadVerifyData verifyData = null; this._spreadVerifyDataDic.TryRemove(ckey, out verifyData); verifyData = new KFSpreadVerifyData { CUserID = cuserID, CServerID = cserverID, CZoneID = czoneID, CRoleID = croleID, PZoneID = pzoneID, PRoleID = proleID, IsVip = isVip, IsLevel = isLevel }; this._spreadVerifyDataDic.TryAdd(ckey, verifyData); result = 1; } } } } return(result); }
public int SpreadSign(int zoneID, int roleID) { int result; try { lock (_Mutex) { KFSpreadData data; //如果取到数据,证明已经注册说了 if (_RoleId2KFSpreadDataDict.TryGetValue(roleID, out data)) { return(0); } ISpreadService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(StdErrorCode.Error_Server_Not_Registed); } try { result = kuaFuService.SpreadSign(_ClientInfo.ServerId, zoneID, roleID); if (result > 0) { KFSpreadData newData = new KFSpreadData(); newData.ServerID = _ClientInfo.ServerId; newData.ZoneID = zoneID; newData.RoleID = roleID; _RoleId2KFSpreadDataDict.TryAdd(roleID, newData); } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(StdErrorCode.Error_Success); }
public int[] SpreadCount(int zoneID, int roleID) { int[] array = new int[3]; int[] counts = array; lock (this._Mutex) { KFSpreadData data; if (this._RoleId2KFSpreadDataDict.TryGetValue(roleID, out data)) { data.UpdateLogtime(); return(new int[] { data.CountRole, data.CountVip, data.CountLevel }); } ISpreadService kuaFuService = this.GetKuaFuService(false); if (null == kuaFuService) { return(counts); } try { counts = kuaFuService.SpreadCount(this._ClientInfo.ServerId, zoneID, roleID); if (counts != null && counts.Length == 3) { KFSpreadData newData = new KFSpreadData(); newData.ServerID = this._ClientInfo.ServerId; newData.ZoneID = zoneID; newData.RoleID = roleID; newData.CountRole = counts[0]; newData.CountVip = counts[1]; newData.CountLevel = counts[2]; this._RoleId2KFSpreadDataDict.TryAdd(roleID, newData); } } catch (Exception ex) { this.ResetKuaFuService(); } } return(counts); }
public int[] SpreadCount(int serverID, int zoneID, int roleID) { int[] array = new int[3]; int[] result = array; int[] result2; if (!this.IsAgent(serverID)) { result2 = result; } else { KFSpreadKey key = KFSpreadKey.Get(zoneID, roleID); KFSpreadData oldData; if (this._spreadDataDic.TryGetValue(key, out oldData)) { result[0] = oldData.CountRole; result[1] = oldData.CountVip; result[2] = oldData.CountLevel; oldData.UpdateLogtime(); result2 = result; } else { result[0] = SpreadPersistence.Instance.DBSpreadCountAll(zoneID, roleID); result[1] = SpreadPersistence.Instance.DBSpreadCountVip(zoneID, roleID); result[2] = SpreadPersistence.Instance.DBSpreadCountLevel(zoneID, roleID); oldData = new KFSpreadData { ServerID = serverID, ZoneID = zoneID, RoleID = roleID, CountRole = result[0], CountVip = result[1], CountLevel = result[2] }; this._spreadDataDic.TryAdd(key, oldData); result2 = result; } } return(result2); }
public int[] SpreadCount(int serverID, int zoneID, int roleID) { int[] result = new int[] { 0, 0, 0 }; if (!IsAgent(serverID)) { return(result); } KFSpreadKey key = KFSpreadKey.Get(zoneID, roleID); KFSpreadData oldData; if (_spreadDataDic.TryGetValue(key, out oldData)) { result[0] = oldData.CountRole; result[1] = oldData.CountVip; result[2] = oldData.CountLevel; oldData.UpdateLogtime(); return(result); } result[0] = SpreadPersistence.Instance.DBSpreadCountAll(zoneID, roleID); result[1] = SpreadPersistence.Instance.DBSpreadCountVip(zoneID, roleID); result[2] = SpreadPersistence.Instance.DBSpreadCountLevel(zoneID, roleID); //添加或更新 oldData = new KFSpreadData() { ServerID = serverID, ZoneID = zoneID, RoleID = roleID, CountRole = result[0], CountVip = result[1], CountLevel = result[2], }; _spreadDataDic.TryAdd(key, oldData); return(result); }
public int SpreadSign(int zoneID, int roleID) { try { lock (this._Mutex) { KFSpreadData data; if (this._RoleId2KFSpreadDataDict.TryGetValue(roleID, out data)) { return(0); } ISpreadService kuaFuService = this.GetKuaFuService(false); if (null == kuaFuService) { return(-11001); } try { int result = kuaFuService.SpreadSign(this._ClientInfo.ServerId, zoneID, roleID); if (result > 0) { KFSpreadData newData = new KFSpreadData(); newData.ServerID = this._ClientInfo.ServerId; newData.ZoneID = zoneID; newData.RoleID = roleID; this._RoleId2KFSpreadDataDict.TryAdd(roleID, newData); } } catch (Exception ex) { this.ResetKuaFuService(); } } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(1); }