在前面微信小店系列篇《C#開發(fā)微信門戶及應(yīng)用(22)-微信小店的開發(fā)與使用》裡面介紹了一些微信小店的基礎(chǔ)知識,以及《C#開發(fā)微信門戶及應(yīng)用(23)-微信小店商品管理介面的封裝與測試》裡面詳細(xì)介紹了微信小店商品的介面定義、實(shí)作與測試的內(nèi)容,本文主要介紹微信小店貨架資訊管理。這個(gè)模組是在微信小店物件裡面,最為複雜,也是最難理解的一個(gè)模組,對於它的物件建模,需要反覆測試才能完善起來,因此這個(gè)貨架管理模組,可以說是最具技術(shù)含量的一個(gè)模組了。
1、微信小店貨架介紹
在微信公眾號的後臺裡面,可以對貨架資訊進(jìn)行維護(hù),介面如下所示。貨架的概念,就是把商品分門別類的很好展示給客戶,貨架就是類似一個(gè)佈局良好的展櫃,我們可以定義不同的貨架,然後公佈不同的URL進(jìn)行體驗(yàn)。
另外,我們一般創(chuàng)建貨架,都是基於貨架的模板庫來構(gòu)建的,貨架的模板給我們快速構(gòu)建一個(gè)貨架,提供了可視化的參考界面,貨架模板界面如下所示。
?
2、貨架管理的開發(fā)模型
對於利用API開發(fā)微信店鋪,微信小店的貨架管理操作接口,和常規(guī)的模組差不多,具有下面幾個(gè)功能操作。
雖然看起來和前面的物件模型差不多,但是貨架的資訊非常複雜,因此你如果需要根據(jù)Json資料把它還原為實(shí)體物件的時(shí)候,需要反覆進(jìn)行斟酌,否則很容易建模錯(cuò)誤。
對應(yīng)著微信小店管理介面的貨架模板,貨架的物件資訊包括了5個(gè)不同的控制模型,它們有的可以進(jìn)行組合使用。
幾個(gè)貨架的模型展示如下圖所示。
透過上面5個(gè)控制模型,我們可以看到它們分別代表不一樣的佈局效果,而且它們可以在貨架上進(jìn)行組合使用的。
3、貨架資訊的物件建模
根據(jù)微信小店的介面說明,我們最終定義的貨架實(shí)體物件訊息,內(nèi)容就非常豐富且彈性化。
我們透過參考微信小店的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
我們根據(jù)JSON資料的定義,定義了幾個(gè)貨架控制項(xiàng)的對象,他們的關(guān)係如下所示。
我們可以根據(jù)JSON資料進(jìn)行實(shí)體對象的建模,然後有了這些對象,我們就可以進(jìn)一步定義好貨架的相關(guān)操作接口了,接口定義如下所示。
????????#region?貨架管理????????///?<summary> ????????///?增加貨架????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfBanner">貨架招牌圖片Url</param> ????????///?<param name="shelfName">貨架名稱</param> ????????///?<param name="controls">貨架控件1,2,3,4,5類型的集合</param> ????????///?<returns></returns> ????????AddShelfResult?AddShelf(string?accessToken,?string?shelfBanner,?string?shelfName,?List<ShelfControlBase>?controls);????????///?<summary> ????????///?刪除貨架????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfId">貨架Id</param> ????????///?<returns></returns> ????????CommonResult?DeleteShelf(string?accessToken,?int?shelfId);????????///?<summary> ????????///?修改貨架????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfId">貨架Id</param> ????????///?<param name="shelfBanner">貨架招牌圖片Url</param> ????????///?<param name="shelfName">貨架名稱</param> ????????///?<param name="controls">貨架控件1,2,3,4,5類型的集合</param> ????????///?<returns></returns> ????????CommonResult?UpdateShelf(string?accessToken,?int?shelfId,?string?shelfBanner,?string?shelfName,?List<ShelfControlBase>?controls);????????///?<summary> ????????///?獲取所有貨架????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<returns></returns> ????????List<ShelfJson>?GetAllShelf(string?accessToken);????????///?<summary> ????????///?根據(jù)貨架ID獲取貨架信息????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfId">貨架Id</param> ????????///?<returns></returns> ????????ShelfJson?GetShelfById(string?accessToken,?int?shelfId);? ????????#endregion
有了這些接口的定義,我們就需要實(shí)現(xiàn)對應(yīng)的接口,從而實(shí)現(xiàn)我們向微信API的封裝處理了。
微信小店的貨架管理實(shí)作內(nèi)容如下所示(部分內(nèi)容,增刪改)。
????????///?<summary> ????????///?增加貨架????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfBanner">貨架招牌圖片Url</param> ????????///?<param name="shelfName">貨架名稱</param> ????????///?<param name="controls">貨架控件1,2,3,4,5類型的集合</param> ????????///?<returns></returns> ????????public?AddShelfResult?AddShelf(string?accessToken,?string?shelfBanner,?string?shelfName,?List<ShelfControlBase>?controls) ????????{????????????var?url?=?string.Format("http://m.miracleart.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 name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfId">貨架Id</param> ????????///?<returns></returns> ????????public?CommonResult?DeleteShelf(string?accessToken,?int?shelfId) ????????{????????????var?url?=?string.Format("http://m.miracleart.cn/{0}",?accessToken);????????????var?data?=?new ????????????{ ????????????????shelf_id?=?shelfId ????????????};????????????string?postData?=?data.ToJson();????????????return?Helper.GetExecuteResult(url,?postData); ????????}????????///?<summary> ????????///?修改貨架????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="shelfId">貨架Id</param> ????????///?<param name="shelfBanner">貨架招牌圖片Url</param> ????????///?<param name="shelfName">貨架名稱</param> ????????///?<param name="controls">貨架控件1,2,3,4,5類型的集合</param> ????????///?<returns></returns> ????????public?CommonResult?UpdateShelf(string?accessToken,?int?shelfId,?string?shelfBanner,?string?shelfName,?List<ShelfControlBase>?controls) ????????{????????????var?url?=?string.Format("http://m.miracleart.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); ????????}
4、微信小店貨架管理的介面測試
由於貨架管理的物件和介面定義比較複雜一些,一定需要進(jìn)行反覆的測試才能正式使用,如果不注意有可能你定義的實(shí)體類,取得不到某個(gè)欄位資訊。
我為了方便,創(chuàng)建了一個(gè)Winform項(xiàng)目,分別對各個(gè)介面進(jìn)行測試。
對於貨架管理內(nèi)容的介面測試,測試程式碼如下所示。
????????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://m.miracleart.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???"成功"?:?"失敗"); ????????????} ????????}
?
更多C#開發(fā)微信入口網(wǎng)站及應(yīng)用-微信小店貨架資訊管理?相關(guān)文章請關(guān)注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
