C#微信公眾號開發(fā)之用戶管理
前言:
微信公眾號提供了用戶和用戶組的管理,我們可以在微信公眾號官方里面進行操作,添加備注和標簽,以及移動用戶組別,同時,微信公眾號提供了相應的接口方便我們調用,可方便的把用戶同步到本地,這樣我們可以自己為用戶定義更多的信息,以及與本地的業(yè)務更好的對接起來。以方便做各種應用分析。所以本節(jié)內容主要是用戶和用戶組的管理。
開始:
一、用戶關注與退訂事件:
在之前的消息處理中,我們在UserMessageHandler.cs,需要繼承Senparc.Weixin.MP.MessageHandlers<TC>這個抽象類,并重寫所有方法,在這里面,我們可以添加2個事件,一個是用戶關注時候觸發(fā)事件,一個是退訂時候觸發(fā)事件
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage)
{
//通過掃描關注
var responseMessage = CreateResponseMessage<ResponseMessageText>();
responseMessage.Content = responseMessage.Content ?? string.Format("通過掃描二維碼進入,場景值:{0}", requestMessage.EventKey);
return responseMessage;
}
/// <summary>
/// 訂閱(關注)事件
/// </summary>
/// <returns></returns>
public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
{
var responseMessage = base.CreateResponseMessage<ResponseMessageText>();
responseMessage.Content = "歡迎關注";
return responseMessage;
}
/// <summary>
/// 退訂
/// 實際上用戶無法收到非訂閱賬號的消息,所以這里可以隨便寫。
/// unsubscribe事件的意義在于及時刪除網站應用中已經記錄的OpenID綁定,消除冗余數(shù)據。并且關注用戶流失的情況。
/// </summary>
/// <returns></returns>
public override IResponseMessageBase OnEvent_UnsubscribeRequest(RequestMessageEvent_Unsubscribe requestMessage)
{
var responseMessage = base.CreateResponseMessage<ResponseMessageText>();
responseMessage.Content = "有空再來";
return responseMessage;
}二、設計數(shù)據庫
根據微信公眾號開發(fā)文檔,用戶管理對應字段而建立,基本與官方提供的用戶信息是一樣的

建立用戶組管理表(WX_Group)和用戶表(WX_User)


三、提交同步數(shù)據
接口的實現(xiàn)方式我們使用了開源的Senparc.Weixin提供的專業(yè)的微信操作SDK來快速完成操作,在Senparc WX SDK下的Senparc.Weixin.MP.AdvancedAPIs ,通過OpenID到公眾號同步到數(shù)據,再將本地數(shù)據修改。
/// <summary>
/// 同步數(shù)據
/// </summary>
/// <param name="id">用戶id</param>
/// <param name="officeId">對應的公眾號id</param>
/// <returns></returns>
[HttpPost]
[SupportFilter]
public JsonResult SyncUser(string id,string officeId)
{
if (!string.IsNullOrWhiteSpace(id))
{
//填充數(shù)據
string[] arrs = id.Split(',');
List<BatchGetUserInfoData> list = new List<BatchGetUserInfoData>();
foreach (var m in arrs)
{
list.Add(new BatchGetUserInfoData() {
openid = m,
lang = "zh-CN",
LangEnum = Senparc.Weixin.Language.zh_CN
});
}
//批量同步數(shù)據
WC_OfficalAccountsModel accountModel = account_BLL.GetById(officeId);
var batchList = Senparc.Weixin.MP.AdvancedAPIs.UserApi.BatchGetUserInfo(accountModel.AccessToken, list);
foreach (var info in batchList.user_info_list)
{
WC_UserModel userModel = m_BLL.GetById(info.openid);
if (userModel != null)
{
userModel.City = info.city;
userModel.OpenId = info.openid;
userModel.Id = info.openid;
userModel.HeadImgUrl = info.headimgurl;
userModel.Language = info.language;
userModel.NickName = info.nickname;
userModel.Province = info.province;
userModel.Sex = info.sex;
m_BLL.Edit(ref errors, userModel);
}
}
LogHandler.WriteServiceLog(GetUserId(), "Ids:" + id, "成功", "刪除", "WX_User");
return Json(JsonHandler.CreateMessage(1, Resource.SaveSucceed));
}
else
{
return Json(JsonHandler.CreateMessage(0, Resource.SaveFail));
}
}通過以上方式,將用戶和分組的方式同步提交,實現(xiàn)用戶的分組。
總結:
1.實現(xiàn)用戶的分組,能更好的對關注者進行管理和分析業(yè)務應用
2.使用了開源的Senparc.Weixin,可以快速的實現(xiàn)分組和同步數(shù)據
3.參考官網示例源代碼
到此這篇關于C#微信公眾號開發(fā)之用戶管理的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C# Winform調用百度接口實現(xiàn)人臉識別教程(附源碼)
這篇文章主要介紹了C# Winform調用百度接口實現(xiàn)人臉識別教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05
LINQ基礎之Intersect、Except和Distinct子句
這篇文章介紹了LINQ使用Intersect、Except和Distinct子句的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
DataGridView實現(xiàn)點擊列頭升序和降序排序
這篇文章介紹了DataGridView實現(xiàn)點擊列頭升序和降序排序的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
vista和win7在windows服務中交互桌面權限問題解決方法:穿透Session 0 隔離
服務(Service)對于大家來說一定不會陌生,它是Windows 操作系統(tǒng)重要的組成部分。我們可以把服務想像成一種特殊的應用程序,它隨系統(tǒng)的“開啟~關閉”而“開始~停止”其工作內容,在這期間無需任何用戶參與2016-04-04
Unity UGUI的ContentSizeFitter內容尺寸適應器組件使用示例
這篇文章主要為大家介紹了Unity UGUI的ContentSizeFitter內容尺寸適應器組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08

