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) } }