Example #1
0
        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);
            }
        }
Example #3
0
        /// <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();
            }
        }
Example #4
0
        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);
            }
        }
Example #6
0
        /// <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();
            }
        }
Example #7
0
        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);
            }
        }
Example #8
0
        /// <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
            }
        }
Example #9
0
        /// <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();
            }
        }
Example #10
0
        /// <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();
            }
        }
Example #11
0
        /// <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();
            }
        }
Example #12
0
        /// <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();
            }
        }
Example #13
0
        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();
            }
        }
Example #14
0
        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);
            }
        }
Example #15
0
        /// <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();
            }
        }
Example #16
0
        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);
            }
        }
Example #17
0
        /// <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();
            }
        }
Example #18
0
        /// <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();
            }
        }
Example #19
0
        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
        }
Example #22
0
        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);
            }
        }
Example #23
0
        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();
            }
        }
Example #24
0
 /// <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);
        }