PenaltykickManagerEntity GetManager(Guid managerId) { var info = PenaltykickManagerMgr.GetById(managerId); DateTime date = DateTime.Now; if (info == null) { if (IsActivity) { //默认1次免费次数,每天最多产出5个 info = new PenaltykickManagerEntity(managerId, 0, 1, 0, 5, 0, 0, 0, 0, "", 0, 0, RefreshExChange(), 0, 0, false, date, date, date, date); PenaltykickManagerMgr.Insert(info); } else { info = new PenaltykickManagerEntity(managerId, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, RefreshExChange(), 0, 0, false, date, date, date, date); } } //每天补充免费次数 if (info.RefreshDate.Date != date.Date) { if (IsActivity) { info.FreeNumber = 1; info.DayProduceLuckyCoin = 5; info.RefreshDate = date; PenaltykickManagerMgr.Update(info); } } return(info); }
/// <summary> /// 将IDataReader的当前记录读取到PenaltykickManagerEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public PenaltykickManagerEntity LoadSingleRow(IDataReader reader) { var obj = new PenaltykickManagerEntity(); obj.ManagerId = (System.Guid)reader["ManagerId"]; obj.ShootNumber = (System.Int32)reader["ShootNumber"]; obj.FreeNumber = (System.Int32)reader["FreeNumber"]; obj.GameCurrency = (System.Int32)reader["GameCurrency"]; obj.DayProduceLuckyCoin = (System.Int32)reader["DayProduceLuckyCoin"]; obj.TotalScore = (System.Int32)reader["TotalScore"]; obj.AvailableScore = (System.Int32)reader["AvailableScore"]; obj.TotalGoals = (System.Int32)reader["TotalGoals"]; obj.ShooterAttribute = (System.Int32)reader["ShooterAttribute"]; obj.ShootLog = (System.String)reader["ShootLog"]; obj.CombGoals = (System.Int32)reader["CombGoals"]; obj.MaxCombGoals = (System.Int32)reader["MaxCombGoals"]; obj.ExChangeString = (System.String)reader["ExChangeString"]; obj.Status = (System.Int32)reader["Status"]; obj.Rank = (System.Int32)reader["Rank"]; obj.IsPrize = (System.Boolean)reader["IsPrize"]; obj.UpdateTime = (System.DateTime)reader["UpdateTime"]; obj.RowTime = (System.DateTime)reader["RowTime"]; obj.RefreshDate = (System.DateTime)reader["RefreshDate"]; obj.ScoreChangeTime = (System.DateTime)reader["ScoreChangeTime"]; return(obj); }
private GetPenaltyKickInfo GetManagerInfoResponse(PenaltykickManagerEntity info) { var entity = new GetPenaltyKickInfo(); entity.AvailableScore = info.AvailableScore; entity.CombGoals = info.CombGoals; entity.FreeNumber = info.FreeNumber; entity.GameCurrency = info.GameCurrency; entity.MaxCombGoals = info.MaxCombGoals; entity.ShooterAttribute = info.ShooterAttribute; entity.ShootLog = info.ShootLog; entity.Status = info.Status; entity.TotalScore = info.TotalScore; if (info.ExChangeString.Length == 0) { info.ExChangeString = RefreshExChange(); } var exList = GetExChangeEntity(info.ExChangeString); //所有物品都兑换完了 自动刷新 if (!exList.Exists(r => r.Status == 0)) { info.ExChangeString = RefreshExChange(); } exList = GetExChangeEntity(info.ExChangeString); entity.ExChangeList = exList; return(entity); }
/// <summary> /// 更新排名 /// </summary> /// <param name="info"></param> /// <returns></returns> public MessageCode UpdateRank(PenaltykickManagerEntity info) { if (info == null) { return(MessageCode.Success); } PenaltyKickRankEntity entity = null; if (_rankDic.ContainsKey(info.ManagerId)) { entity = _rankDic[info.ManagerId]; entity.ScoreChangeTime = info.ScoreChangeTime; entity.TotalScore = info.TotalScore; } else { var manager = ManagerCore.Instance.GetManager(info.ManagerId); if (manager == null) { return(MessageCode.NbParameterError); } entity = new PenaltyKickRankEntity(); entity.ManagerId = info.ManagerId; entity.Name = manager.Name; entity.ScoreChangeTime = info.ScoreChangeTime; entity.TotalScore = info.TotalScore; _rankDic.TryAdd(info.ManagerId, entity); } var rankList = _rankDic.Values.OrderByDescending(r => r.TotalScore).ToList(); var dic = new ConcurrentDictionary <Guid, PenaltyKickRankEntity>(); for (int i = 0; i < rankList.Count; i++) { if (i >= 100) { break; } rankList[i].Rank = i + 1; if (!dic.ContainsKey(rankList[i].ManagerId)) { dic.TryAdd(rankList[i].ManagerId, rankList[i]); } } _rankDic = dic; return(MessageCode.Success); }
/// <summary> /// 射门结果处理 /// </summary> /// <param name="info"></param> /// <param name="isGoals"></param> public void Shoot(PenaltykickManagerEntity info, bool isGoals) { if (isGoals) { if (info.ShootLog.Length == 0) { info.ShootLog += 1; } else { info.ShootLog += "," + 1; } } else { if (info.ShootLog.Length == 0) { info.ShootLog += 0; } else { info.ShootLog += "," + 0; } } if (!isGoals) { info.CombGoals = 0; } else { info.CombGoals++; info.TotalGoals++; if (info.MaxCombGoals < info.CombGoals) { info.MaxCombGoals = info.CombGoals; } } var shootList = info.ShootLog.Split(','); if (shootList.Length >= 5) { info.Status = 2;//射门结束 } }
/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016/9/28 13:30:55</remarks> public bool Update(PenaltykickManagerEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_PenaltykickManager_Update"); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId); database.AddInParameter(commandWrapper, "@ShootNumber", DbType.Int32, entity.ShootNumber); database.AddInParameter(commandWrapper, "@FreeNumber", DbType.Int32, entity.FreeNumber); database.AddInParameter(commandWrapper, "@GameCurrency", DbType.Int32, entity.GameCurrency); database.AddInParameter(commandWrapper, "@DayProduceLuckyCoin", DbType.Int32, entity.DayProduceLuckyCoin); database.AddInParameter(commandWrapper, "@TotalScore", DbType.Int32, entity.TotalScore); database.AddInParameter(commandWrapper, "@AvailableScore", DbType.Int32, entity.AvailableScore); database.AddInParameter(commandWrapper, "@TotalGoals", DbType.Int32, entity.TotalGoals); database.AddInParameter(commandWrapper, "@ShooterAttribute", DbType.Int32, entity.ShooterAttribute); database.AddInParameter(commandWrapper, "@ShootLog", DbType.AnsiString, entity.ShootLog); database.AddInParameter(commandWrapper, "@CombGoals", DbType.Int32, entity.CombGoals); database.AddInParameter(commandWrapper, "@MaxCombGoals", DbType.Int32, entity.MaxCombGoals); database.AddInParameter(commandWrapper, "@ExChangeString", DbType.AnsiString, entity.ExChangeString); database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status); database.AddInParameter(commandWrapper, "@Rank", DbType.Int32, entity.Rank); database.AddInParameter(commandWrapper, "@IsPrize", DbType.Boolean, entity.IsPrize); database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime); database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime); database.AddInParameter(commandWrapper, "@RefreshDate", DbType.Date, entity.RefreshDate); database.AddInParameter(commandWrapper, "@ScoreChangeTime", DbType.DateTime, entity.ScoreChangeTime); int results = 0; if (trans != null) { results = database.ExecuteNonQuery(commandWrapper, trans); } else { results = database.ExecuteNonQuery(commandWrapper); } entity.ManagerId = (System.Guid)database.GetParameterValue(commandWrapper, "@ManagerId"); return(Convert.ToBoolean(results)); }
/// <summary> /// GetById /// </summary> /// <param name="managerId">managerId</param> /// <returns>PenaltykickManagerEntity</returns> /// <remarks>2016/9/28 13:30:55</remarks> public PenaltykickManagerEntity GetById(System.Guid managerId) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_PenaltykickManager_GetById"); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, managerId); PenaltykickManagerEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
public static bool Update(PenaltykickManagerEntity penaltykickManagerEntity, DbTransaction trans = null, string zoneId = "") { var provider = new PenaltykickManagerProvider(zoneId); return(provider.Update(penaltykickManagerEntity, trans)); }