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; }
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; }
public JsonResult TopupByCards(string SN) { var p = new Cards(); p.SN = SN; var r = DAL.Update.BalanceTopupByCards(Client.MID, p); return Json(r); }
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); }