Implement greet inbox and outbox
- Add user_greet model and startup table sync - Implement /greet/user and /greet/delete handlers - Implement noticeFriendGreeting inbox and noticeUserGreetingHistory outbox - Return peer profile and center unit info for greeting notices - Update login topInfo friend greet counters from unread inbox messages Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
@@ -2,9 +2,11 @@ package notice
|
||||
|
||||
import (
|
||||
"honoka-chan/internal/middleware"
|
||||
usermodel "honoka-chan/internal/model/user"
|
||||
"honoka-chan/internal/router"
|
||||
noticeschema "honoka-chan/internal/schema/notice"
|
||||
"honoka-chan/internal/session"
|
||||
honokautils "honoka-chan/internal/utils"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -14,11 +16,55 @@ func userGreetingHistory(ctx *gin.Context) {
|
||||
ss := session.Get(ctx)
|
||||
defer ss.Finalize()
|
||||
|
||||
req := noticeschema.GreetingNoticeReq{}
|
||||
err := honokautils.ParseRequestData(ctx, &req)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
totalCount, err := ss.UserEng.Table(new(usermodel.UserGreet)).
|
||||
Where("affector_id = ?", ss.UserID).
|
||||
Where("deleted_from_affector = ?", false).
|
||||
Count()
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
rows := []usermodel.UserGreet{}
|
||||
err = ss.UserEng.Table(new(usermodel.UserGreet)).
|
||||
Where("affector_id = ?", ss.UserID).
|
||||
Where("deleted_from_affector = ?", false).
|
||||
OrderBy("notice_id DESC").
|
||||
Limit(usermodel.GreetingPageSize).
|
||||
Find(&rows)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
noticeList := make([]noticeschema.UserGreetingNotice, 0, len(rows))
|
||||
for _, row := range rows {
|
||||
receiver, err := getGreetingPeer(ss, row.ReceiverID)
|
||||
if ss.CheckErr(err) {
|
||||
return
|
||||
}
|
||||
|
||||
noticeList = append(noticeList, noticeschema.UserGreetingNotice{
|
||||
NoticeID: row.NoticeID,
|
||||
ReferenceTable: 6,
|
||||
Message: row.Message,
|
||||
ListMessage: row.Message,
|
||||
InsertDate: formatGreetingElapsedTime(row.InsertDate),
|
||||
Receiver: receiver,
|
||||
ReplyFlag: row.Reply,
|
||||
Readed: row.Readed,
|
||||
})
|
||||
}
|
||||
|
||||
ss.Respond(noticeschema.UserGreetingResp{
|
||||
ResponseData: noticeschema.UserGreetingData{
|
||||
ItemCount: 0,
|
||||
HasNext: false,
|
||||
NoticeList: []any{},
|
||||
ItemCount: int(totalCount),
|
||||
HasNext: totalCount > int64(len(rows)),
|
||||
NoticeList: noticeList,
|
||||
ServerTimestamp: time.Now().Unix(),
|
||||
},
|
||||
ReleaseInfo: []any{},
|
||||
|
||||
Reference in New Issue
Block a user