private static Dictionary <string, bool> CheckService(PartnerServiceParams param) { Dictionary <string, bool> serviceDict = null; if (DataCache.Partners != null && DataCache.Partners.Count > 0) { serviceDict = new Dictionary <string, bool>(DataCache.Partners.Count); //并行检查活动 Parallel.ForEach(DataCache.Partners, p => { param.Obj = p; param.PartnerId = p.Id; var service = PartnerServiceFactory.CreatePayService(p.ServiceName); if (service != null) { var result = service.IsCanJoin(param); serviceDict.Add(p.Name, result); // if (result) { service.Join(param); } } else { serviceDict.Add(p.Name, false); } }); } return(serviceDict); }
public void Post() { var userController = new UserController(); var users = userController.Get(new User()).ToList(); Parallel.ForEach(users, u => { u.AreaId = 1; var player = PlayerBiz.GetById(u.Id, 1); if (player != null) { var param = new PartnerServiceParams() { PartnerId = 1, UserId = u.Id, AreaId = 1, PlayerId = player.Id }; param.Obj = DataCache.Partners.Where(p => p.ServiceName == "PlayerReturn").FirstOrDefault(); var result = controller.Post(param); if (result.Result) { controller.Put(param); } } }); }
public bool Join(PartnerServiceParams param) { var execResult = PlayerActivityLogBiz.Add(new PlayerActivityLog() { PartnerId = param.PartnerId, PlayerId = param.PlayerId, TakePartInTime = DateTime.Now }); return(execResult.Id > 0); }
// PUT: api/PlayerReturn public async Task <bool> Put([FromBody] PartnerServiceParams req) { if (req == null || req.AreaId == 0 || string.IsNullOrEmpty(req.PlayerId) || string.IsNullOrEmpty(req.UserId)) { return(false); } var result = false; var service = PartnerServiceFactory.CreatePayService(serverName); if (service != null) { result = service.Join(req); } return(result); }
public static async Task <UserLoginResponse> Login(User req) { var result = provider.DB.Login(req); var loginResult = new UserLoginResponse(); if (result != null && result.Id != null) { //获取所在区 var player = PlayerBiz.GetById(result.Id, req.AreaId); if (player == null || player.Id == null) { //该用户在该区没有找到记录,新增加一条 player = PlayerBiz.Add(new Player() { Id = Guid.NewGuid().ToString(), UserId = result.Id, AreaId = req.AreaId, CreatedTime = DateTime.Now }); } if (DataCache.Partners.Count > 0) { //获取上一次用户登陆,包含区域 var lastLogin = UserLoginHistoryBiz.GetById(player.Id); if (lastLogin != null) { DataCache.AddUserLastLoginLog(lastLogin); } } var param = new PartnerServiceParams() { AreaId = req.AreaId, UserId = result.Id, PlayerId = player.Id }; loginResult.Id = result.Id; loginResult.Name = result.Name; loginResult.NickName = result.NickName; loginResult.AreaId = req.AreaId; // loginResult.Partners = CheckService(param); UserLoginHistoryBiz.Add(new UserLoginHistory() { UserId = result.Id, PlayerId = player.Id, AreaId = req.AreaId, LoginTime = DateTime.Now }); } return(loginResult); }
public bool IsCanJoin(PartnerServiceParams param) { if (string.IsNullOrEmpty(param.PlayerId) || param.Obj == null || param.AreaId <= 0) { return(false); } var result = false; try { var partner = param.Obj as Partner; if (partner != null) { if (partner.BeginTime <= DateTime.Now && partner.EndTime > DateTime.Now) { var condition = JsonConvert.DeserializeObject <PartnerCondition>(partner.ConditionJson); if (condition != null) { var lastLogin = DataCache.GetUserLastLoginLog(param.PlayerId); if (lastLogin != null && DateTime.Now.Subtract(lastLogin.LoginTime).Days >= condition.Day) { var playerResult = PlayerActivityLogBiz.GetById(param.PlayerId, param.PartnerId); if (playerResult == null || playerResult.Id == 0) { result = true; } } } } } } catch (Exception ex) { //log throw ex; } return(result); }