/// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016/8/2 17:54:56</remarks>
        public bool Update(OlympicRecordEntity entity, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_OlympicRecord_Update");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx);
            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId);
            database.AddInParameter(commandWrapper, "@ExType", DbType.Int32, entity.ExType);
            database.AddInParameter(commandWrapper, "@ExItemCode", DbType.Int32, entity.ExItemCode);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);


            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的当前记录读取到OlympicRecordEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public OlympicRecordEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new OlympicRecordEntity();

            obj.Idx        = (System.Int32)reader["Idx"];
            obj.ManagerId  = (System.Guid)reader["ManagerId"];
            obj.ExType     = (System.Int32)reader["ExType"];
            obj.ExItemCode = (System.Int32)reader["ExItemCode"];
            obj.RowTime    = (System.DateTime)reader["RowTime"];

            return(obj);
        }
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="idx">idx</param>
        /// <returns>OlympicRecordEntity</returns>
        /// <remarks>2016/8/2 17:54:56</remarks>
        public OlympicRecordEntity GetById(System.Int32 idx)
        {
            var database = new SqlDatabase(this.ConnectionString);

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

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


            OlympicRecordEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
Beispiel #4
0
        /// <summary>
        /// 兑换奖励
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="exChangerizeType"></param>
        /// <returns></returns>
        public OlympicExchangeResponse Exchange(Guid managerId, int exChangerizeType)
        {
            OlympicExchangeResponse response = new OlympicExchangeResponse();

            response.Data = new OlympicExchange();
            try
            {
                var info       = GetInfo(managerId);
                var configList = GetExChangerize(exChangerizeType);
                if (configList.Count == 0)
                {
                    return(ResponseHelper.Create <OlympicExchangeResponse>((int)MessageCode.NbParameterError));
                }
                foreach (var item in configList)
                {
                    if (!info.DeductTheGoldMedal(item.TheGoldMedalId, item.TheGoldMedalCount))
                    {
                        return(ResponseHelper.Create <OlympicExchangeResponse>((int)MessageCode.OlympicTheGoldMedalCountNot));
                    }
                }
                var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.OlympocExChangerize);
                if (package == null || package.BlankCount <= 0)
                {
                    return(ResponseHelper.Create <OlympicExchangeResponse>((int)MessageCode.ItemPackageFull));
                }
                var messageCode = package.AddItem(configList[0].PrizeItemCode);
                if (messageCode != MessageCode.Success)
                {
                    return(ResponseHelper.Create <OlympicExchangeResponse>((int)messageCode));
                }
                OlympicRecordEntity record = new OlympicRecordEntity(0, managerId, exChangerizeType, configList[0].PrizeItemCode, DateTime.Now);
                using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetConnectionString(EnumDbType.Main)))
                {
                    transactionManager.BeginTransaction();
                    messageCode = MessageCode.NbUpdateFail;
                    do
                    {
                        if (!package.Save(transactionManager.TransactionObject))
                        {
                            break;
                        }
                        if (!OlympicManagerMgr.Update(info, transactionManager.TransactionObject))
                        {
                            break;
                        }
                        if (!OlympicRecordMgr.Insert(record, transactionManager.TransactionObject))
                        {
                            break;
                        }
                        messageCode = MessageCode.Success;
                    } while (false);
                    if (messageCode == MessageCode.Success)
                    {
                        transactionManager.Commit();
                        package.Shadow.Save();
                        response.Data.ItemCode        = configList[0].PrizeItemCode;
                        response.Data.TheGoldMedalDic = info.TheGoldMedalDic;
                    }
                    else
                    {
                        transactionManager.Rollback();
                    }
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("奥运会兑换奖励", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
        public static bool Update(OlympicRecordEntity olympicRecordEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new OlympicRecordProvider(zoneId);

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