/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016/7/14 11:00:26</remarks> public bool Update(TurntableLuckyrecordEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_TurntableLuckyrecord_Update"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx); database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId); database.AddInParameter(commandWrapper, "@IsAdd", DbType.Boolean, entity.IsAdd); database.AddInParameter(commandWrapper, "@OperationNumber", DbType.Int32, entity.OperationNumber); database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime); database.AddInParameter(commandWrapper, "@LuckDrawString", DbType.AnsiString, entity.LuckDrawString); 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的当前记录读取到TurntableLuckyrecordEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public TurntableLuckyrecordEntity LoadSingleRow(IDataReader reader) { var obj = new TurntableLuckyrecordEntity(); obj.Idx = (System.Int32)reader["Idx"]; obj.ManagerId = (System.Guid)reader["ManagerId"]; obj.IsAdd = (System.Boolean)reader["IsAdd"]; obj.OperationNumber = (System.Int32)reader["OperationNumber"]; obj.RowTime = (System.DateTime)reader["RowTime"]; obj.LuckDrawString = (System.String)reader["LuckDrawString"]; return(obj); }
/// <summary> /// GetById /// </summary> /// <param name="idx">idx</param> /// <returns>TurntableLuckyrecordEntity</returns> /// <remarks>2016/7/14 11:00:26</remarks> public TurntableLuckyrecordEntity GetById(System.Int32 idx) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_TurntableLuckyrecord_GetById"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx); TurntableLuckyrecordEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
MessageCode SaveLuckDraw(Guid managerId, int addPoint, int addCoin, bool isAddPackage, ItemPackageFrame package, NbManagerEntity manager, TurntableFrame turntable, TurntableLuckyrecordEntity record, DbTransaction trans) { var messageCode = MessageCode.Success; if (addPoint > 0) { messageCode = PayCore.Instance.AddBonus(managerId, addPoint, EnumChargeSourceType.Turntable, ShareUtil.GenerateComb().ToString(), trans); if (messageCode != MessageCode.Success) { return(messageCode); } } if (addCoin > 0) { messageCode = ManagerCore.Instance.AddCoin(manager, addCoin, EnumCoinChargeSourceType.Turntable, ShareUtil.GenerateComb().ToString(), trans); if (messageCode != MessageCode.Success) { return(messageCode); } } if (!turntable.Save(trans)) { return(MessageCode.NbUpdateFail); } if (isAddPackage) { if (!package.Save(trans)) { return(MessageCode.NbUpdateFail); } package.Shadow.Save(); } TurntableLuckyrecordMgr.Insert(record, trans); return(MessageCode.Success); }
/// <summary> /// 保存抽奖 /// </summary> /// <param name="managerId"></param> /// <param name="addPoint"></param> /// <param name="addCoin"></param> /// <param name="isAddPackage"></param> /// <param name="package"></param> /// <param name="manager"></param> /// <param name="turntable"></param> /// <param name="record"></param> /// <returns></returns> MessageCode SaveLuckDraw(Guid managerId, int addPoint, int addCoin, bool isAddPackage, ItemPackageFrame package, NbManagerEntity manager, TurntableFrame turntable, TurntableLuckyrecordEntity record) { MessageCode messageCode = MessageCode.Success; using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetConnectionString(EnumDbType.Main))) { transactionManager.BeginTransaction(); messageCode = SaveLuckDraw(managerId, addPoint, addCoin, isAddPackage, package, manager, turntable, record, transactionManager.TransactionObject); if (messageCode == MessageCode.Success) { transactionManager.Commit(); } else { transactionManager.Rollback(); } } return(messageCode); }
/// <summary> /// 发奖 /// </summary> /// <param name="managerId"></param> /// <param name="prizeEntity"></param> /// <param name="specialItem"></param> /// <param name="addpoint"></param> /// <param name="addcoin"></param> /// <param name="isAddPackage"></param> /// <param name="package"></param> /// <param name="response"></param> /// <param name="record"></param> /// <returns></returns> MessageCode SendPrize(Guid managerId, ConfigTurntableprizeEntity prizeEntity, int specialItem, ref int addpoint, ref int addcoin, ref bool isAddPackage, ref ItemPackageFrame package, TurntableLuckDrawResponse response, TurntableLuckyrecordEntity record) { var messCode = MessageCode.Success; response.Data.PrizeCount = prizeEntity.ItemCount; switch (prizeEntity.PrizeType) { case (int)EnumTurntablePrizeType.Point: addpoint = prizeEntity.ItemCount; response.Data.PrizeCode = 0; response.Data.PrizeType = (int)EnumTurntablePrizeType.Point; record.LuckDrawString = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount; break; case (int)EnumTurntablePrizeType.Coin: addcoin = prizeEntity.ItemCount; response.Data.PrizeCode = 0; response.Data.PrizeType = (int)EnumTurntablePrizeType.Coin; record.LuckDrawString = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount; break; case (int)EnumTurntablePrizeType.Item: isAddPackage = true; messCode = package.AddItems(prizeEntity.SubType, prizeEntity.ItemCount); if (messCode != MessageCode.Success) { return(messCode); } response.Data.PrizeCode = prizeEntity.SubType; response.Data.PrizeType = (int)EnumTurntablePrizeType.Item; record.LuckDrawString = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount; break; case (int)EnumTurntablePrizeType.Random: isAddPackage = true; var itemCode = CacheFactory.LotteryCache.LotteryByLib(prizeEntity.SubType); var itemCache = CacheFactory.ItemsdicCache.GetItem(itemCode); if (itemCache == null) { return(MessageCode.ItemNotExists); } if (itemCache.ItemType == (int)EnumItemType.PlayerCard) { messCode = package.AddPlayerCard(itemCode, 1, false, 1, false); } else { messCode = package.AddItems(itemCode, prizeEntity.ItemCount); } if (messCode != MessageCode.Success) { return(messCode); } response.Data.PrizeCode = itemCode; response.Data.PrizeType = (int)EnumTurntablePrizeType.Item; record.LuckDrawString = (int)prizeEntity.PrizeType + "," + itemCode + "," + prizeEntity.ItemCount; break; case (int)EnumTurntablePrizeType.Turntable: record.LuckDrawString = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount; break; case (int)EnumTurntablePrizeType.Special: isAddPackage = true; if (specialItem == 0) { return(MessageCode.NbParameterError); } messCode = package.AddItems(specialItem, prizeEntity.ItemCount); if (messCode != MessageCode.Success) { return(messCode); } response.Data.PrizeCode = specialItem; response.Data.PrizeType = (int)EnumTurntablePrizeType.Item; record.LuckDrawString = (int)prizeEntity.PrizeType + "," + specialItem + "," + prizeEntity.ItemCount; break; default: break; } return(MessageCode.Success); }
/// <summary> /// 转盘抽奖 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public TurntableLuckDrawResponse TurntableLuckDraw(Guid managerId) { TurntableLuckDrawResponse response = new TurntableLuckDrawResponse(); response.Data = new TurntableLuckDraw(); try { var turntable = new TurntableFrame(managerId); if (turntable == null) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError)); } var turntableManager = turntable.TurntableManagerEntity; if (turntableManager == null) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError)); } if (turntableManager.GiveLuckyCoin <= 0 && turntableManager.LuckyCoin <= 0) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.LuckyCoinInsufficient)); } var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.Turntable); if (package == null) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbNoPackage)); } if (package.BlankCount < 1) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.ItemPackageFull)); } //抽奖 int specialItem = 0; var resultPrize = turntable.LuckDraw(ref specialItem); if (resultPrize == null) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError)); } int addPoint = 0; int addCoin = 0; bool isAddPackage = false; NbManagerEntity manager = null; var record = new TurntableLuckyrecordEntity(0, managerId, false, 1, DateTime.Now, ""); var messageCode = SendPrize(managerId, resultPrize, specialItem, ref addPoint, ref addCoin, ref isAddPackage, ref package, response, record); if (addCoin > 0) { manager = ManagerCore.Instance.GetManager(managerId); if (manager == null) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError)); } } if (messageCode != MessageCode.Success) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)messageCode)); } messageCode = SaveLuckDraw(managerId, addPoint, addCoin, isAddPackage, package, manager, turntable, record); if (messageCode != MessageCode.Success) { return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)messageCode)); } response.Data.WinAlotteryId = resultPrize.TurntableId; response.Data.TurntableInfo = GetTurntableInfo(turntable); } catch (Exception ex) { SystemlogMgr.Error("转盘抽奖", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
public static bool Update(TurntableLuckyrecordEntity turntableLuckyrecordEntity, DbTransaction trans = null, string zoneId = "") { var provider = new TurntableLuckyrecordProvider(zoneId); return(provider.Update(turntableLuckyrecordEntity, trans)); }