/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016/1/26 13:35:38</remarks> public bool Update(FriendMatchEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_FriendMatch_Update"); database.AddInParameter(commandWrapper, "@Idx", DbType.Guid, entity.Idx); database.AddInParameter(commandWrapper, "@HomeId", DbType.Guid, entity.HomeId); database.AddInParameter(commandWrapper, "@AwayId", DbType.Guid, entity.AwayId); database.AddInParameter(commandWrapper, "@HomeName", DbType.String, entity.HomeName); database.AddInParameter(commandWrapper, "@AwayName", DbType.String, entity.AwayName); database.AddInParameter(commandWrapper, "@HomeScore", DbType.Int32, entity.HomeScore); database.AddInParameter(commandWrapper, "@AwayScore", DbType.Int32, entity.AwayScore); database.AddInParameter(commandWrapper, "@Intimacy", DbType.Int32, entity.Intimacy); database.AddInParameter(commandWrapper, "@IsFriend", DbType.Boolean, entity.IsFriend); database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status); database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime); int results = 0; if (trans != null) { results = database.ExecuteNonQuery(commandWrapper, trans); } else { results = database.ExecuteNonQuery(commandWrapper); } entity.Idx = (System.Guid)database.GetParameterValue(commandWrapper, "@Idx"); return(Convert.ToBoolean(results)); }
/// <summary> /// 将IDataReader的当前记录读取到FriendMatchEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public FriendMatchEntity LoadSingleRow(IDataReader reader) { var obj = new FriendMatchEntity(); obj.Idx = (System.Guid)reader["Idx"]; obj.HomeId = (System.Guid)reader["HomeId"]; obj.AwayId = (System.Guid)reader["AwayId"]; obj.HomeName = (System.String)reader["HomeName"]; obj.AwayName = (System.String)reader["AwayName"]; obj.HomeScore = (System.Int32)reader["HomeScore"]; obj.AwayScore = (System.Int32)reader["AwayScore"]; obj.Intimacy = (System.Int32)reader["Intimacy"]; obj.IsFriend = (System.Boolean)reader["IsFriend"]; obj.Status = (System.Int32)reader["Status"]; obj.RowTime = (System.DateTime)reader["RowTime"]; return(obj); }
/// <summary> /// GetById /// </summary> /// <param name="idx">idx</param> /// <returns>FriendMatchEntity</returns> /// <remarks>2016/1/26 13:35:38</remarks> public FriendMatchEntity GetById(System.Guid idx) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_FriendMatch_GetById"); database.AddInParameter(commandWrapper, "@Idx", DbType.Guid, idx); FriendMatchEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
public MessageCode MatchCallback(BaseMatchData matchData) { var fmatchData = (FriendMatchData)matchData; if (fmatchData == null || fmatchData.ErrorCode != (int)MessageCode.Success) { return(MessageCode.MatchCreateFail); } var friendRecord = fmatchData.FriendRecord; bool isFriend = friendRecord != null; var coin = 0; int intimacy = 0; if (isFriend) { var oldIntimacy = friendRecord.Intimacy; AddFriendMatchIntimacy(friendRecord); intimacy = friendRecord.Intimacy - oldIntimacy; if (friendRecord.DayMatchCount == 1) { //第一次比赛有奖励 if (fmatchData.Home.Score > fmatchData.Away.Score) { coin = 30; } else if (fmatchData.Home.Score == fmatchData.Away.Score) { coin = 20; } else { coin = 10; } } } var match = new FriendMatchEntity(); match.Idx = fmatchData.MatchId; match.HomeId = fmatchData.Home.ManagerId; match.HomeName = fmatchData.Home.Name; match.HomeScore = fmatchData.Home.Score; match.AwayId = fmatchData.Away.ManagerId; match.AwayName = fmatchData.Away.Name; match.AwayScore = fmatchData.Away.Score; match.Intimacy = intimacy; match.IsFriend = isFriend; match.RowTime = DateTime.Now; match.Status = 0; MatchCore.SaveMatchStat(match.HomeId, EnumMatchType.Friend, match.HomeScore, match.AwayScore, match.HomeScore); var winType = EnumWinType.Win; if (match.HomeScore == match.AwayScore) { winType = EnumWinType.Draw; } else if (match.HomeScore < match.AwayScore) { winType = EnumWinType.Lose; } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); var trans = transactionManager.TransactionObject; var messageCode = MessageCode.NbUpdateFail; do { if (isFriend) { if (!FriendManagerMgr.Update(friendRecord, trans)) { break; } } if (!FriendMatchMgr.Insert(match, trans)) { break; } //记录成就相关数据 var mess = AchievementTaskCore.Instance.UpdateFriendMatchComb(match.HomeId, winType, trans); if (mess != MessageCode.Success) { break; } if (coin > 0) { //友谊赛金币奖励 var manager = ManagerCore.Instance.GetManager(fmatchData.Home.ManagerId); if (manager != null) { mess = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.FriendMatch, ShareUtil.GenerateComb().ToString(), trans); if (mess != MessageCode.Success) { break; } } } messageCode = MessageCode.Success; } while (false); if (messageCode == ShareUtil.SuccessCode) { transactionManager.Commit(); } else { transactionManager.Rollback(); } } return(MessageCode.Success); }
public static bool Update(FriendMatchEntity friendMatchEntity, DbTransaction trans = null, string zoneId = "") { var provider = new FriendMatchProvider(zoneId); return(provider.Update(friendMatchEntity, trans)); }