68 lines
1.6 KiB
Go

package server
import (
"admin/apps/user/model"
"admin/apps/user/service"
"admin/internal/event"
"admin/lib/xlog"
"encoding/json"
"strconv"
)
type Server struct {
svc *service.Service
ctl *controller
}
func New(svc *service.Service) *Server {
srv := &Server{
svc: svc,
ctl: newController(svc),
}
srv.jobsSubscribe()
return srv
}
func (srv *Server) jobsSubscribe() {
event.GetMgrInstance().Subscribe("user", event.EventTopic_UserGameExecute, srv.subscriberHandlerUserExecute)
}
func (srv *Server) subscriberHandlerUserExecute(msg *event.Msg) {
po := new(model.History)
msgHistory := &event.EventPayload_UserGameExecute{}
err := json.Unmarshal(msg.Payload, msgHistory)
if err != nil {
xlog.Errorf("unmarshal msg(%+v) err:%v", string(msg.Payload), err)
return
}
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)
}
po.UserId = msgHistory.UserId
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
po.Method = msgHistory.Method
b, _ := json.Marshal(&map[string]any{
"project_id": msgHistory.ProjectId,
"project_name": msgHistory.ProjectName,
"src": msgHistory.SrcDataList,
"dst": msgHistory.DstDataList,
})
po.DetailInfo = string(b)
err = po.Create()
if err != nil {
xlog.Errorf("create user execute(%+v) err:%v", string(msg.Payload), err)
}
}