/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016/6/7 15:54:23</remarks> public bool Update(GambleRankrewardlogEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_GambleRankrewardlog_Update"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx); database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status); database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime); 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的当前记录读取到GambleRankrewardlogEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public GambleRankrewardlogEntity LoadSingleRow(IDataReader reader) { var obj = new GambleRankrewardlogEntity(); obj.Idx = (System.Int32)reader["Idx"]; obj.Status = (System.Int32)reader["Status"]; obj.UpdateTime = (System.DateTime)reader["UpdateTime"]; return(obj); }
/// <summary> /// 发排行榜奖励 /// </summary> public bool GiveRankReward(string zoneId) { try { //获取最新的发奖操作日志 GambleRankrewardlogEntity rewardEntity = GambleRankrewardlogMgr.GetLastestOne(zoneId); if (rewardEntity == null) { GambleRankrewardlogMgr.AddNewOne(null, zoneId); rewardEntity = GambleRankrewardlogMgr.GetLastestOne(zoneId); //return false; } GiveReward(zoneId); if (CheckRewardIsFinished(zoneId)) { rewardEntity.Status = 2; GambleRankMgr.MoveToHistory(rewardEntity.Idx, zoneId); //GambleRankrewardlogMgr.AddNewOne(null, zoneId); } rewardEntity.UpdateTime = DateTime.Now; GambleRankrewardlogMgr.Update(rewardEntity, null, zoneId); //switch ((EnumGambleRankRewardStatus)rewardEntity.Status) //{ // //判断是否到了发奖时间,到了就改变状态为发奖中,没有就改变updateTime // //发奖时间为过期后的1小时之内 // case EnumGambleRankRewardStatus.Init: // if (IsInRewardTime()) // { // rewardEntity.Status = 1; // } // break; // //如果是到了发奖中,就执行发奖操作,全部操作完毕了状态改为发奖完成 // case EnumGambleRankRewardStatus.Rewarding: // GiveReward(); // if(CheckRewardIsFinished()) // rewardEntity.Status = 2; // break; // //如果是发奖完成了,需要清数据,然后新增一条操作日志 // case EnumGambleRankRewardStatus.Rewarded: // GambleRankrewardlogMgr.AddNewOne(); // break; // default: break; //} rewardEntity.UpdateTime = DateTime.Now; GambleRankrewardlogMgr.Update(rewardEntity, null, zoneId); return(true); } catch (Exception ex) { SystemlogMgr.Error("GambleCore.GiveRankReward", ex); } return(false); }
/// <summary> /// GetLastestOne /// </summary> /// <returns>GambleRankrewardlogEntity</returns> /// <remarks>2016/6/7 15:54:23</remarks> public GambleRankrewardlogEntity GetLastestOne() { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("C_GambleRankRewardLog_GetLastestOne"); GambleRankrewardlogEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
/// <summary> /// GetById /// </summary> /// <param name="idx">idx</param> /// <returns>GambleRankrewardlogEntity</returns> /// <remarks>2016/6/7 15:54:23</remarks> public GambleRankrewardlogEntity GetById(System.Int32 idx) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_GambleRankrewardlog_GetById"); database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx); GambleRankrewardlogEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
/// <summary> /// 每个月发奖 /// </summary> public void GiveMonthRankReward() { try { //如果没到发奖时间 if (!IsInGiveMonthRewardTime()) { return; } //获取最新的发奖操作日志 GambleRankrewardlogEntity rewardEntity = GambleRankrewardlogMgr.GetLastestOne(string.Empty); if (rewardEntity == null) { GambleRankrewardlogMgr.AddNewOne(); rewardEntity = GambleRankrewardlogMgr.GetLastestOne(); return; } //如果上一次日志记录久远,需要重新创建一条 if (rewardEntity.UpdateTime.AddMinutes(90) < DateTime.Now) { GambleRankrewardlogMgr.AddNewOne(); rewardEntity = GambleRankrewardlogMgr.GetLastestOne(); return; } //如果已经发过奖了,直接返回 if (rewardEntity.Status == 2) { return; } //执行发奖操作 GiveRankReward(string.Empty); } catch (Exception ex) { SystemlogMgr.Error("Gamble.GiveMonthRankReward", ex); } }
public static bool Update(GambleRankrewardlogEntity gambleRankrewardlogEntity, DbTransaction trans = null, string zoneId = "") { var provider = new GambleRankrewardlogProvider(zoneId); return(provider.Update(gambleRankrewardlogEntity, trans)); }