🎨 优化消息总结查询SQL,支持更多消息类型

This commit is contained in:
李寻欢 2024-04-29 10:12:50 +08:00
parent e7117d227b
commit e8523c1e3e
2 changed files with 23 additions and 3 deletions

View File

@ -47,12 +47,31 @@ func SaveMessage(msg entity.Message) {
// @return records
// @return err
func GetTextMessagesById(id string) (records []vo.TextMessageItem, err error) {
// APP消息类型
appMsgList := []string{"57", "4", "5", "6"}
// 这个查询子句抽出来写,方便后续扩展
selectStr := `CASE
WHEN tm.type = 49 THEN
CASE
WHEN EXTRACTVALUE ( tm.content, "/msg/appmsg/type" ) = '57' THEN
EXTRACTVALUE ( tm.content, "/msg/appmsg/title" )
WHEN EXTRACTVALUE ( tm.content, "/msg/appmsg/type" ) = '5' THEN
CONCAT("网页分享消息,标题: ", EXTRACTVALUE (tm.content, "/msg/appmsg/title"), ",描述:", EXTRACTVALUE (tm.content, "/msg/appmsg/des"))
WHEN EXTRACTVALUE ( tm.content, "/msg/appmsg/type" ) = '4' THEN
CONCAT("网页分享消息,标题: ", EXTRACTVALUE (tm.content, "/msg/appmsg/title"), ",描述:", EXTRACTVALUE (tm.content, "/msg/appmsg/des"))
WHEN EXTRACTVALUE ( tm.content, "/msg/appmsg/type" ) = '6' THEN
CONCAT("文件消息,文件名: ", EXTRACTVALUE (tm.content, "/msg/appmsg/title"))
ELSE EXTRACTVALUE ( tm.content, "/msg/appmsg/des" )
END ELSE tm.content
END`
tx := client.MySQL.
Table("`t_message` AS tm").
Joins("LEFT JOIN t_group_user AS tgu ON tm.group_user = tgu.wxid AND tgu.group_id = tm.from_user").
Select("tgu.nickname", "IF( tm.type = 49, EXTRACTVALUE ( tm.content, \"/msg/appmsg/title\" ), tm.content ) AS message").
Select("tgu.nickname", selectStr+" AS message").
Where("tm.`from_user` = ?", id).
Where(`(tm.type = 1 OR ( tm.type = 49 AND EXTRACTVALUE ( tm.content, "/msg/appmsg/type" ) = '57' ))`).
Where(`(tm.type = 1 OR ( tm.type = 49 AND EXTRACTVALUE ( tm.content, "/msg/appmsg/type" ) IN (?) ))`, appMsgList).
Where("DATE ( tm.create_at ) = DATE ( CURDATE() - INTERVAL 1 DAY )").
Order("tm.create_at ASC")

View File

@ -42,7 +42,7 @@ func AiSummary() {
注意他们可能是多个话题请仔细甄别
每一行代表一个人的发言每一行的的格式为 {"{nickname}": "{content}"}--end--
聊天记录如下:
聊天记录如下:
%s
`
@ -81,6 +81,7 @@ func AiSummary() {
continue
}
replyMsg := fmt.Sprintf("#昨日消息总结\n又是一天过去了让我们一起来看看昨儿群友们都聊了什么有趣的话题吧~\n\n%s", resp.Choices[0].Message.Content)
//log.Printf("群[%s]对话记录总结成功,总结内容: %s", group.Wxid, replyMsg)
utils.SendMessage(group.Wxid, "", replyMsg, 0)
}
}