>  기사  >  위챗 애플릿  >  C# WeChat 포털 및 애플리케이션 개발(5) - 사용자 그룹 정보 관리

C# WeChat 포털 및 애플리케이션 개발(5) - 사용자 그룹 정보 관리

高洛峰
高洛峰원래의
2017-02-16 16:37:281528검색

지난 달에는 C#으로 WeChat 포털 및 애플리케이션 개발을 소개하고 공유하기 위해 여러 에세이를 작성했습니다. 시간적 제약으로 인해 한동안 이 블로그 시리즈를 계속 작성하지 못했습니다. 이에 대한 연구를 중단했습니다. 하지만 우리는 이 분야의 기술을 계속해서 심층적으로 탐구하여 이를 더 잘 적용하기 위해 기반 기술 개발에 집중했습니다. 이 기사에서는 이전 기사의 소개에 이어 주로 그룹 관리의 개발 및 적용을 소개합니다. 이 기사와 이전 기사의 내용은 사용자 정보와 그룹 정보 관리의 완전한 조합 역할을 합니다.

1. 사용자 그룹 관리 콘텐츠

사용자 그룹의 도입은 주로 팔로어 목록 관리 및 다양한 그룹에 대한 메시지 전송 작업을 용이하게 하기 위한 것입니다. 최대 500개까지 생성을 지원합니다. 여러 떼.

사용자 그룹 관리에는 다음 측면이 포함됩니다.

1 그룹 생성
2 모든 그룹 쿼리
3 사용자가 속한 그룹 쿼리
4 그룹 이름 수정
5개의 모바일 사용자 그룹

위챗의 그룹 생성 정의는 다음과 같습니다.

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKENPOST数据格式:json
POST数据例子:{"group":{"name":"test"}}

일반적으로 반환되는 결과는 다음과 같습니다.

{    "group": {        "id": 107, 
        "name": "test"
    }
}

다른 인터페이스도 유사한 방식으로 작동합니다. 즉, 일부 매개변수를 URL에 게시하여 반환된 Json 데이터를 가져옵니다.

이전 에세이에서 정의한 GroupJson의 엔터티 클래스 정보는 다음과 같습니다.

    /// <summary>
    /// 分组信息
    /// </summary>    public class GroupJson : BaseJsonResult
    {        /// <summary>
        /// 分组id,由微信分配
        /// </summary>
        public int id { get; set; }        /// <summary>
        /// 分组名字,UTF8编码
        /// </summary>        public string name { get; set; }
    }

위의 인터페이스 정의를 바탕으로 여러 인터페이스를 정의하고 이를 사용자 관리 API 인터페이스로 요약했습니다.

rreee

2. 사용자 그룹 관리 인터페이스 구현

2.1 사용자 그룹 생성

사용자 그룹을 생성하는 POST 데이터 작업을 구현하는 방법을 분석하기 위해 사용자를 생성하는 구체적인 프로세스를 단계별로 이해해 보겠습니다.

먼저 아래와 같이 언급해야 할 여러 속성을 포함하는 동적으로 정의된 엔터티 클래스 정보를 생성해야 합니다.

        /// <summary>
        /// 查询所有分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        List<GroupJson> GetGroupList(string accessToken);                       
        /// <summary>
        /// 创建分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="name">分组名称</param>
        /// <returns></returns>
        GroupJson CreateGroup(string accessToken, string name);                        
        /// <summary>
        /// 查询用户所在分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="openid">用户的OpenID</param>
        /// <returns></returns>
        int GetUserGroupId(string accessToken, string openid);        
        /// <summary>
        /// 修改分组名        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="id">分组id,由微信分配</param>
        /// <param name="name">分组名字(30个字符以内)</param>
        /// <returns></returns>
        CommonResult UpdateGroupName(string accessToken, int id, string name);                       
        /// <summary>
        /// 移动用户分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="openid">用户的OpenID</param>
        /// <param name="to_groupid">分组id</param>
        /// <returns></returns>
        CommonResult MoveUserToGroup(string accessToken, string openid, int to_groupid);

그 중 객체를 적절한 Json 데이터 연산으로 변환하여 확장 메서드 ToJson에 넣습니다. 이는 주로 동적으로 변환을 용이하게 하기 위한 것입니다. 정의된 엔터티 클래스 Json 콘텐츠는 주로 Json.NET의 일련 번호 작업을 호출하는 것입니다.

            string url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                group = new
                {
                    name = name
                }
            };            string postData = data.ToJson();

Post 데이터를 준비한 후, 데이터를 구하고 적절한 형식으로 변환하기 위한 연산 코드를 자세히 살펴보겠습니다.

        /// <summary>
        /// 把对象为json字符串        /// </summary>
        /// <param name="obj">待序列号对象</param>
        /// <returns></returns>
        public static string ToJson(this object obj)
        {            return JsonConvert.SerializeObject(obj, Formatting.Indented);
        }

POST 데이터를 적절한 형식의 엔터티 클래스로 변환하는 작업은 ConvertJson 메서드에 배치되며, 이 메서드의 정의는 다음과 같습니다. 내부의 HttpHelper는 내 공용 클래스 라이브러리의 보조 클래스입니다. 주로 기본 httpWebRequest 객체 메서드를 호출하여 데이터를 제출하고 반환 결과를 얻습니다.

            GroupJson group = null;
            CreateGroupResult result = JsonHelper<CreateGroupResult>.ConvertJson(url, postData);            if (result != null)
            {
                group = result.group;
            }

이렇게 사용자 그룹을 생성하는 전체 작업 기능은 다음과 같습니다.

        /// <summary>
        /// 转换Json字符串到具体的对象        /// </summary>
        /// <param name="url">返回Json数据的链接地址</param>
        /// <param name="postData">POST提交的数据</param>
        /// <returns></returns>
        public static T ConvertJson(string url, string postData)
        {
            HttpHelper helper = new HttpHelper();            string content = helper.GetHtml(url, postData, true);
            VerifyErrorCode(content);

            T result = JsonConvert.DeserializeObject<T>(content);            return result;
        }

2.2 모든 그룹 쿼리

모든 그룹 쿼리, 서버에 있는 모든 그룹을 가져올 수도 있습니다. 각 그룹의 ID와 이름입니다.

        /// 
        /// 创建分组        /// 
        /// 调用接口凭证
        /// 分组名称
        /// 
        public GroupJson CreateGroup(string accessToken, string name)
        {            string url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                group = new
                {
                    name = name
                }
            };            string postData = data.ToJson();

            GroupJson group = null;
            CreateGroupResult result = JsonHelper<CreateGroupResult>.ConvertJson(url, postData);            if (result != null)
            {
                group = result.group;
            }            return group;
        }

2.3 사용자가 속한 그룹 쿼리

각 사용자는 그룹에 속하며 기본값은 그룹 이 그룹에서는 API를 통해 사용자의 그룹 정보, 즉 사용자 그룹의 ID를 얻을 수 있습니다.

        /// <summary>
        /// 查询所有分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        public List<GroupJson> GetGroupList(string accessToken)
        {            string url = string.Format("http://www.php.cn/{0}", accessToken);

            List<GroupJson> list = new List<GroupJson>();
            GroupListJsonResult result = JsonHelper<GroupListJsonResult>.ConvertJson(url);            if (result != null && result.groups != null)
            {
                list.AddRange(result.groups);
            }            return list;
        }

2.4 그룹 이름 수정

실제로 사용자가 속한 그룹을 조정할 수도 있습니다. 동작코드는 다음과 같습니다.

        /// <summary>
        /// 查询用户所在分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="openid">用户的OpenID</param>
        /// <returns></returns>
        public int GetUserGroupId(string accessToken, string openid)
        {            string url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                openid = openid
            };            string postData = data.ToJson();            int groupId = -1;
            GroupIdJsonResult result = JsonHelper<GroupIdJsonResult>.ConvertJson(url, postData);            if (result != null)
            {
                groupId = result.groupid;
            }            return groupId;
        }

여기서 반환 값 CommonResult는 성공 또는 실패에 대한 부울 플래그와 문자열 유형의 오류 메시지(말하는 경우)를 포함하는 엔터티 클래스입니다. .

GetExecuteResult 함수 본문의 경우 주로 데이터를 제출한 후 결과를 얻고, 그 결과에 따라 처리하는 함수입니다.

        /// <summary>
        /// 修改分组名        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="id">分组id,由微信分配</param>
        /// <param name="name">分组名字(30个字符以内)</param>
        /// <returns></returns>
        public CommonResult UpdateGroupName(string accessToken, int id, string name)
        {            string url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                group = new
                {
                    id = id,
                    name = name
                }
            };            string postData = data.ToJson();            return Helper.GetExecuteResult(url, postData);
        }

위 빨간색 부분의 의미는 엔터티 클래스로 변환 시 위챗에 오류가 정의되어 있으면 오류 메시지가 기록된다는 의미입니다. . 다른 예외(예: 폐기)에 대해서는 잘 모르겠습니다.

2.5 사용자를 새 그룹으로 이동

사용자를 새 그룹으로 이동하는 작업은 위 섹션과 유사합니다. 자세한 내용은 코드를 참조하세요.

        /// <summary>
        /// 通用的操作结果        /// </summary>
        /// <param name="url">网页地址</param>
        /// <param name="postData">提交的数据内容</param>
        /// <returns></returns>
        public static CommonResult GetExecuteResult(string url, string postData = null)
        {
            CommonResult success = new CommonResult();            try
            {
                ErrorJsonResult result;                if (postData != null)
                {
                    result = JsonHelper<ErrorJsonResult>.ConvertJson(url, postData);
                }                else
                {
                    result = JsonHelper<ErrorJsonResult>.ConvertJson(url);
                }                if (result != null)
                {
                    success.Success = (result.errcode == ReturnCode.请求成功);
                    success.ErrorMessage = result.errmsg;
                }
            }            catch (WeixinException ex)
            {                success.ErrorMessage = ex.Message;
            }            return success;
        }  
    }

3. 사용자 그룹화 인터페이스 호출

위 섹션에서는 다양한 유형의 사용자 그룹화 인터페이스를 정의하고 구현합니다. , 사용자 관련 코드는 모두 예약 없이 게시되었으며, 해당 호출 동작은 다음 코드(테스트 코드)와 같습니다.

        /// <summary>
        /// 移动用户分组        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="openid">用户的OpenID</param>
        /// <param name="to_groupid">分组id</param>
        /// <returns></returns>
        public CommonResult MoveUserToGroup(string accessToken, string openid, int to_groupid)
        {            string url = string.Format("http://www.php.cn/{0}", accessToken);            var data = new
            {
                openid = openid,
                to_groupid = to_groupid
            };            string postData = data.ToJson();            return Helper.GetExecuteResult(url, postData);
        }

위의 코드와 호출 규칙을 이해한 후 API를 통해 사용자 그룹 정보를 관리할 수 있습니다. 애플리케이션에 관련 인터페이스 코드를 통합함으로써 우리는 다음 사용자 목록과 사용자 그룹 정보를 효과적으로 제어할 수 있습니다. 이는 다음 번 사용자 정보 푸시를 위한 견고한 기반을 마련할 것입니다.

WeChat 포털 및 애플리케이션의 더 많은 C# 개발을 위해 (5)--사용자 그룹 정보 관리, 관련 기사는 PHP 중국어 웹 사이트에 주목하십시오!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.