refactor: upgrade to Go 1.26 and modernize code idioms
- Replace `interface{}` with `any` type alias across all packages
- Use built-in `min()`/`max()` for parameter clamping
- Use `slices.SortFunc`, `slices.Min`, `slices.Max` for cleaner code
- Use `strings.Cut()` for simpler string parsing in auth middleware
- Use `errors.Is()` for proper error comparison in handlers
- Update dependencies: golang.org/x/image 0.37.0 -> 0.38.0
- Add Wire code generation guidelines to ARCHITECTURE.md
- Disable Go cache in CI build workflow
This commit is contained in:
@@ -41,7 +41,7 @@ type PushService interface {
|
||||
PushToUser(ctx context.Context, userID string, message *model.Message, priority int) error
|
||||
|
||||
// 系统消息推送
|
||||
PushSystemMessage(ctx context.Context, userID string, msgType, title, content string, data map[string]interface{}) error
|
||||
PushSystemMessage(ctx context.Context, userID string, msgType, title, content string, data map[string]any) error
|
||||
|
||||
// 系统通知推送(新接口,使用独立的 SystemNotification 模型)
|
||||
PushSystemNotification(ctx context.Context, userID string, notification *model.SystemNotification) error
|
||||
@@ -148,17 +148,17 @@ func (s *pushServiceImpl) pushViaWebSocket(ctx context.Context, userID string, m
|
||||
// 从 segments 中提取文本内容
|
||||
content := dto.ExtractTextContentFromModel(message.Segments)
|
||||
|
||||
notification := map[string]interface{}{
|
||||
notification := map[string]any{
|
||||
"id": fmt.Sprintf("%s", message.ID),
|
||||
"type": string(message.SystemType),
|
||||
"content": content,
|
||||
"extra": map[string]interface{}{},
|
||||
"extra": map[string]any{},
|
||||
"created_at": message.CreatedAt.UnixMilli(),
|
||||
}
|
||||
|
||||
// 填充额外数据
|
||||
if message.ExtraData != nil {
|
||||
extra := notification["extra"].(map[string]interface{})
|
||||
extra := notification["extra"].(map[string]any)
|
||||
extra["actor_id"] = message.ExtraData.ActorID
|
||||
extra["actor_name"] = message.ExtraData.ActorName
|
||||
extra["avatar_url"] = message.ExtraData.AvatarURL
|
||||
@@ -167,7 +167,7 @@ func (s *pushServiceImpl) pushViaWebSocket(ctx context.Context, userID string, m
|
||||
extra["action_url"] = message.ExtraData.ActionURL
|
||||
extra["action_time"] = message.ExtraData.ActionTime
|
||||
if message.ExtraData.ActorID > 0 {
|
||||
notification["trigger_user"] = map[string]interface{}{
|
||||
notification["trigger_user"] = map[string]any{
|
||||
"id": fmt.Sprintf("%d", message.ExtraData.ActorID),
|
||||
"username": message.ExtraData.ActorName,
|
||||
"avatar": message.ExtraData.AvatarURL,
|
||||
@@ -200,7 +200,7 @@ func (s *pushServiceImpl) pushViaWebSocket(ctx context.Context, userID string, m
|
||||
SenderID: message.SenderID,
|
||||
}
|
||||
|
||||
s.wsHub.PublishToUser(userID, "chat_message", map[string]interface{}{
|
||||
s.wsHub.PublishToUser(userID, "chat_message", map[string]any{
|
||||
"detail_type": detailType,
|
||||
"message": event,
|
||||
})
|
||||
@@ -432,7 +432,7 @@ func (s *pushServiceImpl) doRetry() {
|
||||
}
|
||||
|
||||
// PushSystemMessage 推送系统消息
|
||||
func (s *pushServiceImpl) PushSystemMessage(ctx context.Context, userID string, msgType, title, content string, data map[string]interface{}) error {
|
||||
func (s *pushServiceImpl) PushSystemMessage(ctx context.Context, userID string, msgType, title, content string, data map[string]any) error {
|
||||
// 首先尝试WebSocket推送
|
||||
if s.pushSystemViaWebSocket(ctx, userID, msgType, title, content, data) {
|
||||
return nil
|
||||
@@ -444,12 +444,12 @@ func (s *pushServiceImpl) PushSystemMessage(ctx context.Context, userID string,
|
||||
}
|
||||
|
||||
// pushSystemViaWebSocket 通过WebSocket推送系统消息
|
||||
func (s *pushServiceImpl) pushSystemViaWebSocket(ctx context.Context, userID string, msgType, title, content string, data map[string]interface{}) bool {
|
||||
func (s *pushServiceImpl) pushSystemViaWebSocket(ctx context.Context, userID string, msgType, title, content string, data map[string]any) bool {
|
||||
if s.wsHub == nil || !s.wsHub.HasClients(userID) {
|
||||
return false
|
||||
}
|
||||
|
||||
sysMsg := map[string]interface{}{
|
||||
sysMsg := map[string]any{
|
||||
"type": msgType,
|
||||
"title": title,
|
||||
"content": content,
|
||||
@@ -477,18 +477,18 @@ func (s *pushServiceImpl) pushSystemNotificationViaWebSocket(ctx context.Context
|
||||
return false
|
||||
}
|
||||
|
||||
wsNotification := map[string]interface{}{
|
||||
wsNotification := map[string]any{
|
||||
"id": fmt.Sprintf("%d", notification.ID),
|
||||
"type": string(notification.Type),
|
||||
"title": notification.Title,
|
||||
"content": notification.Content,
|
||||
"extra": map[string]interface{}{},
|
||||
"extra": map[string]any{},
|
||||
"created_at": notification.CreatedAt.UnixMilli(),
|
||||
}
|
||||
|
||||
// 填充额外数据
|
||||
if notification.ExtraData != nil {
|
||||
extra := wsNotification["extra"].(map[string]interface{})
|
||||
extra := wsNotification["extra"].(map[string]any)
|
||||
extra["actor_id_str"] = notification.ExtraData.ActorIDStr
|
||||
extra["actor_name"] = notification.ExtraData.ActorName
|
||||
extra["avatar_url"] = notification.ExtraData.AvatarURL
|
||||
@@ -499,7 +499,7 @@ func (s *pushServiceImpl) pushSystemNotificationViaWebSocket(ctx context.Context
|
||||
|
||||
// 设置触发用户信息
|
||||
if notification.ExtraData.ActorIDStr != "" {
|
||||
wsNotification["trigger_user"] = map[string]interface{}{
|
||||
wsNotification["trigger_user"] = map[string]any{
|
||||
"id": notification.ExtraData.ActorIDStr,
|
||||
"username": notification.ExtraData.ActorName,
|
||||
"avatar": notification.ExtraData.AvatarURL,
|
||||
|
||||
Reference in New Issue
Block a user