亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1、用戶分組管理內(nèi)容
2、用戶分組管理介面的實作
%%PRE_BLOCK_13%%
首頁 微信小程式 微信開發(fā) C#開發(fā)微信入口網(wǎng)站及應(yīng)用程式(5)--使用者分組資訊管理

C#開發(fā)微信入口網(wǎng)站及應(yīng)用程式(5)--使用者分組資訊管理

Feb 16, 2017 pm 04:37 PM

在上個月的對C#開發(fā)微信門戶及應(yīng)用做了介紹,寫過了幾篇的隨筆進行分享,由於時間關(guān)係,間隔了一段時間沒有繼續(xù)寫這個系列的博客了,並不是對這個方面停止了研究,而是繼續(xù)深入探索這方面的技術(shù),為了更好的應(yīng)用起來,專心做好底層的技術(shù)開發(fā)。本篇繼續(xù)上一篇的介紹,主要介紹分組管理方面的開發(fā)應(yīng)用,這篇的內(nèi)容和上一篇,作為一個完整的使用者資訊和分組資訊管理的組合。

1、用戶分組管理內(nèi)容

用戶分組的引入,主要是方便管理追蹤者列表,以及方便向不同的組別發(fā)送訊息的操作的,一個公眾帳號,最多支援創(chuàng)建500個分組。

使用者分組管理,包含以下幾個面向的內(nèi)容:

1 建立分組
2 查詢所有分組
3 查詢使用者所在分組
4 修改分組名稱
5 行動用戶分組

微信對於建立分組的定義如下所定義示。

http請求方式:?POST(請使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKENPOST數(shù)據(jù)格式:json
POST數(shù)據(jù)例子:{"group":{"name":"test"}}

正?;貍鞯慕Y(jié)果如下圖所示。

{????"group":?{????????"id":?107,?
????????"name":?"test"
????}
}

其他接口,也是類似的方式,透過POST一些參數(shù)進去URL裡面,取得返回的Json資料。

前面隨筆定義了GroupJson的實體類別資訊如下所示。

????///?<summary>
????///?分組信息
????///?</summary>????public?class?GroupJson?:?BaseJsonResult
????{????????///?<summary>
????????///?分組id,由微信分配
????????///?</summary>
????????public?int?id?{?get;?set;?}????????///?<summary>
????????///?分組名字,UTF8編碼
????????///?</summary>????????public?string?name?{?get;?set;?}
????}

根據(jù)以上幾個接口的定義,我定義了幾個接口,並把它們歸納到用戶管理的API接口裡面。

????????///?<summary>
????????///?查詢所有分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<returns></returns>
????????List<GroupJson>?GetGroupList(string?accessToken);???????????????????????
????????///?<summary>
????????///?創(chuàng)建分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="name">分組名稱</param>
????????///?<returns></returns>
????????GroupJson?CreateGroup(string?accessToken,?string?name);????????????????????????
????????///?<summary>
????????///?查詢用戶所在分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="openid">用戶的OpenID</param>
????????///?<returns></returns>
????????int?GetUserGroupId(string?accessToken,?string?openid);????????
????????///?<summary>
????????///?修改分組名????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="id">分組id,由微信分配</param>
????????///?<param name="name">分組名字(30個字符以內(nèi))</param>
????????///?<returns></returns>
????????CommonResult?UpdateGroupName(string?accessToken,?int?id,?string?name);???????????????????????
????????///?<summary>
????????///?移動用戶分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="openid">用戶的OpenID</param>
????????///?<param name="to_groupid">分組id</param>
????????///?<returns></returns>
????????CommonResult?MoveUserToGroup(string?accessToken,?string?openid,?int?to_groupid);

?

2、用戶分組管理介面的實作

2.1 創(chuàng)建用戶分組

2.1 創(chuàng)建用戶分組

創(chuàng)建了資料。

首先需要建立一個動態(tài)定義的實體類別訊息,它包含幾個需要提及的屬性,如下所示。

????????????string?url?=?string.Format("http://ipnx.cn/{0}",?accessToken);????????????var?data?=?new
????????????{
????????????????group?=?new
????????????????{
????????????????????name?=?name
????????????????}
????????????};????????????string?postData?=?data.ToJson();

其中我們把物件轉(zhuǎn)換為適當(dāng)?shù)腏son資料操作,放到了擴充方法ToJson裡面了,這個主要就是方便把動態(tài)定義的實體類別轉(zhuǎn)換Json內(nèi)容,主要就是呼叫Json.NET的序號操作。

????????///?<summary>
????????///?把對象為json字符串????????///?</summary>
????????///?<param name="obj">待序列號對象</param>
????????///?<returns></returns>
????????public?static?string?ToJson(this?object?obj)
????????{????????????return?JsonConvert.SerializeObject(obj,?Formatting.Indented);
????????}

準(zhǔn)備好Post的資料後,我們就進一步看看取得資料並轉(zhuǎn)換為適當(dāng)格式的操作碼。

????????????GroupJson?group?=?null;
????????????CreateGroupResult?result?=?JsonHelper<CreateGroupResult>.ConvertJson(url,?postData);????????????if?(result?!=?null)
????????????{
????????????????group?=?result.group;
????????????}

其中POST資料並轉(zhuǎn)換為合適格式實體類別的操作,放在了ConvertJson方法裡面,這個方法的定義如下所示,裡面的HttpHelper是我公用類別庫的輔助類,主要就是調(diào)用底層的httpWebRequest物件方法,進行資料的提交,並取得回傳結(jié)果。

????????///?<summary>
????????///?轉(zhuǎn)換Json字符串到具體的對象????????///?</summary>
????????///?<param name="url">返回Json數(shù)據(jù)的鏈接地址</param>
????????///?<param name="postData">POST提交的數(shù)據(jù)</param>
????????///?<returns></returns>
????????public?static?T?ConvertJson(string?url,?string?postData)
????????{
????????????HttpHelper?helper?=?new?HttpHelper();????????????string?content?=?helper.GetHtml(url,?postData,?true);
????????????VerifyErrorCode(content);

????????????T?result?=?JsonConvert.DeserializeObject<T>(content);????????????return?result;
????????}

這樣,完整的建立使用者分組的操作函數(shù)如下所示。

????????///?
????????///?創(chuàng)建分組????????///?
????????///?調(diào)用接口憑證
????????///?分組名稱
????????///?
????????public?GroupJson?CreateGroup(string?accessToken,?string?name)
????????{????????????string?url?=?string.Format("http://ipnx.cn/{0}",?accessToken);????????????var?data?=?new
????????????{
????????????????group?=?new
????????????????{
????????????????????name?=?name
????????????????}
????????????};????????????string?postData?=?data.ToJson();

????????????GroupJson?group?=?null;
????????????CreateGroupResult?result?=?JsonHelper<CreateGroupResult>.ConvertJson(url,?postData);????????????if?(result?!=?null)
????????????{
????????????????group?=?result.group;
????????????}????????????return?group;
????????}

2.2 查詢所有分組

查詢所有分組,可以把伺服器上的分組全部取得下來,也就是每個分組的ID和名稱。

????????///?<summary>
????????///?查詢所有分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<returns></returns>
????????public?List<GroupJson>?GetGroupList(string?accessToken)
????????{????????????string?url?=?string.Format("http://ipnx.cn/{0}",?accessToken);

????????????List<GroupJson>?list?=?new?List<GroupJson>();
????????????GroupListJsonResult?result?=?JsonHelper<GroupListJsonResult>.ConvertJson(url);????????????if?(result?!=?null?&&?result.groups?!=?null)
????????????{
????????????????list.AddRange(result.groups);
????????????}????????????return?list;
????????}

2.3 查詢使用者所在分組

每個使用者都屬於一個分組,預(yù)設(shè)在

未分組

這個分組裡面,我們可以透過API取得使用者的分組資訊,也就是取得使用者分組的ID。

????????///?<summary>
????????///?查詢用戶所在分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="openid">用戶的OpenID</param>
????????///?<returns></returns>
????????public?int?GetUserGroupId(string?accessToken,?string?openid)
????????{????????????string?url?=?string.Format("http://ipnx.cn/{0}",?accessToken);????????????var?data?=?new
????????????{
????????????????openid?=?openid
????????????};????????????string?postData?=?data.ToJson();????????????int?groupId?=?-1;
????????????GroupIdJsonResult?result?=?JsonHelper<GroupIdJsonResult>.ConvertJson(url,?postData);????????????if?(result?!=?null)
????????????{
????????????????groupId?=?result.groupid;
????????????}????????????return?groupId;
????????}

2.4 修改分組名稱

也可以在實際中,調(diào)整使用者所在的分組,操作代碼如下。

????????///?<summary>
????????///?修改分組名????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="id">分組id,由微信分配</param>
????????///?<param name="name">分組名字(30個字符以內(nèi))</param>
????????///?<returns></returns>
????????public?CommonResult?UpdateGroupName(string?accessToken,?int?id,?string?name)
????????{????????????string?url?=?string.Format("http://ipnx.cn/{0}",?accessToken);????????????var?data?=?new
????????????{
????????????????group?=?new
????????????????{
????????????????????id?=?id,
????????????????????name?=?name
????????????????}
????????????};????????????string?postData?=?data.ToJson();????????????return?Helper.GetExecuteResult(url,?postData);
????????}

這裡的回傳值CommonResult是,一個實體類,包含了bool的成功與否的標(biāo)誌,以及String類型的錯誤訊息(如果有的話)。

對於這個GetExecuteResult函數(shù)體,裡面主要就是提交數(shù)據(jù),然後取得結(jié)果,並根據(jù)結(jié)果進行處理的函數(shù)。

????????///?<summary>
????????///?通用的操作結(jié)果????????///?</summary>
????????///?<param name="url">網(wǎng)頁地址</param>
????????///?<param name="postData">提交的數(shù)據(jù)內(nèi)容</param>
????????///?<returns></returns>
????????public?static?CommonResult?GetExecuteResult(string?url,?string?postData?=?null)
????????{
????????????CommonResult?success?=?new?CommonResult();????????????try
????????????{
????????????????ErrorJsonResult?result;????????????????if?(postData?!=?null)
????????????????{
????????????????????result?=?JsonHelper<ErrorJsonResult>.ConvertJson(url,?postData);
????????????????}????????????????else
????????????????{
????????????????????result?=?JsonHelper<ErrorJsonResult>.ConvertJson(url);
????????????????}????????????????if?(result?!=?null)
????????????????{
????????????????????success.Success?=?(result.errcode?==?ReturnCode.請求成功);
????????????????????success.ErrorMessage?=?result.errmsg;
????????????????}
????????????}????????????catch?(WeixinException?ex)
????????????{????????????????success.ErrorMessage?=?ex.Message;
????????????}????????????return?success;
????????}??
????}
上面紅色部分的意思,就是轉(zhuǎn)換為實體類的時候,如果錯誤是微信裡面定義的,那麼記錄錯誤訊息,其他異常我不處理(也就是拋出去)。

2.5 行動用戶到新的分組

行動用戶到新的分組的操作和上面小節(jié)的差不多,具體看代碼。

????????///?<summary>
????????///?移動用戶分組????????///?</summary>
????????///?<param name="accessToken">調(diào)用接口憑證</param>
????????///?<param name="openid">用戶的OpenID</param>
????????///?<param name="to_groupid">分組id</param>
????????///?<returns></returns>
????????public?CommonResult?MoveUserToGroup(string?accessToken,?string?openid,?int?to_groupid)
????????{????????????string?url?=?string.Format("http://ipnx.cn/{0}",?accessToken);????????????var?data?=?new
????????????{
????????????????openid?=?openid,
????????????????to_groupid?=?to_groupid
????????????};????????????string?postData?=?data.ToJson();????????????return?Helper.GetExecuteResult(url,?postData);
????????}

?

3、用戶分組接口的調(diào)用

上面小節(jié),定義並實現(xiàn)了用戶分組的各類接口,所有的用戶相關(guān)的都已經(jīng)毫無保留貼出代碼,它的調(diào)用操作如下程式碼所示(測試程式碼)。

????????private?void?btnGetGroupList_Click(object?sender,?EventArgs?e)
????????{
????????????IUserApi?userBLL?=?new?UserApi();
????????????List<GroupJson>?list?=?userBLL.GetGroupList(token);????????????foreach?(GroupJson?info?in?list)
????????????{????????????????string?tips?=?string.Format("{0}:{1}",?info.name,?info.id);
????????????????Console.WriteLine(tips);
????????????}
????????}????????private?void?btnFindUserGroup_Click(object?sender,?EventArgs?e)
????????{
????????????IUserApi?userBLL?=?new?UserApi();????????????int?groupId?=?userBLL.GetUserGroupId(token,?openId);????????????string?tips?=?string.Format("GroupId:{0}",?groupId);
????????????Console.WriteLine(tips);
????????}????????private?void?btnCreateGroup_Click(object?sender,?EventArgs?e)
????????{
????????????IUserApi?userBLL?=?new?UserApi();
????????????GroupJson?info?=?userBLL.CreateGroup(token,?"創(chuàng)建測試分組");????????????if?(info?!=?null)
????????????{????????????????string?tips?=?string.Format("GroupId:{0}?GroupName:{1}",?info.id,?info.name);
????????????????Console.WriteLine(tips);????????????????string?newName?=?"創(chuàng)建測試修改";
????????????????CommonResult?result?=?userBLL.UpdateGroupName(token,?info.id,?newName);
????????????????Console.WriteLine("修改分組名稱:"?+?(result.Success???"成功"?:?"失敗:"?+?result.ErrorMessage));
????????????}
????????}????????private?void?btnUpdateGroup_Click(object?sender,?EventArgs?e)
????????{????????????int?groupId?=?111;????????????string?newName?=?"創(chuàng)建測試修改";

????????????IUserApi?userBLL?=?new?UserApi();
????????????CommonResult?result?=?userBLL.UpdateGroupName(token,?groupId,?newName);
????????????Console.WriteLine("修改分組名稱:"?+?(result.Success???"成功"?:?"失敗:"?+?result.ErrorMessage));
????????}????????private?void?btnMoveToGroup_Click(object?sender,?EventArgs?e)
????????{????????????int?togroup_id?=?111;//輸入分組ID

????????????if?(togroup_id?>?0)
????????????{
????????????????IUserApi?userBLL?=?new?UserApi();
????????????????CommonResult?result?=?userBLL.MoveUserToGroup(token,?openId,?togroup_id);

????????????????Console.WriteLine("移動用戶分組名稱:"?+?(result.Success???"成功"?:?"失敗:"?+?result.ErrorMessage));
????????????}
????????}
????了解了上面的程式碼和呼叫規(guī)則,我們就能透過API進行使用者分組資訊的管理了。透過在應(yīng)用程式中整合相關(guān)的介面程式碼,我們就能夠很好的控制我們的關(guān)注用戶列表和用戶分組資訊。從而為我們下一步用戶的訊息推送打好基礎(chǔ)。 ????更多C#開發(fā)微信入口網(wǎng)站及應(yīng)用(5)--使用者分組資訊管理?相關(guān)文章請關(guān)注PHP中文網(wǎng)! ??
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72