[feat]: 添加联系人排序功能 (#200)
This commit is contained in:
parent
0af4b51d93
commit
f8461401a7
41
user.go
41
user.go
@ -3,10 +3,13 @@ package openwechat
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"html"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@ -214,6 +217,25 @@ func (u *User) IsSelf() bool {
|
||||
return u.UserName == u.Self().UserName
|
||||
}
|
||||
|
||||
// OrderSymbol 获取用户的排序标识
|
||||
func (u *User) OrderSymbol() string {
|
||||
var symbol string
|
||||
if u.RemarkPYQuanPin != "" {
|
||||
symbol = u.RemarkPYQuanPin
|
||||
} else if u.PYQuanPin != "" {
|
||||
symbol = u.PYQuanPin
|
||||
} else {
|
||||
symbol = u.NickName
|
||||
}
|
||||
symbol = html.UnescapeString(symbol)
|
||||
symbol = strings.ToUpper(symbol)
|
||||
symbol = regexp.MustCompile("/\\W/ig").ReplaceAllString(symbol, "")
|
||||
if len(symbol) > 0 && symbol[0] < 'A' {
|
||||
return "~"
|
||||
}
|
||||
return symbol
|
||||
}
|
||||
|
||||
// 格式化emoji表情
|
||||
func (u *User) formatEmoji() {
|
||||
u.NickName = FormatEmoji(u.NickName)
|
||||
@ -645,6 +667,19 @@ func (s *Self) SendVideoToGroups(video io.Reader, delay time.Duration, groups ..
|
||||
// Members 抽象的用户组
|
||||
type Members []*User
|
||||
|
||||
func (m Members) Len() int {
|
||||
return len(m)
|
||||
}
|
||||
|
||||
// Less 按照微信的规则排序
|
||||
func (m Members) Less(i, j int) bool {
|
||||
return m[i].OrderSymbol() < m[j].OrderSymbol()
|
||||
}
|
||||
|
||||
func (m Members) Swap(i, j int) {
|
||||
m[i], m[j] = m[j], m[i]
|
||||
}
|
||||
|
||||
// Uniq Members 去重
|
||||
func (m Members) Uniq() Members {
|
||||
var uniqMembers = make(map[string]*User)
|
||||
@ -658,6 +693,12 @@ func (m Members) Uniq() Members {
|
||||
return members
|
||||
}
|
||||
|
||||
// Sort 对联系人进行排序
|
||||
func (m Members) Sort() Members {
|
||||
sort.Sort(m)
|
||||
return m
|
||||
}
|
||||
|
||||
// Count 统计数量
|
||||
func (m Members) Count() int {
|
||||
return len(m)
|
||||
|
Loading…
x
Reference in New Issue
Block a user