diff --git a/entity/friend.go b/entity/friend.go index 74c7040..4a5cbda 100644 --- a/entity/friend.go +++ b/entity/friend.go @@ -1,15 +1,17 @@ package entity -import "time" +import ( + "time" +) // Friend // @description: 好友列表 type Friend struct { + Wxid string `json:"wxid"` // 微信原始Id CustomAccount string `json:"customAccount"` // 微信号 Nickname string `json:"nickname"` // 昵称 Pinyin string `json:"pinyin"` // 昵称拼音大写首字母 PinyinAll string `json:"pinyinAll"` // 昵称全拼 - Wxid string `json:"wxid"` // 微信原始Id EnableAi bool `json:"enableAI" gorm:"type:tinyint(1) default 0 not null"` // 是否使用AI EnableChatRank bool `json:"enableChatRank" gorm:"type:tinyint(1) default 0 not null"` // 是否使用聊天排行 IsOk bool `json:"isOk" gorm:"type:tinyint(1) default 0 not null"` // 是否正常 @@ -23,11 +25,12 @@ func (Friend) TableName() string { // @description: 群成员 type GroupUser struct { GroupId string `json:"groupId"` // 群Id + Wxid string `json:"wxid"` // 微信Id Account string `json:"account"` // 账号 HeadImage string `json:"headImage"` // 头像 Nickname string `json:"nickname"` // 昵称 - Wxid string `json:"wxid"` // 微信Id IsMember bool `json:"isMember" gorm:"type:tinyint(1) default 0 not null"` // 是否群成员 + JoinTime time.Time `json:"joinTime"` // 加入时间 LeaveTime *time.Time `json:"leaveTime"` // 离开时间 SkipChatRank bool `json:"skipChatRank" gorm:"type:tinyint(1) default 0 not null"` // 是否跳过聊天排行 } diff --git a/service/group.go b/service/group.go index 2e7ea9d..85c3187 100644 --- a/service/group.go +++ b/service/group.go @@ -19,7 +19,7 @@ func GetGroupUsersByGroupId(groupId string) (records []vo.GroupUserItem, err err Select("tgu.*", "MAX(tm.create_at) AS last_active_time"). Where("tgu.group_id = ?", groupId). Group("tgu.group_id, tgu.wxid"). - Order("tgu.wxid ASC"). + Order("tgu.join_time DESC"). Find(&records).Error return } diff --git a/tasks/friends/friends.go b/tasks/friends/friends.go index 69348f7..c164918 100644 --- a/tasks/friends/friends.go +++ b/tasks/friends/friends.go @@ -154,6 +154,7 @@ func syncGroupUsers(tx *gorm.DB, gid string) { Nickname: cp.Nickname, Wxid: cp.Wxid, IsMember: true, + JoinTime: time.Now().Local(), }).Error if err != nil { log.Printf("新增群成员失败: %s", err.Error()) diff --git a/views/index.html b/views/index.html index 5e84bf4..fff044e 100644 --- a/views/index.html +++ b/views/index.html @@ -165,6 +165,7 @@ 微信Id 昵称 是否群成员 + 加群时间 最后活跃时间 退群时间 是否跳过水群排行榜 diff --git a/views/static/js/index.js b/views/static/js/index.js index c77a143..986cc33 100644 --- a/views/static/js/index.js +++ b/views/static/js/index.js @@ -83,42 +83,39 @@ function getGroupUsers(groupId, groupName) { for (let i = 0; i < groupUsers.length; i++) { const groupUser = groupUsers[i] - var row = tbody.insertRow(i); // 插入新行 + let row = tbody.insertRow(i); // 插入新行 // 微信Id - var wxId = row.insertCell(0); + let wxId = row.insertCell(0); wxId.innerHTML = groupUser.wxid; // 昵称 - var nickname = row.insertCell(1); + let nickname = row.insertCell(1); nickname.innerHTML = groupUser.nickname; // 是否群成员 - var isMember = row.insertCell(2); + let isMember = row.insertCell(2); if (groupUser.isMember) { isMember.innerHTML = '
'; } else { isMember.innerHTML = '
'; } + // 加群时间 + let joinTime = row.insertCell(3); + joinTime.innerHTML = groupUser.joinTime; + // 最后活跃时间 - var lastActiveTime = row.insertCell(3); + let lastActiveTime = row.insertCell(4); lastActiveTime.innerHTML = groupUser.lastActiveTime; // 退群时间 - var leaveTime = row.insertCell(4); + let leaveTime = row.insertCell(5); leaveTime.innerHTML = groupUser.leaveTime; // 是否跳过水群排行榜 - var skipChatRank = row.insertCell(5); - let skipChatRankHtml = `` - skipChatRank.innerHTML = skipChatRankHtml; - - // if (groupUser.skipChatRank) { - // - // } else { - // skipChatRank.innerHTML = ''; - // } + let skipChatRank = row.insertCell(6); + skipChatRank.innerHTML = ``; } }).catch(function (error) { console.log(`错误信息: ${error}`); diff --git a/vo/friend.go b/vo/friend.go index b55e051..a1a6584 100644 --- a/vo/friend.go +++ b/vo/friend.go @@ -26,6 +26,7 @@ type GroupUserItem struct { HeadImage string `json:"headImage"` // 头像 Nickname string `json:"nickname"` // 昵称 IsMember bool `json:"isMember" ` // 是否群成员 + JoinTime types.DateTime `json:"joinTime"` // 加入时间 LastActiveTime types.DateTime `json:"lastActiveTime"` // 最后活跃时间 LeaveTime types.DateTime `json:"leaveTime"` // 离开时间 SkipChatRank bool `json:"skipChatRank" ` // 是否跳过聊天排行