🎨 逻辑优化,那个网页,大大地提速
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"go-wechat/client"
|
||||
"go-wechat/entity"
|
||||
"go-wechat/vo"
|
||||
"log"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -16,10 +17,11 @@ func GetAllFriend() (friends, groups []vo.FriendItem, err error) {
|
||||
var records []vo.FriendItem
|
||||
err = client.MySQL.
|
||||
Table("t_friend AS tf").
|
||||
Joins("LEFT JOIN t_message AS tm ON tf.wxid = tm.from_user").
|
||||
Select("tf.*", "MAX(tm.create_at) AS last_active_time").
|
||||
Group("tf.wxid").
|
||||
Order("last_active_time DESC").
|
||||
//Joins("LEFT JOIN t_message AS tm ON tf.wxid = tm.from_user").
|
||||
//Select("tf.*", "MAX(tm.create_at) AS last_active").
|
||||
Select("tf.*").
|
||||
//Group("tf.wxid").
|
||||
Order("tf.last_active DESC").
|
||||
Find(&records).Error
|
||||
if err != nil {
|
||||
return
|
||||
@@ -60,3 +62,27 @@ func CheckIsEnableCommand(userId string) (flag bool) {
|
||||
client.MySQL.Model(&entity.Friend{}).Where("enable_command = 1").Where("wxid = ?", userId).Count(&coo)
|
||||
return coo > 0
|
||||
}
|
||||
|
||||
// updateLastActive
|
||||
// @description: 更新最后活跃时间
|
||||
// @param msg
|
||||
func updateLastActive(msg entity.Message) {
|
||||
var err error
|
||||
// 如果是群,更新群成员最后活跃时间
|
||||
if strings.HasSuffix(msg.FromUser, "@chatroom") {
|
||||
err = client.MySQL.Model(&entity.GroupUser{}).
|
||||
Where("group_id = ?", msg.FromUser).
|
||||
Where("wxid = ?", msg.GroupUser).
|
||||
Update("last_active", msg.CreateTime).Error
|
||||
if err != nil {
|
||||
log.Printf("更新群成员最后活跃时间失败, 错误信息: %v", err)
|
||||
}
|
||||
}
|
||||
// 更新群或者好友活跃时间
|
||||
err = client.MySQL.Model(&entity.Friend{}).
|
||||
Where("wxid = ?", msg.FromUser).
|
||||
Update("last_active", msg.CreateTime).Error
|
||||
if err != nil {
|
||||
log.Printf("更新群或者好友活跃时间失败, 错误信息: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,9 @@ import (
|
||||
func GetGroupUsersByGroupId(groupId string) (records []vo.GroupUserItem, err error) {
|
||||
err = client.MySQL.
|
||||
Table("t_group_user AS tgu").
|
||||
Joins("LEFT JOIN t_message AS tm ON tm.from_user = tgu.group_id AND tm.group_user = tgu.wxid").
|
||||
//Select("tgu.wxid", "tgu.nickname", "tgu.head_image", "tgu.is_member", "tgu.leave_time",
|
||||
// "tgu.skip_chat_rank", "MAX(tm.create_at) AS last_active_time").
|
||||
Select("tgu.*", "MAX(tm.create_at) AS last_active_time").
|
||||
//Joins("LEFT JOIN t_message AS tm ON tm.from_user = tgu.group_id AND tm.group_user = tgu.wxid").
|
||||
//Select("tgu.*", "MAX(tm.create_at) AS last_active").
|
||||
Select("tgu.*").
|
||||
Where("tgu.group_id = ?", groupId).
|
||||
Group("tgu.group_id, tgu.wxid").
|
||||
Order("tgu.join_time DESC").
|
||||
|
||||
@@ -32,4 +32,10 @@ func SaveMessage(msg entity.Message) {
|
||||
log.Printf("消息入库失败, 错误信息: %v", err)
|
||||
}
|
||||
log.Printf("消息入库成功,消息Id: %d", msg.MsgId)
|
||||
|
||||
// 更新最后活跃时间
|
||||
// 只处理收到的消息
|
||||
if msg.MsgId > 1 {
|
||||
go updateLastActive(msg)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user