/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016/8/2 17:54:56</remarks> public bool Update(OlympicRecordEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_OlympicRecord_Update"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId); database.AddInParameter(commandWrapper, "@ExType", DbType.Int32, entity.ExType); database.AddInParameter(commandWrapper, "@ExItemCode", DbType.Int32, entity.ExItemCode); 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.Int32)database.GetParameterValue(commandWrapper, "@Idx"); return(Convert.ToBoolean(results)); }
/// <summary> /// 将IDataReader的当前记录读取到OlympicRecordEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public OlympicRecordEntity LoadSingleRow(IDataReader reader) { var obj = new OlympicRecordEntity(); obj.Idx = (System.Int32)reader["Idx"]; obj.ManagerId = (System.Guid)reader["ManagerId"]; obj.ExType = (System.Int32)reader["ExType"]; obj.ExItemCode = (System.Int32)reader["ExItemCode"]; obj.RowTime = (System.DateTime)reader["RowTime"]; return(obj); }
/// <summary> /// GetById /// </summary> /// <param name="idx">idx</param> /// <returns>OlympicRecordEntity</returns> /// <remarks>2016/8/2 17:54:56</remarks> public OlympicRecordEntity GetById(System.Int32 idx) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_OlympicRecord_GetById"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx); OlympicRecordEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
/// <summary> /// 兑换奖励 /// </summary> /// <param name="managerId"></param> /// <param name="exChangerizeType"></param> /// <returns></returns> public OlympicExchangeResponse Exchange(Guid managerId, int exChangerizeType) { OlympicExchangeResponse response = new OlympicExchangeResponse(); response.Data = new OlympicExchange(); try { var info = GetInfo(managerId); var configList = GetExChangerize(exChangerizeType); if (configList.Count == 0) { return(ResponseHelper.Create <OlympicExchangeResponse>((int)MessageCode.NbParameterError)); } foreach (var item in configList) { if (!info.DeductTheGoldMedal(item.TheGoldMedalId, item.TheGoldMedalCount)) { return(ResponseHelper.Create <OlympicExchangeResponse>((int)MessageCode.OlympicTheGoldMedalCountNot)); } } var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.OlympocExChangerize); if (package == null || package.BlankCount <= 0) { return(ResponseHelper.Create <OlympicExchangeResponse>((int)MessageCode.ItemPackageFull)); } var messageCode = package.AddItem(configList[0].PrizeItemCode); if (messageCode != MessageCode.Success) { return(ResponseHelper.Create <OlympicExchangeResponse>((int)messageCode)); } OlympicRecordEntity record = new OlympicRecordEntity(0, managerId, exChangerizeType, configList[0].PrizeItemCode, DateTime.Now); using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetConnectionString(EnumDbType.Main))) { transactionManager.BeginTransaction(); messageCode = MessageCode.NbUpdateFail; do { if (!package.Save(transactionManager.TransactionObject)) { break; } if (!OlympicManagerMgr.Update(info, transactionManager.TransactionObject)) { break; } if (!OlympicRecordMgr.Insert(record, transactionManager.TransactionObject)) { break; } messageCode = MessageCode.Success; } while (false); if (messageCode == MessageCode.Success) { transactionManager.Commit(); package.Shadow.Save(); response.Data.ItemCode = configList[0].PrizeItemCode; response.Data.TheGoldMedalDic = info.TheGoldMedalDic; } else { transactionManager.Rollback(); } } } catch (Exception ex) { SystemlogMgr.Error("奥运会兑换奖励", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
public static bool Update(OlympicRecordEntity olympicRecordEntity, DbTransaction trans = null, string zoneId = "") { var provider = new OlympicRecordProvider(zoneId); return(provider.Update(olympicRecordEntity, trans)); }