public ActionResult ProductUserOrders(string id)
        {
            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];

            string sign = ValidateUserSign(hotelweixinId, userweixinId);

            if (string.IsNullOrEmpty(sign))
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "用户参数不合法", key = key }));
            }
            ViewData["key"] = key + "@" + sign;


            int count    = 0;
            int page     = 1;
            int pageSize = int.MaxValue;

            DataTable db_order    = SaleProducts_Orders.GetSaleProducts_Orders(userweixinId, out count, page, pageSize, "", "");
            var       list_orders = DataTableToEntity.GetEntities <Models.Home.SaleProducts_Orders>(db_order).ToList();

            ViewData["Orders"] = list_orders;

            return(View());
        }
        public ActionResult ProductUserOrderDetail(string orderNo)
        {
            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];
            string sign          = string.Empty;


            //当没有签名字符启用查询验证
            if (key.Split('@').Length <= 2)
            {
                sign = ValidateUserSign(hotelweixinId, userweixinId);
                if (string.IsNullOrEmpty(sign))
                {
                    return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "用户参数不合法", key = key }));
                }
                ViewData["key"] = key + "@" + sign;
                return(RedirectToAction("ProductUserOrderDetail", "Product", new { orderNo = orderNo, key = ViewData["key"] }));
            }

            sign = key.Split('@')[2];
            if (!IsValidateUser(hotelweixinId, userweixinId, sign))
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "签名不合法", key = key }));
            }
            ViewData["key"] = key;



            DataTable db_order = SaleProducts_Orders.GetSaleProducts_Orders(orderNo, userweixinId);
            var       order    = DataTableToEntity.GetEntity <Models.Home.SaleProducts_Orders>(db_order);

            ViewData["order"] = order;



            return(View());
        }
Esempio n. 3
0
        public ActionResult ProductPay()
        {
            int    status = -1;
            string errmsg = "";

            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];

            string    saveinfo      = HCRequest.GetString("saveinfo");
            Hashtable saveinfotable = Newtonsoft.Json.JsonConvert.DeserializeObject <Hashtable>(saveinfo);

            int couponid = Convert.ToInt32(saveinfotable["couponid"]);

            if (couponid > 0)
            {
                bool couPonEnable = WeiXin.Models.Home.CouPonContent.IsCouPonContentEnable(hotelweixinId, userweixinId, couponid);
                if (!couPonEnable)
                {
                    errmsg = "红包已被使用,不能再次使用";
                    return(Json(new
                    {
                        Status = status,
                        Mess = errmsg
                    }, JsonRequestBehavior.AllowGet));
                }
            }

            SaleProducts_Orders order = new SaleProducts_Orders();

            if (saveinfotable["orderno"] != null && saveinfotable["orderno"].ToString() != string.Empty)
            {
                DataTable db_order = WeiXin.Models.Home.SaleProducts_Orders.GetSaleProducts_Orders(saveinfotable["orderno"].ToString(), userweixinId);
                order = DataTableToEntity.GetEntity <WeiXin.Models.Home.SaleProducts_Orders>(db_order);

                if (order.Ispay)
                {
                    errmsg = "订单已付款";
                    return(Json(new
                    {
                        Status = status,
                        Mess = errmsg
                    }, JsonRequestBehavior.AllowGet));
                }

                if ((DateTime.Now - order.OrderAddTime).TotalMinutes > 30)
                {
                    errmsg = "支付超时,订单已关闭";
                    return(Json(new
                    {
                        Status = status,
                        Mess = errmsg
                    }, JsonRequestBehavior.AllowGet));
                }
            }



            order.ProductId    = Convert.ToInt32(saveinfotable["productid"]);
            order.TcId         = Convert.ToInt32(saveinfotable["tcid"]);
            order.BookingCount = Convert.ToInt32(saveinfotable["bookingcount"]);
            order.CheckOutTime = order.CheckInTime = Convert.ToDateTime(saveinfotable["traveldate"]);

            string token = string.Empty;

            if (saveinfotable["t"] == null || saveinfotable["t"].ToString() == string.Empty)
            {
                TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                token = string.Format("{0}", Convert.ToInt64(ts.TotalMilliseconds).ToString());
            }

            else
            {
                token = saveinfotable["t"].ToString();
            }



            var products = WeiXin.Models.Home.SaleProduct.GetSaleProduct(hotelweixinId, order.ProductId);

            token = string.Format("{0}_{1}", products.HotelId, token);
            string before_token = WeiXin.Models.Home.SaleProducts_Orders.GetSaleProducts_OrdersByToken(token);

            if (!string.IsNullOrEmpty(before_token))
            {
                errmsg = "请不要重复提交订单";

                return(Json(new
                {
                    Status = status,
                    Mess = errmsg
                }, JsonRequestBehavior.AllowGet));
            }


            products.List_SaleProducts_TC = WeiXin.Models.Home.SaleProducts_TC.GetSaleProducts_TC(products.Id);

            order.OrderAddTime = DateTime.Now;
            order.ProductName  = products.ProductName;
            order.LinkName     = order.UserName = saveinfotable["lxr_name"].ToString();
            order.UserMobile   = saveinfotable["lxr_mobile"].ToString();



            order.UserWeiXinId = userweixinId;

            order.HotelWeiXinId = products.WeiXinId;
            order.HotelId       = products.HotelId;

            order.Token = token;

            order.OrderNo = "p" + DateTime.Now.ToString("yyMMddHHmmssfff") + new Random().Next(11, 99);


            var tc_product = products.List_SaleProducts_TC.Where(c => c.Id == order.TcId).FirstOrDefault();

            order.TcName      = tc_product.TcName;
            order.ProductType = products.ProductType;


            // grooup buy
            if (products.ProductType == 0)
            {
                if (products.BeginTime > DateTime.Now)
                {
                    errmsg = "产品还未开始预售";

                    return(Json(new
                    {
                        Status = status,
                        Mess = errmsg
                    }, JsonRequestBehavior.AllowGet));
                }

                if (products.EndTime < DateTime.Now)
                {
                    errmsg = "产品已过期";

                    return(Json(new
                    {
                        Status = status,
                        Mess = errmsg
                    }, JsonRequestBehavior.AllowGet));
                }

                // int hexiaoMa = new Random().Next(100000000, 999990000);


                //  order.OrderMoney = Convert.ToDecimal(tc_product.ProductPrice * order.BookingCount);
            }

            else
            {
                var tc_priceList = WeiXin.Models.Home.SaleProducts_TC_Price.GetSaleProducts_TC_Price(order.TcId);
                var tc_price     = tc_priceList.Where(c => c.SaleTime == order.CheckInTime).FirstOrDefault();
                // order.OrderMoney = Convert.ToDecimal(order.BookingCount * tc_price.Price);
            }


            order.OrderMoney        = Convert.ToDecimal(saveinfotable["ssumprice"]);
            order.OriginalSaleprice = Convert.ToDecimal(saveinfotable["originalsaleprice"]);

            order.Remark       = "";
            order.TaoBaoStatus = "";
            order.OperatorLog  = "";
            order.OrderStatus  = 0;


            Dictionary <string, object> CouponInfoDic = new Dictionary <string, object>();

            if (couponid > 0)
            {
                CouponInfoDic.Add("CouponId", couponid);
                CouponInfoDic.Add("CouPon", Convert.ToInt32(saveinfotable["couponprice"]));
            }
            object gradename = saveinfotable["gradename"];

            CouponInfoDic.Add("GradeRate", WeiXinPublic.ConvertHelper.ToDouble(saveinfotable["graderate"]));
            CouponInfoDic.Add("GradeName", gradename == null ? string.Empty : gradename.ToString());
            CouponInfoDic.Add("IsVip", WeiXinPublic.ConvertHelper.ToInt(saveinfotable["isvip"]));
            order.CouponInfo = Newtonsoft.Json.JsonConvert.SerializeObject(CouponInfoDic);

            order.Jifen = Convert.ToInt32(saveinfotable["jifen"]);

            order.PayType = saveinfotable["zhifutype"].ToString() == "card" ? "储值卡支付" : "微信支付";

            var tgyModel = hotel3g.Models.MemberFxLogic.GetTuiGuangProfit(ProfitType.tuangou, products.WeiXinId, userweixinId, Convert.ToDouble(order.OrderMoney));

            order.Promoterid    = tgyModel.promoterid;
            order.FxCommission  = Convert.ToDecimal(tgyModel.hotelCommission);
            order.Fxmoneyprofit = Convert.ToDecimal(tgyModel.userCommission);

            int Id = WeiXin.Models.Home.SaleProducts_Orders.AddSaleProducts_Orders2(order);

            if (Id > 0)
            {
                status = 0;

                if (couponid > 0)
                {
                    string sql = "update couponcontent set isemploy=1,employtime=@time,orderid=@orderid where id=@couponid and weixinid=@weixinid and userweixinno=@userweixinid";
                    int    row = SQLHelper.Run_SQL(sql, SQLHelper.GetCon(), new Dictionary <string, DBParam>()
                    {
                        { "time", new DBParam()
                          {
                              ParamValue = DateTime.Now.ToString()
                          } },
                        { "orderid", new DBParam()
                          {
                              ParamValue = Id.ToString()
                          } },
                        { "couponid", new DBParam()
                          {
                              ParamValue = couponid.ToString()
                          } },
                        { "weixinid", new DBParam()
                          {
                              ParamValue = hotelweixinId
                          } },
                        { "userweixinid", new DBParam()
                          {
                              ParamValue = userweixinId
                          } }
                    });
                }

                if (order.Jifen > 0)
                {
                    string cardno   = saveinfotable["cardno"] == null ? string.Empty : saveinfotable["cardno"].ToString();
                    string memberid = saveinfotable["memberid"] == null ? string.Empty : saveinfotable["memberid"].ToString();
                    string sql      = "insert into jifendetail (weixinid,userweixinid,jifen,addtime,orderid,night,cardno,userid) values (@weixinid,@userweixinid,@jifen,@addtime,@orderid,@night,@cardno,@userid)";
                    int    rs       = SQLHelper.Run_SQL(sql, SQLHelper.GetCon(), new Dictionary <string, DBParam>()
                    {
                        { "weixinid", new DBParam()
                          {
                              ParamValue = hotelweixinId
                          } },
                        { "userweixinid", new DBParam()
                          {
                              ParamValue = userweixinId
                          } },
                        { "jifen", new DBParam()
                          {
                              ParamValue = order.Jifen.ToString()
                          } },
                        { "addtime", new DBParam()
                          {
                              ParamValue = DateTime.Now.ToString()
                          } },
                        { "orderid", new DBParam()
                          {
                              ParamValue = Id.ToString()
                          } },
                        { "night", new DBParam()
                          {
                              ParamValue = "1"
                          } },
                        { "cardno", new DBParam()
                          {
                              ParamValue = cardno
                          } },
                        { "userid", new DBParam()
                          {
                              ParamValue = memberid
                          } },
                    });
                }


                return(Json(new
                {
                    Status = status,
                    Mess = order.OrderNo
                }, JsonRequestBehavior.AllowGet));
            }



            errmsg = "抱歉,下单失败";
            return(Json(new
            {
                Status = status,
                Mess = errmsg
            }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 4
0
        public ActionResult ProductUserOrderDetail(string orderNo)
        {
            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];

            ViewData["key"] = key;
            DataTable db_order = SaleProducts_Orders.GetSaleProducts_OrdersA(orderNo, userweixinId);
            var       order    = DataTableToEntity.GetEntity <WeiXin.Models.Home.SaleProducts_Orders>(db_order);

            ViewData["order"] = order;


            List <SaleProducts_OrdersTuan> list_tuan = new List <SaleProducts_OrdersTuan>();

            if (order.Id > 0 && order.ProductType == 0)
            {
                DataTable db_tuan = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@" select *  from SaleProducts_OrdersTuan  with(nolock)  where OrderId=@OrderId ", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "OrderId", new HotelCloud.SqlServer.DBParam {
                          ParamValue = order.Id.ToString()
                      } }
                });

                list_tuan = DataTableToEntity.GetEntities <SaleProducts_OrdersTuan>(db_tuan).ToList();
            }

            ViewData["list_tuan"] = list_tuan;

            DataTable db = WeiXin.Models.Home.SaleProduct.GetHotelInfo(hotelweixinId);

            if (db.Rows.Count > 0)
            {
                ViewData["hotelname"] = db.Rows[0]["SubName"].ToString();
                ViewData["tel"]       = db.Rows[0]["tel"].ToString();
                ViewData["address"]   = db.Rows[0]["address"].ToString();
            }



            DataTable db_time = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@" select EffectiveBeginTime, EffectiveEndTime from SaleProducts  with(nolock)  where Id=@Id", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                { "Id", new HotelCloud.SqlServer.DBParam {
                      ParamValue = order.ProductId.ToString()
                  } }
            });

            if (db_time.Rows.Count > 0)
            {
                ViewData["effectiveBeginTime"] = Convert.ToDateTime(db_time.Rows[0]["effectiveBeginTime"]).ToString("yyyy-MM-dd");

                if (DateTime.Now.Date > Convert.ToDateTime(ViewData["effectiveBeginTime"]))
                {
                    ViewData["effectiveBeginTime"] = DateTime.Now.ToString("yyyy-MM-dd");
                }


                ViewData["effectiveEndTime"] = Convert.ToDateTime(db_time.Rows[0]["effectiveEndTime"]).ToString("yyyy-MM-dd");

                if (DateTime.Now.Date.AddMonths(2) < Convert.ToDateTime(ViewData["effectiveEndTime"]))
                {
                    ViewData["effectiveEndTime"] = DateTime.Now.Date.AddMonths(2).ToString("yyyy-MM-dd");
                }
            }


            return(View());
        }
Esempio n. 5
0
        public ActionResult PayMoney()
        {
            string orderNo     = Request.Form["orderNo"].ToLower();
            string payPassword = Request.Form["payPassword"];

            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];

            string edition           = Request.QueryString["edition"];
            string errControllerName = edition == "1"  ?  "ProductA": "Product";

            string mess = string.Empty;
            bool   isOK = ValidateUserPayPassword(hotelweixinId, userweixinId, payPassword, out mess);



            if (isOK == false)
            {
                return(RedirectToAction("ProductErrMsg", errControllerName, new { id = RouteData.Values["id"], errmsg = mess, key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            DataTable db_member = RechargeCard.GetRechargeMemberInfo(hotelweixinId, userweixinId);
            decimal   balance   = Convert.ToDecimal(db_member.Rows[0]["balance"].ToString());

            decimal payMoney = GetPayOrderMoney(orderNo);

            if (payMoney <= 0)
            {
                return(RedirectToAction("ProductErrMsg", errControllerName, new { id = RouteData.Values["id"], errmsg = "找不到该产品!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            if (balance < payMoney)
            {
                return(RedirectToAction("ProductErrMsg", errControllerName, new { id = RouteData.Values["id"], errmsg = "余额不足!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }



            RechargeUser rechargeUser = new RechargeUser();

            rechargeUser.SPrice         = -payMoney;
            rechargeUser.MPrice         = rechargeUser.SPrice;
            rechargeUser.IsCardPassword = false;
            rechargeUser.Source         = "pay";
            rechargeUser.AddTime        = DateTime.Now;
            rechargeUser.HotelWeixinId  = hotelweixinId;
            rechargeUser.HotelId        = Convert.ToInt32(RouteData.Values["id"]);
            rechargeUser.UserMobile     = db_member.Rows[0]["mobile"].ToString();
            rechargeUser.PayType        = 1;
            rechargeUser.UserLevel      = db_member.Rows[0]["viptype"].ToString();
            rechargeUser.UserWeixinId   = userweixinId;
            rechargeUser.UserName       = db_member.Rows[0]["name"].ToString();
            rechargeUser.Beforebalance  = balance;
            rechargeUser.Balance        = rechargeUser.Beforebalance - payMoney;

            rechargeUser.OrderNo     = "c" + DateTime.Now.ToString("yyMMddHHmmssfff") + new Random().Next(11, 99);
            rechargeUser.OrderStatus = 1;
            rechargeUser.CardId      = 0;

            rechargeUser.TradeOrderNo = orderNo;


            bool opFlag = false;

            int p_Status = 0;

            using (TransactionScope scop = new TransactionScope())
            {
                int rechargeId = WeiXin.Models.Home.RechargeUser.AddRechargeCard(rechargeUser);
                if (rechargeId > 0)
                {
                    int row = RechargeCard.ReduceRechargeMemberBalance(hotelweixinId, userweixinId, payMoney);
                    if (row > 0)
                    {
                        string operationRecord = string.Format("[储值卡支付]:于{0}支付:{1}", DateTime.Now, payMoney);
                        string payType         = "储值卡支付";

                        //团购预售
                        if (orderNo.Contains("p"))
                        {
                            string tsql = @"update SaleProducts_Orders set OrderStatus=3, Remark=isnull(Remark,'')+@OperationRecord,IsPay=1,PayTime=getdate(),payType=@payType  where  OrderNo=@OrderNO and  IsPay=0 ";
                            p_Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "OperationRecord", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = operationRecord
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });

                            if (p_Status > 0)
                            {
                                //短信发送的用在事物里面有问题
                            }
                        }

                        //餐饮
                        else if (orderNo.Contains("l"))
                        {
                            string tsql   = @"update WeiXin..T_OrderInfo set Status=9,payTime=getdate(),orderPayState=1,orderPayType=@payType  where  orderCode=@OrderNO ";
                            int    Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });
                        }


                        //超市
                        else if (orderNo.Contains("d"))
                        {
                            string tsql = @"update SupermarketOrder_Levi set OrderStatus = 2,PayStatus = 2,PayTime=getdate(),aliPayAmount=@AliPayAmount,payMethod=@payType  where  OrderId =@OrderNO;INSERT INTO [WeiXin].[dbo].[SupermarketOrderLog_Levi]([OrderId],[Context],[LogType],[CreateUser],[CreateTime]) VALUES(@OrderNO,'订单状态流转为:已付款',1,'用户',GETDATE())";

                            int Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "AliPayAmount", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = (payMoney * 100).ToString()
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });
                        }

                        //酒店
                        else
                        {
                            string tsql = @"update HotelOrder set Remark=isnull(Remark,'')+@OperationRecord,aliPayAmount=@AliPayAmount,aliPayTime=getdate(),tradeStatus='TRADE_FINISHED',state=24,tradeNo=@TradeNo,payMethod=@payType  where  OrderNO=@OrderNO ";

                            int Status = HotelCloud.SqlServer.SQLHelper.Run_SQL(tsql, HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                                { "OrderNO", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = orderNo
                                  } },
                                { "TradeNo", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = ""
                                  } },
                                { "AliPayAmount", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = (payMoney * 100).ToString()
                                  } },
                                { "OperationRecord", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = operationRecord
                                  } },
                                { "payType", new HotelCloud.SqlServer.DBParam {
                                      ParamValue = payType
                                  } }
                            });
                        }


                        opFlag = true;
                        scop.Complete();
                    }
                }
            }


            //支付成功
            if (opFlag)
            {
                if (orderNo.Contains("p"))
                {
                    if (p_Status > 0)
                    {
                        SaleProducts_Orders.DoneOrderSuccess(orderNo);
                    }

                    if (edition == "1")
                    {
                        return(RedirectToAction("ProductUserOrderDetail", "productA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), OrderNo = orderNo }));
                    }

                    else
                    {
                        return(RedirectToAction("ProductUserOrderDetail", "product", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), OrderNo = orderNo }));
                    }
                }

                if (orderNo.Contains("l"))
                {
                    if (edition == "1")
                    {
                        string storeID = HotelCloud.SqlServer.SQLHelper.Get_Value("SELECT  storeID  FROM WeiXin..T_OrderInfo with(nolock)   where  ordercode=@ordercode", HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                            { "ordercode", new HotelCloud.SqlServer.DBParam {
                                  ParamValue = orderNo
                              } }
                        });

                        return(RedirectToAction("ViewOrderDetail", "DishOrderA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo, storeID = storeID }));
                    }

                    else
                    {
                        return(RedirectToAction("PaySuccess", "DishOrder", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo }));
                    }
                }


                if (orderNo.Contains("d"))
                {
                    if (edition == "1")
                    {
                        return(RedirectToAction("OrderDetails2", "SupermarketA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                    }

                    else
                    {
                        return(RedirectToAction("OrderPay", "Supermarket", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                    }
                }

                else
                {
                    string orderId = HotelCloud.SqlServer.SQLHelper.Get_Value("SELECT  Id  FROM WeiXin..HotelOrder with(nolock)   where  orderNo=@orderNo", HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                        { "orderNo", new HotelCloud.SqlServer.DBParam {
                              ParamValue = orderNo
                          } }
                    });


                    if (edition == "1")
                    {
                        Response.Redirect(string.Format("/UserA/OrderInfo/{0}?key={1}&Id={2}", RouteData.Values["id"], HotelCloud.Common.HCRequest.GetString("key"), orderId));
                        return(View());
                    }


                    else
                    {
                        //return RedirectToAction("resultNotifyPage.aspx", "WeiXinZhiFu", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), code = orderNo, error = "ok" });
                        Response.Redirect(string.Format("/User/OrderInfo/{0}?key={1}&Id={2}", RouteData.Values["id"], HotelCloud.Common.HCRequest.GetString("key"), orderId));
                        return(View());
                    }
                }
            }


            //支付失败以后
            if (orderNo.Contains("l"))
            {
                if (edition == "1")
                {
                    string storeID = HotelCloud.SqlServer.SQLHelper.Get_Value("SELECT  storeID  FROM WeiXin..T_OrderInfo with(nolock)   where  ordercode=@ordercode", HotelCloud.SqlServer.SQLHelper.Open_Conn(System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString.ToString()), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                        { "ordercode", new HotelCloud.SqlServer.DBParam {
                              ParamValue = orderNo
                          } }
                    });
                    return(RedirectToAction("ViewOrderDetail", "DishOrderA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo, storeID = storeID }));
                }

                else
                {
                    return(RedirectToAction("PayFail", "DishOrder", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderCode = orderNo }));
                }
            }


            if (orderNo.Contains("d"))
            {
                if (edition == "1")
                {
                    return(RedirectToAction("OrderDetails2", "SupermarketA", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                }

                else
                {
                    return(RedirectToAction("PayFail", "Supermarket", new { id = RouteData.Values["id"], key = HotelCloud.Common.HCRequest.GetString("key"), orderid = orderNo }));
                }
            }


            if (edition == "1")
            {
                return(RedirectToAction("ProductErrMsg", "ProductA", new { id = RouteData.Values["id"], errmsg = "支付失败!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            else
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "支付失败!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }
        }
        public ActionResult HotelHexiaoMa()
        {
            string   orderNo = HotelCloud.Common.HCRequest.GetString("OrderNo").TrimEnd();
            string   yuName  = HotelCloud.Common.HCRequest.GetString("yuName").TrimEnd();
            DateTime yuDate  = Convert.ToDateTime(HotelCloud.Common.HCRequest.GetString("yuDate"));


            int    status = -1;
            string errmsg = string.Empty;


            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];
            string sign          = key.Split('@')[2];

            if (!IsValidateUser(hotelweixinId, userweixinId, sign))
            {
                errmsg = "签名不合法";
                return(Json(new
                {
                    Status = status,
                    Mess = errmsg
                }, JsonRequestBehavior.AllowGet));
            }
            ViewData["key"] = key;



            DataTable db_order = SaleProducts_Orders.GetSaleProducts_Orders(orderNo, userweixinId);
            var       order    = DataTableToEntity.GetEntity <Models.Home.SaleProducts_Orders>(db_order);

            if (order.Id > 0 && order.ProductType == 0 && order.Ispay && (order.HexiaoStatus == (int)ProductSaleOrderTuanStatus.未预约 || order.HexiaoStatus == (int)ProductSaleOrderTuanStatus.预约失败))
            {
                int row = HotelCloud.SqlServer.SQLHelper.Run_SQL(@" update SaleProducts_Orders set HexiaoStatus=1,CheckInTime=@CheckInTime,CheckOutTime=@CheckOutTime,UserName=@UserName  where Id=@Id", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "CheckInTime", new HotelCloud.SqlServer.DBParam {
                          ParamValue = yuDate.ToString()
                      } },
                    { "CheckOutTime", new HotelCloud.SqlServer.DBParam {
                          ParamValue = yuDate.ToString()
                      } },
                    { "UserName", new HotelCloud.SqlServer.DBParam {
                          ParamValue = yuName
                      } },
                    { "Id", new HotelCloud.SqlServer.DBParam {
                          ParamValue = order.Id.ToString()
                      } }
                });
                if (row > 0)
                {
                    string log = string.Format("用户申请预约");
                    row = HotelCloud.SqlServer.SQLHelper.Run_SQL(@"insert into dbo.wkn_operatingrecord(weixinid,orderno,operator,operationdate,description) values(@weixinid,@orderno,@operator,@operationdate,@description) ", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                        { "orderno", new HotelCloud.SqlServer.DBParam {
                              ParamValue = order.OrderNo
                          } },
                        { "weixinid", new HotelCloud.SqlServer.DBParam {
                              ParamValue = order.HotelWeiXinId
                          } },
                        { "operator", new HotelCloud.SqlServer.DBParam {
                              ParamValue = "用户"
                          } },
                        { "operationdate", new HotelCloud.SqlServer.DBParam {
                              ParamValue = DateTime.Now.ToString()
                          } },
                        { "description", new HotelCloud.SqlServer.DBParam {
                              ParamValue = log
                          } }
                    });

                    status = 0;
                    errmsg = "预约成功";
                }


                else
                {
                    errmsg = "预约失败";
                }
            }

            else
            {
                errmsg = "找不到预约产品!";
            }

            return(Json(new
            {
                Status = status,
                Mess = errmsg
            }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult ProductUserHexiao(string orderNo)
        {
            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];
            string sign          = key.Split('@')[2];

            if (!IsValidateUser(hotelweixinId, userweixinId, sign))
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "签名不合法", key = key }));
            }
            ViewData["key"] = key;

            DataTable db_order = SaleProducts_Orders.GetSaleProducts_Orders(orderNo, userweixinId);
            var       order    = DataTableToEntity.GetEntity <Models.Home.SaleProducts_Orders>(db_order);


            if (order.Id > 0)
            {
                if (order.ProductType == 0)
                {
                    //未使用或失败
                    if (order.HexiaoStatus == 0 || order.HexiaoStatus == 3)
                    {
                        ViewData["order"] = order;
                    }

                    else
                    {
                        return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "已经预约过产品!", key = HotelCloud.Common.HCRequest.GetString("key") }));
                    }
                }


                else
                {
                    return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "非团购产品无需预约!", key = HotelCloud.Common.HCRequest.GetString("key") }));
                }



                DataTable db_time = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@" select EffectiveBeginTime, EffectiveEndTime from SaleProducts  with(nolock)  where Id=@Id", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                    { "Id", new HotelCloud.SqlServer.DBParam {
                          ParamValue = order.ProductId.ToString()
                      } }
                });

                if (db_time.Rows.Count > 0)
                {
                    ViewData["effectiveBeginTime"] = Convert.ToDateTime(db_time.Rows[0]["effectiveBeginTime"]).ToString("yyyy-MM-dd");

                    if (DateTime.Now.Date > Convert.ToDateTime(ViewData["effectiveBeginTime"]))
                    {
                        ViewData["effectiveBeginTime"] = DateTime.Now.ToString("yyyy-MM-dd");
                    }


                    ViewData["effectiveEndTime"] = Convert.ToDateTime(db_time.Rows[0]["effectiveEndTime"]).ToString("yyyy-MM-dd");
                }
            }

            else
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "找不到预约产品!", key = HotelCloud.Common.HCRequest.GetString("key") }));
            }

            return(View());
        }
        public ActionResult ProductPay(string id)
        {
            string key           = HotelCloud.Common.HCRequest.GetString("key");
            string hotelweixinId = key.Split('@')[0];
            string userweixinId  = key.Split('@')[1];
            string sign          = key.Split('@')[2];

            if (!IsValidateUser(hotelweixinId, userweixinId, sign))
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "签名不合法", key = key }));
            }
            ViewData["key"] = key;


            SaleProducts_Orders order = new SaleProducts_Orders();

            if (!string.IsNullOrEmpty(HotelCloud.Common.HCRequest.GetString("orderNo")))
            {
                DataTable db_order = Models.Home.SaleProducts_Orders.GetSaleProducts_Orders(HotelCloud.Common.HCRequest.GetString("orderNo"), userweixinId);

                order = DataTableToEntity.GetEntity <Models.Home.SaleProducts_Orders>(db_order);

                if (order.Ispay)
                {
                    return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "订单已付款!", key = key }));
                }

                if ((DateTime.Now - order.OrderAddTime).TotalMinutes > 30)
                {
                    return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "支付超时,订单已关闭。", key = key }));
                }

                ViewData["order"] = order;

                return(View());
            }



            order.ProductId    = Convert.ToInt32(Request.Form["ProductId"]);
            order.TcId         = Convert.ToInt32(Request.Form["tcId"]);
            order.BookingCount = Convert.ToInt32(Request.Form["BookingCount"]);
            order.CheckOutTime = order.CheckInTime = Convert.ToDateTime(Request.Form["TravelDate"]);

            string token = Request.Form["t"];

            string signorder = string.Format("{0}_{1}_{2}_{3}_{4}_{5}", order.ProductId, order.TcId, order.BookingCount, order.CheckInTime.ToString("yyyy-MM-dd"), token, keyOrder);

            signorder = Encryption(signorder);


            if (Request.Form["sign"] != signorder)
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "非法的请求!", key = key }));
            }

            var products = Models.Home.SaleProduct.GetSaleProduct(hotelweixinId, order.ProductId);

            token = string.Format("{0}_{1}", products.HotelId, token);
            string before_token = Models.Home.SaleProducts_Orders.GetSaleProducts_OrdersByToken(token);

            if (!string.IsNullOrEmpty(before_token))
            {
                return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "请不要重复提交订单", key = key }));
            }


            products.List_SaleProducts_TC = Models.Home.SaleProducts_TC.GetSaleProducts_TC(products.Id);



            order.OrderAddTime = DateTime.Now;
            order.ProductName  = products.ProductName;
            order.LinkName     = order.UserName = Request.Form["lxr_name"].ToString();
            order.UserMobile   = Request.Form["lxr_mobile"].ToString();



            order.UserWeiXinId = userweixinId;

            order.HotelWeiXinId = products.WeiXinId;
            order.HotelId       = products.HotelId;

            order.Token = token;

            order.OrderNo = "p" + DateTime.Now.ToString("yyMMddHHmmssfff") + new Random().Next(11, 99);


            var tc_product = products.List_SaleProducts_TC.Where(c => c.Id == order.TcId).FirstOrDefault();

            order.TcName      = tc_product.TcName;
            order.ProductType = products.ProductType;


            // grooup buy
            if (products.ProductType == 0)
            {
                if (products.BeginTime > DateTime.Now)
                {
                    return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "产品还未开始预售。", key = key }));
                }

                if (products.EndTime < DateTime.Now)
                {
                    return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "产品已过期。", key = key }));
                }

                // int hexiaoMa = new Random().Next(100000000, 999990000);


                order.OrderMoney = Convert.ToDecimal(tc_product.ProductPrice * order.BookingCount);
            }

            else
            {
                var tc_priceList = Models.Home.SaleProducts_TC_Price.GetSaleProducts_TC_Price(order.TcId);
                var tc_price     = tc_priceList.Where(c => c.SaleTime == order.CheckInTime).FirstOrDefault();
                order.OrderMoney = Convert.ToDecimal(order.BookingCount * tc_price.Price);
            }

            order.Remark       = "";
            order.TaoBaoStatus = "";
            order.OperatorLog  = "";
            order.OrderStatus  = 0;


            int Id = Models.Home.SaleProducts_Orders.AddSaleProducts_Orders(order);

            if (Id > 0)
            {
                return(RedirectToAction("ProductPay", "Product", new { OrderNo = order.OrderNo, key = key }));
            }

            return(RedirectToAction("ProductErrMsg", "Product", new { id = RouteData.Values["id"], errmsg = "抱歉,下单失败", key = key }));
        }