最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#微信公眾號(hào)開發(fā)之用戶管理

 更新時(shí)間:2022年06月15日 14:39:56   作者:艾三元  
這篇文章介紹了C#微信公眾號(hào)開發(fā)之用戶管理,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言:

微信公眾號(hào)提供了用戶和用戶組的管理,我們可以在微信公眾號(hào)官方里面進(jìn)行操作,添加備注和標(biāo)簽,以及移動(dòng)用戶組別,同時(shí),微信公眾號(hào)提供了相應(yīng)的接口方便我們調(diào)用,可方便的把用戶同步到本地,這樣我們可以自己為用戶定義更多的信息,以及與本地的業(yè)務(wù)更好的對(duì)接起來。以方便做各種應(yīng)用分析。所以本節(jié)內(nèi)容主要是用戶和用戶組的管理。

開始:

一、用戶關(guān)注與退訂事件:

在之前的消息處理中,我們?cè)赨serMessageHandler.cs,需要繼承Senparc.Weixin.MP.MessageHandlers<TC>這個(gè)抽象類,并重寫所有方法,在這里面,我們可以添加2個(gè)事件,一個(gè)是用戶關(guān)注時(shí)候觸發(fā)事件,一個(gè)是退訂時(shí)候觸發(fā)事件

        public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage)
        {
            //通過掃描關(guān)注
            var responseMessage = CreateResponseMessage<ResponseMessageText>();
            responseMessage.Content = responseMessage.Content ?? string.Format("通過掃描二維碼進(jìn)入,場(chǎng)景值:{0}", requestMessage.EventKey);
            return responseMessage;
        }

        /// <summary>
        /// 訂閱(關(guān)注)事件
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            var responseMessage = base.CreateResponseMessage<ResponseMessageText>();
            responseMessage.Content = "歡迎關(guān)注";
            return responseMessage;
        }

        /// <summary>
        /// 退訂
        /// 實(shí)際上用戶無法收到非訂閱賬號(hào)的消息,所以這里可以隨便寫。
        /// unsubscribe事件的意義在于及時(shí)刪除網(wǎng)站應(yīng)用中已經(jīng)記錄的OpenID綁定,消除冗余數(shù)據(jù)。并且關(guān)注用戶流失的情況。
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_UnsubscribeRequest(RequestMessageEvent_Unsubscribe requestMessage)
        {
            var responseMessage = base.CreateResponseMessage<ResponseMessageText>();
            responseMessage.Content = "有空再來";
            return responseMessage;
        }

二、設(shè)計(jì)數(shù)據(jù)庫

根據(jù)微信公眾號(hào)開發(fā)文檔,用戶管理對(duì)應(yīng)字段而建立,基本與官方提供的用戶信息是一樣的

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

三、提交同步數(shù)據(jù)

接口的實(shí)現(xiàn)方式我們使用了開源的Senparc.Weixin提供的專業(yè)的微信操作SDK來快速完成操作,在Senparc WX SDK下的Senparc.Weixin.MP.AdvancedAPIs ,通過OpenID到公眾號(hào)同步到數(shù)據(jù),再將本地?cái)?shù)據(jù)修改。

        /// <summary>
        /// 同步數(shù)據(jù)
        /// </summary>
        /// <param name="id">用戶id</param>
        /// <param name="officeId">對(duì)應(yīng)的公眾號(hào)id</param>
        /// <returns></returns>
        [HttpPost]
        [SupportFilter]
        public JsonResult SyncUser(string id,string officeId)
        {
            if (!string.IsNullOrWhiteSpace(id))
            {
                //填充數(shù)據(jù)
                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ù)據(jù)
                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));
            }
        }

通過以上方式,將用戶和分組的方式同步提交,實(shí)現(xiàn)用戶的分組。

總結(jié):

1.實(shí)現(xiàn)用戶的分組,能更好的對(duì)關(guān)注者進(jìn)行管理和分析業(yè)務(wù)應(yīng)用

2.使用了開源的Senparc.Weixin,可以快速的實(shí)現(xiàn)分組和同步數(shù)據(jù)

3.參考官網(wǎng)示例源代碼

到此這篇關(guān)于C#微信公眾號(hào)開發(fā)之用戶管理的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

汽车| 肇东市| 新竹市| 高州市| 惠来县| 云龙县| 塘沽区| 东源县| 文昌市| 桃江县| 泰和县| 黄浦区| 响水县| 乌兰察布市| 云龙县| 新闻| 桦川县| 大足县| 库尔勒市| 岑溪市| 开阳县| 杂多县| 桦甸市| 安新县| 抚松县| 上林县| 庆云县| 老河口市| 都安| 上高县| 文成县| 通化市| 康定县| 萍乡市| 方正县| 巴青县| 锦屏县| 广州市| 民县| 公主岭市| 黔西县|