void BindOptions() { if (ddltNeedOpenGambleTitle.Items.Count == 0) { return; } GambleTitleEntity title = GambleTitleMgr.GetById(new Guid(ddltNeedOpenGambleTitle.SelectedValue), ZoneId); List <GambleOptionEntity> list = GambleOptionMgr.GetByTitleId(new Guid(ddltNeedOpenGambleTitle.SelectedValue), ZoneId); rblOptions.DataSource = list; rblOptions.DataTextField = "OptionContent"; rblOptions.DataValueField = "Idx"; rblOptions.DataBind(); if (title.ResultFlagId != Guid.Empty) { for (int i = 0, count = rblOptions.Items.Count; i < count; i++) { if (new Guid(rblOptions.Items[i].Value) == title.ResultFlagId) { rblOptions.Items[i].Selected = true; return; } } } }
/// <summary> /// 坐庄 /// </summary> /// <param name="managerId">庄家ID</param> /// <param name="rateStr">赔率字符串(以‘|’分割)</param> /// <param name="gambleTitleId">竞猜的主题ID</param> /// <param name="hostMoney">奖池的奖金</param> public AuctionBuyResponse ToBeHost(Guid managerId, string rateStr, Guid gambleTitleId, int hostMoney, string zoneId = "") { AuctionBuyResponse mc = new AuctionBuyResponse(); //如果赔率是空 默认 2|2|2 if (string.IsNullOrEmpty(rateStr)) { rateStr = "2|2|2"; } try { #region 各种验证 //奖池不得低于5000点券 if (hostMoney < CacheFactory.AppsettingCache.GetAppSettingToInt(EnumAppsetting.MinGamblePoolMoney)) { mc.Code = (int)MessageCode.GambleNotEnoughMoney; return(mc); } //是否存在该题目 GambleTitleEntity gte = GambleTitleMgr.GetById(gambleTitleId, zoneId); if (gte == null) { mc.Code = (int)MessageCode.GambleTitleNoExist; return(mc); } //该题目是否允许玩家坐庄 if (managerId != LeagueConst.GambleNpcId) { if (gte.IsOfficial == 1) { mc.Code = (int)MessageCode.ThisGambleTitleIsOfficial; return(mc); } } //最多三个庄家,检查有没有超过3家 if (gte.CurrentCount >= 3) { mc.Code = (int)MessageCode.GambleHostsIsFull; return(mc); } //竞猜还没有开始 if (gte.StartTime > DateTime.Now) { mc.Code = (int)MessageCode.GambleNotStart; return(mc); } if (gte.StopTime < DateTime.Now) { mc.Code = (int)MessageCode.GambleNotStart; return(mc); } //验证赔率和玩家资金 string[] rateArr = rateStr.Split('|'); List <GambleOptionEntity> optionList = GambleOptionMgr.GetByTitleId(gambleTitleId, zoneId); if (optionList == null || optionList.Count == 0 || optionList.Count != rateArr.Length) { mc.Code = (int)MessageCode.GambleParamError; return(mc); } decimal[] rateArrM = new decimal[rateArr.Length]; for (int i = 0, count = optionList.Count; i < count; i++) { rateArrM[i] = decimal.Round(Convert.ToDecimal(rateArr[i]), 2); } #endregion //支付奖金 string billingId = "Gamble" + ShareUtil.GenerateComb(); GambleHostEntity ghe = new GambleHostEntity(); ghe.ManagerId = managerId; if (managerId == LeagueConst.GambleNpcId) { ghe.ManagerName = "Official_Manager"; } else { ghe.ManagerName = ManagerCore.Instance.GetManager(managerId).Name; } ghe.TitleId = gambleTitleId; ghe.Status = 0; ghe.RowTime = DateTime.Now; ghe.TotalMoney = hostMoney; ghe.HostMoney = hostMoney; string conn = ConnectionFactory.Instance.GetConnectionString(zoneId, EnumDbType.Main); using (var transactionManager = new TransactionManager(conn)) { transactionManager.BeginTransaction(); if (managerId != LeagueConst.GambleNpcId) { MessageCode code = PayCore.Instance.GambleTrueMatch(managerId, hostMoney, billingId, transactionManager.TransactionObject); if (code != MessageCode.Success) { transactionManager.Rollback(); mc.Code = (int)code; return(mc); } } bool addResult = GambleTitleMgr.AddCount(gambleTitleId, transactionManager.TransactionObject, zoneId); if (!addResult) { transactionManager.Rollback(); mc.Code = (int)MessageCode.GambleHostsIsFull; return(mc); } int idxx = 0; if (!GambleHostMgr.InsertOnce(managerId, ghe.ManagerName, ghe.TitleId, ghe.HostMoney, ghe.TotalMoney, ghe.RowTime, ref idxx, transactionManager.TransactionObject)) { transactionManager.Rollback(); mc.Code = (int)MessageCode.GambleOnlyOnce; return(mc); } ghe.Idx = idxx; GambleHostoptionrateEntity ghoe = new GambleHostoptionrateEntity(); ghoe.HostId = ghe.Idx; ghoe.Status = 0; ghoe.RowTime = DateTime.Now; for (int i = 0, count = optionList.Count; i < count; i++) { ghoe.OptionId = optionList[i].Idx; ghoe.WinRate = rateArrM[i]; if (!GambleHostoptionrateMgr.Insert(ghoe, transactionManager.TransactionObject, zoneId)) { transactionManager.Rollback(); mc.Code = (int)MessageCode.GambleHostRateInsertError; return(mc); } } transactionManager.Commit(); } } catch (Exception ex) { SystemlogMgr.Error("Gamble.ToBeHost", ex); mc.Code = (int)MessageCode.Exception; return(mc); } mc.Data = new AuctionBuyEntity(); if (managerId != LeagueConst.GambleNpcId) { mc.Data.ManagerPoint = PayCore.Instance.GetPoint(managerId); } mc.Code = (int)MessageCode.Success; return(mc); }
protected void btnSend_Click(object sender, EventArgs e) { try { if (ddltNeedOpenGambleTitle.Items.Count == 0) { return; } if (rblOptions.SelectedIndex < 0) { ShowMessage("您需要选择一个正确选项"); return; } System.Text.StringBuilder msg = new System.Text.StringBuilder(); if (chkAll.Checked) { for (int i = 0, count = SZone.Items.Count; i < count; i++) { try { GambleTitleEntity title = GambleTitleMgr.GetById(new Guid(ddltNeedOpenGambleTitle.SelectedValue), SZone.Items[i].Value); if (title == null) { msg.Append(SZone.Items[i].Text + "|"); continue; } title.ResultFlagId = new Guid(rblOptions.SelectedValue); if (!GambleTitleMgr.Update(title, null, SZone.Items[i].Value)) { msg.Append(SZone.Items[i].Text + "|"); } } catch (Exception ex) { msg.Append(SZone.Items[i].Text + ";错误信息" + ex.Message + "|"); } } } else { GambleTitleEntity title = GambleTitleMgr.GetById(new Guid(ddltNeedOpenGambleTitle.SelectedValue), ZoneId); if (title == null) { ShowMessage("竞猜主题为空,不能公布任何选项!"); return; } //System.Text.StringBuilder msg = new System.Text.StringBuilder(); title.ResultFlagId = new Guid(rblOptions.SelectedValue); if (!GambleTitleMgr.Update(title, null, ZoneId)) { msg.Append(SZone.SelectedItem.Text + "|"); } } if (msg.Length > 0) { ShowMessage(msg.ToString() + "发布正确选项失败!"); } else { ShowMessage("成功发布正确选项!"); } } catch (Exception ex) { ShowMessage(ex.Message); } }
/// <summary> /// 增加奖池奖金 /// </summary> /// <param name="managerId">经理ID</param> /// <param name="gambleTitleId">竞猜主题ID</param> /// <param name="addMoney">需要增加的金额</param> /// <returns>是否增加奖金成功</returns> public AuctionBuyResponse AddMoney(Guid managerId, Guid gambleTitleId, int addMoney) { #region 各种验证 AuctionBuyResponse mc = new AuctionBuyResponse(); GambleHostEntity he = GambleHostMgr.GetByManagerIdAndTitleId(managerId, gambleTitleId); if (he == null) { mc.Code = (int)MessageCode.GambleTitleNoExist; return(mc); } //是否存在该题目 GambleTitleEntity gte = GambleTitleMgr.GetById(he.TitleId); if (gte == null) { mc.Code = (int)MessageCode.GambleTitleNoExist; return(mc); } //该题目是否允许玩家坐庄 if (gte.IsOfficial == 1) { mc.Code = (int)MessageCode.ThisGambleTitleIsOfficial; return(mc); } //竞猜还没有开始 if (gte.StartTime > DateTime.Now) { mc.Code = (int)MessageCode.GambleNotStart; return(mc); } if (gte.StopTime < DateTime.Now) { mc.Code = (int)MessageCode.GambleNotStart; return(mc); } //GambleHostEntity he = GambleHostMgr.GetByManagerIdAndTitleId(managerId, gambleTitleId); if (he == null || he.Idx == 0) { mc.Code = (int)MessageCode.GambleUareNotHost; return(mc); } #endregion //支付奖金 string billingId = "Gamble_" + ShareUtil.GenerateComb().ToString(); try { using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); MessageCode code = PayCore.Instance.GambleTrueMatch(managerId, addMoney, billingId, transactionManager.TransactionObject); if (code != MessageCode.Success) { transactionManager.Rollback(); mc.Code = (int)MessageCode.GamblePayError; return(mc); } he.TotalMoney += addMoney; he.HostMoney += addMoney; bool updateResult = GambleHostMgr.Update(he, transactionManager.TransactionObject); if (!updateResult) { transactionManager.Rollback(); mc.Code = (int)MessageCode.GambleAddMoneyError; return(mc); } transactionManager.Commit(); } } catch (Exception ex) { SystemlogMgr.Error("Gamble.AddMoney", ex); mc.Code = (int)MessageCode.Exception; } mc.Data = new AuctionBuyEntity(); mc.Data.ManagerPoint = PayCore.Instance.GetPoint(managerId); return(mc); }