Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+85
View File
@@ -0,0 +1,85 @@
package userser
import (
"time"
"91porn-server/common/pageopt"
"91porn-server/models/l/visitlogmod"
"91porn-server/models/v/usermod"
"go.mongodb.org/mongo-driver/bson"
)
type UserInfo struct {
ID *ObjectID `json:"id,omitempty"`
UID *uint64 `json:"uid,omitempty"` //uid
CreatedAt *time.Time `json:"createdAt,omitempty"` //用户创建时间
HasLocked *bool `json:"hasLocked,omitempty"` //已禁止登陆
HasBanned *bool `json:"hasBanned,omitempty"` //已禁言
}
type LoginInfoRecord struct {
User UserInfo `json:"user,omitempty"`
DevID *string `json:"devID,omitempty"` //设备id
DevType *string `json:"devType,omitempty"` //设备类型
SysType *string `json:"sysType,omitempty"` //操作系统类型 安卓 IOS
BuildID *string `json:"buildID,omitempty"` //包ID
Ver *string `json:"ver,omitempty"` //APP版本号
IP *string `json:"ip,omitempty"` //最后登陆IP
LoginTime *time.Time `json:"loginTime,omitempty"` //用户登陆时间
}
type LoginInfoPage struct {
Total int64 `json:"total" bson:"total"`
List []LoginInfoRecord `json:"list" bson:"list"`
}
func LoginInfoPages(skip int64, limit int64, createdAtGTEAndLTMatch pageopt.CreatedAtGTEAndLTMatch, uidMatch pageopt.UIDMatch) (page LoginInfoPage, err error) {
//默认排序条件
sort := bson.D{{Key: "createdAt", Value: -1}}
//整理匹配条件
matList := []Matcher{createdAtGTEAndLTMatch.New(), uidMatch.New()}
//分页数据
logs, err := visitlogmod.List(sort, &skip, &limit, matList...)
if err != nil {
return LoginInfoPage{}, err
}
logsLen := len(logs)
uidList := make([]uint64, logsLen)
for i, v := range logs {
uidList[i] = v.UID
}
uInfoMap, err := usermod.UserMap(uidList)
if err != nil {
return LoginInfoPage{}, err
}
recordList := make([]LoginInfoRecord, logsLen)
for i, log := range logs {
_log := log
record := LoginInfoRecord{}
record.BuildID = &_log.BuildID
record.DevID = &_log.DevID
record.DevType = &_log.DevType
record.SysType = &_log.SysType
record.BuildID = &_log.BuildID
record.Ver = &_log.Ver
record.IP = &_log.IP
record.LoginTime = &_log.CreatedAt
if user, ok := uInfoMap[_log.UID]; ok {
record.User.ID = &user.ID
record.User.UID = &user.UID
record.User.CreatedAt = &user.CreatedAt
record.User.HasLocked = &user.HasLocked
record.User.HasBanned = &user.HasBanned
}
recordList[i] = record
}
count, err := visitlogmod.Count(matList...)
if err != nil {
return LoginInfoPage{}, err
}
return LoginInfoPage{
List: recordList,
Total: count,
}, nil
}