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
+127
View File
@@ -0,0 +1,127 @@
package loginlgmod
import (
"fmt"
"math"
"time"
"91porn-server/common/db"
"91porn-server/common/log"
"91porn-server/models"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
var mdb *db.MongoDB
const table = models.LoginLog
func coll(t *db.MongoTool) *db.MongoTool {
if t == nil {
return mdb.Coll(table)
}
return t.Coll(table)
}
// initIndex 设置index
func initIndex() {
many := []mongo.IndexModel{ //batch set indexes //value is the type 1 or -1
{
Keys: bson.D{{Key: "uid", Value: 1}},
},
{
Keys: bson.D{{Key: "devID", Value: 1}},
},
{
Keys: bson.D{{Key: "loginTime", Value: 1}},
},
}
if _, err := coll(nil).CreateIndex(many); err != nil {
panic(fmt.Sprintf("%s model set index err ==>[%+v]", table, err))
}
}
func InsertLoginLog(l *LoginLog) error {
if _, err := coll(nil).InsertOne(l); err != nil {
log.Error("loginlog insert err", log.E(err))
return err
}
return nil
}
func WebGetDayActivity(uids []uint64, start time.Time, end time.Time) (data []LoginLog, err error) {
if err = coll(nil).Find(
&data,
bson.M{
"loginTime": bson.M{
"$and": []bson.M{
bson.M{"$gte": start},
bson.M{"$lte": end},
},
},
"uid": bson.M{
"$in": uids,
},
},
); err != nil {
log.ZapLog.Error(fmt.Sprintf("model record login WebGetDayActivity fail error:%+v:", err))
return
}
return
}
// GetTotalCnt 获取查询总数总数
func getLoginLogTotalCnt(cond bson.M) (int64, error) {
total, err := coll(nil).Count(cond)
if err != nil {
e := fmt.Sprintf("get total Cnt error: %+v\n", err)
log.ZapLog.Error(e)
return 0, err
}
return total, nil
}
// GetSkipSize 计算跳转
func getLoginLogSkipSize(page int, size int, cond bson.M) (int, int, int64, error) {
total, err := getLoginLogTotalCnt(cond)
if err != nil {
return 0, 0, 0, err
}
totalpages := int(math.Ceil(float64(total) / float64(size)))
if page > totalpages {
page = totalpages
}
if page < 1 {
page = 1
}
return (page - 1) * size, totalpages, total, nil
}
// FindLoginLog 查找登陆日志
func FindLoginLogList(page int, size int, cond bson.M, sort bson.D) ([]*LoginLog, int, int64, error) {
skip, totalPages, total, err := getLoginLogSkipSize(page, size, cond)
if err != nil {
return nil, 0, 0, err
}
var back []*LoginLog
if err = coll(nil).Aggregate(
&back,
[]bson.M{
bson.M{"$match": cond},
bson.M{"$sort": sort},
bson.M{"$skip": skip},
bson.M{"$limit": size},
},
); err != nil {
e := fmt.Sprintf("get login logs error: %+v\n", err)
log.ZapLog.Error(e)
return nil, totalPages, total, err
}
return back, totalPages, total, nil
}
func DeleteBeforeLoginTime(t *db.MongoTool, tm time.Time) error {
_, err := coll(t).DeleteMany(bson.M{"loginTime": bson.M{"$lt": tm}})
return err
}