Mojo-Weixin
view release on metacpan or search on metacpan
lib/Mojo/Weixin/Model.pm view on Meta::CPAN
if(not defined $contactinfo){
$self->error("è·åé讯å½è系人信æ¯å¤±è´¥");
return;
}
my($friends,$contact_groups) = @$contactinfo;
if(ref $friends eq "ARRAY" and @$friends>0){
#$self->friend([ map {Mojo::Weixin::Friend->new($_)} grep {$_->{id} ne $user->{id}} @$friends ]);
my @tmp;
for(@$friends){
if($_->{id} ne $user->{id}){
push @tmp,Mojo::Weixin::Friend->new($_);
}
else{
$self->user(Mojo::Weixin::User->new($_));
}
}
$self->friend(\@tmp);
$self->info("æ´æ°å¥½åä¿¡æ¯æå");
$self->emit(update_user=>$self->user);
$self->emit(update_friend=>$self->friend);
}
my %groups_id;
if(ref $init_groups eq "ARRAY" and @$init_groups >0){
for(@$init_groups){
$groups_id{$_->{id}} = 1;
}
}
if(ref $contact_groups eq "ARRAY" and @$contact_groups>0){
for(@$contact_groups){
$groups_id{$_->{id}} = 1;
}
}
if(keys %groups_id){
my @groups = $self->_webwxbatchgetcontact_group(0,keys %groups_id);
if(@groups){
if($self->is_init_group_member){
$self->group([]);
for my $g (@groups){
my @member = $self->_webwxbatchgetcontact_group_member($g->{_eid},map {$_->{id}} @{$g->{member}});
$g->{member} = \@member if @member;
my $group = Mojo::Weixin::Group->new($g);
push @{ $self->group },$group;
$self->info("æ´æ°ç¾¤ç»[ @{[$group->displayname]} ]ä¿¡æ¯æå");
}
$self->emit(update_group=>$self->group);
}
else{
$self->group([ map { Mojo::Weixin::Group->new($_) } @groups ]);
$self->info("æ´æ°ç¾¤ç»[ @{[$_->displayname]} ]ä¿¡æ¯æå") for $self->groups;
$self->emit(update_group=>$self->group);
}
}
else{
$self->error("æ´æ°ç¾¤ç»ä¿¡æ¯å¤±è´¥");
return;
}
}
return 1;
}
sub update_user {
}
sub update_friend{
my $self = shift;
my @friend_ids = map {ref $_ eq "Mojo::Weixin::Friend"?$_->id:$_} @_;
if(@friend_ids){
my @return = $self->_webwxbatchgetcontact_friend(@friend_ids);
return if not @return;
$self->add_friend(Mojo::Weixin::Friend->new($_)) for @return;
return 1;
}
}
sub update_group{
my $self = shift;
my @group_ids = map {ref $_ eq "Mojo::Weixin::Group"?$_->id:$_} @_;
my $is_update_group_member = $_[1] // $self->is_update_group_member;
if(@group_ids){
my @return = $self->_webwxbatchgetcontact_group($is_update_group_member,@group_ids);
return if not @return;
$self->add_group(Mojo::Weixin::Group->new($_)) for @return;
return 1;
}
}
sub search_friend{
my $self = shift;
my %p = @_;
if($p{_check_remote}){
if(wantarray){
my @f = $self->_search($self->friend,@_);
if(@f){return @f}
else{
$self->update_friend($p{id}) if defined $p{id};
return $self->_search($self->friend,@_);
}
}
else{
my $f = $self->_search($self->friend,@_);
if(defined $f){return $f }
else{
$self->update_friend($p{id}) if defined $p{id};
return $self->_search($self->friend,@_);
}
}
}
return $self->_search($self->friend,@_);
}
sub search_group{
my $self = shift;
my %p = @_;
if($p{_check_remote}){
if(wantarray){
my @g = $self->_search($self->group,@_);
if(@g){return @g}
else{
$self->update_group($p{id}) if defined $p{id};
return $self->_search($self->group,@_);
}
}
else{
my $g = $self->_search($self->group,@_);
if(defined $g){return $g }
else{
$self->update_group($p{id}) if defined $p{id};
return $self->_search($self->group,@_);
}
}
}
return $self->_search($self->group,@_);
}
sub add_friend{
my $self = shift;
my $friend = shift;
( run in 0.417 second using v1.01-cache-2.11-cpan-5b529ec07f3 )