Beispiel #1
0
        public bool Pay()
        {
            BeginTransaction();
            Tvip_Order daOrder = new Tvip_Order();

            daOrder.ReferenceTransactionFrom(Transaction);
            if (!daOrder.SelectByOrderNo(_orderNo))
            {
                Rollback();
                Alert((ResultType)ApiStatusCode.DATA_NOT_FOUND, "订单号不存在");
                return(false);
            }
            if (daOrder.Status == 1)
            {
                Rollback();
                Alert((ResultType)ApiStatusCode.REQUEST_ALREADY_PROCCEED, "订单已支付,请不要重复支付");
                return(false);
            }
            if (this._userId.HasValue && daOrder.User_Id != this._userId.Value)
            {
                Rollback();
                Alert((ResultType)ApiStatusCode.OPERATOR_FORBIDDEN, "操作不允许");
                return(false);
            }
            int transferId;

            if (!DoTransfer(daOrder.User_Id, daOrder.Amount, out transferId))
            {
                Rollback();
                return(false);
            }
            if (!daOrder.UpdatePaymentByOrderId(daOrder.Order_Id, OrderStatus.支付成功, OrderStatus.等待支付, this._payType))
            {
                Rollback();
                Alert((ResultType)ApiStatusCode.DATA_REFRESH_FAIL, "更新订单信息失败");
                return(false);
            }
            Commit();
            Task.Factory.StartNew(() =>
            {
                int order_id = daOrder.Order_Id;
                UpgradeUserRoleProvider provider = new UpgradeUserRoleProvider(order_id);
                bool res = provider.Upgrade();
                Log.Info("异步立即执行升级程序,订单号:{0},处理结果:{1},错误信息:{2}", order_id, res ? "成功" : "失败", provider.PromptInfo.CustomMessage);
            });
            return(true);
        }