Skip to content

Commit

Permalink
update bug of 6.7.9.7
Browse files Browse the repository at this point in the history
  • Loading branch information
ScutGame committed Apr 23, 2015
1 parent 8b57a90 commit 5a392ed
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 10 deletions.
2 changes: 1 addition & 1 deletion Source/Middleware/Solution Items/GlobalAssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ THE SOFTWARE.
// Revision
//
//
[assembly: AssemblyVersion("6.7.9.7")]
[assembly: AssemblyVersion("6.7.9.8")]
[assembly: AssemblyCompany("scutgame.com")]
[assembly: AssemblyProduct("SCUT Server Engine")]
[assembly: AssemblyCopyright("Copyright © 2013-2015 Gavin Wu")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,18 +188,16 @@ public override bool TakeAction()
Sid = Current.SessionId;
PassportId = login.PassportID;
UserType = login.UserType;

SetParameter(login);
int userId = login.UserID.ToInt();
IUser user;
if (!GetError() && DoSuccess(login.UserID.ToInt(), out user))
if (!GetError() && DoSuccess(userId, out user))
{
var session = GameSession.Get(Sid);
if (session != null)
{
if (user != null)
{
session.Bind(user);
}
//user is null in create role.
session.Bind(user ?? new SessionUser() { PassportId = PassportId, UserId = userId });
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ protected void SaveLog(Exception error)
/// <param name="error"></param>
protected void SaveLog(String message, Exception error)
{
TraceLog.WriteError("Action{0} {1} error:{2}", actionId, message, error);
TraceLog.WriteError("Action{0}{1} error:{2}.\r\n{3}", actionId, message, error, actionGetter.ToParamString());
}

/// <summary>
Expand Down
52 changes: 50 additions & 2 deletions Source/Middleware/ZyGames.Framework.Game/Sns/SnsManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;

namespace ZyGames.Framework.Game.Sns
{
Expand All @@ -31,6 +33,21 @@ namespace ZyGames.Framework.Game.Sns
/// </summary>
public class SnsManager
{
class PassportExpired
{
public PassportExpired(string pid)
{
Pid = pid;
ExpiredTime = DateTime.Now.AddSeconds(10);//5s 后可以产生新的PID
}
public string Pid { get; set; }
public DateTime ExpiredTime { get; set; }
}
/// <summary>
/// 防多次点击产生多个账号与imei绑定
/// </summary>
private static ConcurrentDictionary<string, PassportExpired> imeiMap = new ConcurrentDictionary<string, PassportExpired>();

/// <summary>
/// 获取通行证
/// </summary>
Expand All @@ -42,17 +59,44 @@ public static string[] GetRegPassport(string imei)
throw (new Exception("禁止登入"));
var list = new List<string>();
SnsCenterUser user = SnsCenterUser.GetUserByDeviceId(imei);
string passportId = string.Empty;

if (user != null)
{
list.Add(user.PassportId);
passportId = user.PassportId;
list.Add(passportId);
list.Add(user.Password);
}
else
{
SnsPassport passport = new SnsPassport();
PassportExpired passportExpired;
if (!imeiMap.TryGetValue(imei, out passportExpired))
{
passportId = passport.GetRegPassport();
imeiMap[imei] = new PassportExpired(passportId);
}
else
{
passportId = passportExpired.Pid;
if (passportExpired.ExpiredTime < DateTime.Now)
{
//过期移除
imeiMap.TryRemove(imei, out passportExpired);
}
//检查超出
List<string> expiredMap;
if (imeiMap.Count > 100 && ((expiredMap = imeiMap.Where(t => t.Value.ExpiredTime < DateTime.Now).Select(t => t.Key).ToList()).Count > 10))
{
foreach (var expired in expiredMap)
{
imeiMap.TryRemove(expired, out passportExpired);
}
}
}

string password = passport.GetRandomPwd();
list.Add(passport.GetRegPassport());
list.Add(passportId);
list.Add(password);
}

Expand Down Expand Up @@ -175,6 +219,10 @@ public static int LoginByDevice(string user, string password, string imei)
{
userId = snsCenterUser.InsertSnsUser();
SnsCenterUser.AddLoginLog(imei, user);

//过期移除
PassportExpired passportExpired;
imeiMap.TryRemove(imei, out passportExpired);
return userId;
}
if (snsCenterUser.ValidatePassport(snsUser))
Expand Down

0 comments on commit 5a392ed

Please sign in to comment.