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:
2026-06-05 01:54:59 +08:00
parent d48293be44
commit 101f7e8a3f
16 changed files with 641 additions and 15 deletions
+40
View File
@@ -0,0 +1,40 @@
package greet
import (
"errors"
usermodel "honoka-chan/internal/model/user"
"honoka-chan/internal/session"
"strconv"
)
func resolveGreetingUserID(ss *session.Session, requestedUserID int) (int, error) {
if requestedUserID <= 0 {
return 0, errors.New("invalid user_id")
}
pref := usermodel.UserPref{}
has, err := ss.UserEng.Table(new(usermodel.UserPref)).
Where("invite_code = ?", strconv.Itoa(requestedUserID)).
Cols("user_id").
Get(&pref)
if err != nil {
return 0, err
}
if has && pref.UserID > 0 {
return pref.UserID, nil
}
user := usermodel.Users{}
has, err = ss.UserEng.Table(new(usermodel.Users)).
Where("user_id = ?", requestedUserID).
Cols("user_id").
Get(&user)
if err != nil {
return 0, err
}
if !has || user.UserID <= 0 {
return 0, errors.New("user not found")
}
return user.UserID, nil
}