Files
cid/dao/cid_request_dao.go
2025-12-19 09:42:39 +08:00

72 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package dao
import (
"context"
"cid/model/entity"
"gitee.com/red-future---jilin-g/common/mongo"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
var CIDRequest = &cidRequestDao{}
type cidRequestDao struct{}
// Create 创建CID请求记录
func (d *cidRequestDao) Create(ctx context.Context, request *entity.CidRequest) (id string, err error) {
ids, err := mongo.Insert(ctx, []interface{}{request}, entity.CidRequestCollection)
if err != nil {
return "", err
}
if len(ids) > 0 {
id = ids[0].(string)
}
return
}
// GetHistory 获取CID请求历史
func (d *cidRequestDao) GetHistory(ctx context.Context, userId string, page, size int) (list []*entity.CidRequest, total int64, err error) {
filter := bson.M{"userId": userId}
// 获取总数
total, err = mongo.Count(ctx, filter, entity.CidRequestCollection)
if err != nil {
return
}
// 分页查询
offset := (page - 1) * size
err = mongo.Find(ctx, filter, &list, entity.CidRequestCollection,
options.Find().SetSort(bson.M{"createdAt": -1}).
SetSkip(int64(offset)).
SetLimit(int64(size)))
return
}
// GetStatistics 获取统计信息
func (d *cidRequestDao) GetStatistics(ctx context.Context, userId string) (stats map[string]interface{}, err error) {
stats = make(map[string]interface{})
// 总请求数
totalRequests, err := mongo.Count(ctx, bson.M{"userId": userId}, entity.CidRequestCollection)
if err != nil {
return nil, err
}
stats["total_requests"] = totalRequests
// 成功请求数
successfulRequests, err := mongo.Count(ctx, bson.M{"userId": userId, "status": "completed"}, entity.CidRequestCollection)
if err != nil {
return nil, err
}
stats["successful_requests"] = successfulRequests
// 平均处理时间需要单独计算MongoDB聚合查询
// 这里简化处理返回0
stats["average_process_time"] = 0
return
}