ホームページ >WeChat アプレット >WeChatの開発 >WeChat ポータルとアプリケーションの C# 開発 - 管理システム内の WeChat ユーザー グループ情報の同期

WeChat ポータルとアプリケーションの C# 開発 - 管理システム内の WeChat ユーザー グループ情報の同期

高洛峰
高洛峰オリジナル
2017-02-17 15:11:521789ブラウズ

前回の記事では、元の WeChat API のカプセル化から WeChat アプリケーション プラットフォーム管理システムに徐々に移行し、管理システム内の WeChat データのインターフェイス設計と、関連する処理操作のロジックとコードを徐々に紹介しました。 WeChat のアプリケーション開発プロセスをより高いレベルから紹介したいと思います。この記事では主に、管理システムで WeChat ユーザー グループ情報の同期操作を実現する方法を紹介します。

実際、WeChat がこれほど人気が​​ある理由は主にユーザー情報にあるため、WeChat アカウントの次のユーザー データを同期して管理することが非常に重要です。 WeChat ユーザーのデータを使用して、任意のアプリケーション システムに接続して、システムとモバイルのクライアント データの統合を実現できます。また、ユーザーが興味のある製品ニュースやサービス ニュースなどを送信するなど、ユーザーのマーケティング管理を行うこともできます。 、企業の影響力と市場の行動を十分に拡大することができます。

以前のエッセイ「WeChat ポータルとアプリケーションの C# 開発 (5) - ユーザー グループ情報管理」で、私はかつて WeChat グループのさまざまな基盤となる API カプセル化操作を紹介しました。これは主に WeChat 用の API を提供します。NET の高度なグループ化により、すべての情報が交換され、エンティティを介してデータを交換することで、さまざまな WeChat トランザクションを処理するための API の呼び出しがより便利になり、WeChat アプリケーション プラットフォームの管理の基礎が築かれます。この記事では、次の側面を含むすべての WeChat グループ管理、ユーザー グループ管理の API カプセル化プロセスを紹介します:

1) グループを作成する
2) すべてのグループをクエリする
3) ユーザーが属するグループをクエリする
4) グループを変更する名前
5) モバイルユーザーのグループ化

1. ユーザーのグループ化、管理システムのインターフェース設計

上記の WeChat グループ化の操作のために、WeChat グループのデータを管理するためのモジュールを WeChat アプリケーション管理システムに設計できます。 、グループの作成、グループの変更、グループの表示、その他の基本的な操作を行うこともできます。同期操作には主に新しいグループ情報の WeChat への追加が含まれ、変更されたグループを WeChat に追加することもできます。現在、WeChat ではサポートされていないため、心配する必要はありません。最後に、同期中に失敗したデータが送信されるのを避けるために、変更されたデータを同期する必要があります。これが全体的な同期操作です。

管理システムにおけるWeChatグループのリスト管理インターフェイスの設計は次のとおりです。

C#开发微信门户及应用-在管理系统中同步微信用户分组信息

グループを作成するときは、グループ名を追加するだけで済みます。インターフェイスのデザインもシンプルですが、作成されたIDは、新しい非同期IDとして-1になるように設計されています。

C#开发微信门户及应用-在管理系统中同步微信用户分组信息

グループ情報の編集インターフェースは以下のとおりです。グループを編集して保存すると、システムはそれらの変更されたグループを記憶します。

C#开发微信门户及应用-在管理系统中同步微信用户分组信息

2. グループ同期オペレーションコードの表示

グループ同期の管理をより良く実現するために、MVCコントローラーメソッドでグループオペレーションコードをカプセル化し、操作後にAjax呼び出しを通じてページコードを同期できるようにしました。 、同期が成功したか失敗したかにかかわらず、ユーザーは結果を通知するよう求められます。

同期する場合、新しく追加されたローカル コンテンツ用にサーバー上にグループを作成し、サーバー上で変更されたグループ名を変更してから、同期操作の前に、リスト インターフェイスは次のようになります。は ID=-1 の新規レコードであり、変更後に変更フラグが付いているレコードもあります。

C#开发微信门户及应用-在管理系统中同步微信用户分组信息

ユーザーグループ化の同期ボタン操作はスクリプトコードを呼び出すだけです。 具体的なコードは以下の通りです。

        //绑定提交按钮的的点击事件
        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 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#开发微信门户及应用-在管理系统中同步微信用户分组信息 相关文章请关注PHP中文网!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。