update
This commit is contained in:
@@ -4,6 +4,8 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"management/internal/erpserver/model/system"
|
||||
@@ -114,6 +116,46 @@ func (s *store) List(ctx context.Context, filter dto.SearchDto) ([]*system.Login
|
||||
return toPointer(logs), nil
|
||||
}
|
||||
|
||||
func (s *store) HistoricalLogin(ctx context.Context, email string, createdAt time.Time) ([]*system.LoginLog, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
SELECT
|
||||
id, created_at, email, is_success, message, referer_url, url, os, ip, browser
|
||||
FROM
|
||||
sys_user_login_log`
|
||||
|
||||
data := map[string]any{
|
||||
"rows_per_page": 20,
|
||||
}
|
||||
|
||||
buf := bytes.NewBufferString(q)
|
||||
|
||||
var wc []string
|
||||
|
||||
data["start_at"] = createdAt.Format(time.DateTime)
|
||||
wc = append(wc, "created_at > :start_at")
|
||||
|
||||
if email != "" {
|
||||
data["email"] = email
|
||||
wc = append(wc, "email = :email")
|
||||
}
|
||||
|
||||
if len(wc) > 0 {
|
||||
buf.WriteString(" WHERE ")
|
||||
buf.WriteString(strings.Join(wc, " AND "))
|
||||
}
|
||||
|
||||
buf.WriteString(" ORDER BY created_at DESC ")
|
||||
buf.WriteString(" LIMIT :rows_per_page")
|
||||
|
||||
var logs []system.LoginLog
|
||||
err := sqldb.NamedQuerySlice(ctx, s.log, s.db.DB(ctx), buf.String(), data, &logs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return toPointer(logs), nil
|
||||
}
|
||||
|
||||
func toPointer(data []system.LoginLog) []*system.LoginLog {
|
||||
var res []*system.LoginLog
|
||||
for _, v := range data {
|
||||
|
||||
Reference in New Issue
Block a user