ホームページ > WeChat アプレット > WeChatの開発 > WeChat ポータルの C# 開発と WeChat エンタープライズ アカウント アドレス帳管理のアプリケーションの開発とメンバー管理

WeChat ポータルの C# 開発と WeChat エンタープライズ アカウント アドレス帳管理のアプリケーションの開発とメンバー管理

高洛峰
リリース: 2017-03-02 09:41:01
オリジナル
3195 人が閲覧しました

1. メンバー作成操作

アドレス帳の管理も、前に紹介した組織構造レベルと同様に、組織構造に基づいているため、便宜上、開発の前提となる部門別の組織構造を作成できます。記事。ここでは、次の図に示すように、広州 iQidi のルート構造を作成し、その中にいくつかの組織構造を作成します。

WeChat ポータルの C# 開発と WeChat エンタープライズ アカウント アドレス帳管理のアプリケーションの開発とメンバー管理

この記事では、主に人事管理操作のために WeChat Enterprise Account API を呼び出す方法をバックグラウンドでの機能操作を通じて追加できます。

クリエイターのAPI定義は以下の通りです。

  • リクエスト手順

HTTPSリクエストメソッド: POST

https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=ACCESS_TOKEN

リクエストパッケージの構造は次のとおりです:

{
   "userid": "zhangsan",
   "name": "张三",
   "department": [1, 2],
   "position": "产品经理",
   "mobile": "15913215421",
   "gender": 1,
   "tel": "62394",
   "email": "zhangsan@gzdev.com",
   "weixinid": "zhangsan4dev"
}
ログイン後にコピー
  • パラメータの説明

パラメータ必須説明access_tokenは呼び出しインターフェース認証情報 userid は、 従業員のユーザー ID です。管理端に対応する口座番号は企業内で一意である必要があります。長さは 1 ~ 64 文字です。 name は メンバーの名前です。文字数は1~64文字です部門Noメンバーが所属する部門IDのリスト。なお、部門ごとの直接従業員の最大数は1,000名ですポジションNoポジション情報。長さは 0 ~ 64 文字ですmobileNo携帯電話番号。企業内で一意である必要があり、モバイル/weixinid/電子メールを同時に空にすることはできません性別いいえ性別。性別=0 は男性、=1 は女性を意味します。デフォルトの性別=0telnoオフィスの電話番号。長さは 0 ~ 64 文字ですemailNoEmail。長さは 0 ~ 64 文字です。会社は固有の weixinidNo WeChat ID を持っている必要があります。企業内で一意である必要があります
  • 権限の説明

管理者は、「アドレス帳を操作する」ためのインターフェース権限と、指定された部門の管理権限を持っている必要があります。

  • 結果を返す

{
   "errcode": 0,
   "errmsg": "created"
}
ログイン後にコピー
C# では、対応するインターフェイスを定義し、必要に応じて対応する転送エンティティ情報を構築する必要があります。

ここで人事管理用のすべてのインターフェイスを定義しました。インターフェイスの定義は次のとおりです。

        #region 部门成员管理        /// <summary>
        /// 创建成员        /// </summary>
        CommonResult CreateUser(string accessToken, CorpUserJson user);        /// <summary>
        /// 更新成员        /// </summary>
        CommonResult UpdateUser(string accessToken, CorpUserUpdateJson user);        /// <summary>
        /// 删除成员        /// </summary>
        CommonResult DeleteUser(string accessToken, string userid);        /// <summary>
        /// 根据成员id获取成员信息        /// </summary>
        CorpUserGetJson GetUser(string accessToken, string userid);        /// <summary>
        /// 获取部门成员        /// </summary>
        CorpUserListJson GetDeptUser(string accessToken, int department_id, int fetch_child = 0, int status = 0);        #endregion
ログイン後にコピー

次に、情報定義に基づいて人事情報を保持する CorpUserJson エンティティ オブジェクトを作成します。人事を作成するための実装オペレーション コードは次のとおりです。

        /// <summary>
        /// 创建成员        /// </summary>
        public CommonResult CreateUser(string accessToken, CorpUserJson user)
        {            string urlFormat = "http://www.php.cn/{0}";            var data = new
            {
                userid = user.userid,
                name = user.name,
                department = user.department,
                position = user.position,
                mobile = user.mobile,
                gender = user.gender,
                tel = user.tel,
                email = user.email,
                weixinid = user.weixinid
            };            var url = string.Format(urlFormat, accessToken);            var postData = data.ToJson();            return Helper.GetCorpExecuteResult(url, postData);
        }
ログイン後にコピー

2.メンバー更新操作

メンバーのデータ更新操作と作成操作も同様であり、そのエンタープライズ番号は次のように定義されます。

  • リクエスト手順

HTTPSリクエストメソッド: POST

https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN

リクエストパッケージの例は次のとおりです(そうでない場合 必須フィールドが指定されていない場合、フィールドの以前の設定値は更新されません):

{
   "userid": "zhangsan",
   "name": "李四",
   "department": [1],
   "position": "后台工程师",
   "mobile": "15913215421",
   "gender": 1,
   "tel": "62394",
   "email": "zhangsan@gzdev.com",
   "weixinid": "lisifordev",
   "enable": 1
}
ログイン後にコピー

動作データが似ているため、実装コードも以下に示すように似ています。

        /// <summary>
        /// 更新成员        /// </summary>
        public CommonResult UpdateUser(string accessToken, CorpUserUpdateJson user)
        {            string urlFormat = "http://www.php.cn/{0}";            //string postData = user.ToJson();
            var data = new
            {
                userid = user.userid,
                name = user.name,
                department = user.department,
                position = user.position,
                mobile = user.mobile,
                gender = user.gender,
                tel = user.tel,
                email = user.email,
                weixinid = user.weixinid,
                enable = user.enable
            };            var url = string.Format(urlFormat, accessToken);            var postData = data.ToJson();            return Helper.GetCorpExecuteResult(url, postData);
        }
ログイン後にコピー

3. メンバーの削除、メンバーの取得、部門メンバーの取得

これらの操作は上記と同様であるため、詳細は説明しません。必要に応じてそれらを定義すると、対応するデータ情報が返され、Json データを解析して対応するエンティティに変換できます。

1) 削除者の定義は次のとおりです:

  • リクエスト手順

HTTPSリクエストメソッド: GET

https://qyapi.weixin.qq.com/cgi-bin/user /delete? access_token=ACCESS_TOKEN&userid=lisi

  • パラメータの説明

パラメータaccess_tokenuserid
  • 返回结果

{
   "errcode": 0,
   "errmsg": "deleted"
}
ログイン後にコピー

2)成员的获取定义如下:

  • 请求说明

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=lisi

  • 参数说明

必須 説明
呼び出しインターフェイスの認証情報 証明書
従業員のユーザーIDです。運営側の対応アカウント
参数 必须 说明
access_token 调用接口凭证
userid 员工UserID
  • 返回结果

{
   "errcode": 0,
   "errmsg": "ok",
   "userid": "zhangsan",
   "name": "李四",
   "department": [1, 2],
   "position": "后台工程师",
   "mobile": "15913215421",
   "gender": 1,
   "tel": "62394",
   "email": "zhangsan@gzdev.com",
   "weixinid": "lisifordev",  
   "avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0",
   "status": 1
}
ログイン後にコピー

3)部门成员的获取定义如下:

  • 请求说明

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TOKEN&department_id=1&fetch_child=0&status=0

  • 参数说明

参数 必须 说明
access_token 调用接口凭证
department_id 获取的部门id
fetch_child 1/0:是否递归获取子部门下面的成员
status 0获取全部员工,1获取已关注成员列表,2获取禁用成员列表,4获取未关注成员列表。status可叠加
  • 权限说明

管理员须拥有’获取部门成员’的接口权限,以及指定部门的查看权限。

  • 返回结果

{
   "errcode": 0,
   "errmsg": "ok",
   "userlist": [
           {
                  "userid": "zhangsan",
                  "name": "李四"
           }
     ]
}
ログイン後にコピー

这个返回值我们定义一个实体对象用来存储数据即可。

    /// <summary>
    /// 获取部门成员返回的数据    /// </summary>
    public class CorpUserListJson : BaseJsonResult
    {        public CorpUserListJson()
        {            this.userlist = new List<corpusersimplejson>();
        }        /// <summary>
        /// 返回的错误消息        /// </summary>
        public CorpReturnCode errcode { get; set; }        /// <summary>
        /// 对返回码的文本描述内容        /// </summary>
        public string errmsg { get; set; }        /// <summary>
        /// 成员列表        /// </summary>
        public List<corpusersimplejson> userlist { get; set; }
    }</corpusersimplejson></corpusersimplejson>
ログイン後にコピー

 

7、综合例子调用代码

上面介绍了一些企业号的接口定义和我对API的C#封装接口和部分实现代码,实现了功能后,我们就可以在代码中对它进行测试,确信是否正常使用。

        /// <summary>
        /// 人员管理综合性操作(创建、修改、获取信息、删除)        /// </summary>
        /// <param>
        /// <param>
        private void btnCorpUser_Click(object sender, EventArgs e)
        {
            CorpUserJson user = new CorpUserJson();
            user.userid = "test";
            user.name ="测试用户";
            user.department = new List<int>(){2};
            user.email = "test@163.com";

            ICorpAddressBookApi bll = new CorpAddressBookApi();
            CommonResult result = bll.CreateUser(token, user);            if (result != null)
            {
                Console.WriteLine("创建成员:{0} {1} {2}", user.name, (result.Success ? "成功" : "失败"), result.ErrorMessage);                string name = "修改测试";
                user.name = name;
                CorpUserUpdateJson userUpdate = new CorpUserUpdateJson(user);
                result = bll.UpdateUser(token, userUpdate);                if (result != null)
                {
                    Console.WriteLine("修改名称:{0} {1} {2}", name, (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }

                CorpUserGetJson userGet = bll.GetUser(token, user.userid);                if (userGet != null)
                {
                    Console.WriteLine("成员名称:{0} ({1} {2})", userGet.name, user.userid, user.email);
                }

                result = bll.DeleteUser(token, user.userid);                if (result != null)
                {
                    Console.WriteLine("删除成员:{0} {1} {2}", name, (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }
            }
        }</int>
ログイン後にコピー

WeChat ポータルの C# 開発と WeChat エンタープライズ アカウント アドレス帳管理のアプリケーションの開発とメンバー管理

获取部门人员的操作代码如下所示。

        /// <summary>
        /// 获取部门人员        /// </summary>
        private void btnCorpUserList_Click(object sender, EventArgs e)
        {            int deptId = 1;
            ICorpAddressBookApi bll = new CorpAddressBookApi();
            CorpUserListJson result = bll.GetDeptUser(token, deptId);            if (result != null)
            {                foreach(CorpUserSimpleJson item in result.userlist)
                {
                    Console.WriteLine("成员名称:{0} {1}", item.name, item.userid);
                }
            }
        }
ログイン後にコピー

 

人员的管理,相对来说比较简单,主要是在一定的部门下创建人员,然后也可以给标签增加相应的人员,基本上就是这些了,不过一定需要确保有相应的权限进行操作。

更多WeChat ポータルの C# 開発と WeChat エンタープライズ アカウント アドレス帳管理のアプリケーションの開発とメンバー管理相关文章请关注PHP中文网!


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート