• 微商城模板的核心处理逻辑


    /**************************************
     * 
     * author:李朴
     * company:上海沐雪网络科技有限公司
     * website:http://uweixin.cn
     * createDate:2013-11-1
     * update:2014-12-30
     * remark:本代码为微商城模板的核心处理逻辑;
     * html模板页面上的所有的方法,属性都在这个类里处理。
     * 
     ***********************************/
    
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web;
    using MxWeiXinPF.Common;
    using VTemplate.Engine;
    using MxWeiXinPF.Model;
    
    namespace MxWeiXinPF.Templates
    {
        /**************************************
     *
     * author:李朴
     * company:上海沐雪网络科技有限公司
     * qq:23002807
     * website:http://uweixin.cn
     * taobao:http://uweixin.cn/portalpage/weixin_news_detail.aspx?id=2102
     * createDate:2013-11-1
     * update:2014-12-30
     * 
     ***********************************/
    
        public class ShopTemplateMgr
        {
            MxWeiXinPF.DAL.templatesDal tDal = new DAL.templatesDal();
    
            #region 属性
            protected internal string ccRight = "(c)2014 沐雪 技术提供";
            /// <summary>
            /// 当前页面的模板文档对象
            /// </summary>
            protected TemplateDocument Document
            {
                get;
                private set;
            }
    
            /// <summary>
            /// 当前页面的模板文档的配置参数
            /// </summary>
            protected virtual TemplateDocumentConfig DocumentConfig
            {
                get
                {
                    return TemplateDocumentConfig.Default;
                }
            }
    
            /// <summary>
            /// 微帐号
            /// </summary>
            public int wid { get; set; }
            /// <summary>
            /// 微信用户openid
            /// </summary>
            public string openid { get; set; }
    
            /// <summary>
            /// 模版类型
            /// </summary>
            public TemplateType tType { get; set; }
    
            /// <summary>
            /// 模版文件名称
            /// </summary>
            public string templateFileName { get; set; }
    
            /// <summary>
            /// 模版文件的文件夹名称
            /// </summary>
            public string templateDictoryName { get; set; }
    
            /// <summary>
            /// 模版的物理路径(全完)
            /// </summary>
            public string serverPath { get; set; }
    
            /// <summary>
            /// 模版的虚拟路径,比如/shop/templates/default
            /// </summary>
            public string tPath { get; set; }
            #endregion
    
            #region 构造函数
    
            /// <summary>
            /// 模版初始化
            /// </summary>
            /// <param name="tPath">模版文件的虚拟路径</param>
            /// <param name="serverPath">模版文件的完全路径</param>
            /// <param name="wid"></param>
            public ShopTemplateMgr(string tPath, string serverPath, int wid)
            {
    
                this.serverPath = serverPath;
                this.tPath = tPath;
                this.Document = new TemplateDocument(serverPath, Encoding.UTF8, this.DocumentConfig);
                this.wid = wid;
            }
    
            /// <summary>
            /// 模版初始化
            /// </summary>
            /// <param name="templateDictoryName">模版文件的文件夹名称</param>
            /// <param name="tPath">模版文件的虚拟路径</param>
            /// <param name="serverPath">模版文件的完全路径</param>
            /// <param name="wid"></param>
            public ShopTemplateMgr(string templateDictoryName, string tPath, string serverPath, int wid)
            {
    
                this.templateDictoryName = templateDictoryName;
                this.serverPath = serverPath;
                this.tPath = tPath;
                this.Document = new TemplateDocument(serverPath, Encoding.UTF8, this.DocumentConfig);
                this.wid = wid;
            }
    
    
            /// <summary>
            /// 模版初始化
            /// </summary>
            /// <param name="templateFileName">模版文件的名称</param>
            /// <param name="templateDictoryName">模版文件的文件夹名称</param>
            /// <param name="tPath">模版文件的虚拟路径</param>
            /// <param name="serverPath">模版文件的完全路径</param>
            /// <param name="wid"></param>
            public ShopTemplateMgr(string templateFileName, string templateDictoryName, string tPath, string serverPath, int wid)
            {
                this.templateFileName = templateFileName;
                this.templateDictoryName = templateDictoryName;
                this.serverPath = serverPath;
                this.tPath = tPath;
                this.Document = new TemplateDocument(serverPath, Encoding.UTF8, this.DocumentConfig);
                this.wid = wid;
            }
    
            #endregion
    
            /// <summary>
            /// 输出最终的html
            /// </summary>
            /// <param name="templateFileName"></param>
            /// <param name="tPath"></param>
            /// <param name="wid"></param>
            public void OutPutHtml(int wid)
            {
                //注册一个自定义函数
                this.Document.RegisterGlobalFunction(this.ComputeMoney);
    
                //对VT模板里的config变量赋值 
                Model.wxcodeconfig wxconfig = tDal.GetModelByWid(wid, tPath);
                if (wxconfig.wxstatus == 0)
                {
                    HttpContext.Current.Response.Write("帐号已过期!请及时充值!");
                }
                this.Document.Variables.SetValue("config", wxconfig);
    
                BLL.wx_shop_setting setBll = new BLL.wx_shop_setting();
                if (!setBll.ExistsWid(wid))
                {
                    HttpContext.Current.Response.Write("请先选择模版!");
                    HttpContext.Current.Response.End();
                }
                Model.wx_shop_setting setting = setBll.GetModelList("wid=" + wid)[0];
    
                this.Document.Variables.SetValue("shopconfig", setting);
    
                this.Document.SetValue("wid", wid);
                this.Document.SetValue("ccright", ccRight);
                this.Document.SetValue("yuming", MyCommFun.getWebSite());
                this.Document.SetValue("thisurl", MyCommFun.getTotalUrl());
                this.Document.SetValue("indexurl", indexUrl());
                this.Document.SetValue("categoryurl", MyCommFun.urlAddOpenid("/shop/category.aspx?wid=" + wid, openid));
                this.Document.SetValue("carturl", MyCommFun.urlAddOpenid("/shop/cart.aspx?wid=" + wid, openid));//upd
                this.Document.SetValue("userurl", "/shop/userinfo.aspx?wid=" + wid);
                this.Document.SetValue("openid", openid);
                this.Document.Variables.SetValue("this", this);
                if (tType == TemplateType.Class)
                {
                    ProductClassPage();
                }
                else if (tType == TemplateType.News)
                {
                    ShopDetailPage();
                }
                else if (tType == TemplateType.Cart)
                {
                    CartDetailPage();
                }
                else if (tType == TemplateType.confirmOrder)
                {
                    confirmOrder();
                }
                else if (tType == TemplateType.editaddr)
                {
                    editAddrPage();
                }
                else if (tType == TemplateType.orderSuccess)
                {
                    OrderSuccessPage();
                }
                else if (tType == TemplateType.userinfo)
                {
                    userinfoPage();
                }
                else if (tType == TemplateType.orderDetail)
                {  //订单详情页面
                    orderDetail();
                }
    
                //输出最终呈现的数据 
                this.Document.Render(HttpContext.Current.Response.Output);
    
            }
    
            #region 方法集合:注册到模版或者供模版调用
    
            public void ProductClassPage()
            {
                int category_id = MyCommFun.RequestInt("cid");
                //--=====begin: 将这个列表(文章类别)的基本信息展示出来 ====--
                DAL.wx_shop_category cateBll = new DAL.wx_shop_category();
                Model.wx_shop_category category = cateBll.GetCategoryByWid(wid, category_id);
                this.Document.SetValue("category", category);
                this.Document.SetValue("wid", wid);
                this.Document.SetValue("cid", category_id);
                //--=====end: 将这个列表(文章类别)的基本信息展示出来 ====--
    
                Tag orderByTag = this.Document.GetChildTagById("norderby");
                string orderby = orderByTag.Attributes["value"].Value.ToString();
    
                Tag pagesizeTag = this.Document.GetChildTagById("npagesize");
                string pagesizeStr = pagesizeTag.Attributes["value"].Value.ToString();
    
                int currPage = 1;//当前页面
                int recordCount = 0;//总记录数
                int totPage = 1;//总页数
                int pageSize = MyCommFun.Str2Int(pagesizeStr);//每页的记录数
                if (pageSize <= 0)
                {
                    pageSize = 10;
                }
                if (MyCommFun.RequestInt("page") > 0)
                {
                    currPage = MyCommFun.RequestInt("page");
                }
    
                DataSet productlist = new DataSet();
                //category_id = 3;
                //wid = 5;
                if (category_id != 0)//根据类别查询
                {
                    DAL.wx_shop_product artDal = new DAL.wx_shop_product();
                    productlist = artDal.GetList(wid, category_id, pageSize, currPage, "upselling=1", orderby, out recordCount);
                    if (productlist != null && productlist.Tables.Count > 0 && productlist.Tables[0].Rows.Count > 0)
                    {
                        DataRow dr;
                        for (int i = 0; i < productlist.Tables[0].Rows.Count; i++)
                        {
                            dr = productlist.Tables[0].Rows[i];
                            if (dr["link_url"] != null && dr["link_url"].ToString().Trim().Length > 0)
                            {
                                dr["link_url"] = MyCommFun.urlAddOpenid(dr["link_url"].ToString().Trim(), openid);
                            }
                            else
                            {
                                dr["link_url"] = MyCommFun.urlAddOpenid("detail.aspx?wid=" + wid + "&pid=" + dr["id"].ToString(), openid);
                            }
                            productlist.AcceptChanges();
                        }
    
                        totPage = recordCount / pageSize;
                        int yushu = recordCount % pageSize;
                        if (yushu > 0)
                        {
                            totPage += 1;
                        }
                        if (totPage < 1)
                        {
                            totPage = 1;
                        }
                    }
                    if (currPage > totPage)
                    {
                        currPage = totPage;
                    }
                }
                else if (MyCommFun.QueryString("type") == "new")//得到最新产品
                {
                    DAL.wx_shop_product artDal = new DAL.wx_shop_product();
                    productlist = artDal.GetList(wid, pageSize, "upselling=1 order by addDate desc," + orderby);
                    if (productlist != null && productlist.Tables.Count > 0 && productlist.Tables[0].Rows.Count > 0)
                    {
                        DataRow dr;
                        for (int i = 0; i < productlist.Tables[0].Rows.Count; i++)
                        {
                            dr = productlist.Tables[0].Rows[i];
                            if (dr["link_url"] != null && dr["link_url"].ToString().Trim().Length > 0)
                            {
                                dr["link_url"] = MyCommFun.urlAddOpenid(dr["link_url"].ToString().Trim(), openid);
                            }
                            else
                            {
                                dr["link_url"] = MyCommFun.urlAddOpenid("detail.aspx?wid=" + wid + "&pid=" + dr["id"].ToString(), openid);
                            }
                            productlist.AcceptChanges();
                        }
    
                        totPage = recordCount / pageSize;
                        int yushu = recordCount % pageSize;
                        if (yushu > 0)
                        {
                            totPage += 1;
                        }
                        if (totPage < 1)
                        {
                            totPage = 1;
                        }
                    }
                    if (currPage > totPage)
                    {
                        currPage = totPage;
                    }
                }
                else
                {
                    currPage = 1;
                    recordCount = 0;
                    totPage = 1;
                }
    
                this.Document.SetValue("totPage", totPage);//总页数
                this.Document.SetValue("currPage", currPage);//当前页
                this.Document.SetValue("productlist", productlist);//文章列表
    
                string beforePageStr = ""; //上一页
                string nextPageStr = ""; //下一页
                string bgrey = "c-p-grey";
                string ngrey = "c-p-grey";
                if (currPage <= 1)
                {
                    beforePageStr = "";
                    bgrey = "c-p-grey";
                }
                else
                {
                    beforePageStr = MyCommFun.ChangePageNum(MyCommFun.getTotalUrl(), (currPage - 1));
                    beforePageStr = "href="" + beforePageStr + """;
                    bgrey = "";
                }
    
                if (currPage >= totPage)
                {
                    nextPageStr = "";
                    ngrey = " c-p-grey";
                }
                else
                {
                    nextPageStr = MyCommFun.ChangePageNum(MyCommFun.getTotalUrl(), (currPage + 1));
                    nextPageStr = "href="" + nextPageStr + """;
                    ngrey = "";
                }
                this.Document.SetValue("bpage", beforePageStr);//上一页
                this.Document.SetValue("npage", nextPageStr);//下一页
                this.Document.SetValue("bgrey", bgrey);//上一页灰色的样式
                this.Document.SetValue("ngrey", ngrey);//下一页灰色的样式
    
    
    
            }
    
            public void ShopDetailPage()
            {
                BLL.wx_shop_product artDal = new BLL.wx_shop_product();
                int pid = MyCommFun.RequestInt("pid");
                Model.wx_shop_product product = artDal.GetModel(pid, wid);
                if (product != null)
                {
                    string skuStr = "[";
                    string availSkuStr = "{";
                    if (product.skulist != null && product.skulist.Count > 0)
                    {
                        // string skuStr = "[{ "pList": ["H", "H/VVS/32分/14号"], "pName": "戒指手寸" }]";
                        // string   availSku = "{ "戒指手寸:F-G/VVS/33分/12号": { "pid": 12700, "stockCount": "", "stockPrice": "1000", "maketPrice": "0" },  }";
    
                        skuStr += "{ "pList": [";
                        //暂时只支持一种配件
                        for (int i = 0; i < product.skulist.Count; i++)
                        {
                            product.skulist[i].price += product.salePrice;
                            product.skulist[i].price *= 100;
                            if (i != (product.skulist.Count - 1))
                            {
                                skuStr += """ + product.skulist[i].attributeValue + "",";
                                availSkuStr += """ + product.skulist[0].attrName + ":" + product.skulist[i].attributeValue + "": { "pid": " + product.skulist[i].id + ", "stockCount": "", "stockPrice": "" + product.skulist[i].price + "", "maketPrice": "" + product.marketPrice + "" }, ";
                            }
                            else
                            {
                                skuStr += """ + product.skulist[i].attributeValue + """;
                                availSkuStr += """ + product.skulist[0].attrName + ":" + product.skulist[i].attributeValue + "": { "pid": " + product.skulist[i].id + ", "stockCount": "", "stockPrice": "" + product.skulist[i].price + "", "maketPrice": "" + product.marketPrice + "" }";
                            }
                        }
                        skuStr += "], "pName": "" + product.skulist[0].attrName + "" }";
    
                        //MxWeiXinPF.DAL.ShopSKUDal skuDal = new DAL.ShopSKUDal();
                        //IList<Model.ShopSKU> skulist = skuDal.SKUConvert(product.skulist);
                        //this.Document.SetValue("skulist", skulist[0]);
                    }
                    skuStr += "]";
                    availSkuStr += "}";
                    if (availSkuStr == "{}")
                    {
                        availSkuStr = "{ "": { "pid": 0, "stockCount": "", "stockPrice": "" + product.salePrice + "", "maketPrice": "" + product.marketPrice + "" } }";
                    }
                    this.Document.SetValue("skuStr", skuStr);
                    this.Document.SetValue("availSkuStr", availSkuStr);
                    this.Document.SetValue("model", product);
    
                }
            }
    
            /// <summary>
            /// 获得幻灯片列表二:优点:(1)使用function标签与foreach结合,可以从模版页面控制记录数量;(2)不需要实现注册到模版里
            /// </summary>
            /// <returns></returns>
            public IList<Model.wx_shop_indexbanner> getHdp()
            {
                Tag tag = this.Document.CurrentRenderingTag;
    
                var attribute = tag.Attributes["rows"];
                IList<Model.wx_shop_indexbanner> artlist = new List<Model.wx_shop_indexbanner>();
    
                int rows = -1;//若为-1,则不做限制条件
                if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue()))
                {
                    rows = MyCommFun.Obj2Int(attribute.Value.GetValue());
                }
                MxWeiXinPF.DAL.wx_shop_indexbanner sibDal = new DAL.wx_shop_indexbanner();
                artlist = sibDal.GetHDPByWid(wid, rows);
    
                if (artlist != null && artlist.Count > 0)
                {
                    Model.wx_shop_indexbanner cat = new Model.wx_shop_indexbanner();
                    for (int i = 0; i < artlist.Count; i++)
                    {
                        cat = artlist[i];
    
                        if (cat.bannerLinkUrl == null || cat.bannerLinkUrl.Trim() == "")
                        {  //如果link_url为空,则直接调用本系统的信息
                            cat.bannerLinkUrl = "javascript:;";
    
                        }
                        else
                        {
                            cat.bannerLinkUrl = MyCommFun.urlAddOpenid(cat.bannerLinkUrl, openid);
                        }
    
                    }
                }
                return artlist;
            }
    
    
            /// <summary>
            /// 获得最新
            /// </summary>
            /// <returns></returns>
            public DataTable getLatest()
            {
                Tag tag = this.Document.CurrentRenderingTag;
                var attribute = tag.Attributes["rows"];
    
                int rows = -1;//若为-1,则不做限制条件
                if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue()))
                {
                    rows = MyCommFun.Obj2Int(attribute.Value.GetValue());
                }
                DAL.wx_shop_product artDal = new DAL.wx_shop_product();
                productlist = artDal.GetList(wid, rows, "latest=" + 1);
                DataTable dt = productlist.Tables[0];
                if (productlist != null && productlist.Tables.Count > 0 && productlist.Tables[0].Rows.Count > 0)
                {
                    DataRow dr;
                    for (int i = 0; i < productlist.Tables[0].Rows.Count; i++)
                    {
                        dr = productlist.Tables[0].Rows[i];
                        if (dr["link_url"] != null && dr["link_url"].ToString().Trim().Length > 0)
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid(dr["link_url"].ToString().Trim(), openid);
                        }
                        else
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid("detail.aspx?wid=" + wid + "&pid=" + dr["id"].ToString(), openid);
                        }
                        productlist.AcceptChanges();
                    }
    
                }
                return dt;
            }
    
    
    
            /// <summary>
            /// 获得热卖
            /// </summary>
            /// <returns></returns>
            public DataTable getHotsalet()
            {
                Tag tag = this.Document.CurrentRenderingTag;
    
                var attribute = tag.Attributes["rows"];
                int cid = MyCommFun.RequestInt("cid");
                int rows = -1;//若为-1,则不做限制条件
                if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue()))
                {
                    rows = MyCommFun.Obj2Int(attribute.Value.GetValue());
                }
                DAL.wx_shop_product artDal = new DAL.wx_shop_product();
                if (cid != 0)
                {
                    productlist = artDal.GetList(wid, rows, "   categoryId=" + cid + " order by hotsale desc");
                }
                else
                {
                    productlist = artDal.GetList(wid, rows, " 1=1 order by hotsale desc");
                }
                DataTable dt = productlist.Tables[0];
                if (productlist != null && productlist.Tables.Count > 0 && productlist.Tables[0].Rows.Count > 0)
                {
                    DataRow dr;
                    for (int i = 0; i < productlist.Tables[0].Rows.Count; i++)
                    {
                        dr = productlist.Tables[0].Rows[i];
                        if (dr["link_url"] != null && dr["link_url"].ToString().Trim().Length > 0)
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid(dr["link_url"].ToString().Trim(), openid);
                        }
                        else
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid("detail.aspx?wid=" + wid + "&pid=" + dr["id"].ToString(), openid);
                        }
                        productlist.AcceptChanges();
                    }
    
                }
                return dt;
            }
    
    
            /// <summary>
            /// 获得推荐
            /// </summary>
            /// <returns></returns>
            public DataTable getRecommended()
            {
                Tag tag = this.Document.CurrentRenderingTag;
    
                var attribute = tag.Attributes["rows"];
                int rows = -1;//若为-1,则不做限制条件
                if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue()))
                {
                    rows = MyCommFun.Obj2Int(attribute.Value.GetValue());
                }
                DAL.wx_shop_product artDal = new DAL.wx_shop_product();
                productlist = artDal.GetList(wid, rows, "recommended=" + 1);
                DataTable dt = productlist.Tables[0];
                if (productlist != null && productlist.Tables.Count > 0 && productlist.Tables[0].Rows.Count > 0)
                {
                    DataRow dr;
                    for (int i = 0; i < productlist.Tables[0].Rows.Count; i++)
                    {
                        dr = productlist.Tables[0].Rows[i];
                        if (dr["link_url"] != null && dr["link_url"].ToString().Trim().Length > 0)
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid(dr["link_url"].ToString().Trim(), openid);
                        }
                        else
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid("detail.aspx?wid=" + wid + "&pid=" + dr["id"].ToString(), openid);
                        }
                        productlist.AcceptChanges();
                    }
    
                }
                return dt;
            }
    
            /// <summary>
            /// 获得特价
            /// </summary>
            /// <returns></returns>
            public DataTable getSpecialOffer()
            {
                Tag tag = this.Document.CurrentRenderingTag;
    
                var attribute = tag.Attributes["rows"];
                int rows = -1;//若为-1,则不做限制条件
                if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue()))
                {
                    rows = MyCommFun.Obj2Int(attribute.Value.GetValue());
                }
                DAL.wx_shop_product artDal = new DAL.wx_shop_product();
                productlist = artDal.GetList(wid, rows, "specialOffer=" + 1);
                DataTable dt = productlist.Tables[0];
                if (productlist != null && productlist.Tables.Count > 0 && productlist.Tables[0].Rows.Count > 0)
                {
                    DataRow dr;
                    for (int i = 0; i < productlist.Tables[0].Rows.Count; i++)
                    {
                        dr = productlist.Tables[0].Rows[i];
                        if (dr["link_url"] != null && dr["link_url"].ToString().Trim().Length > 0)
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid(dr["link_url"].ToString().Trim(), openid);
                        }
                        else
                        {
                            dr["link_url"] = MyCommFun.urlAddOpenid("detail.aspx?wid=" + wid + "&pid=" + dr["id"].ToString(), openid);
                        }
                        productlist.AcceptChanges();
                    }
    
                }
                return dt;
            }
    
            /// <summary>
            /// 获得wid的用户分类信息 
            /// </summary>
            /// <returns></returns>
            public IList<Model.wx_shop_category> getCategory()
            {
                Tag tag = this.Document.CurrentRenderingTag;
    
                ///classlayer表示取类别深度,如果为-1,则取所有分类的深度,如果为1,则取第一层目录,如果为2,则去第2层目录
                var classlayer = tag.Attributes["classlayer"];
                var parentidObj = tag.Attributes["parentid"];
                var attribute = tag.Attributes["rows"];
                int rows = -1;//若为-1,则不做限制条件
                IList<Model.wx_shop_category> categorylist = null;
                int parentid = -1;
                if (parentidObj != null && MyCommFun.isNumber(parentidObj.Value.GetValue()))
                {
                    parentid = MyCommFun.Obj2Int(parentidObj.Value.GetValue());
                }
                int class_layer = -1;
                if (classlayer != null && MyCommFun.isNumber(classlayer.Value.GetValue()))
                {
                    class_layer = MyCommFun.Obj2Int(classlayer.Value.GetValue());
                }
                DAL.wx_shop_category cateBll = new DAL.wx_shop_category();
                if (attribute != null && MyCommFun.isNumber(attribute.Value.GetValue()))
                {
                    rows = MyCommFun.Obj2Int(attribute.Value.GetValue());
                    categorylist = cateBll.GetCategoryListByWid(wid, rows, parentid, class_layer);
    
                }
                else
                {
                    categorylist = cateBll.GetCategoryListByWid(wid, -1, parentid, class_layer);
                }
                if (categorylist != null && categorylist.Count > 0)
                {
                    Model.wx_shop_category cat = new Model.wx_shop_category();
    
                    for (int i = 0; i < categorylist.Count; i++)
                    {
                        cat = categorylist[i];
                        if (cat.link_url == null || cat.link_url.Trim() == "")
                        {  //如果link_url为空,则直接调用本系统的信息
                            cat.link_url = MyCommFun.urlAddOpenid("/shop/list.aspx?wid=" + wid + "&cid=" + cat.id + "", openid);
    
                        }
                        else
                        {
                            cat.link_url = MyCommFun.urlAddOpenid(cat.link_url, openid);
                        }
                    }
                }
    
                return categorylist;
            }
    
            /// <summary>
            /// 购物车页面
            /// </summary>
            public void CartDetailPage()
            {
                BLL.wx_shop_cart cartBll = new BLL.wx_shop_cart();
                IList<Model.cartProduct> cartList = cartBll.GetCartList(openid, wid);
                int jiage = 0;
                string cartStr = "{";
                if (cartList.Count > 0)
                {
                    for (int i = cartList.Count - 1; i >= 0; i--)
                    {
                        if (i != 0)
                        {
                            cartStr += """ + i + "": { "ic": "" + cartList[i].id + "", "attr": "", "bc": "" + cartList[i].productNum + "", "mid": " + cartList[i].skuId + " },";
                        }
                        else
                        {
                            cartStr += """ + i + "": { "ic": "" + cartList[i].id + "", "attr": "", "bc": "" + cartList[i].productNum + "", "mid": " + cartList[i].skuId + " }";
                        }
    
                    }
                }
                cartStr += "}";
                decimal alltotPrice = cartList.Sum(item => item.totPrice);
                this.Document.SetValue("cartlist", cartList);
                this.Document.SetValue("alltot", alltotPrice);
                this.Document.SetValue("cartStr", cartStr);
                this.Document.SetValue("zongjia", jiage);
            }
    
            /// <summary>
            /// 修改地址的页面
            /// </summary>
            public void editAddrPage()
            {
                string frompage = MyCommFun.QueryString("frompage");
                this.Document.SetValue("frompage", frompage);
                BLL.wx_shop_user_addr uAddrBll = new BLL.wx_shop_user_addr();
                IList<Model.wx_shop_user_addr> uaddrList = uAddrBll.GetOpenidAddr(openid, wid);
                if (uaddrList == null || uaddrList.Count <= 0 || uaddrList[0].id <= 0)
                {
    
                }
                else
                {
                    this.Document.SetValue("addrinfo", uaddrList[0]);
                }
    
            }
            /// <summary>
            /// 确认订单页面
            /// </summary>
            public void confirmOrder()
            {
                //1用户的地址
                BLL.wx_shop_user_addr uAddrBll = new BLL.wx_shop_user_addr();
                IList<Model.wx_shop_user_addr> uaddrList = uAddrBll.GetOpenidAddrName(openid, wid);
                if (uaddrList == null || uaddrList.Count <= 0 || uaddrList[0].id <= 0)
                { }
                else
                {
                    this.Document.SetValue("addrinfo", uaddrList[0]);
                }
    
                //快递信息列表
                BLL.express expressBll = new BLL.express();
                DataSet dsExpress = expressBll.GetExpressList100(wid);
                this.Document.SetValue("express", dsExpress);
    
                //支付信息列表
                BLL.payment pbll = new BLL.payment();
                DataSet dsPay = pbll.GetList(0, "  is_lock=0 and wid=" + wid, "  sort_id asc");
                this.Document.SetValue("payment", dsPay);
    
                //购物车里的商品
                BLL.wx_shop_cart cartBll = new BLL.wx_shop_cart();
                IList<Model.cartProduct> cartList = cartBll.GetCartList(openid, wid);
                this.Document.SetValue("cartlist", cartList);
    
                string cartStr = "[";
                if (cartList.Count > 0)
                {
                    for (int i = cartList.Count - 1; i >= 0; i--)
                    {
                        if (i != 0)
                        {
                            cartStr += "{ "ic": "" + cartList[i].id + "", "attr": "", "bc": "" + cartList[i].productNum + "", "mid": " + cartList[i].skuId + " },";
                        }
                        else
                        {
                            cartStr += "{ "ic": "" + cartList[i].id + "", "attr": "", "bc": "" + cartList[i].productNum + "", "mid": " + cartList[i].skuId + " }";
                        }
                    }
                }
                cartStr += "]";
                decimal alltotPrice = cartList.Sum(item => item.totPrice);
    
                this.Document.SetValue("alltot", alltotPrice * 100);
                this.Document.SetValue("alltot_y", alltotPrice);
                this.Document.SetValue("cartStr", cartStr);
    
            }
    
            /// <summary>
            /// 下单成功页面
            /// </summary>
            public void OrderSuccessPage()
            {
                BLL.orders oBll = new BLL.orders();
                int orderid = MyCommFun.RequestInt("orderid");
                Model.orders order = oBll.GetModel(orderid);
                if (order != null)
                {
                    this.Document.SetValue("order", order);
                }
            }
    
            /// <summary>
            /// 用户中心
            /// </summary>
            public void userinfoPage()
            {
                BLL.orders oBll = new BLL.orders();
                //待付款的
                int wid = MyCommFun.RequestInt("wid");
    
                IList<Model.orders> orderlist_dfu = oBll.GetModelList(" wid=" + wid + " and openid='" + openid + "' and payment_id in (2,3) and   payment_status=1 and status=1 order by id desc");
                if (orderlist_dfu != null)
                {
                    for (int i = 0; i < orderlist_dfu.Count; i++)
                    {
                        orderlist_dfu[i].status = GetOrderStatus_int(orderlist_dfu[i].status, orderlist_dfu[i].payment_status, orderlist_dfu[i].express_status);
                    }
                    this.Document.SetValue("o_dfu", orderlist_dfu);
                    this.Document.SetValue("dfk_num", orderlist_dfu.Count);
                }
    
                //待收货的
                IList<Model.orders> orderlist_dsh = oBll.GetModelList(" wid=" + wid + " and openid='" + openid + "' and  (payment_status=2 or payment_id=1) and status not in(3,4,5) order by id desc");
                if (orderlist_dsh != null)
                {
                    for (int i = 0; i < orderlist_dsh.Count; i++)
                    {
                        orderlist_dsh[i].status = GetOrderStatus_int(orderlist_dsh[i].status, orderlist_dsh[i].payment_status, orderlist_dsh[i].express_status);
                    }
    
                    this.Document.SetValue("o_dsh", orderlist_dsh);
                    this.Document.SetValue("dsh_num", orderlist_dsh.Count);
                }
    
                //已结束的
                IList<Model.orders> orderlist_yjs = oBll.GetModelList(" wid=" + wid + " and openid='" + openid + "' and  payment_status=2 and status in (3,4,5) order by id desc");
                if (orderlist_yjs != null)
                {
                    for (int i = 0; i < orderlist_yjs.Count; i++)
                    {
                        orderlist_yjs[i].status = GetOrderStatus_int(orderlist_yjs[i].status, orderlist_yjs[i].payment_status, orderlist_yjs[i].express_status);
                    }
    
                    this.Document.SetValue("o_yjs", orderlist_yjs);
                    this.Document.SetValue("yjs_num", orderlist_yjs.Count);
                }
    
            }
    
            /// <summary>
            /// 订单详情页面
            /// </summary>
            public void orderDetail()
            {
                int wid = MyCommFun.RequestInt("wid");
    
                int orderId = MyCommFun.RequestInt("orderid");
                BLL.orders oBll = new BLL.orders();
                //Model.orders order = oBll.GetModel(orderId);
                IList<Model.orders> orderlist_detail = oBll.GetModelList(" id=" + orderId);
                if (orderlist_detail != null)
                {
                    Model.orders order = orderlist_detail[0];
                    this.Document.SetValue("order", order);
                    string statusName = GetOrderStatus(order.status, order.payment_status, order.express_status);
                    this.Document.SetValue("statusName", statusName);
    
                    string paymentName = new MxWeiXinPF.BLL.payment().GetTitle(wid, order.payment_id);
                    this.Document.SetValue("paymentName", paymentName);
                    string expressName = new MxWeiXinPF.BLL.express().GetTitle(order.express_id);
                    this.Document.SetValue("expressName", expressName);
    
    
                }
    
            }
    
    
            #region 返回订单状态=============================
            protected string GetOrderStatus(int status, int payment_status, int express_status)
            {
                string _title = string.Empty;
                // Model.orders model = new BLL.orders().GetModel(_id);
                switch (status)
                {
                    case 1: //如果是线下支付,支付状态为0,如果是线上支付,支付成功后会自动改变订单状态为已确认
                        if (payment_status > 0)
                        {
                            _title = "待付款";
                        }
                        else
                        {
                            _title = "待确认";
                        }
                        break;
                    case 2: //如果订单为已确认状态,则进入发货状态
                        if (express_status > 1)
                        {
                            _title = "已发货";
                        }
                        else
                        {
                            _title = "待发货";
                        }
                        break;
                    case 3:
                        _title = "交易完成";
                        break;
                    case 4:
                        _title = "已取消";
                        break;
                    case 5:
                        _title = "已作废";
                        break;
                }
    
                return _title;
            }
    
            /// <summary>
            /// 订单状态,转化成与zepto.min.js里一致的
            /// </summary>
            /// <param name="status"></param>
            /// <param name="payment_status"></param>
            /// <param name="express_status"></param>
            /// <returns></returns>
            protected int GetOrderStatus_int(int status, int payment_status, int express_status)
            {
                int ret = 0;
    
                switch (status)
                {
                    case 1: //如果是线下支付,支付状态为0,如果是线上支付,支付成功后会自动改变订单状态为已确认
                        if (payment_status > 0)
                        {
                            ret = 1;
                        }
                        else
                        {
                            ret = 14;
                        }
                        break;
                    case 2: //如果订单为已确认状态,则进入发货状态
                        if (express_status > 1)
                        {
                            ret = 25;
                        }
                        else
                        {
                            ret = 2;
                        }
                        break;
                    case 3:
                        ret = 6;
                        break;
                    case 4:
                        ret = 4;
                        break;
                    case 5:
                        ret = 26;
                        break;
                }
    
                return ret;
            }
    
            #endregion
    
    
    
            /// <summary>
            /// 单位 元*100
            /// </summary>
            /// <param name="news"></param>
            /// <returns></returns>
            private object ComputeMoney(object[] news)
            {
                if (news.Length > 0 && news[0] != null)
                {
                    decimal yuan = MyCommFun.Str2Decimal(news[0].ToString());
                    yuan *= 100;
                    return yuan;
                }
                else
                {
                    return string.Empty;
                }
            }
    
            /// <summary>
            /// 商城首页的url
            /// </summary>
            /// <returns></returns>
            private string indexUrl()
            {
                string url = "";
                // url = MyCommFun.getWebSite() + "/shop/index.aspx?wid=" + wid;
                url = MyCommFun.urlAddOpenid("/shop/index.aspx?wid=" + wid, openid);
                return url;
            }
    
    
            #endregion
    
    
    
            public DataSet productlist { get; set; }
        }
    }
  • 相关阅读:
    MD5工具类
    新搭建mysql容易出现问题
    docker自动化部署
    k8s入门案例
    docker单一部署jenkins
    Sentinel 学习-简介
    mysql innerjoin,leftjoin,group by,having
    批量更新 分割list 多线程处理
    redis 3.0+ cluser 集群搭建
    ELK 和 Logstach
  • 原文地址:https://www.cnblogs.com/Jeely/p/11349787.html
Copyright © 2020-2023  润新知