68 lines
1.6 KiB
Go
Raw Normal View History

2025-04-30 15:46:14 +08:00
package server
2025-05-05 10:30:33 +08:00
import (
"admin/apps/user/model"
"admin/apps/user/service"
"admin/internal/event"
"admin/lib/xlog"
"encoding/json"
2025-05-19 17:51:09 +08:00
"strconv"
2025-05-05 10:30:33 +08:00
)
2025-04-30 15:46:14 +08:00
type Server struct {
svc *service.Service
ctl *controller
}
func New(svc *service.Service) *Server {
2025-05-07 15:03:19 +08:00
srv := &Server{
2025-04-30 15:46:14 +08:00
svc: svc,
ctl: newController(svc),
}
2025-05-07 15:03:19 +08:00
srv.jobsSubscribe()
return srv
2025-04-30 15:46:14 +08:00
}
2025-05-05 10:30:33 +08:00
func (srv *Server) jobsSubscribe() {
2025-05-19 17:51:09 +08:00
event.GetMgrInstance().Subscribe("user", event.EventTopic_UserGameExecute, srv.subscriberHandlerUserExecute)
2025-05-05 10:30:33 +08:00
}
func (srv *Server) subscriberHandlerUserExecute(msg *event.Msg) {
po := new(model.History)
2025-05-19 17:51:09 +08:00
msgHistory := &event.EventPayload_UserGameExecute{}
2025-05-05 10:30:33 +08:00
err := json.Unmarshal(msg.Payload, msgHistory)
if err != nil {
xlog.Errorf("unmarshal msg(%+v) err:%v", string(msg.Payload), err)
2025-05-07 15:03:19 +08:00
return
2025-05-05 10:30:33 +08:00
}
2025-05-19 17:51:09 +08:00
userInfo, find, err := srv.ctl.svc.GetUserById(msgHistory.UserId)
if err != nil {
xlog.Errorf("find user %+v info error:%v", msgHistory, err)
} else if !find {
xlog.Errorf("not found user info:%+v", msgHistory)
}
2025-05-05 10:30:33 +08:00
po.UserId = msgHistory.UserId
2025-05-19 17:51:09 +08:00
po.UserName = strconv.Itoa(msgHistory.UserId)
if find {
po.UserName = userInfo.Po.UserName
}
po.OpResourceType = msgHistory.OpResourceType
po.OpResourceGroup = msgHistory.OpResourceGroup
po.OpResourceKey = msgHistory.OpResourceKey
2025-05-05 10:30:33 +08:00
po.Method = msgHistory.Method
2025-05-19 17:51:09 +08:00
b, _ := json.Marshal(&map[string]any{
"project_id": msgHistory.ProjectId,
"project_name": msgHistory.ProjectName,
"src": msgHistory.SrcDataList,
"dst": msgHistory.DstDataList,
})
po.DetailInfo = string(b)
2025-05-05 10:30:33 +08:00
err = po.Create()
if err != nil {
xlog.Errorf("create user execute(%+v) err:%v", string(msg.Payload), err)
}
}