Group
Extension

Mojo-Weixin/lib/Mojo/Weixin/Model/Remote/_webwxbatchgetcontact_group.pm

use strict;
use Mojo::Weixin::Const qw(%KEY_MAP_GROUP %KEY_MAP_GROUP_MEMBER);
use Mojo::Weixin::Model::Remote::_webwxbatchgetcontact_group_member;
sub Mojo::Weixin::_webwxbatchgetcontact_group{
    my $self  = shift;
    my $is_update_group_member_detail = shift // 1;
    my @ids = @_;
    my @return;
    my $api = "https://".$self->domain . "/cgi-bin/mmwebwx-bin/webwxbatchgetcontact";

    while( my @id = splice(@ids,0,50) ){
        my @query_string = (
            type        =>  "ex",
            r           =>  $self->now(),
        );
        push @query_string,(pass_ticket =>  $self->pass_ticket) if $self->pass_ticket;
        my $post = {
            BaseRequest =>  {
                Uin         =>  $self->wxuin,
                DeviceID    =>  $self->deviceid,
                Sid         =>  $self->wxsid,
                Skey        =>  $self->skey,
            },
            Count       =>  @id+0,
            List        =>  [ map { {UserName=>$_,ChatRoomId=>""} } @id ],
        };
        my $json = $self->http_post($self->gen_url2($api,@query_string),{Referer=>'https://'.$self->domain . '/',json=>1},json=>$post);
        next unless defined $json;
        next if $json->{BaseResponse}{Ret}!=0;
        for my $e (@{$json->{ContactList}}){
            next if not $self->is_group_id($e->{UserName});
            my $group = {};
            for(keys %KEY_MAP_GROUP){
                $group->{$_} = $e->{$KEY_MAP_GROUP{$_}} // "";
            }
            if($is_update_group_member_detail){
                my @member = $self->_webwxbatchgetcontact_group_member($group->{_eid},map {$_->{UserName}} @{$e->{MemberList}});
                if(@member){
                    $group->{member} = \@member;
                }
                else{
                    for my $m (@{$e->{MemberList}}){
                        my $member = {};
                        for(keys %KEY_MAP_GROUP_MEMBER){
                            $member->{$_} = $m->{$KEY_MAP_GROUP_MEMBER{$_}} // "";
                        }
                        $member->{sex} = $self->code2sex($member->{sex});
                        push @{$group->{member}},$member;
                    }
                }
            }
            else{
                for my $m (@{$e->{MemberList}}){
                    my $member = {};
                    for(keys %KEY_MAP_GROUP_MEMBER){
                        $member->{$_} = $m->{$KEY_MAP_GROUP_MEMBER{$_}} // "";
                    }
                    $member->{sex} = $self->code2sex($member->{sex});
                    push @{$group->{member}},$member;
                }
            }
            push @return,$group;
        }

    }
    return if @return ==0;
    return wantarray?@return:$return[0];
}

1;


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.