58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package controller
|
|
|
|
import (
|
|
"SciencesServer/app/api/manage/model"
|
|
model2 "SciencesServer/app/common/model"
|
|
"SciencesServer/app/service"
|
|
"SciencesServer/tools/ip"
|
|
)
|
|
|
|
type Log struct{ *Platform }
|
|
|
|
type LogHandle func(session *service.Session) *Log
|
|
|
|
type (
|
|
// LogForLogin 登录日志
|
|
LogForLogin struct {
|
|
*model.SysUserLoginLogInfo
|
|
IPAddress string `json:"ip_address"`
|
|
}
|
|
)
|
|
|
|
// Login 登录日志
|
|
func (c *Log) Login(name string, page, pageSize int) (*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 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 &ReturnPages{Data: list, Count: count}, nil
|
|
}
|
|
|
|
func NewLog() LogHandle {
|
|
return func(session *service.Session) *Log {
|
|
return &Log{Platform: &Platform{Session: session}}
|
|
}
|
|
}
|