Ejemplo n.º 1
0
        public static R BalanceTopupByCards(int MID, Cards p)
        {
            var m = new R();
            try
            {
                SqlParameter[] param =
                {
                    new SqlParameter("@r",0),
                    new SqlParameter("@Code",0),
                    new SqlParameter("@Message",SqlDbType.NVarChar,4000),
                    new SqlParameter("@MID",MID),
                    new SqlParameter("@SN",p.SN)

                };
                param[0].Direction = ParameterDirection.ReturnValue;
                param[1].Direction = ParameterDirection.Output;
                param[2].Direction = ParameterDirection.Output;
                var r = SqlHelper.ExecuteNonQuery(C.conn, CommandType.StoredProcedure, "Update_BalanceTopupByCards", param);
                m.Code = Convert.ToInt32(param[1].Value);
                m.Message = Convert.ToString(param[2].Value);
                m.Value = Convert.ToInt32(param[0].Value);

            }
            catch (Exception ex)
            {
                m.Code = 300;
                m.Message = ex.Message;
                log.Fatal(ex.Message);
                log.FatalException(ex.Message, ex);
            }
            return m;
        }
Ejemplo n.º 2
0
        public static Cards Cards(string SN)
        {
            var m = new Cards();
            try
            {
                SqlParameter[] param =
                {
                    new SqlParameter("@SN",SN)

                };

                var dr = SqlHelper.ExecuteReader(C.conn, CommandType.StoredProcedure, "Get_Cards", param);
                if (dr.Read())
                {
                    m.ID = Convert.ToInt32(dr["ID"]);
                    m.SN = Convert.ToString(dr["SN"]);
                    m.Amount = Convert.ToDecimal(dr["Amount"]);
                    m.Status = Convert.ToInt32(dr["Status"]);
                    if (dr["CreateDate"] != DBNull.Value)
                        m.CreateDate = Convert.ToDateTime(dr["CreateDate"]);
                    if (dr["UpdateDate"] != DBNull.Value)
                        m.UpdateDate = Convert.ToDateTime(dr["UpdateDate"]);
                }
                dr.Close();

            }
            catch (Exception ex)
            {
                log.Fatal(ex.Message);
                log.Fatal(ex.StackTrace);
            }
            return m;
        }
Ejemplo n.º 3
0
 public JsonResult TopupByCards(string SN)
 {
     var p = new Cards();
     p.SN = SN;
     var r = DAL.Update.BalanceTopupByCards(Client.MID, p);
     return Json(r);
 }
Ejemplo n.º 4
0
        public JsonResult ActiveOrders(int ID,string NO, string SN)
        {
            var r = new R();
            var Card = DAL.Get.Cards(NO, SN);
            if (Card.Status == 1)
            {
                #region 卡有效的处理逻辑
                //卡有效
                var p = new Order();
                p.MID = Client.MID;
                p.Tags = ID.ToString();
                p.Memo = ID.ToString();
                var _r = DAL.Update.CreateOrder(p);

                if ((_r.Code == 0 || _r.Code == 1) && _r.Value > 0)
                {
                    //订单生成成功  _r.Value = 返回的内部订单号
                    p.ID = _r.Value;
                    if (_r.Code == 1)
                    {
                        DAL.Update.RefreshOrder(p);
                    }
                    var Order = DAL.Get.Order(Client.MID, _r.Value);
                    // 可以考虑 Card.Amount + Balance.Amount >= Order.Amount
                    if (Card.Amount == Order.Amount)
                    {
                        // 充值
                        var C = new Cards();
                        C.SN = SN;
                        var _r2 = DAL.Update.BalanceTopupByCards(Client.MID, C);
                        if (_r2.Code == 0)
                        {
                            var Balance = DAL.Get.Balance(Client.MID);
                            if (Balance.Amount >= Order.Amount)
                            {
                                DAL.Update.RefreshOrder(p);
                                Order = DAL.Get.Order(Client.MID, _r.Value);
                                r = DAL.Update.CommitOrder(Order);
                                if (r.Code != 0)
                                {
                                    log.Fatal("ActiveOrders.CommitOrder Fail,{0},{1}", Client.MID, ID);
                                }
                                // 订单激活成功!
                            }
                            else
                            {
                                r.Code = 201;
                                r.Message = "Insufficient Balance";

                            }
                        }
                        else
                        {
                            r.Code = 201;
                            r.Message = "充值失败";
                            log.Fatal("ActiveOrders.BalanceTopupByCards Fail,{0},{1}", Client.MID, ID);
                        }
                    }
                    else
                    {
                        r.Code = 102;
                        r.Message = "该卡金额无法激活本订单";
                    }

                }
                else
                {
                    r.Code = 101;
                    r.Message = "订单生成失败";
                }
                #endregion
            }
            else
            {
                //卡无效
                r.Code = 100;
                r.Message = "卡号无效";
                r.Value = Card.Status;
            }

            return Json(r);
        }