C#开发微信门户及使用(10)–在保管种类中协同微信用户分组消息

在眼下几篇小说中,逐步从原来微信的API封装的底蕴上连接到微信应用平台管理系列里面,稳步介绍管理连串中的微信数据的界面设计,以及有关的处理操作进度的逻辑和代码,希望从更高二个层次,向大家介绍微信的行使开发进程。本篇首要介绍在保管类别中,怎么样兑现微信用户分组新闻的同步操作。

其实微信能够风风火火的来由,主要正是因为有用户音讯,所以同步并保管好微信账号的酷爱用户数据是那么些主要的。有了微信用户的数据,你能够和您任何利用系统连接,完结系统-手提式有线电话机客户端的数量整合,还足以对用户展开经营销售管理,如发送用户感兴趣的产品音讯、服务音讯等,能够很好扩充集团的影响力和市集表现。

在较早以前的一篇小说《C#支付微信门户及应用(5)–用户分组消息保管》,作者早已介绍了微信分组的各类底层的API封装操作,里面根本正是对微信提供API的.NET高级分组,对持有的音信交流,通超过实际体性举办数据调换,使得大家调用API来处理微信的各样工作越来越惠及,从而为微信应用平台的管制奠定基础。其中那篇小说介绍了全体微信分组管理的API封装进程,用户分组管理,包蕴下边多少个地点的始末:

1)创造分组
2) 查询全数分组
3) 查询用户所在分组
4) 修改分组名
5) 移动用户分组

① 、用户分组,在管理连串中的界面设计

本着上述微信分组的操作,大家能够在微信的行使管理种类之中,设计1个模块,用来保管微信的分组数据,在这一个模块里面,能够创建分组,修改分组,查看分组等基础操作,还是可以够落成同台微信分组的操作,同步操作,首要就是把增加产量的分组消息添加到微信里面,修改的分组也在微信中落到实处修改成效,删除近期微信不帮衬,所以不用管了。最后,我们能够在此从微信服务器上,把修改后的数目同步下来,同步的时候为了防止对大家付出不成事的数额,大家须求对修改过的记录做好标识,那几个正是自身对总体同步操作的逻辑处理了。

在保管体系里面,对微信分组的列表管理界面设计如下所示。

C# 1

开创分组的时候,我们只须要加上一个分组名称就能够了,界面设计也大约,不过大家把创造的ID统一布署为-1,作为未共同的新增标识。

C# 2

编写制定分组新闻界面如下所示。当对分组实行编写制定保存后,系统会铭记那多少个修改过的分组正是了。

C# 3

二 、分组同步操作代码体现

为了更好达成分组同步的管住,作者把分组的操作代码,封装在一个MVC的控制器的办法里面,页面代码通过Ajax调用就足以兑现同步操作了,同步成功,可能战败,都会唤醒用户,让我们对其结果开始展览询问。

一同的时候,把地点新增的剧情,在服务器上成立分组;把修改的的分组名称,在服务器上进行修改,然后进行共同列表处理,同步操作前,列表界面只怕如下所示,有新增记录ID=-1的,也有涂改后,记录修改标志的。

C# 4 

 

用户分组的一路按钮操作,是调用七个本子代码就足以了,具体代码如下所示。

        //绑定提交按钮的的点击事件
        function BindSyncDataEvent() {
            $("#btnSyncData").click(function () {
                $.messager.confirm("提交确认", "您确认需要和微信服务器同步分组信息吗?", function (action) {
                    if (action) {
                        //提交数据
                        $("#loading").show();

                        $.ajax({
                            url: '/Group/SyncGroup',
                            type: 'post',
                            dataType: 'json',
                            success: function (data) {
                                if (data.Success) {
                                    $("#grid").datagrid("reload");
                                    $.messager.alert("提示", "同步成功");
                                }
                                else {
                                    $.messager.alert("提示", "同步失败:" + data.ErrorMessage);
                                }
                            },
                            data: ''
                        });

                        $("#loading").fadeOut(500);
                    }
                });
            });
        }

里头地方浅蓝部分正是由此Jquery调用的MVC的控制器方法,具体函数代码如下所示。

        /// <summary>
        /// 同步服务器的分组信息
        /// </summary>
        /// <returns></returns>
        public ActionResult SyncGroup()
        {
            string accessToken = GetAccessToken();
            CommonResult result = BLLFactory<Group>.Instance.SyncGroup(accessToken);
            return ToJsonContent(result);
        }

从地方,大家并未观望太多的逻辑,为了便于自个儿对他们实行了特别的包装,把它内置了业务逻辑层实行拍卖了。具体我们看看它的代码逻辑吗,这里为了具备的数据库操作更是高效和总体,使用了工作的操作,作者把有关的代码贴出来,方便大家探听逻辑。

        /// <summary>
        /// 同步服务器的分组信息
        /// </summary>
        /// <returns></returns>
        public CommonResult SyncGroup(string accessToken)
        {
            CommonResult result = new CommonResult();

            try
            {
                IUserApi api = new UserApi();

                using (DbTransaction trans = baseDal.CreateTransaction())
                {
                    //先把本地标志groupId = -1未上传的记录上传到服务器,然后进行本地更新
                    string condition = string.Format("GroupID = '-1' ");
                    List<GroupInfo> unSubmitList = base.Find(condition);
                    foreach (GroupInfo info in unSubmitList)
                    {
                        GroupJson groupJson = api.CreateGroup(accessToken, info.Name);
                        if (groupJson != null)
                        {
                            info.GroupID = groupJson.id;
                            baseDal.Update(info, info.ID, trans);
                        }
                    }

                    //把标志为修改状态的记录,在服务器上修改
                    condition = string.Format("GroupID >=0 and Modified =1 ");
                    List<GroupInfo> unModifyList = base.Find(condition);
                    foreach (GroupInfo info in unModifyList)
                    {
                        CommonResult modifyed = api.UpdateGroupName(accessToken, info.GroupID, info.Name);
                        if (modifyed != null && modifyed.Success)
                        {
                            info.Modified = 0;//重置标志
                            baseDal.Update(info, info.ID, trans);
                        }
                    }    

                    //删除具有删除标志的分组
                    //condition = string.Format("GroupID >=100 and Deleted=1 ");
                    //List<GroupInfo> unDeletedList = base.Find(condition);
                    //foreach (GroupInfo info in unDeletedList)
                    //{
                    //    CommonResult deleted = api.DeleteGroup(accessToken, info.GroupID, info.Name);
                    //    if (deleted != null && deleted.Success)
                    //    {
                    //        baseDal.Delete(info.ID, trans);
                    //    }
                    //}

                    List<GroupJson> list = api.GetGroupList(accessToken);
                    foreach (GroupJson info in list)
                    {
                        UpdateGroup(info, trans);
                    }

                    try
                    {
                        trans.Commit();
                        result.Success = true;
                    }
                    catch 
                    {
                        trans.Rollback();
                        throw;
                    }                   
                }
            }
            catch (Exception ex)
            {
                result.ErrorMessage = ex.Message;
            }

            return result;
        }

在Jquery同步的时候,我们为了防止等待时间过久而不或许判定程序是或不是平常在干活,最好增添三个忙于的提示操作,因为大家利用了Ajax调用,所以大家得以统一设置Ajax的坚苦和形成景况,具体设置代码如下所示。

        //用来统一请求忙碌显示的设置
        $.ajaxSetup({
            beforeSend: function () {
                $("#loading").show();
            },
            complete: function () {
                $("#loading").hide();
            }
        });

C#, 

借使感兴趣可能体验相关的微信成效,能够关注自作者的微信询问下。具体效果能够关怀作者的微信门户:新德里爱奇迪,也能够扫描上边二维码举行关心了然。

C# 5

只要对这么些《C#开发微信门户及应用》连串感兴趣,能够关注自己的别的文章,种类小说如下所示:

C#开发微信门户及使用(25)-微信公司号的客户端管住功用

C#开发微信门户及运用(24)-微信小店货架音信保管

C#付出微信门户及应用(23)-微信小店商品质量管理理理接口的卷入和测试

C#支出微信门户及选取(22)-微信小店的付出和动用

C#支付微信门户及利用(21)-微信集团号的新闻和事件的吸收接纳处理及解密 

C#支付微信门户及应用(20)-微信集团号的菜谱管理

C#开发微信门户及使用(19)-微信公司号的信息发送(文本、图片、文件、语音、摄像、图像和文字音讯等)

C#支付微信门户及选择(18)-微信公司号的通信录管理支出之成员管理

C#付出微信门户及运用(17)-微信集团号的通信录管理支出之部门管理

C#开发微信门户及运用(16)-微信公司号的计划和平运动用

C#付出微信门户及利用(15)-微信菜单增添扫一扫、发图片、发地理地点成效

 C#开发微信门户及应用(14)-在微信菜单中运用重定向获取用户数据

C#开发微信门户及应用(13)-使用地理地方扩充相关应用

C#开发微信门户及选拔(12)-使用语音处理

C#付出微信门户及利用(11)–微信菜单的多样表现方法介绍

C#开发微信门户及利用(10)–在保管系列中一块微信用户分组新闻

C#支付微信门户及利用(9)-微信门户菜单管理及提交到微信服务器

C#支付微信门户及应用(8)-微信门户应用管理种类机能介绍

C#开发微信门户及选择(7)-微信多客服功能及支付集成

C#付出微信门户及利用(6)–微信门户菜单的治本操作

C#支出微信门户及使用(5)–用户分组音信保管

C#开发微信门户及运用(4)–关切用户列表及详细音讯管理

C#付出微信门户及应用(3)–文本新闻和图像和文字新闻的对答

C#付出微信门户及选用(2)–微信新闻的处理和回答

C#支出微信门户及利用(1)–开始采纳微信接口

 

相关文章