public string ResetUserBalancePwd(string userId) { var newPwd = string.Empty; //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserMobileManager(); //var entity = manager.GetUserMobile(userId); //if (entity == null) // throw new ArgumentException("此用户从未进行过手机认证"); //if (entity.Mobile != mobileNumber) // throw new ArgumentException("用户认证的手机号码不正确"); var balanceManager = new UserBalanceManager(); var balance = balanceManager.QueryUserBalance(userId); if (balance == null) { throw new ArgumentException("用户资金信息查询出错"); } balance.Password = Encipherment.MD5(string.Format("{0}{1}", C_DefaultPassword, _gbKey)).ToUpper(); balanceManager.UpdateUserBalance(balance); biz.CommitTran(); } return(newPwd); }
/// <summary> /// 拒绝提现 /// </summary> public CommonActionResult RefusedWithdrawByUserId(string orderId, string refusedMsg, string userId) { try { //lock (UsefullHelper.moneyLocker) //{ using (var tran = new GameBizBusinessManagement()) { tran.BeginTran(); //! 执行扩展功能代码 - 启动事务后 BusinessHelper.ExecPlugin <IRefuseWithdraw_AfterTranBegin>(new object[] { orderId }); new FundBusiness().RefusedWithdraw(orderId, refusedMsg, userId); //! 执行扩展功能代码 - 提交事务前 BusinessHelper.ExecPlugin <IRefuseWithdraw_BeforeTranCommit>(new object[] { orderId }); tran.CommitTran(); } //} return(new CommonActionResult(true, "拒绝提现成功")); } catch (Exception ex) { throw new Exception("拒绝提现出错 - " + ex.Message, ex); } }
/// <summary> /// 使用优惠券 /// </summary> public void ExchangeCoupons(string userId, string couponsNumber) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var activityManager = new A20131105Manager(); var entity = activityManager.QueryA20131105_优惠券(couponsNumber); if (entity == null) { throw new Exception(string.Format("优惠券{0}不存在", couponsNumber)); } if (!entity.CanUsable) { throw new Exception(string.Format("优惠券{0}已使用", couponsNumber)); } var old = activityManager.QueryA20131105_优惠券(entity.Summary, userId); if (old != null) { throw new Exception("同一类型优惠券只能使用一张"); } entity.CanUsable = false; entity.BelongUserId = userId; activityManager.UpdateA20131105_优惠券(entity); //BusinessHelper.Payin_2Balance(BusinessHelper.FundCategory_Activity, couponsNumber, couponsNumber, false, "", "", userId, AccountType.Common, entity.Money, string.Format("优惠券{0}兑换{1:N2}元", couponsNumber, entity.Money)); BusinessHelper.Payin_To_Balance(AccountType.RedBag, BusinessHelper.FundCategory_Activity, userId, couponsNumber, entity.Money, string.Format("优惠券{0}兑换{1:N2}元", couponsNumber, entity.Money), RedBagCategory.Activity); biz.CommitTran(); } }
public CommonActionResult UpdateBJDCTicketResult(string schemeId, string ticketId, bool isSuccess, string userToken) { // 验证用户身份及权限 string userId; GameBizAuthBusiness.ValidateAuthentication(userToken, "W", "C040", out userId); try { lock (UsefullHelper.moneyLocker) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); new BJDCBusiness().UpdateBJDCTicketResult(schemeId, ticketId, isSuccess); biz.CommitTran(); } } return(new CommonActionResult(true, "更新出票状态成功")); } catch (Exception ex) { throw new Exception("北京单场更新出票结果失败 - " + ex.Message, ex); } }
/// <summary> /// 成功提现 /// </summary> public CommonActionResult CompleteWithdraw(string orderId, string responseMsg, string userToken) { // 验证用户身份及权限 var userId = GameBizAuthBusiness.ValidateUserAuthentication(userToken); try { //lock (UsefullHelper.moneyLocker) //{ using (var tran = new GameBizBusinessManagement()) { tran.BeginTran(); //! 执行扩展功能代码 - 启动事务后 BusinessHelper.ExecPlugin <ICompleteWithdraw_AfterTranBegin>(new object[] { orderId }); new FundBusiness().CompleteWithdraw(orderId, responseMsg, userId); //! 执行扩展功能代码 - 提交事务前 BusinessHelper.ExecPlugin <ICompleteWithdraw_BeforeTranCommit>(new object[] { orderId }); tran.CommitTran(); } //} return(new CommonActionResult(true, "完成提现成功")); } catch (Exception ex) { throw new Exception("完成提现出错 - " + ex.Message, ex); } }
/// <summary> /// 更新手机认证 /// </summary> public void UpdateMobileAuthen(string userId, string mobile, string updateBy) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserMobileManager(); var mobileInfo = manager.GetMobileInfoByMobile(mobile); var entity = manager.GetUserMobile(userId); if (entity == null) { throw new ArgumentException("此用户从未进行过手机认证"); } if (mobileInfo != null && mobileInfo.UserId != userId) { if (!string.IsNullOrEmpty(mobileInfo.Mobile) && mobileInfo.IsSettedMobile) { throw new Exception("当前手机号码已被他人占用!"); } } entity.Mobile = mobile; entity.RequestTimes = 0; entity.IsSettedMobile = true; entity.UpdateBy = updateBy; entity.UpdateTime = DateTime.Now; manager.UpdateUserMobile(entity); biz.CommitTran(); } }
public CommonActionResult BJDCQueryTicket(string orderId, string userToken) { string[] orderArray = orderId.Split('|'); if (orderArray.Length != 2) { throw new Exception("北京单场传入OrderId格式不正确:" + orderId); } // 验证用户身份及权限 string userId; GameBizAuthBusiness.ValidateAuthentication(userToken, "W", "C040", out userId); try { string msg = string.Empty; lock (UsefullHelper.moneyLocker) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var agentToken = ConfigurationManager.AppSettings["GatewayAgentToken"]; msg = new BJDCBusiness().BJDCQueryTicket(orderArray[0], orderArray[1], agentToken); biz.CommitTran(); } } return(new CommonActionResult(true, msg)); } catch (Exception ex) { throw new Exception("北京单场票查询失败 - " + ex.Message, ex); } }
/// <summary> /// 取消关注 /// </summary> public void BDFXCancelAttention(string currUserId, string bgzUserId) { using (var biz = new GameBizBusinessManagement()) { #region 取消关注 biz.BeginTran(); var manager = new BDFXManager(); var singleTreasureAttention = manager.QuerySingleTreasureAttentionByUserId(bgzUserId, currUserId); if (singleTreasureAttention == null || string.IsNullOrEmpty(singleTreasureAttention.ConcernedUserId)) { throw new Exception("您还未关注他"); } manager.DeleteSingleTreasureAttention(singleTreasureAttention); //修改被关注者信息 var BGZSummary = manager.QuerySingleTreasureAttentionSummaryByUserId(bgzUserId); if (BGZSummary != null && !string.IsNullOrEmpty(BGZSummary.UserId)) { BGZSummary.BeConcernedUserCount -= 1; BGZSummary.UpdateTime = DateTime.Now; manager.UpdateSingleTreasureAttentionSummary(BGZSummary); } //修改关注者信息 var GZSummary = manager.QuerySingleTreasureAttentionSummaryByUserId(currUserId); if (GZSummary != null && !string.IsNullOrEmpty(GZSummary.UserId)) { GZSummary.ConcernedUserCount -= 1; GZSummary.UpdateTime = DateTime.Now; manager.UpdateSingleTreasureAttentionSummary(GZSummary); } biz.CommitTran(); #endregion } }
/// <summary> /// 更新实名认证 /// </summary> public void UpdateRealNameAuthentication(string userId, string realName, string idCard, string updateBy) { using (var manager = new UserRealNameManager()) { var other = manager.QueryUserRealName(idCard); if (other != null) { throw new ArgumentException(string.Format("此证件号【{0}】已被其他用户认证。", idCard)); } } //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserRealNameManager(); var entity = manager.GetUserRealName(userId); var realNameInfo = manager.GetRealNameInfoByName(realName, idCard); if (entity == null) { throw new ArgumentException("此用户从未进行过实名认证"); } entity.RealName = realName; entity.IsSettedRealName = true; entity.IdCardNumber = idCard; entity.UpdateBy = updateBy; entity.UpdateTime = DateTime.Now; manager.UpdateUserRealName(entity); biz.CommitTran(); } }
/// <summary> /// 恢复代理 /// </summary> public void RecoveryAgent(string userId) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserBalanceManager(); var register = manager.LoadUserRegister(userId); if (register == null) { throw new Exception("用户不存在"); } var agent = new OCAgentManager().QueryOCAgent(userId); if (agent == null) { throw new Exception("代理关系不存在"); } register.IsAgent = true; manager.UpdateUserRegister(register); biz.CommitTran(); } }
/// <summary> /// 交换实名认证 /// </summary> public void SwapRealNameAuthen(string fromUserId, string toUserId, string updateBy) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserRealNameManager(); var fromEntity = manager.GetUserRealName(fromUserId); if (fromEntity == null) { throw new ArgumentException(fromUserId + "从未进行过实名认证"); } fromEntity.IsSettedRealName = false; fromEntity.UpdateBy = updateBy; fromEntity.UpdateTime = DateTime.Now; manager.UpdateUserRealName(fromEntity); var toEntity = manager.GetUserRealName(toUserId); if (toEntity != null) { toEntity.RealName = fromEntity.RealName; toEntity.IdCardNumber = fromEntity.IdCardNumber; toEntity.IsSettedRealName = true; toEntity.UpdateBy = updateBy; toEntity.UpdateTime = DateTime.Now; } else { var toUser = manager.LoadUser(toUserId); if (toUser == null) { throw new ArgumentException(toUserId + "不存在"); } manager.AddUserRealName(new UserRealName { UserId = toUserId, User = toUser, AuthFrom = fromEntity.AuthFrom, RealName = fromEntity.RealName, CardType = fromEntity.CardType, IdCardNumber = fromEntity.IdCardNumber, IsSettedRealName = true, CreateBy = updateBy, UpdateBy = updateBy, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, }); } biz.CommitTran(); } }
/// <summary> /// 交换手机认证 /// </summary> public void SwapMobileAuthen(string fromUserId, string toUserId, string updateBy) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserMobileManager(); var fromEntity = manager.GetUserMobile(fromUserId); if (fromEntity == null) { throw new ArgumentException(fromUserId + "从未进行过手机认证"); } fromEntity.IsSettedMobile = false; fromEntity.UpdateBy = updateBy; fromEntity.UpdateTime = DateTime.Now; manager.UpdateUserMobile(fromEntity); var toEntity = manager.GetUserMobile(toUserId); if (toEntity != null) { toEntity.Mobile = fromEntity.Mobile; toEntity.IsSettedMobile = true; toEntity.RequestTimes = 0; toEntity.UpdateBy = updateBy; toEntity.UpdateTime = DateTime.Now; } else { var toUser = manager.LoadUser(toUserId); if (toUser == null) { throw new ArgumentException(toUserId + "不存在"); } manager.AddUserMobile(new UserMobile { UserId = toUserId, User = toUser, AuthFrom = fromEntity.AuthFrom, IsSettedMobile = true, Mobile = fromEntity.Mobile, RequestTimes = 0, CreateBy = updateBy, UpdateBy = updateBy, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, }); } biz.CommitTran(); } }
public void ComplateTicket(string userId, string schemeId, decimal totalMoney, decimal totalErrorMoney) { return; if (string.IsNullOrEmpty(schemeId)) { return; } if (totalErrorMoney <= 0M) { return; } //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var keyLine = string.Format("{0}{1}{2}", schemeId, totalMoney, totalErrorMoney); var smsManager = new SMSSendLogManager(); var log = smsManager.QuerySMSSendLog(keyLine); if (log != null) { var manager = new SchemeManager(); var orderDetail = manager.QueryOrderDetail(schemeId); if (orderDetail != null) { var entity = new External.Domain.Managers.Authentication.UserMobileManager().GetUserMobile(orderDetail.UserId); if (entity != null && !string.IsNullOrEmpty(entity.Mobile)) { var content = string.Format("用户您好,由于系统繁忙,您投注的订单{0}总金额{1:N2}元,其中{2:N2}元出票失败。请登录网站查看", schemeId, totalMoney, totalErrorMoney); smsManager.AddSMSSendLog(new External.Domain.Entities.SMSLog.SMSSendLog { CreateTime = DateTime.Now, KeyLine = keyLine, UserId = orderDetail.UserId, Mobile = entity.Mobile, Content = content, }); var smsmres = Common.Net.SMS.SMSSenderFactory.SendSMS(entity.Mobile, content); } } } biz.CommitTran(); } }
public CommonActionResult BJDCBetting(BJDCBettingInfo info, string password, string userToken) { // 验证用户身份及权限 string userId; GameBizAuthBusiness.ValidateAuthentication(userToken, "W", "C010", out userId); try { //! 执行扩展功能代码 - 启动事务前 Plugin.Core.PluginRunner.ExecPlugin <IBJDCBettingInfo_BeforeTranBegin>(info); string schemeId; lock (UsefullHelper.moneyLocker) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); //! 执行扩展功能代码 - 启动事务后 Plugin.Core.PluginRunner.ExecPlugin <IBJDCBettingInfo_AfterTranBegin>(info); schemeId = new BJDCBusiness().BJDCBetting(info, userId, password); //! 执行扩展功能代码 - 提交事务前 Plugin.Core.PluginRunner.ExecPlugin <IBJDCBettingInfo_BeforeTranCommit>(new object[] { info, schemeId }); //? 提交分布式事务 biz.CommitTran(); } //! 执行扩展功能代码 - 提交事务后 Plugin.Core.PluginRunner.ExecPlugin <IBJDCBettingInfo_AfterTranCommit>(new object[] { info, schemeId }); } return(new CommonActionResult { IsSuccess = true, ReturnValue = schemeId, Message = " 北京单场投注成功", }); } catch (Exception ex) { //! 执行扩展功能代码 - 发生异常 Plugin.Core.PluginRunner.ExecPlugin <IBJDCBettingInfo_OnError>(new object[] { info, ex }); throw new Exception("北京单场投注失败 - " + ex.Message, ex); } }
/// <summary> /// 注销实名认证 /// </summary> public void LogOffRealNameAuthen(string userId) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserRealNameManager(); var entity = manager.GetUserRealName(userId); if (entity == null) { throw new ArgumentException("此用户从未进行过实名认证"); } manager.DeleteUserRealName(entity); biz.CommitTran(); } }
public CommonActionResult BJDCPrize(string schemeId, bool isBonus, decimal preTaxBonusMoney, decimal afterTaxBonusMoney, string userToken) { // 验证用户身份及权限 string userId; GameBizAuthBusiness.ValidateAuthentication(userToken, "W", "C040", out userId); try { //! 执行扩展功能代码 - 启动事务前 Plugin.Core.PluginRunner.ExecPlugin <IPrizeOrder_BeforeTranBegin>(new object[] { schemeId, isBonus, preTaxBonusMoney, afterTaxBonusMoney }); lock (UsefullHelper.moneyLocker) { var result = new PrizeResult(); using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); //! 执行扩展功能代码 - 启动事务后 Plugin.Core.PluginRunner.ExecPlugin <IPrizeOrder_AfterTranBegin>(new object[] { schemeId, isBonus, preTaxBonusMoney, afterTaxBonusMoney }); result = new BJDCBusiness().BJDCPrize(schemeId, isBonus ? BonusStatus.Win : BonusStatus.Lose, preTaxBonusMoney, afterTaxBonusMoney); //! 执行扩展功能代码 - 启动提交前 Plugin.Core.PluginRunner.ExecPlugin <IPrizeOrder_BeforeTranCommit>(new object[] { result }); biz.CommitTran(); } //if (isBonus) //{ // GameBizWcfServiceCache.RefreshLastBonusList(result.GameCode); //} //! 执行扩展功能代码 - 启动事务后 Plugin.Core.PluginRunner.ExecPlugin <IPrizeOrder_AfterTranCommit>(new object[] { result }); } return(new CommonActionResult(true, "派奖完成")); } catch (Exception ex) { //! 执行扩展功能代码 - 发生异常 Plugin.Core.PluginRunner.ExecPlugin <IPrizeOrder_OnError>(new object[] { schemeId, isBonus, preTaxBonusMoney, afterTaxBonusMoney, ex }); throw new Exception(string.Format("订单{0} 派奖失败 - {1} ! ", schemeId, ex.Message), ex); } }
/// <summary> /// 禁用用户 /// </summary> public void DisableUser(string userId) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new UserBalanceManager(); var register = manager.LoadUserRegister(userId); if (register == null) { throw new Exception("用户不存在"); } register.IsEnable = false; manager.UpdateUserRegister(register); biz.CommitTran(); } }
/// <summary> /// 生成优惠券 /// </summary> public void BuildCoupons(string summary, decimal money, int count) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var activityManager = new A20131105Manager(); for (int i = 0; i < count; i++) { var md5 = Encipherment.MD5(Guid.NewGuid().ToString()); var codeList = new List <string>(); var t = 0; for (int j = 0; j < md5.Length; j++) { if (t == 4 && codeList.Count < 19) { codeList.Add("-"); t = 0; } if (j % 2 == 0) { t++; codeList.Add(md5[j].ToString()); } } var code = string.Join("", codeList.ToArray()).ToUpper(); activityManager.AddA20131105_优惠券(new A20131105_优惠券 { CreateTime = DateTime.Now, BelongUserId = string.Empty, CanUsable = true, Money = money, Summary = summary, Number = code, }); } biz.CommitTran(); } }
public void AdminResetUserBalancePwd(string userId, string pwd) { //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var balanceManager = new UserBalanceManager(); var balance = balanceManager.QueryUserBalance(userId); if (balance == null) { throw new ArgumentException("用户资金信息查询出错"); } balance.Password = Encipherment.MD5(pwd); balanceManager.UpdateUserBalance(balance); biz.CommitTran(); } }
/// <summary> /// 修改领取奖品状态 /// </summary> public void ToGetThePrize(int id, string userId) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new A20140731_DouDouManager(); var entity = manager.QueryDouDouById(id); if (entity == null) { throw new Exception("修改信息未被查询到"); } if (entity.IsGive == true) { throw new Exception("该奖品已领取"); } entity.IsGive = true; manager.UpdateA20140731_DouDou(entity); biz.CommitTran(); } }
public void OrderPrize_AfterTranCommit(string userId, string schemeId, string gameCode, string gameType, string issuseNumber, decimal orderMoney, bool isBonus, decimal preTaxBonusMoney, decimal afterTaxBonusMoney, bool isVirtualOrder, DateTime prizeTime) { #region 方案一(new) using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var celebrityManager = new CelebrityManager(); var modelCycleEntityList = celebrityManager.QueryWinnerModelCycleBySchemeId(schemeId); if (modelCycleEntityList != null && modelCycleEntityList.Count > 0) { foreach (var modelCycle in modelCycleEntityList) { try { //修改每期方案信息 modelCycle.CurrBonusMoney = afterTaxBonusMoney; modelCycle.ModelProgressStatus = isBonus ? ModelProgressStatus.Winning : ModelProgressStatus.NoBonus; modelCycle.IsComplete = true; modelCycle.CompleteTime = DateTime.Now; celebrityManager.EditWinnerModelCycle(modelCycle); //修改模型 var tempWinnerModel = celebrityManager.QueryWinnerModelByModelId(modelCycle.ModelId); if (tempWinnerModel == null) { throw new Exception("未查询到模型" + modelCycle.ModelId + ""); } tempWinnerModel.TotalBonusIssuseCount += isBonus ? 1 : 0;//统计累计中奖期数 tempWinnerModel.TotalModelBonusMoney += isBonus ? afterTaxBonusMoney : 0; //winnerModel.TotalNotBonusIssuseCount += isBonus ? 0 : 1;//统计累计未中奖期数 //tempWinnerModel.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; //if (isBonus)//计算累计盈利金额 //{ // var profitMoney = afterTaxBonusMoney - modelCycle.CurrBettingMoney; // if (profitMoney > 0M) // tempWinnerModel.TotalProfitMoney += profitMoney; //} if (tempWinnerModel.TotalModelBettingMoney > 0M)//计算总回报率 { var reportRatio = Math.Truncate((tempWinnerModel.TotalModelBonusMoney / tempWinnerModel.TotalModelBettingMoney) * 100) / 100; tempWinnerModel.TotalReportRatio += reportRatio; } if (tempWinnerModel.TotalBettingIssuseCount > 0)//计算中奖频率 { decimal bonusFrequency = Math.Truncate((tempWinnerModel.TotalBonusIssuseCount / tempWinnerModel.TotalBettingIssuseCount) * 100M) / 100; tempWinnerModel.BonusFrequency += bonusFrequency; } celebrityManager.EditWinnerModel(tempWinnerModel); } catch { } } } else { var modelSchemeDetailEntity = celebrityManager.QueryWinnerModelSchemeDetailBySchemeId(schemeId); if (modelSchemeDetailEntity == null) { return; } var modelSchemeEntity = celebrityManager.QueryWinnerModelSchemeByKeyLine(modelSchemeDetailEntity.ModelKeyLine); if (modelSchemeEntity == null) { throw new Exception("未查询到追号计划"); } var winnerModel = celebrityManager.QueryWinnerModelByModelId(modelSchemeEntity.ModelId); if (winnerModel == null) { throw new Exception("未查询到模型信息"); } winnerModel.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; var profitMoneyYL = afterTaxBonusMoney - modelSchemeDetailEntity.CurrBettingMoney; if (isBonus)//计算累计盈利金额 { if (profitMoneyYL > 0M) { winnerModel.TotalProfitMoney += profitMoneyYL; } } celebrityManager.EditWinnerModel(winnerModel); //修改追号计划 var detailList = new List <WinnerModelSchemeDetail>(); //modelSchemeEntity.SchemeProgressStatus = SchemeProgressStatus.ModelStop; modelSchemeEntity.CompleteIssuseCount += 1; modelSchemeEntity.CompleteIssuseMoney += orderMoney; modelSchemeEntity.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; var profiteRatio = Math.Truncate(((modelSchemeEntity.TotalBonusMoney - modelSchemeEntity.CompleteIssuseMoney) / modelSchemeEntity.CompleteIssuseMoney) * 100M) / 100; //计算盈利比率 if (modelSchemeEntity.IsProfitedStop && profitMoneyYL > 0M) //判断盈利后停止 { modelSchemeEntity.IsStop = true; modelSchemeEntity.StopTime = DateTime.Now; modelSchemeEntity.StopDesc = "追号计划盈利,自动停止"; modelSchemeEntity.SchemeProgressStatus = SchemeProgressStatus.ModelStop; } else if (modelSchemeEntity.ProfiteRatio > 0M && profiteRatio >= modelSchemeEntity.ProfiteRatio)//判断当达到用户设置盈利比率后,停止追号计划 { modelSchemeEntity.IsStop = true; modelSchemeEntity.StopTime = DateTime.Now; modelSchemeEntity.StopDesc = "追号计划达到盈利比率,自动停止"; modelSchemeEntity.SchemeProgressStatus = SchemeProgressStatus.ModelStop; } // 判断是否该退还模型作者先行赔付金额、提取佣金 if (modelSchemeEntity.TotalChaseIssuseCount == modelSchemeEntity.CompleteIssuseCount) //判断当前追号计划是否完成 { if (modelSchemeEntity.CurrLossMoney > 0M) //判断是否有先行赔付金额 { var profitMoney = modelSchemeEntity.TotalBonusMoney - (modelSchemeEntity.TotalMoney + modelSchemeEntity.CurrLossMoney); if (profitMoney > 0)//追号计划盈利 { //退还作者先行赔付金 BusinessHelper.Payback_To_Balance(BusinessHelper.FundCategory_WinnerModelPayBackFirstPayMoney, winnerModel.UserId, modelSchemeEntity.ModelKeyLine, modelSchemeEntity.CurrLossMoney, string.Format("追号计划{0}盈利,退还作者先行赔付金额{1}元", modelSchemeEntity.ModelKeyLine, modelSchemeEntity.CurrLossMoney)); //计算佣金 var money = modelSchemeEntity.TotalBonusMoney - modelSchemeEntity.CompleteIssuseMoney; if (money > 0M) { money = money * winnerModel.CommissionRitio; if (money >= 0.01M) { BusinessHelper.Payback_To_Balance(BusinessHelper.FundCategory_Commission, winnerModel.UserId, modelSchemeEntity.ModelKeyLine, money, string.Format("追号计划{0}盈利,模型作者先行赔付提取佣金{1}元", modelSchemeEntity.ModelKeyLine, money)); } } } } } //修改追号详情 modelSchemeDetailEntity.AfterTaxBonusMoney = afterTaxBonusMoney; modelSchemeDetailEntity.IsComplete = true; detailList.Add(modelSchemeDetailEntity); if (modelSchemeEntity.IsStop)//判断当追号计划停止后,修改完成标识、完成期数、完成金额 { var modelSchemeDetailList = celebrityManager.QueryWinnerModelSchemeDetailByKeyLine(modelSchemeEntity.ModelKeyLine); foreach (var item in modelSchemeDetailList) { item.IsComplete = true; detailList.Add(item); } modelSchemeEntity.CompleteIssuseCount = modelSchemeEntity.TotalChaseIssuseCount; modelSchemeEntity.CompleteIssuseMoney = modelSchemeEntity.TotalMoney; } celebrityManager.UpdateWinnerModelScheme(modelSchemeEntity); celebrityManager.UpdateWinnerModelSchemeDetail(detailList.ToArray()); } biz.CommitTran(); } #endregion #region 方案一(old) //using (var biz = new GameBizBusinessManagement()) //{ // biz.BeginTran(); // var celebrityManager = new CelebrityManager(); // //修改追号详情 // var modelSchemeDetailEntity = celebrityManager.QueryWinnerModelSchemeDetailBySchemeId(schemeId); // if (modelSchemeDetailEntity == null || string.IsNullOrEmpty(modelSchemeDetailEntity.ModelKeyLine))//当追号详情为空时,检查每期方案表,当前期是否被购买,如果没有任何购买记录则需要修改相应字段数据 // { // var modelCycleList = celebrityManager.QueryWinnerModelCycleBySchemeId(schemeId); // if (modelCycleList != null && modelCycleList.Count > 0) // { // foreach (var item in modelCycleList) // { // var tempWinnerModelScheme = celebrityManager.QueryWinnerModelSchemeListByModelId(item.ModelId); // if (tempWinnerModelScheme == null||tempWinnerModelScheme.Count<=0) // { // //修改每期方案信息 // item.CurrBonusMoney = afterTaxBonusMoney; // item.ModelProgressStatus = isBonus ? ModelProgressStatus.Winning : ModelProgressStatus.NoBonus; // item.IsComplete = true; // item.CompleteTime = DateTime.Now; // celebrityManager.EditWinnerModelCycle(item); // var tempWinnerModel = celebrityManager.QueryWinnerModelByModelId(item.ModelId); // //修改模型 // tempWinnerModel.TotalBonusIssuseCount += isBonus ? 1 : 0;//统计累计中奖期数 // //winnerModel.TotalNotBonusIssuseCount += isBonus ? 0 : 1;//统计累计未中奖期数 // tempWinnerModel.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; // if (isBonus)//计算累计盈利金额 // { // var profitMoney = afterTaxBonusMoney - item.CurrBettingMoney; // if (profitMoney > 0M) // tempWinnerModel.TotalProfitMoney += profitMoney; // } // if (tempWinnerModel.TotalSaleMoney > 0M)//计算总回报率 // { // var reportRatio = Math.Truncate((tempWinnerModel.TotalBonusMoney / tempWinnerModel.TotalSaleMoney) * 100) / 100; // tempWinnerModel.TotalReportRatio += reportRatio; // } // if (tempWinnerModel.TotalBettingIssuseCount > 0)//计算中奖频率 // { // decimal bonusFrequency = Math.Truncate((tempWinnerModel.TotalBonusIssuseCount / tempWinnerModel.TotalBettingIssuseCount) * 100M) / 100; // tempWinnerModel.BonusFrequency += bonusFrequency; // } // celebrityManager.EditWinnerModel(tempWinnerModel); // } // } // } // } // else // { // var modelSchemeEntity = celebrityManager.QueryWinnerModelSchemeByKeyLine(modelSchemeDetailEntity.ModelKeyLine); // if (modelSchemeEntity == null) // throw new Exception("未查询到追号计划"); // var winnerModel = celebrityManager.QueryWinnerModelByModelId(modelSchemeEntity.ModelId); // if (winnerModel == null) // throw new Exception("未查询到模型信息"); // var modelCycl = celebrityManager.QueryWinnerModelCycleById(modelSchemeDetailEntity.ModelCycleId); // if (modelCycl == null) // throw new Exception("未查询到每期方案信息"); // //修改模型 // winnerModel.TotalBonusIssuseCount += isBonus ? 1 : 0;//统计累计中奖期数 // //winnerModel.TotalNotBonusIssuseCount += isBonus ? 0 : 1;//统计累计未中奖期数 // winnerModel.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; // if (isBonus)//计算累计盈利金额 // { // var profitMoney = afterTaxBonusMoney - modelCycl.CurrBettingMoney; // if (profitMoney > 0M) // winnerModel.TotalProfitMoney += profitMoney; // } // if (winnerModel.TotalSaleMoney > 0M)//计算总回报率 // { // var reportRatio = Math.Truncate((winnerModel.TotalBonusMoney / winnerModel.TotalSaleMoney) * 100) / 100; // winnerModel.TotalReportRatio = reportRatio; // } // if (winnerModel.TotalBettingIssuseCount > 0)//计算中奖频率 // { // decimal bonusFrequency = Math.Truncate((winnerModel.TotalBonusIssuseCount / winnerModel.TotalBettingIssuseCount) * 100M) / 100; // winnerModel.BonusFrequency = bonusFrequency; // } // celebrityManager.EditWinnerModel(winnerModel); // //修改每期方案信息 // modelCycl.CurrBonusMoney = afterTaxBonusMoney; // modelCycl.ModelProgressStatus = isBonus ? ModelProgressStatus.Winning : ModelProgressStatus.NoBonus; // modelCycl.IsComplete = true; // modelCycl.CompleteTime = DateTime.Now; // celebrityManager.EditWinnerModelCycle(modelCycl); // //修改追号计划 // var detailList = new List<WinnerModelSchemeDetail>(); // modelSchemeEntity.SchemeProgressStatus = SchemeProgressStatus.ModelStop; // modelSchemeEntity.CompleteIssuseCount += 1; // modelSchemeEntity.CompleteIssuseMoney += orderMoney; // modelSchemeEntity.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; // if (modelSchemeEntity.IsProfitedStop)//判断盈利后停止 // { // var profiteRatio = Math.Truncate(((modelSchemeEntity.TotalBonusMoney - modelSchemeEntity.TotalMoney) / modelSchemeEntity.TotalMoney) * 100M) / 100; // if (profiteRatio >= modelSchemeEntity.ProfiteRatio) // { // modelSchemeEntity.IsStop = true; // modelSchemeEntity.StopTime = DateTime.Now; // modelSchemeEntity.StopDesc = "追号计划达到盈利比率,自动停止"; // } // } // // 判断是否该退还模型作者先行赔付金额、提取佣金 // if (modelSchemeEntity.TotalChaseIssuseCount == modelSchemeEntity.CompleteIssuseCount)//判断当前追号计划是否完成 // { // if (modelSchemeEntity.CurrLossMoney > 0M)//判断是否有先行赔付金额 // { // var profitMoney = modelSchemeEntity.TotalBonusMoney - (modelSchemeEntity.TotalMoney + modelSchemeEntity.CurrLossMoney); // if (profitMoney > 0)//追号计划盈利 // { // //退还作者先行赔付金 // BusinessHelper.Payback_To_Balance(BusinessHelper.FundCategory_WinnerModelPayBackFirstPayMoney, winnerModel.UserId, modelSchemeEntity.ModelKeyLine, modelSchemeEntity.CurrLossMoney, string.Format("追号计划{0}盈利,退还作者先行赔付金额{1}元", modelSchemeEntity.ModelKeyLine, modelSchemeEntity.CurrLossMoney)); // //计算佣金 // var money = modelSchemeEntity.TotalBonusMoney - modelSchemeEntity.TotalMoney; // if (money > 0M) // { // money = money * winnerModel.CommissionRitio; // if (money >= 0.01M) // BusinessHelper.Payback_To_Balance(BusinessHelper.FundCategory_Commission, winnerModel.UserId, modelSchemeEntity.ModelKeyLine, money, string.Format("追号计划{0}盈利,模型作者先行赔付提取佣金{1}元", modelSchemeEntity.ModelKeyLine, money)); // } // } // } // } // //修改追号详情 // modelSchemeDetailEntity.AfterTaxBonusMoney = afterTaxBonusMoney; // modelSchemeDetailEntity.IsComplete = true; // detailList.Add(modelSchemeDetailEntity); // if (modelSchemeEntity.IsStop)//判断当追号计划停止后,修改完成标识、完成期数、完成金额 // { // var modelSchemeDetailList = celebrityManager.QueryWinnerModelSchemeDetailByKeyLine(modelSchemeEntity.ModelKeyLine); // foreach (var item in modelSchemeDetailList) // { // item.IsComplete = true; // detailList.Add(item); // } // modelSchemeEntity.CompleteIssuseCount = modelSchemeEntity.TotalChaseIssuseCount; // modelSchemeEntity.CompleteIssuseMoney = modelSchemeEntity.TotalMoney; // } // celebrityManager.UpdateWinnerModelScheme(modelSchemeEntity); // celebrityManager.UpdateWinnerModelSchemeDetail(detailList.ToArray()); // } // biz.CommitTran(); //} #endregion #region 方案二(注:奖金不正确) //using (var biz = new GameBizBusinessManagement()) //{ // biz.BeginTran(); // var celebrityManager = new CelebrityManager(); // var modelCycleList = celebrityManager.QueryWinnerModelCycleBySchemeId(schemeId); // if (modelCycleList == null || modelCycleList.Count <= 0) // return; // //修改每期方案表数据 // foreach (var item in modelCycleList) // { // item.CurrBonusMoney = afterTaxBonusMoney; // item.ModelProgressStatus = isBonus ? ModelProgressStatus.Winning : ModelProgressStatus.NoBonus; // item.IsComplete = true; // item.CompleteTime = DateTime.Now; // celebrityManager.EditWinnerModelCycle(item); // //修改模型 // var winnerModel = celebrityManager.QueryWinnerModelByModelId(item.ModelId); // if (winnerModel == null) // throw new Exception("未查询到模型信息"); // winnerModel.TotalBonusIssuseCount += isBonus ? 1 : 0;//统计累计中奖期数 // //winnerModel.TotalNotBonusIssuseCount += isBonus ? 0 : 1;//统计累计未中奖期数 // winnerModel.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; // if (isBonus)//计算累计盈利金额 // { // var profitMoney = item.CurrBonusMoney - item.CurrBettingMoney; // if (profitMoney > 0M) // winnerModel.TotalProfitMoney += profitMoney; // } // if (winnerModel.TotalSaleMoney > 0M)//计算总回报率 // { // var reportRatio = Math.Truncate((winnerModel.TotalBonusMoney / winnerModel.TotalSaleMoney) * 100) / 100; // winnerModel.TotalReportRatio += reportRatio; // } // if (winnerModel.TotalBettingIssuseCount > 0)//计算中奖频率 // { // decimal bonusFrequency = Math.Truncate((winnerModel.TotalBonusIssuseCount / winnerModel.TotalBettingIssuseCount) * 100M) / 100; // winnerModel.BonusFrequency += bonusFrequency; // } // celebrityManager.EditWinnerModel(winnerModel); // //修改追号计划 // var modelSchemeList = celebrityManager.QueryNotStopWinnerModelSchemeListByModelId(item.ModelId);//查询购买当前每期方案的追号计划 // foreach (var scheme in modelSchemeList) // { // //修改追号计划 // scheme.SchemeProgressStatus = SchemeProgressStatus.ModelStop; // scheme.CompleteIssuseCount += 1; // scheme.CompleteIssuseMoney += orderMoney; // scheme.TotalBonusMoney += isBonus ? afterTaxBonusMoney : 0; // if (scheme.IsProfitedStop)//判断盈利后停止 // { // var profiteRatio = Math.Truncate(((scheme.TotalBonusMoney - scheme.TotalMoney) / scheme.TotalMoney) * 100M) / 100; // if (profiteRatio >= scheme.ProfiteRatio) // { // scheme.IsStop = true; // scheme.StopTime = DateTime.Now; // scheme.StopDesc = "追号计划达到盈利比率,自动停止"; // } // } // // 判断是否该退还模型作者先行赔付金额、提取佣金 // if (scheme.TotalChaseIssuseCount == scheme.CompleteIssuseCount)//判断当前追号计划是否完成 // { // if (scheme.CurrLossMoney > 0M)//判断是否有先行赔付金额 // { // var profitMoney = scheme.TotalBonusMoney - (scheme.TotalMoney + scheme.CurrLossMoney); // if (profitMoney > 0)//追号计划盈利 // { // //退还作者先行赔付金 // BusinessHelper.Payback_To_Balance(BusinessHelper.FundCategory_WinnerModelPayBackFirstPayMoney, winnerModel.UserId, scheme.ModelKeyLine, scheme.CurrLossMoney, string.Format("追号计划{0}盈利,退还作者先行赔付金额{1}元", scheme.ModelKeyLine, scheme.CurrLossMoney)); // //计算佣金 // var money = scheme.TotalBonusMoney - scheme.TotalMoney; // if (money > 0M) // { // money = money * winnerModel.CommissionRitio; // if (money >= 0.01M) // BusinessHelper.Payback_To_Balance(BusinessHelper.FundCategory_Commission, winnerModel.UserId, scheme.ModelKeyLine, money, string.Format("追号计划{0}盈利,模型作者先行赔付提取佣金{1}元", scheme.ModelKeyLine, money)); // } // } // } // } // //修改追号详情 // //var modelSchemeDetailEntity = celebrityManager.QueryWinnerModelSchemeDetailBySchemeId(schemeId, scheme.ModelKeyLine); // //if (modelSchemeDetailEntity == null) // // throw new Exception("未查询到追号计划详情"); // var modelSchemeDetailEntity = celebrityManager.QueryWinnerModelSchemeDetailByKeyLine(scheme.ModelKeyLine).FirstOrDefault(s => s.ModelCycleId == item.ModelCycleId && s.IsComplete == false); // if (modelSchemeDetailEntity.PayStatus == PayStatus.WaitingPay) // modelSchemeDetailEntity.PayStatus = PayStatus.FailPay; // modelSchemeDetailEntity.AfterTaxBonusMoney = afterTaxBonusMoney; // modelSchemeDetailEntity.IsComplete = true; // celebrityManager.UpdateWinnerModelScheme(scheme); // celebrityManager.UpdateWinnerModelSchemeDetail(modelSchemeDetailEntity); // } // } // biz.CommitTran(); //} #endregion }
public CommonActionResult BJDCChase(string orderId, string userToken) { var orderIdArray = orderId.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); if (orderIdArray.Length != 2) { throw new Exception("北京单场传入OrderId格式不正确:" + orderId); } SchemeType schemeType; decimal issuseMoney; string orderUserId; var schemeId = orderIdArray[0]; var issuseNumber = orderIdArray[1]; var isRequestTicketSuccess = true; var errMsg = ""; var gameCode = "BJDC"; // 验证用户身份及权限 string userId; GameBizAuthBusiness.ValidateAuthentication(userToken, "W", "C041", out userId); try { //开始事务之前 Plugin.Core.PluginRunner.ExecPlugin <IChase_BeforeTranBegin>(new object[] { gameCode, issuseNumber, schemeId }); lock (UsefullHelper.moneyLocker) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); //开始事务之后 Plugin.Core.PluginRunner.ExecPlugin <IChase_AfterTranBegin>(new object[] { gameCode, issuseNumber, schemeId }); var agentToken = ConfigurationManager.AppSettings["GatewayAgentToken"]; new BJDCBusiness().BJDCChase(schemeId, agentToken, out schemeType, out issuseMoney, out orderUserId, out isRequestTicketSuccess, out errMsg); //提交事务前 Plugin.Core.PluginRunner.ExecPlugin <IChase_BeforeTranCommit>(new object[] { gameCode, issuseNumber, schemeId, schemeType, issuseMoney, orderUserId }); biz.CommitTran(); } //提交事务后 Plugin.Core.PluginRunner.ExecPlugin <IChase_AfterTranCommit>(new object[] { gameCode, issuseNumber, schemeId, schemeType, issuseMoney, orderUserId }); return(new CommonActionResult { IsSuccess = isRequestTicketSuccess, Message = isRequestTicketSuccess ? "请求出票成功" : "请求出票失败 - " + errMsg, ReturnValue = orderId, }); } } catch (Exception ex) { Plugin.Core.PluginRunner.ExecPlugin <IChase_OnError>(new object[] { gameCode, issuseNumber, schemeId, ex }); throw new Exception("北京单场追号失败 - " + ex.Message, ex); } }
public void PrizeBJDCTicket_OrderId(string orderId) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new Sports_Manager(); var ticketListInfo = manager.QueryPrizeTicket_OrderIdList("BJDC", orderId); var ticketStrSql = string.Empty; foreach (var ticket in ticketListInfo.TicketList) { if (ticket.TicketStatus != TicketStatus.Ticketed) { continue; } var preTaxBonusMoney = 0M; var afterTaxBonusMoney = 0M; var bonusCount = 0; var collection = new GatewayAnteCodeCollection_Sport(); var codeList = new List <Ticket_AnteCode_Running>(); //100_3/101_1 foreach (var item in ticket.BetContent.Split('/')) { var oneMatch = item.Split('_'); codeList.Add(new Ticket_AnteCode_Running { MatchId = oneMatch[0], IssuseNumber = ticket.IssuseNumber, AnteNumber = oneMatch[1], IsDan = false, GameType = ticket.GameType, }); collection.Add(new GatewayAnteCode_Sport { AnteCode = oneMatch[1], MatchId = oneMatch[0], GameType = ticket.GameType, IsDan = false }); } var n = int.Parse(ticket.PlayType.Replace("P", "").Split('_')[1]); if (n > 1) { #region M串N var orderEntity = new Sports_Business().AnalyzeOrder_Sport_Prize <Ticket_Order_Running, Ticket_Ticket_Running, Ticket_AnteCode_Running>(new GatewayTicketOrder_Sport { Amount = ticket.Amount, AnteCodeList = collection, Attach = string.Empty, GameCode = ticket.GameCode, GameType = ticket.GameType, IssuseNumber = ticket.IssuseNumber, IsVirtualOrder = false, OrderId = ticket.SchemeId, PlayType = ticket.PlayType.Replace("P", ""), Price = 2, UserId = string.Empty, TotalMoney = ticket.BetMoney }, "LOCAL", "agentId"); foreach (var ticket_cp in orderEntity.GetTicketList()) { var matchIdL = (from c in ticket_cp.GetAnteCodeList() select c.MatchId).ToArray(); var codeL = codeList.Where(p => matchIdL.Contains(p.MatchId)).ToArray(); var analyzer = AnalyzerFactory.GetSportAnalyzer(ticket_cp.GameCode, ticket_cp.GameType, int.Parse(ticket_cp.PlayType.Replace("P", "").Split('_')[0])); var bonusResult = analyzer.CaculateBonus(codeL.ToArray(), ticketListInfo.MatchList.ToArray()); if (bonusResult.IsWin) { bonusCount += bonusResult.BonusCount; for (var i = 0; i < bonusResult.BonusCount; i++) { var matchIdList = bonusResult.BonusHitMatchIdListCollection[i]; var sps = GetSPs(ticket_cp.GameCode, ticket_cp.GameType, ticket_cp.IssuseNumber, matchIdList); var oneBeforeBonusMoney = 2M; var isTrue = false; var num = 0; foreach (var item in sps) { if (item.Value == 1M) { num++; var entity = codeL.Where(p => p.MatchIndex == int.Parse(item.Key)).FirstOrDefault(); var anteCodeCount = entity.AnteCode.Split(',').Count(); oneBeforeBonusMoney *= anteCodeCount; if (sps.Count == 1) { isTrue = true; } } else { oneBeforeBonusMoney *= item.Value; } } if (!isTrue && num != sps.Count) { oneBeforeBonusMoney *= 0.65M; // 官方扣点 - 65% } oneBeforeBonusMoney = Math.Truncate(oneBeforeBonusMoney * 100) / 100; var oneAfterBonusMoney = oneBeforeBonusMoney; //北单奖金小于2元的 按2元计算 if (oneBeforeBonusMoney < 2M) { oneBeforeBonusMoney = 2M; oneAfterBonusMoney = 2M; } if (oneBeforeBonusMoney >= 10000) { oneAfterBonusMoney = oneBeforeBonusMoney * (1M - 0.2M); } oneBeforeBonusMoney *= ticket_cp.Amount; oneAfterBonusMoney *= ticket_cp.Amount; preTaxBonusMoney += oneBeforeBonusMoney; afterTaxBonusMoney += oneAfterBonusMoney; } } } //单票金额上限 if (afterTaxBonusMoney >= 5000000M) { afterTaxBonusMoney = 5000000M; } #endregion } else { #region M串1 var analyzer = AnalyzerFactory.GetSportAnalyzer(ticket.GameCode, ticket.GameType, int.Parse(ticket.PlayType.Replace("P", "").Split('_')[0])); var bonusResult = analyzer.CaculateBonus(codeList.ToArray(), ticketListInfo.MatchList.ToArray()); if (bonusResult.IsWin) { bonusCount += bonusResult.BonusCount; for (var i = 0; i < bonusResult.BonusCount; i++) { var matchIdList = bonusResult.BonusHitMatchIdListCollection[i]; var sps = GetSPs(ticket.GameCode, ticket.GameType, ticket.IssuseNumber, matchIdList); var oneBeforeBonusMoney = 2M; var isTrue = false; var num = 0; foreach (var item in sps) { if (item.Value == 1M) { num++; var entity = codeList.Where(p => p.MatchIndex == int.Parse(item.Key)).FirstOrDefault(); var anteCodeCount = entity.AnteCode.Split(',').Count(); oneBeforeBonusMoney *= anteCodeCount; if (sps.Count == 1) { isTrue = true; } } else { oneBeforeBonusMoney *= item.Value; } } if (!isTrue && num != sps.Count) { oneBeforeBonusMoney *= 0.65M; // 官方扣点 - 65% } oneBeforeBonusMoney = Math.Truncate(oneBeforeBonusMoney * 100) / 100; var oneAfterBonusMoney = oneBeforeBonusMoney; //北单奖金小于2元的 按2元计算 if (oneBeforeBonusMoney < 2M) { oneBeforeBonusMoney = 2M; oneAfterBonusMoney = 2M; } if (oneBeforeBonusMoney >= 10000) { oneAfterBonusMoney = oneBeforeBonusMoney * (1M - 0.2M); } oneBeforeBonusMoney *= ticket.Amount; oneAfterBonusMoney *= ticket.Amount; //单票金额上限 if (oneAfterBonusMoney >= 5000000M) { oneAfterBonusMoney = 5000000M; } preTaxBonusMoney += oneBeforeBonusMoney; afterTaxBonusMoney += oneAfterBonusMoney; } } #endregion } ticketStrSql += string.Format("update C_Sports_Ticket set PreTaxBonusMoney={0},AfterTaxBonusMoney={1},BonusStatus={2} where TicketId='{3}' {4}" , preTaxBonusMoney, afterTaxBonusMoney, afterTaxBonusMoney > 0M ? Convert.ToInt32(BonusStatus.Win) : Convert.ToInt32(BonusStatus.Lose), ticket.TicketId, Environment.NewLine); } manager.ExecSql(ticketStrSql); biz.CommitTran(); } }
/// <summary> /// 关注 /// </summary> public void BDFXAttention(string currUserId, string bgzUserId) { using (var biz = new GameBizBusinessManagement()) { #region 关注 biz.BeginTran(); var manager = new BDFXManager(); if (string.IsNullOrEmpty(currUserId)) { throw new Exception("关注人编号不能为空"); } else if (string.IsNullOrEmpty(bgzUserId)) { throw new Exception("被关注人编号不能为空"); } var singleTreasureAttention = manager.QuerySingleTreasureAttentionByUserId(bgzUserId, currUserId); if (singleTreasureAttention != null && !string.IsNullOrEmpty(singleTreasureAttention.ConcernedUserId)) { throw new Exception("您已经关注了他"); } if (currUserId == bgzUserId) { throw new Exception("不能关注自己"); } singleTreasureAttention = new SingleTreasureAttention(); singleTreasureAttention.BeConcernedUserId = bgzUserId; singleTreasureAttention.ConcernedUserId = currUserId; singleTreasureAttention.CreateTime = DateTime.Now; manager.AddSingleTreasureAttention(singleTreasureAttention); //修改被关注者信息 var BGZSummary = manager.QuerySingleTreasureAttentionSummaryByUserId(bgzUserId); if (BGZSummary != null && !string.IsNullOrEmpty(BGZSummary.UserId)) { BGZSummary.BeConcernedUserCount += 1; BGZSummary.UpdateTime = DateTime.Now; manager.UpdateSingleTreasureAttentionSummary(BGZSummary); } else { BGZSummary = new SingleTreasureAttentionSummary(); BGZSummary.BeConcernedUserCount = 1; BGZSummary.ConcernedUserCount = 0; BGZSummary.SingleTreasureCount = 0; BGZSummary.UpdateTime = DateTime.Now; BGZSummary.UserId = bgzUserId; manager.AddSingleTreasureAttentionSummary(BGZSummary); } //修改关注者信息 var GZSummary = manager.QuerySingleTreasureAttentionSummaryByUserId(currUserId); if (GZSummary != null && !string.IsNullOrEmpty(GZSummary.UserId)) { GZSummary.ConcernedUserCount += 1; GZSummary.UpdateTime = DateTime.Now; manager.UpdateSingleTreasureAttentionSummary(GZSummary); } else { GZSummary = new SingleTreasureAttentionSummary(); GZSummary.BeConcernedUserCount = 0; GZSummary.ConcernedUserCount = 1; GZSummary.SingleTreasureCount = 0; GZSummary.UpdateTime = DateTime.Now; GZSummary.UserId = currUserId; manager.AddSingleTreasureAttentionSummary(GZSummary); } biz.CommitTran(); #endregion } }
public void OrderPrize_AfterTranCommit(string userId, string schemeId, string gameCode, string gameType, string issuseNumber, decimal orderMoney, bool isBonus, decimal preTaxBonusMoney, decimal afterTaxBonusMoney, bool isVirtualOrder, DateTime prizeTime) { //if (isVirtualOrder) return; //if (!isBonus) return; //if (afterTaxBonusMoney <= 0) return; //if (afterTaxBonusMoney >= 10000M) return; //开启事务 using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var manager = new Sports_Manager(); var order = manager.QuerySports_Order_Complate(schemeId); if (order == null) { throw new LogicException(string.Format("自动派钱,没有找到订单{0}", schemeId)); } if (order.IsPrizeMoney) { throw new LogicException(string.Format("订单{0}已派奖", schemeId)); } order.IsPrizeMoney = true; manager.UpdateSports_Order_Complate(order); if (!order.IsVirtualOrder) { if (order.SchemeType == SchemeType.GeneralBetting || order.SchemeType == SchemeType.ChaseBetting || order.SchemeType == SchemeType.SingleCopy) { #region 普通、追号、抄单 if (order.AfterTaxBonusMoney > 0) { if (order.SchemeType == SchemeType.SingleCopy)//抄单订单,派奖时需减去奖金提成的金额 { var bdfxManager = new BDFXManager(); var bdfxRecorSingleEntity = bdfxManager.QueryBDFXRecordSingleCopyBySchemeId(schemeId); var realBonusMoney = order.AfterTaxBonusMoney; var commissionMoney = 0M; if (bdfxRecorSingleEntity != null) { var BDFXEntity = bdfxManager.QueryTotalSingleTreasureBySchemeId(bdfxRecorSingleEntity.BDXFSchemeId); if (BDFXEntity != null) { //计算提成金额 if ((order.AfterTaxBonusMoney - order.TotalMoney) > 0) { commissionMoney = (order.AfterTaxBonusMoney - order.TotalMoney) * BDFXEntity.Commission / 100M; commissionMoney = Math.Truncate(commissionMoney * 100) / 100M; realBonusMoney = order.AfterTaxBonusMoney - commissionMoney; //返提成 if (commissionMoney > 0) { BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_BDFXCommissionMoney, BDFXEntity.UserId, schemeId, commissionMoney, string.Format("抄单订单{0}中奖{1:N2}元,提成{2:N0}%,获得奖金盈利提成金额{3:N2}元.", schemeId, order.AfterTaxBonusMoney, BDFXEntity.Commission, commissionMoney)); } } } } //返奖金 BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Bonus, order.UserId, schemeId, realBonusMoney, string.Format("抄单订单{0}中奖{1:N2}元,扣除奖金盈利提成金额{2:N2}元,实得奖金{3:N2}元.", schemeId, order.AfterTaxBonusMoney, commissionMoney, realBonusMoney)); } else { BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Bonus, order.UserId, schemeId, order.AfterTaxBonusMoney, string.Format("中奖奖金{0:N2}元.", order.AfterTaxBonusMoney)); } } if (order.AddMoney > 0) { BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Bonus, order.UserId, schemeId, order.AddMoney, string.Format("订单{0}活动赠送{1:N2}元.", schemeId, order.AddMoney)); } #endregion } if (order.SchemeType == SchemeType.TogetherBetting) { #region 合买 var main = manager.QuerySports_Together(schemeId); if (order.AfterTaxBonusMoney > 0) { //提成 var deductMoney = 0M; if (order.AfterTaxBonusMoney > main.TotalMoney) { deductMoney = (order.AfterTaxBonusMoney - main.TotalMoney) * main.BonusDeduct / 100; } //提成金额,只能给合买发起者 if (deductMoney > 0M) { BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Deduct, order.UserId, schemeId, deductMoney, string.Format("订单{0}, 合买奖金盈利提成金额{1:N2}元。", schemeId, deductMoney)); } //中奖金额,分发到所有参与合买的用户的奖金账户 var bonusMoney = order.AfterTaxBonusMoney - deductMoney; var singleMoney = bonusMoney / main.TotalCount; foreach (var join in manager.QuerySports_TogetherSucessJoin(schemeId)) { //if (join.JoinType == TogetherJoinType.SystemGuarantees) continue;//20151015屏蔽原代码,如果合买有系统保底,依然将奖金返还到系统保底账上 //发参与奖金 if (join.RealBuyCount <= 0) { continue; } var joinMoney = join.RealBuyCount * singleMoney; //派钱 if (joinMoney > 0M) { BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Bonus, join.JoinUserId, schemeId, joinMoney, string.Format("中奖分成,奖金¥{0:N2}元。", joinMoney)); } } } if (order.AddMoney > 0M) { //加奖金额分配给发起者 if (order.DistributionWay == AddMoneyDistributionWay.CreaterOnly) { //加奖 if (order.AddMoney > 0) { BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Activity, order.UserId, schemeId, order.AddMoney, string.Format("订单{0}活动赠送{1:N2}元。", schemeId, order.AddMoney), RedBagCategory.Activity); } } //处理加奖 if (order.DistributionWay == AddMoneyDistributionWay.Average) { var addMonesinglePrice = order.AddMoney / main.TotalCount; foreach (var join in manager.QuerySports_TogetherSucessJoin(schemeId)) { if (join.JoinType == TogetherJoinType.SystemGuarantees) { continue; } if (join.RealBuyCount <= 0) { continue; } //发参与奖金 var joinMoney = join.RealBuyCount * addMonesinglePrice; //派钱 if (joinMoney > 0M) { BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Activity, join.JoinUserId, schemeId, joinMoney, string.Format("订单{0}活动赠送{1:N2}元。", schemeId, joinMoney), RedBagCategory.Activity); } } } //加奖金额分配给发起者 if (order.DistributionWay == AddMoneyDistributionWay.JoinerOnly) { //订单发起者没有加奖 var joinList = manager.QuerySports_TogetherSucessJoin(schemeId); var createrList = joinList.Where(p => p.JoinUserId == order.UserId).ToList(); var createJoinCount = createrList.Count == 0 ? 0 : createrList.Sum(p => p.RealBuyCount); var addMonesinglePrice = order.AddMoney / (main.TotalCount - createJoinCount); foreach (var join in joinList) { if (join.JoinType == TogetherJoinType.SystemGuarantees) { continue; } if (join.JoinUserId == order.UserId) { continue; } if (join.RealBuyCount <= 0) { continue; } //发参与奖金 var joinMoney = join.RealBuyCount * addMonesinglePrice; //派钱 if (joinMoney > 0M) { BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Activity, join.JoinUserId, schemeId, joinMoney, string.Format("订单{0}活动赠送{1:N2}元。", schemeId, joinMoney), RedBagCategory.Activity); } } } } #endregion } //添加最新中奖记录表 if (afterTaxBonusMoney >= 2000M) { var userInfo = new UserBalanceManager().GetUserRegister(order.UserId); if (userInfo != null) { new External.Domain.Managers.SiteMessage.SiteActivityManager().AddLotteryNewBonus(new External.Domain.Entities.SiteMessage.LotteryNewBonus { AfterTaxBonusMoney = order.AfterTaxBonusMoney, Amount = order.Amount, CreateTime = order.ComplateDateTime, GameCode = order.GameCode, GameType = order.GameType, IssuseNumber = order.IssuseNumber, PlayType = order.PlayType, PreTaxBonusMoney = order.PreTaxBonusMoney, SchemeId = order.SchemeId, TotalMoney = order.TotalMoney, UserDisplayName = userInfo.DisplayName, HideUserDisplayNameCount = userInfo.HideDisplayNameCount }); } } } biz.CommitTran(); } //刷新用户在Redis中的余额 if (afterTaxBonusMoney > 0M) { BusinessHelper.RefreshRedisUserBalance(userId); } }
/// <summary> /// 豆豆兑换奖品 /// </summary> public void ExchangeDouDou(string userId, int doudou, string password) { using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); var userBalance = new UserBalanceManager().QueryUserBalance(userId); if (userBalance.CurrentDouDou < doudou) { throw new Exception(string.Format("当前豆豆不足:{0},请继续努力!", doudou)); } var order = Guid.NewGuid().ToString("N"); var manager = new A20140731_DouDouManager(); switch (doudou) { case 1000: //减去现金45元,加上奖金账户50元。 BusinessHelper.Payout_To_End(BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 45M, string.Format("用户{0}兑换红包", userId), "ExchangeDouDou", password); //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆1000", userId)); //赠送50红包 BusinessHelper.Payin_To_Balance(AccountType.RedBag, BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 50M, string.Format("用户{0}兑换50元红包", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 45M, ActivityMoney = 50M, Prize = "购彩金", PrizeMoney = 5M, IsGive = true, CreateTime = DateTime.Now, }); break; case 1800: //减去现金90元,加上奖金账户100元。 BusinessHelper.Payout_To_End(BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 90M, string.Format("用户{0}兑换红包", userId), "ExchangeDouDou", password); //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆1800", userId)); //赠送100红包 BusinessHelper.Payin_To_Balance(AccountType.RedBag, BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 100M, string.Format("用户{0}兑换100元红包", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 90M, ActivityMoney = 100M, Prize = "购彩金", PrizeMoney = 10M, IsGive = true, CreateTime = DateTime.Now, }); break; case 15000: //减去现金900元,加上奖金账户1000元红包。 BusinessHelper.Payout_To_End(BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 900M, string.Format("用户{0}兑换红包", userId), "ExchangeDouDou", password); //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆15000", userId)); //赠送1000红包 BusinessHelper.Payin_To_Balance(AccountType.RedBag, BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 1000M, string.Format("用户{0}兑换1000元红包", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 900M, ActivityMoney = 1000M, Prize = "购彩金", PrizeMoney = 100M, IsGive = true, CreateTime = DateTime.Now, }); break; case 150000: //加上奖金账户1000元红元。 BusinessHelper.Payin_To_Balance(AccountType.RedBag, BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 1000M, string.Format("用户{0}兑换1000元红包", userId)); //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆150000", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 0M, ActivityMoney = 1000M, Prize = "购彩金", PrizeMoney = 1000M, IsGive = true, CreateTime = DateTime.Now, }); break; case 280000: //加上奖金账户2000元红包。 BusinessHelper.Payin_To_Balance(AccountType.RedBag, BusinessHelper.FundCategory_ExchangeDouDou, userId, order, 2000M, string.Format("用户{0}兑换2000元红包", userId)); //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆280000", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 0M, ActivityMoney = 2000M, Prize = "购彩金", PrizeMoney = 2000M, IsGive = true, CreateTime = DateTime.Now, }); break; case 500000: //IPAD //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆500000", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 0M, ActivityMoney = 0M, Prize = "IPAD", PrizeMoney = 0M, IsGive = false, CreateTime = DateTime.Now, }); break; case 1000000: //Mac Book Air。 //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆1000000", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 0M, ActivityMoney = 0M, Prize = "Mac Book Air", PrizeMoney = 0M, IsGive = false, CreateTime = DateTime.Now, }); break; case 5000000: //奇瑞QQ。 //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆5000000", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 0M, ActivityMoney = 0M, Prize = "奇瑞QQ", PrizeMoney = 0M, IsGive = false, CreateTime = DateTime.Now, }); break; case 10000000: //比亚迪。 //扣除豆豆 BusinessHelper.Payout_OCDouDou(BusinessHelper.FundCategory_ExchangeDouDou, order, userId, doudou, string.Format("用户{0}兑换红包,消除豆豆10000000", userId)); manager.AddA20140731_DouDou(new A20140731_DouDou() { UserId = userId, DouDou = doudou, Money = 0M, ActivityMoney = 0M, Prize = "比亚迪", PrizeMoney = 0M, IsGive = false, CreateTime = DateTime.Now, }); break; default: break; } biz.CommitTran(); } }
public CommonActionResult UpdateAppendBonusConfig(AppendBonusConfigInfo_QueryCollection collection) { bool result = true; string strMsg = string.Empty; CommonActionResult resultObj = null; var configList = collection.ConfigList; Session.Clear(); using (var biz = new GameBizBusinessManagement()) { biz.BeginTran(); foreach (var item in configList) { try { var configAll = Session.CreateCriteria <External.Domain.Entities.AppendBonusConfig.AppendBonusConfig>() .Add(Restrictions.Eq("GameCode", item.GameCode)) .Add(Restrictions.Eq("GameType", item.GameType)) .List <External.Domain.Entities.AppendBonusConfig.AppendBonusConfig>(); if (configAll.Count == 0) { var config = new External.Domain.Entities.AppendBonusConfig.AppendBonusConfig { GameCode = item.GameCode, GameType = item.GameType, AppendBonusMoney = item.AppendBonusMoney, AppendRatio = item.AppendRatio, StartMultiple = item.StartMultiple, ColorBeanNumber = item.ColorBeanNumber, ColorBeanRatio = item.ColorBeanRatio, ColorBeanStartMultiple = item.ColorBeanStartMultiple, ModifyTime = DateTime.Now, StartIssueNumber = item.StartIssueNumber, EndIssueNumber = item.EndIssueNumber, BonusMoneyStartMultiple = item.BonusMoneyStartMultiple }; Add <External.Domain.Entities.AppendBonusConfig.AppendBonusConfig>(config); } else { var config = configAll[0]; config.AppendBonusMoney = item.AppendBonusMoney; config.AppendRatio = item.AppendRatio; config.StartMultiple = item.StartMultiple; config.ColorBeanNumber = item.ColorBeanNumber; config.ColorBeanRatio = item.ColorBeanRatio; config.ColorBeanStartMultiple = item.ColorBeanStartMultiple; config.ModifyTime = DateTime.Now; config.StartIssueNumber = item.StartIssueNumber; config.EndIssueNumber = item.EndIssueNumber; config.BonusMoneyStartMultiple = item.BonusMoneyStartMultiple; Update <External.Domain.Entities.AppendBonusConfig.AppendBonusConfig>(config); } } catch { result = false; strMsg += item.GameName + "-" + item.GameTypeName; break; } } if (result == false) { biz.RollbackTran(); resultObj = new CommonActionResult(result, strMsg + ":加奖配置失败!"); } else { biz.CommitTran(); resultObj = new CommonActionResult(result, "加奖配置成功!"); } } return(resultObj); }