package controller import ( "SciencesServer/app/api/admin/model" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "SciencesServer/tools/ip" ) type Log struct{ *session.Admin } type LogHandle func(session *session.Admin) *Log type ( // LogForLogin 登录日志 LogForLogin struct { *model.SysUserLoginLogInfo IPAddress string `json:"ip_address"` } ) // Login 登录日志 func (c *Log) Login(tenantID uint64, name string, page, pageSize int) (*controller.ReturnPages, error) { mSysUserLoginLogs := model.NewSysUserLoginLog() where := make([]*model2.ModelWhere, 0) if c.TenantID > 0 { where = append(where, model2.NewWhere("l.tenant_id", c.TenantID)) } if tenantID > 0 { where = append(where, model2.NewWhere("l.tenant_id", tenantID)) } if name != "" { where = append(where, model2.NewWhereLike("u.name", name)) } var count int64 out, err := mSysUserLoginLogs.Logs(page, pageSize, &count, where...) if err != nil { return nil, err } list := make([]*LogForLogin, 0) for _, v := range out { ipAddress, _ := ip.Find(v.IP) list = append(list, &LogForLogin{ SysUserLoginLogInfo: v, IPAddress: string(ipAddress), }) } return &controller.ReturnPages{Data: list, Count: count}, nil } func NewLog() LogHandle { return func(session *session.Admin) *Log { return &Log{Admin: session} } }