Пример #1
0
        public FreezeInfo QueryFreezeInfo(decimal applyformId)
        {
            FreezeInfo result = null;
            var        sql    = "SELECT Id,OrderId,TradeNo,Account,Amount,FreezeNo,RequestTime,Success,ProcessTime,Remark FROM dbo.T_OrderFreeze"
                                + " WHERE ApplyformId=@ApplyformId AND [Type]=@Type";

            using (var dbOperator = new DbOperator(Provider, ConnectionString)) {
                dbOperator.AddParameter("ApplyformId", applyformId);
                dbOperator.AddParameter("Type", (byte)FreezeType.Freeze);
                using (var reader = dbOperator.ExecuteReader(sql)) {
                    if (reader.Read())
                    {
                        result = new FreezeInfo(reader.GetGuid(0))
                        {
                            OrderId     = reader.GetDecimal(1),
                            ApplyformId = applyformId,
                            TradeNo     = reader.GetString(2),
                            Account     = reader.GetString(3),
                            Amount      = reader.GetDecimal(4),
                            No          = reader.IsDBNull(5) ? string.Empty : reader.GetString(5),
                            RequestTime = reader.GetDateTime(6),
                            Success     = reader.GetBoolean(7),
                            Remark      = reader.IsDBNull(9) ? string.Empty : reader.GetString(9)
                        };
                        if (!reader.IsDBNull(8))
                        {
                            result.ProcessedTime = reader.GetDateTime(8);
                        }
                    }
                }
            }
            return(result);
        }
Пример #2
0
        public FreezeModifier(ModifierInfo info, Entity casterEntity, Entity targetEntity, Environment environment, CollectionOfInteractions modifierInteractionCollection) : base(info, casterEntity, targetEntity, environment, modifierInteractionCollection)
        {
            this.info = (FreezeInfo)info;

            targetAnimationComponent = targetEntity.GetComponent <AnimationComponent>();
            targetMovementComponent  = targetEntity.GetComponent <MovementComponent>();
        }
Пример #3
0
        protected override List <Lifetime> CreateLifetimes(ModifierInfo modifierInfo)
        {
            FreezeInfo     fi                               = (FreezeInfo)modifierInfo;
            float          duration                         = fi.Fmc.ShowDurationInSeconds();
            StatsComponent casterStatsComponent             = casterEntity.GetComponent <StatsComponent>();
            Stats          casterFreezeDurationUpScaleStats =
                casterStatsComponent.CharacterStats.FindStats(StatsType.FreezeDurationUpScale);
            StatsComponent targetStatsComponent = targetEntity.GetComponent <StatsComponent>();
            Stats          targetFreezeDurationDownScaleStats =
                targetStatsComponent.CharacterStats.FindStats(StatsType.FreezeDurationDownScale);

            return(new List <Lifetime>(new [] {
                new DurationBasedLifetime(
                    duration
                    * (1 + targetFreezeDurationDownScaleStats.BakedFloatValue)
                    * (1 + casterFreezeDurationUpScaleStats.BakedFloatValue)
                    ),
            }));
        }
Пример #4
0
        public void Save(FreezeInfo info)
        {
            var sql = "INSERT INTO dbo.T_OrderFreeze(Id,OrderId,ApplyformId,TradeNo,Account,Amount,FreezeNo," +
                      "RequestTime,Success,ProcessTime,[Type],Remark) VALUES (@Id,@OrderId,@ApplyformId,@TradeNo,@Account,@Amount,@FreezeNo," +
                      "@RequestTime,@Success,@ProcessTime,@Type,@Remark)";

            using (var dbOperator = new DbOperator(Provider, ConnectionString)) {
                dbOperator.AddParameter("Id", info.Id);
                dbOperator.AddParameter("OrderId", info.OrderId);
                dbOperator.AddParameter("ApplyformId", info.ApplyformId);
                dbOperator.AddParameter("TradeNo", info.TradeNo);
                dbOperator.AddParameter("Account", info.Account);
                dbOperator.AddParameter("Amount", info.Amount);
                if (string.IsNullOrWhiteSpace(info.No))
                {
                    dbOperator.AddParameter("FreezeNo", DBNull.Value);
                }
                else
                {
                    dbOperator.AddParameter("FreezeNo", info.No);
                }
                dbOperator.AddParameter("RequestTime", info.RequestTime);
                dbOperator.AddParameter("Success", info.Success);
                if (info.ProcessedTime.HasValue)
                {
                    dbOperator.AddParameter("ProcessTime", info.ProcessedTime.Value);
                }
                else
                {
                    dbOperator.AddParameter("ProcessTime", DBNull.Value);
                }
                dbOperator.AddParameter("Type", (byte)FreezeType.Freeze);
                dbOperator.AddParameter("Remark", info.Remark ?? string.Empty);
                dbOperator.ExecuteNonQuery(sql);
            }
        }
Пример #5
0
        public IEnumerable <FreezeBaseInfo> Query(FreezeQueryCondition condition, Pagination pagination)
        {
            var result       = new List <FreezeBaseInfo>();
            var fields       = "[Type],Id,OrderId,ApplyformId,TradeNo,Account,Amount,FreezeNo,UnfreezeNo,RequestTime,Success,ProcessTime,Remark";
            var catelog      = "dbo.T_OrderFreeze";
            var orderbyFiled = "ApplyformId DESC,RequestTime";

            var where = new StringBuilder();
            if (condition.OrderId.HasValue)
            {
                where.AppendFormat("OrderId={0} AND ", condition.OrderId.Value);
            }
            if (condition.ApplyformId.HasValue)
            {
                where.AppendFormat("ApplyformId={0} AND ", condition.ApplyformId.Value);
            }
            if (condition.Type.HasValue)
            {
                where.AppendFormat("[Type]={0} AND ", (byte)condition.Type.Value);
            }
            if (condition.Success.HasValue)
            {
                where.AppendFormat("Success={0} AND ", condition.Success.Value?1:0);
            }
            where.AppendFormat("RequestTime BETWEEN '{0}' AND '{1}'", condition.RequestDate.Lower.Date, condition.RequestDate.Upper.Date.AddDays(1).AddTicks(-1));
            using (var dbOperator = new DbOperator(Provider, ConnectionString)) {
                dbOperator.AddParameter("@iField", fields);
                dbOperator.AddParameter("@iCatelog", catelog);
                dbOperator.AddParameter("@iCondition", where.ToString());
                dbOperator.AddParameter("@iOrderBy", orderbyFiled);
                dbOperator.AddParameter("@iPagesize", pagination.PageSize);
                dbOperator.AddParameter("@iPageIndex", pagination.PageIndex);
                dbOperator.AddParameter("@iGetCount", pagination.GetRowCount);
                var totalCount = dbOperator.AddParameter("@oTotalCount");
                totalCount.DbType    = System.Data.DbType.Int32;
                totalCount.Direction = System.Data.ParameterDirection.Output;
                using (var reader = dbOperator.ExecuteReader("dbo.P_Pagination", System.Data.CommandType.StoredProcedure)) {
                    while (reader.Read())
                    {
                        FreezeBaseInfo item = null;
                        var            type = (FreezeType)reader.GetByte(0);
                        if (type == FreezeType.Freeze)
                        {
                            item = new FreezeInfo(reader.GetGuid(1))
                            {
                                TradeNo = getString(reader["TradeNo"]),
                                No      = getString(reader["FreezeNo"])
                            };
                        }
                        else
                        {
                            item = new UnfreezeInfo(reader.GetGuid(1))
                            {
                                FreezeNo = getString(reader["FreezeNo"]),
                                No       = getString(reader["UnfreezeNo"])
                            };
                        }
                        item.OrderId     = reader.GetDecimal(2);
                        item.ApplyformId = reader.GetDecimal(3);
                        item.Account     = reader.GetString(5);
                        item.Amount      = reader.GetDecimal(6);
                        item.RequestTime = reader.GetDateTime(9);
                        item.Success     = reader.GetBoolean(10);
                        if (!reader.IsDBNull(11))
                        {
                            item.ProcessedTime = reader.GetDateTime(11);
                        }
                        item.Remark = reader.IsDBNull(12) ? string.Empty : reader.GetString(12);
                        result.Add(item);
                    }
                }
                if (pagination.GetRowCount)
                {
                    pagination.RowCount = (int)totalCount.Value;
                }
            }
            return(result);
        }
Пример #6
0
        internal static void Freeze(BalanceRefundApplyform balanceRefundApplyform)
        {
            if (!balanceRefundApplyform.Order.Bill.PayBill.RoyaltySucceed)
            {
                return;
            }
            if (!balanceRefundApplyform.Applyform.RefundBill.Succeed)
            {
                return;
            }
            var    providerPayBill = balanceRefundApplyform.Order.Bill.PayBill.Provider;
            var    tradeNo         = balanceRefundApplyform.Order.Bill.PayBill.Tradement.TradeNo;
            var    freezeAccount   = providerPayBill.Owner.Account;
            var    freezeAmount    = getFreezeAmount(balanceRefundApplyform, providerPayBill, balanceRefundApplyform.Applyform.RefundBill.Provider);
            var    freezeRequest   = string.Format("交易流水号:{0} 账号:{1} 金额:{2}", tradeNo, freezeAccount, freezeAmount);
            var    freezeResponse  = string.Empty;
            string freezeNo        = null;
            var    freezeSuccess   = false;

            try
            {
                TradeFreezeRequestProcess request = new TradeFreezeRequestProcess(balanceRefundApplyform.OrderId, balanceRefundApplyform.Id, tradeNo, providerPayBill.Owner.Account, freezeAmount);
                if (request.Execute())
                {
                    freezeNo       = request.FreezeNo;
                    freezeResponse = "冻结号:" + freezeNo;
                    freezeSuccess  = true;
                }
                else
                {
                    freezeResponse = "冻结号失败," + request.Message;
                    freezeSuccess  = false;
                }
            }
            catch (Exception ex)
            {
                freezeResponse = ex.Message;
            }
            finally
            {
                // 记录冻结记录
                var freezeInfo = new FreezeInfo()
                {
                    OrderId     = balanceRefundApplyform.OrderId,
                    ApplyformId = balanceRefundApplyform.Id,
                    TradeNo     = balanceRefundApplyform.Order.Bill.PayBill.Tradement.TradeNo,
                    Account     = freezeAccount,
                    Amount      = freezeAmount,
                    No          = freezeNo,
                    RequestTime = DateTime.Now,
                    Success     = freezeSuccess
                };
                if (freezeSuccess)
                {
                    freezeInfo.ProcessedTime = DateTime.Now;
                    freezeInfo.Remark        = string.Empty;
                }
                else
                {
                    freezeInfo.Remark = freezeResponse;
                }
                var repository = Order.Repository.Factory.CreateFreezeRepository();
                repository.Save(freezeInfo);
                // 记录交互日志
                Service.LogService.SaveTradementLog(new TradementLog()
                {
                    OrderId     = balanceRefundApplyform.OrderId,
                    ApplyformId = balanceRefundApplyform.Id,
                    Type        = TradementBusinessType.Freeze,
                    Request     = freezeRequest,
                    Response    = freezeResponse,
                    Time        = DateTime.Now,
                    Remark      = "差额退款,冻结出票方票款"
                });
            }
        }