/// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016/7/14 11:00:26</remarks>
        public bool Update(TurntableLuckyrecordEntity entity, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_TurntableLuckyrecord_Update");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx);
            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId);
            database.AddInParameter(commandWrapper, "@IsAdd", DbType.Boolean, entity.IsAdd);
            database.AddInParameter(commandWrapper, "@OperationNumber", DbType.Int32, entity.OperationNumber);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);
            database.AddInParameter(commandWrapper, "@LuckDrawString", DbType.AnsiString, entity.LuckDrawString);


            int results = 0;

            if (trans != null)
            {
                results = database.ExecuteNonQuery(commandWrapper, trans);
            }
            else
            {
                results = database.ExecuteNonQuery(commandWrapper);
            }

            entity.Idx = (System.Int32)database.GetParameterValue(commandWrapper, "@Idx");

            return(Convert.ToBoolean(results));
        }
        /// <summary>
        /// 将IDataReader的当前记录读取到TurntableLuckyrecordEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public TurntableLuckyrecordEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new TurntableLuckyrecordEntity();

            obj.Idx             = (System.Int32)reader["Idx"];
            obj.ManagerId       = (System.Guid)reader["ManagerId"];
            obj.IsAdd           = (System.Boolean)reader["IsAdd"];
            obj.OperationNumber = (System.Int32)reader["OperationNumber"];
            obj.RowTime         = (System.DateTime)reader["RowTime"];
            obj.LuckDrawString  = (System.String)reader["LuckDrawString"];

            return(obj);
        }
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="idx">idx</param>
        /// <returns>TurntableLuckyrecordEntity</returns>
        /// <remarks>2016/7/14 11:00:26</remarks>
        public TurntableLuckyrecordEntity GetById(System.Int32 idx)
        {
            var database = new SqlDatabase(this.ConnectionString);

            DbCommand commandWrapper = database.GetStoredProcCommand("P_TurntableLuckyrecord_GetById");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx);


            TurntableLuckyrecordEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
Example #4
0
        MessageCode SaveLuckDraw(Guid managerId, int addPoint, int addCoin, bool isAddPackage, ItemPackageFrame package, NbManagerEntity manager, TurntableFrame turntable, TurntableLuckyrecordEntity record, DbTransaction trans)
        {
            var messageCode = MessageCode.Success;

            if (addPoint > 0)
            {
                messageCode = PayCore.Instance.AddBonus(managerId, addPoint, EnumChargeSourceType.Turntable, ShareUtil.GenerateComb().ToString(), trans);
                if (messageCode != MessageCode.Success)
                {
                    return(messageCode);
                }
            }
            if (addCoin > 0)
            {
                messageCode = ManagerCore.Instance.AddCoin(manager, addCoin, EnumCoinChargeSourceType.Turntable, ShareUtil.GenerateComb().ToString(), trans);
                if (messageCode != MessageCode.Success)
                {
                    return(messageCode);
                }
            }
            if (!turntable.Save(trans))
            {
                return(MessageCode.NbUpdateFail);
            }
            if (isAddPackage)
            {
                if (!package.Save(trans))
                {
                    return(MessageCode.NbUpdateFail);
                }
                package.Shadow.Save();
            }
            TurntableLuckyrecordMgr.Insert(record, trans);
            return(MessageCode.Success);
        }
Example #5
0
        /// <summary>
        /// 保存抽奖
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="addPoint"></param>
        /// <param name="addCoin"></param>
        /// <param name="isAddPackage"></param>
        /// <param name="package"></param>
        /// <param name="manager"></param>
        /// <param name="turntable"></param>
        /// <param name="record"></param>
        /// <returns></returns>
        MessageCode SaveLuckDraw(Guid managerId, int addPoint, int addCoin, bool isAddPackage, ItemPackageFrame package, NbManagerEntity manager, TurntableFrame turntable, TurntableLuckyrecordEntity record)
        {
            MessageCode messageCode = MessageCode.Success;

            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetConnectionString(EnumDbType.Main)))
            {
                transactionManager.BeginTransaction();
                messageCode = SaveLuckDraw(managerId, addPoint, addCoin, isAddPackage, package, manager, turntable, record, transactionManager.TransactionObject);
                if (messageCode == MessageCode.Success)
                {
                    transactionManager.Commit();
                }
                else
                {
                    transactionManager.Rollback();
                }
            }
            return(messageCode);
        }
Example #6
0
        /// <summary>
        /// 发奖
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="prizeEntity"></param>
        /// <param name="specialItem"></param>
        /// <param name="addpoint"></param>
        /// <param name="addcoin"></param>
        /// <param name="isAddPackage"></param>
        /// <param name="package"></param>
        /// <param name="response"></param>
        /// <param name="record"></param>
        /// <returns></returns>
        MessageCode SendPrize(Guid managerId, ConfigTurntableprizeEntity prizeEntity, int specialItem, ref int addpoint, ref int addcoin, ref bool isAddPackage, ref ItemPackageFrame package, TurntableLuckDrawResponse response, TurntableLuckyrecordEntity record)
        {
            var messCode = MessageCode.Success;

            response.Data.PrizeCount = prizeEntity.ItemCount;
            switch (prizeEntity.PrizeType)
            {
            case (int)EnumTurntablePrizeType.Point:
                addpoint = prizeEntity.ItemCount;
                response.Data.PrizeCode = 0;
                response.Data.PrizeType = (int)EnumTurntablePrizeType.Point;
                record.LuckDrawString   = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount;
                break;

            case (int)EnumTurntablePrizeType.Coin:
                addcoin = prizeEntity.ItemCount;
                response.Data.PrizeCode = 0;
                response.Data.PrizeType = (int)EnumTurntablePrizeType.Coin;
                record.LuckDrawString   = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount;
                break;

            case (int)EnumTurntablePrizeType.Item:
                isAddPackage = true;
                messCode     = package.AddItems(prizeEntity.SubType, prizeEntity.ItemCount);
                if (messCode != MessageCode.Success)
                {
                    return(messCode);
                }
                response.Data.PrizeCode = prizeEntity.SubType;
                response.Data.PrizeType = (int)EnumTurntablePrizeType.Item;
                record.LuckDrawString   = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount;
                break;

            case (int)EnumTurntablePrizeType.Random:
                isAddPackage = true;
                var itemCode  = CacheFactory.LotteryCache.LotteryByLib(prizeEntity.SubType);
                var itemCache = CacheFactory.ItemsdicCache.GetItem(itemCode);
                if (itemCache == null)
                {
                    return(MessageCode.ItemNotExists);
                }
                if (itemCache.ItemType == (int)EnumItemType.PlayerCard)
                {
                    messCode = package.AddPlayerCard(itemCode, 1, false, 1, false);
                }
                else
                {
                    messCode = package.AddItems(itemCode, prizeEntity.ItemCount);
                }
                if (messCode != MessageCode.Success)
                {
                    return(messCode);
                }
                response.Data.PrizeCode = itemCode;
                response.Data.PrizeType = (int)EnumTurntablePrizeType.Item;
                record.LuckDrawString   = (int)prizeEntity.PrizeType + "," + itemCode + "," + prizeEntity.ItemCount;
                break;

            case (int)EnumTurntablePrizeType.Turntable:
                record.LuckDrawString = (int)prizeEntity.PrizeType + "," + prizeEntity.SubType + "," + prizeEntity.ItemCount;
                break;

            case (int)EnumTurntablePrizeType.Special:
                isAddPackage = true;
                if (specialItem == 0)
                {
                    return(MessageCode.NbParameterError);
                }
                messCode = package.AddItems(specialItem, prizeEntity.ItemCount);
                if (messCode != MessageCode.Success)
                {
                    return(messCode);
                }
                response.Data.PrizeCode = specialItem;
                response.Data.PrizeType = (int)EnumTurntablePrizeType.Item;
                record.LuckDrawString   = (int)prizeEntity.PrizeType + "," + specialItem + "," + prizeEntity.ItemCount;
                break;

            default:
                break;
            }
            return(MessageCode.Success);
        }
Example #7
0
        /// <summary>
        /// 转盘抽奖
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public TurntableLuckDrawResponse TurntableLuckDraw(Guid managerId)
        {
            TurntableLuckDrawResponse response = new TurntableLuckDrawResponse();

            response.Data = new TurntableLuckDraw();
            try
            {
                var turntable = new TurntableFrame(managerId);
                if (turntable == null)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError));
                }
                var turntableManager = turntable.TurntableManagerEntity;
                if (turntableManager == null)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError));
                }
                if (turntableManager.GiveLuckyCoin <= 0 && turntableManager.LuckyCoin <= 0)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.LuckyCoinInsufficient));
                }
                var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.Turntable);
                if (package == null)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbNoPackage));
                }
                if (package.BlankCount < 1)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.ItemPackageFull));
                }
                //抽奖
                int specialItem = 0;
                var resultPrize = turntable.LuckDraw(ref specialItem);
                if (resultPrize == null)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError));
                }
                int             addPoint     = 0;
                int             addCoin      = 0;
                bool            isAddPackage = false;
                NbManagerEntity manager      = null;
                var             record       = new TurntableLuckyrecordEntity(0, managerId, false, 1, DateTime.Now, "");
                var             messageCode  = SendPrize(managerId, resultPrize, specialItem, ref addPoint, ref addCoin, ref isAddPackage, ref package, response, record);
                if (addCoin > 0)
                {
                    manager = ManagerCore.Instance.GetManager(managerId);
                    if (manager == null)
                    {
                        return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)MessageCode.NbParameterError));
                    }
                }
                if (messageCode != MessageCode.Success)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)messageCode));
                }
                messageCode = SaveLuckDraw(managerId, addPoint, addCoin, isAddPackage, package, manager, turntable, record);
                if (messageCode != MessageCode.Success)
                {
                    return(ResponseHelper.Create <TurntableLuckDrawResponse>((int)messageCode));
                }
                response.Data.WinAlotteryId = resultPrize.TurntableId;
                response.Data.TurntableInfo = GetTurntableInfo(turntable);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("转盘抽奖", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
        public static bool Update(TurntableLuckyrecordEntity turntableLuckyrecordEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new TurntableLuckyrecordProvider(zoneId);

            return(provider.Update(turntableLuckyrecordEntity, trans));
        }