public ActionResult PostAvatar(string token, string memberid)
        {
            var data = new Models.AccountModels.json_model();

            try
            {
                if (string.IsNullOrEmpty(token))
                {
                    return(Json(new { response = Extensions.ErrorInfo.ParameterError, message = "参数错误" }));
                }
                if (AuthIsOpen)
                {
                    var dic = new SortedDictionary <string, string>();
                    dic.Add("token", token);
                    dic.Add("memberid", memberid);
                    dic.Add("timestamp", Request["timestamp"]);
                    VerifyAuthorize(dic);
                }
                var cache = new Cache.MemberTokenCache().Get(token);
                if (cache != null && cache.Id.ToString() == memberid)
                {
                    var Photo = new ERP.Common.FileHelper().SaveFileAbsolute("memimg", cache.Picture, ERP.Common.FileConfig.FileLocalPath + "/" + ERP.Common.FileConfig.FileType.MemberPhoto.ToString());
                    if (!string.IsNullOrEmpty(Photo))
                    {
                        //添加头像  这里直接返回图像地址就不需要重新缓存了
                        var re = proveder.SavePicture(cache.Id, Photo);

                        var picurl = new ERP.Common.FileHelper().GetWebFileUrl(Photo, ERP.Common.FileConfig.FileType.MemberPhoto.ToString());
                        var model  = new Models.AccountModels.result_model();
                        model.picture = picurl;
                        data.response = (int)Extensions.ErrorInfo.OK;
                        data.message  = "上传成功";
                        data.result   = model;
                    }
                    else
                    {
                        data.response = (int)Extensions.ErrorInfo.UploadFailure;
                        data.message  = "上传图像失败";
                    }
                }
                else
                {
                    data.response = (int)Extensions.ErrorInfo.TokenError;
                    data.message  = "token过期请重新登录";
                }
            }
            catch (Exception ex)
            {
                data.response = (int)Extensions.ErrorInfo.ServerError;
                data.message  = "服务器内部错误";
                Common.LogHelper.WriteLog(typeof(AccountController), ex);
            }
            return(Json(data));
        }
        public ActionResult Index(string categoryid, string search, int sort = 0, int index = 1, int row = 5)
        {
            var data = new Models.ProductListModels.json_model();

            try
            {
                if (AuthIsOpen)
                {
                    var dic = new SortedDictionary <string, string>();
                    dic.Add("timestamp", Request["timestamp"]);
                    VerifyAuthorize(dic);
                }
                var model = new List <Models.ProductListModels.result_model>();
                var list  = new Provider.ProductBasisProvider().GetList(categoryid, search, sort, index, row);
                var pic   = "";
                foreach (var item in list)
                {
                    pic = new ERP.Common.FileHelper().GetWebFileUrl(item.PictureURL, Common.FileConfig.FileType.ProductPhoto.ToString());
                    model.Add(new Models.ProductListModels.result_model
                    {
                        pictureurl  = pic,
                        salecount   = item.SaleCount,
                        productid   = item.Id,
                        productname = item.ProductName,
                        promoprice  = item.PromoPrice,
                        realprice   = item.RealPrice,
                        review      = item.Review
                    });
                }
                data.response = (int)Extensions.ErrorInfo.OK;
                data.message  = "成功";
                data.result   = model;
            }
            catch (Exception ex)
            {
                data.response = (int)Extensions.ErrorInfo.ServerError;
                data.message  = "服务器内部错误";
                Common.LogHelper.WriteLog(typeof(ProductCategoryController), ex);
            }
            return(Json(data));
        }
        public ActionResult Index(string productid)
        {
            var data = new Models.ProductInfoModels.json_model();

            try
            {
                if (string.IsNullOrEmpty(productid))
                {
                    return(Json(new { response = Extensions.ErrorInfo.ParameterError, message = "参数错误" }));
                }
                if (AuthIsOpen)
                {
                    var dic = new SortedDictionary <string, string>();
                    dic.Add("timestamp", Request["timestamp"]);
                    dic.Add("productid", productid);
                    VerifyAuthorize(dic);
                }
                var product    = new Models.ProductInfoModels.product_model();    //商品信息
                var skuModel   = new List <Models.ProductInfoModels.sku_model>(); //sku
                var propertity = new List <Models.ProductInfoModels.property>();  //商品属性
                var proveder   = new Provider.ProductBasisProvider();
                var prod       = proveder.GetProduct(Common.ToolHelper.ConvertToLong(productid));
                var shop       = new Cache.BIZ_ShopBasisCache().Get(Common.FormsTicket.SystemCode).Where(c => c.Id == prod.ShopId).FirstOrDefault();
                if (prod.IsMoveProp == (int)Common.EnumModel.EIsMoveProp.OneProp)
                {
                    product = new Models.ProductInfoModels.product_model
                    {
                        productid   = prod.Id,
                        salecount   = prod.SaleCount,
                        productname = prod.ProductName,
                        promoprice  = prod.PromoPrice,
                        realprice   = prod.RealPrice,
                        review      = prod.Review,
                        ismoveprop  = prod.IsMoveProp,
                        stock       = prod.Stock,
                        shopid      = prod.ShopId,
                        shopname    = shop.ShopName
                    };
                }
                else
                {
                    product = new Models.ProductInfoModels.product_model
                    {
                        productid   = prod.Id,
                        salecount   = prod.SaleCount,
                        productname = prod.ProductName,
                        promoprice  = prod.PromoPrice,
                        realprice   = prod.RealPrice,
                        review      = prod.Review,
                        ismoveprop  = prod.IsMoveProp,
                        stock       = prod.Stock,
                        shopid      = prod.ShopId,
                        shopname    = shop.ShopName
                    };
                    #region sku信息
                    var sku  = new Provider.ProductSKUProvider().GetSKUByProd(Common.ToolHelper.ConvertToLong(productid));
                    var spic = "";
                    foreach (var item in sku)
                    {
                        spic = new ERP.Common.FileHelper().GetWebFileUrl(item.PictureURL, Common.FileConfig.FileType.ProductPhoto.ToString());
                        skuModel.Add(new Models.ProductInfoModels.sku_model
                        {
                            salecount  = item.SaleCount,
                            skuid      = item.Id,
                            stock      = item.Stock,
                            promoprice = item.PromoPrice,
                            realprice  = item.RealPrice,
                            skustring  = item.SKUString.Trim('-').Replace("-", ","),
                            pictureurl = spic
                        });
                    }

                    #endregion
                    #region 商品属性
                    var propValue = new List <Models.ProductInfoModels.property_value>();
                    var prop      = new HashSet <int>(); //属性集合
                    var value     = new HashSet <int>(); //属性值集合
                    var ps        = prod.PropString.Split('|');
                    foreach (var item in ps[0].Split(','))
                    {
                        prop.Add(Common.ToolHelper.ConvertToInt(item));
                    }
                    foreach (var item in ps[1].Split(','))
                    {
                        value.Add(Common.ToolHelper.ConvertToInt(item));
                    }
                    var props  = new Provider.ProductPropertyProvider().GetListByIds(prop);
                    var values = new Provider.ProductPropertyProvider().GetValueByIds(prop);
                    foreach (var item in props)
                    {
                        propValue = new List <Models.ProductInfoModels.property_value>();
                        foreach (var v in values.Where(c => c.PropertyId == item.Id))
                        {
                            propValue.Add(new Models.ProductInfoModels.property_value
                            {
                                id   = v.Id,
                                name = v.Name
                            });
                        }
                        propertity.Add(new Models.ProductInfoModels.property
                        {
                            id     = item.Id,
                            name   = item.PropName,
                            values = propValue
                        });
                    }
                    #endregion
                }
                var picModel = new List <Models.ProductInfoModels.pic_model>();
                #region 商品图片
                var pics = proveder.GetPic(Common.ToolHelper.ConvertToLong(productid));
                var pic  = "";
                foreach (var item in pics)
                {
                    pic = new ERP.Common.FileHelper().GetWebFileUrl(item.PictureURL, Common.FileConfig.FileType.ProductPhoto.ToString());
                    picModel.Add(new Models.ProductInfoModels.pic_model
                    {
                        pictureurl = pic
                    });
                }
                #endregion

                var model = new Models.ProductInfoModels.result_model()
                {
                    picture  = picModel,
                    sku      = skuModel,
                    product  = product,
                    property = propertity
                };
                data.response = (int)Extensions.ErrorInfo.OK;
                data.message  = "成功";
                data.result   = model;
            }
            catch (Exception ex)
            {
                data.response = (int)Extensions.ErrorInfo.ServerError;
                data.message  = "服务器内部错误";
                Common.LogHelper.WriteLog(typeof(ProductCategoryController), ex);
            }
            return(Json(data));
        }
        // GET: Account
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="logincode"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        //[HttpPost]
        public ActionResult Login(string logincode, string password)
        {
            var data = new Models.AccountModels.json_model();

            try
            {
                if (string.IsNullOrEmpty(logincode) || string.IsNullOrEmpty(password))
                {
                    return(Json(new { response = Extensions.ErrorInfo.ParameterError, message = "参数错误" }));
                }
                if (AuthIsOpen)
                {
                    var dic = new SortedDictionary <string, string>();
                    dic.Add("logincode", logincode);
                    dic.Add("password", password);
                    dic.Add("timestamp", Request["timestamp"]);
                    VerifyAuthorize(dic);
                }
                #region 登录黑名单

                var  cache = HttpRuntime.Cache.Get("login" + logincode);
                bool b     = true;
                if (cache == null)
                {
                    //不在黑名单需要从数据库验证
                    var min      = Common.ToolHelper.ConvertToInt(ConfigurationManager.AppSettings["member_log_date"]);
                    var count    = proveder.LoginLog(logincode, DateTime.Now.AddMinutes(-min));
                    var errorLog = Common.ToolHelper.ConvertToInt(ConfigurationManager.AppSettings["member_log_count"]);
                    if (count >= errorLog)
                    {
                        HttpRuntime.Cache.Insert("login" + logincode, "" + DateTime.Now + "", null, DateTime.Now.AddHours(1), TimeSpan.Zero);
                        b             = false;
                        data.response = (int)Extensions.ErrorInfo.PwdLock;
                        data.message  = "密码错误次数太多,请60分钟后在试";
                    }
                }
                else
                {
                    if (Common.ToolHelper.ConvertToDateTime(cache).AddMinutes(Common.ToolHelper.ConvertToInt(60) + 1) > DateTime.Now)
                    {
                        b             = false;
                        data.response = (int)Extensions.ErrorInfo.PwdLock;
                        data.message  = "密码错误次数太多,请60分钟后在试";
                    }
                    else
                    {
                        HttpRuntime.Cache.Remove("login" + logincode);
                    }
                }
                #endregion
                if (b)
                {
                    var member = proveder.GetMember(logincode);
                    if (member != null)
                    {
                        if (member.Passwords == password.Trim())
                        {
                            if (member.AbnormalLock == 0)
                            {
                                string token = Common.ToolHelper.GetMD5Hash32(Common.ToolHelper.ConvertDateTimeInt(DateTime.Now).ToString());
                                var    pic   = new ERP.Common.FileHelper().GetWebFileUrl(member.Picture, Common.FileConfig.FileType.MemberPhoto.ToString());
                                var    model = new Models.AccountModels.result_model()
                                {
                                    integral    = member.Integral,
                                    sex         = member.Sex,
                                    email       = member.Email,
                                    memberid    = member.Id,
                                    mobile      = member.Mobile,
                                    picture     = pic,
                                    promocode   = member.PromoCode,
                                    realname    = member.RealName,
                                    memberlevel = member.MemberLevel,
                                    token       = token
                                };
                                data.response = (int)Extensions.ErrorInfo.OK;
                                data.result   = model;
                                data.message  = "登录成功";
                                #region 添加缓存
                                var memCache = new Cache.MemberTokenCache.MemberTokenModel()
                                {
                                    Id        = member.Id,
                                    Sex       = member.Sex,
                                    Email     = member.Email,
                                    IMEI      = member.IMEI,
                                    Integral  = member.Integral,
                                    IP        = Common.ToolHelper.GetClientIP,
                                    LoginCode = member.LoginCode,
                                    Mobile    = member.Mobile,
                                    OpenId    = member.OpenId,
                                    Picture   = member.Picture,
                                    PromoCode = member.PromoCode,
                                    RealName  = member.RealName,
                                    Password  = member.Passwords
                                };
                                new Cache.MemberTokenCache().Set(memCache, token);
                                #endregion
                            }
                            else
                            {
                                data.response = (int)Extensions.ErrorInfo.PassError;
                                data.message  = "账号已被锁请联系管理员解锁!";
                            }
                        }
                        else
                        {
                            data.response = (int)Extensions.ErrorInfo.PassError;
                            data.message  = "密码错误!";
                        }
                    }
                    else
                    {
                        data.response = (int)Extensions.ErrorInfo.PassError;
                        data.message  = "账号不存在!";
                    }
                }
            }
            catch (Exception ex)
            {
                data.response = (int)Extensions.ErrorInfo.ServerError;
                data.message  = "服务器内部错误";
                Common.LogHelper.WriteLog(typeof(AccountController), ex);
            }
            #region 添加登录日志
            if (data.response == (int)Extensions.ErrorInfo.PassError || data.response == (int)Extensions.ErrorInfo.OK)
            {
                var log = new Entitys.SysLoginLog()
                {
                    LoginCode   = logincode,
                    TimeStamp   = DateTime.Now,
                    LoginType   = 1,
                    LoginStatus = data.response == (int)Extensions.ErrorInfo.OK ? (byte)1 : (byte)0,
                    LoginIP     = Common.ToolHelper.GetClientIP,
                };
                proveder.SaveLoginLog(log);
            }
            #endregion

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Index(string memberid, string token)
        {
            var data = new Models.ShoppingCartModels.json_model();

            try
            {
                if (string.IsNullOrEmpty(memberid) || string.IsNullOrEmpty(token))
                {
                    return(Json(new { response = Extensions.ErrorInfo.ParameterError, message = "参数错误" }));
                }
                var tc = new Cache.MemberTokenCache().Get(token);
                if (tc == null)
                {
                    return(Json(new { response = Extensions.ErrorInfo.TokenError, message = "token验证失败请重新登录" }));
                }
                if (AuthIsOpen)
                {
                    var dic = new SortedDictionary <string, string>();
                    dic.Add("timestamp", Request["timestamp"]);
                    dic.Add("memberid", memberid);
                    dic.Add("token", token);
                    VerifyAuthorize(dic);
                }
                var model = new List <Models.ShoppingCartModels.result_model>();
                var shop  = new List <Models.ShoppingCartModels.shop_model>();
                var list  = new Provider.ShoppingCartProvider().GetList(Common.ToolHelper.ConvertToLong(memberid));
                var ids   = list.Select(c => c.ShopId).Distinct();
                var cache = new Cache.BIZ_ShopBasisCache().Get(Common.FormsTicket.SystemCode);
                var pic   = "";
                foreach (var s in ids)
                {
                    var sp = cache.Where(c => c.Id == s).FirstOrDefault();
                    model = new List <Models.ShoppingCartModels.result_model>();
                    foreach (var item in list.Where(c => c.ShopId == s))
                    {
                        pic = new ERP.Common.FileHelper().GetWebFileUrl(item.PictureURL, Common.FileConfig.FileType.ProductPhoto.ToString());
                        model.Add(new Models.ShoppingCartModels.result_model
                        {
                            skuname     = item.SKUName,
                            quantity    = item.Quantity,
                            cartstatus  = item.CartStatus,
                            cartid      = item.Id,
                            ismoveprop  = item.IsMoveProp,
                            pictureurl  = pic,
                            productname = item.ProductName,
                            promoprice  = item.PromoPrice,
                            realprice   = item.RealPrice,
                            orderid     = "cart_" + item.Id
                        });
                    }
                    shop.Add(new Models.ShoppingCartModels.shop_model {
                        product  = model,
                        shopid   = sp.Id,
                        shopname = sp.ShopName
                    });
                }
                data.response = (int)Extensions.ErrorInfo.OK;
                data.message  = "成功";
                data.result   = shop;
            }
            catch (Exception ex)
            {
                data.response = (int)Extensions.ErrorInfo.ServerError;
                data.message  = "服务器内部错误";
                Common.LogHelper.WriteLog(typeof(ShoppingCartController), ex);
            }
            return(Json(data));
        }