搜尋
首頁微信小程式微信開發C#開發微信入口網站及應用-微信小店貨架資訊管理

在前面微信小店系列篇《C#開發微信門戶及應用(22)-微信小店的開發與使用》裡面介紹了一些微信小店的基礎知識,以及《C#開發微信門戶及應用(23)-微信小店商品管理介面的封裝與測試》裡面詳細介紹了微信小店商品的介面定義、實作與測試的內容,本文主要介紹微信小店貨架資訊管理。這個模組是在微信小店物件裡面,最為複雜,也是最難理解的一個模組,對於它的物件建模,需要反覆測試才能完善起來,因此這個貨架管理模組,可以說是最具技術含量的一個模組了。

1、微信小店貨架介紹

在微信公眾號的後台裡面,可以對貨架資訊進行維護,介面如下所示。貨架的概念,就是把商品分門別類的很好展示給客戶,貨架就是類似一個佈局良好的展櫃,我們可以定義不同的貨架,然後公佈不同的URL進行體驗。

C#开发微信门户及应用-微信小店货架信息管理

另外,我們一般創建貨架,都是基於貨架的模板庫來構建的,貨架的模板給我們快速構建一個貨架,提供了可視化的參考界面,貨架模板界面如下所示。

C#开发微信门户及应用-微信小店货架信息管理

 

2、貨架管理的開發模型

對於利用API開發微信店鋪,微信小店的貨架管理操作接口,和常規的模組差不多,具有下面幾個功能操作。

C#开发微信门户及应用-微信小店货架信息管理

雖然看起來和前面的物件模型差不多,但是貨架的資訊非常複雜,因此你如果需要根據Json資料把它還原為實體物件的時候,需要反覆進行斟酌,否則很容易建模錯誤。

對應著微信小店管理介面的貨架模板,貨架的物件資訊包括了5個不同的控制模型,它們有的可以進行組合使用。

C#开发微信门户及应用-微信小店货架信息管理

幾個貨架的模型展示如下圖所示。

C#开发微信门户及应用-微信小店货架信息管理 C#开发微信门户及应用-微信小店货架信息管理

C#开发微信门户及应用-微信小店货架信息管理 C#开发微信门户及应用-微信小店货架信息管理

C#开发微信门户及应用-微信小店货架信息管理

透過上面5個控制模型,我們可以看到它們分別代表不一樣的佈局效果,而且它們可以在貨架上進行組合使用的。

3、貨架資訊的物件建模

根據微信小店的介面說明,我們最終定義的貨架實體物件訊息,內容就非常豐富且彈性化。

C#开发微信门户及应用-微信小店货架信息管理

我們透過參考微信小店的API說明,就可以看到貨架的資訊JSON資料很複雜,具體定義如下圖所示。

{    "shelf_data": {      "module_infos": [
        {          "group_info": {            "filter": {              "count": 2
            },            "group_id": 50
          },          "eid": 1
        },
        {            "group_infos": {                "groups": [
                  {                    "group_id": 49
                  },
                  {                    "group_id": 50
                  },
                  {                    "group_id": 51
                  }
                ]
          },          "eid": 2
        },
        {          "group_info": {            "group_id": 52,            "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5Jm64z4I0TTicv0TjN7Vl9bykUUibYKIOjicAwIt6Oy0Y6a1Rjp5Tos8tg/0"
          },          "eid": 3
        },
        {          "group_infos": {  
            "groups": [
              {                "group_id": 49,                "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
              },
              {                "group_id": 50,                "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5G1kdy3ViblHrR54gbCmbiaMnl5HpLGm5JFeENyO9FEZAy6mPypEpLibLA/0"
              },
              {                "group_id": 52,                "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
              }
            ]
          },          "eid": 4
        }, 
        {          "group_infos": {            "groups": [
              {                "group_id": 43
              },
              {                "group_id": 44
              },
              {                "group_id": 45
              },
              {                "group_id": 46
              }
            ],            "img_background": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
          },          "eid": 5
        }
      ]
    }, 
    "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2ibrWQn8zWFUh1YznsMV0XEiavFfLzDWYyvQOBBszXlMaiabGWzz5B2KhNn2IDemHa3iarmCyribYlZYyw/0", 
    "shelf_name": "测试货架"}

View Code

我們根據JSON資料的定義,定義了幾個貨架控制項的對象,他們的關係如下所示。

C#开发微信门户及应用-微信小店货架信息管理

我們可以根據JSON資料進行實體對象的建模,然後有了這些對象,我們就可以進一步定義好貨架的相關操作接口了,接口定義如下所示。

        #region 货架管理        /// <summary>
        /// 增加货架        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架招牌图片Url
        /// <param>货架名称
        /// <param>货架控件1,2,3,4,5类型的集合
        /// <returns></returns>
        AddShelfResult AddShelf(string accessToken, string shelfBanner, string shelfName, List<shelfcontrolbase> controls);        /// <summary>
        /// 删除货架        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架Id
        /// <returns></returns>
        CommonResult DeleteShelf(string accessToken, int shelfId);        /// <summary>
        /// 修改货架        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架Id
        /// <param>货架招牌图片Url
        /// <param>货架名称
        /// <param>货架控件1,2,3,4,5类型的集合
        /// <returns></returns>
        CommonResult UpdateShelf(string accessToken, int shelfId, string shelfBanner, string shelfName, List<shelfcontrolbase> controls);        /// <summary>
        /// 获取所有货架        /// </summary>
        /// <param>调用接口凭证
        /// <returns></returns>
        List<shelfjson> GetAllShelf(string accessToken);        /// <summary>
        /// 根据货架ID获取货架信息        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架Id
        /// <returns></returns>
        ShelfJson GetShelfById(string accessToken, int shelfId); 

        #endregion</shelfjson></shelfcontrolbase></shelfcontrolbase>

有了這些接口的定義,我們就需要實現對應的接口,從而實現我們向微信API的封裝處理了。

微信小店的貨架管理實作內容如下所示(部分內容,增刪改)。

        /// <summary>
        /// 增加货架        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架招牌图片Url
        /// <param>货架名称
        /// <param>货架控件1,2,3,4,5类型的集合
        /// <returns></returns>
        public AddShelfResult AddShelf(string accessToken, string shelfBanner, string shelfName, List<shelfcontrolbase> controls)
        {            var url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                shelf_data = new
                {
                    module_infos = controls
                },
                shelf_banner = shelfBanner,
                shelf_name = shelfName
            };            string postData = data.ToJson();            return JsonHelper<addshelfresult>.ConvertJson(url, postData);
        }        /// <summary>
        /// 删除货架        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架Id
        /// <returns></returns>
        public CommonResult DeleteShelf(string accessToken, int shelfId)
        {            var url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                shelf_id = shelfId
            };            string postData = data.ToJson();            return Helper.GetExecuteResult(url, postData);
        }        /// <summary>
        /// 修改货架        /// </summary>
        /// <param>调用接口凭证
        /// <param>货架Id
        /// <param>货架招牌图片Url
        /// <param>货架名称
        /// <param>货架控件1,2,3,4,5类型的集合
        /// <returns></returns>
        public CommonResult UpdateShelf(string accessToken, int shelfId, string shelfBanner, string shelfName, List<shelfcontrolbase> controls)
        {            var url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                shelf_id = shelfId,
                shelf_data = new
                {
                    module_infos = controls
                },
                shelf_banner = shelfBanner,
                shelf_name = shelfName
            };            string postData = data.ToJson();            return Helper.GetExecuteResult(url, postData);
        }</shelfcontrolbase></addshelfresult></shelfcontrolbase>

4、微信小店貨架管理的介面測試

由於貨架管理的物件和介面定義比較複雜一些,一定需要進行反覆的測試才能正式使用,如果不注意有可能你定義的實體類,取得不到某個欄位資訊。

我為了方便,創建了一個Winform項目,分別對各個介面進行測試。

C#开发微信门户及应用-微信小店货架信息管理

對於貨架管理內容的介面測試,測試程式碼如下所示。

        private void btnShelf_Click(object sender, EventArgs e)
        {
            IMerchantApi api = new MerchantApi();
            List<shelfjson> list = api.GetAllShelf(token);
            Console.WriteLine(list.ToJson());            foreach(ShelfJson json in list)
            {
                Console.WriteLine("货架信息:");
                ShelfJson getJson = api.GetShelfById(token, json.shelf_id.Value);
                Console.WriteLine(getJson.ToJson());
            }            string shelf_banner = "http://www.php.cn/";            string shelf_name = "测试货架";
            ShelfControl1 c11 = new ShelfControl1(6, 202797386);            
            ShelfControl1 c12 = new ShelfControl1(4, 202797397);
            List<shelfcontrolbase> controlList = new List<shelfcontrolbase>(){c11, c12};
            AddShelfResult result = api.AddShelf(token, shelf_banner, shelf_name, controlList);            if (result != null && result.shelf_id > 0)
            {
                Console.WriteLine("增加的货架信息:");
                ShelfJson getJson = api.GetShelfById(token, result.shelf_id);
                Console.WriteLine(getJson.ToJson());

                shelf_name = "测试货架-修改";
                controlList = new List<shelfcontrolbase>(){c11};
                CommonResult updateReuslt = api.UpdateShelf(token, result.shelf_id, shelf_banner, shelf_name, controlList);
                Console.WriteLine("修改货架操作:{0}", updateReuslt.Success ? "成功" : "失败");

                CommonResult deleteResult = api.DeleteShelf(token, result.shelf_id);
                Console.WriteLine("删除货架操作:{0}", deleteResult.Success ? "成功" : "失败");
            }
        }</shelfcontrolbase></shelfcontrolbase></shelfcontrolbase></shelfjson>

C#开发微信门户及应用-微信小店货架信息管理

 

更多C#開發微信入口網站及應用-微信小店貨架資訊管理 相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版