74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package common
|
|
|
|
import (
|
|
"91porn-server/common/timeutil"
|
|
"91porn-server/models/commod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
// StandQuery 客户端传过来的时间条件信息
|
|
type StandQuery struct {
|
|
StartTime *string `form:"startTime" json:"startTime,omitempty" ` // 开始时间
|
|
EndTime *string `form:"endTime" json:"endTime,omitempty"` // 结束时间
|
|
TimeString *string `form:"timeString" json:"timeString,omitempty"` // 时间
|
|
DistrictCode *string `form:"districtCode" json:"districtCode" bson:"districtCode"` // 商区码
|
|
|
|
commod.Page
|
|
}
|
|
|
|
// StandQueryMap 通用条件查询管道pipe组装
|
|
func StandQueryMap(s StandQuery, obj interface{}) (cond bson.M, opts *options.FindOptions) {
|
|
stdq := commod.StdQuery{
|
|
Page: &commod.PageBy{Num: s.PageNumber, Size: s.PageSize},
|
|
}
|
|
opts = commod.ConvertToListQuery(stdq)
|
|
opts.SetSort(bson.D{{Key: "_id", Value: -1}})
|
|
m, _ := JSONStruct2Map(obj)
|
|
date := make(map[string]interface{})
|
|
if s.EndTime != nil {
|
|
date["$lte"] = timeutil.StrTimeToTime(*s.EndTime)
|
|
}
|
|
if s.StartTime != nil {
|
|
date["$gte"] = timeutil.StrTimeToTime(*s.StartTime)
|
|
}
|
|
if len(date) > 0 {
|
|
if s.TimeString != nil {
|
|
m[*s.TimeString] = date
|
|
} else {
|
|
m["createdAt"] = date
|
|
}
|
|
}
|
|
if v, ok := m["_id"]; ok {
|
|
str, ok := v.(string)
|
|
if !ok {
|
|
return
|
|
}
|
|
m["_id"], _ = primitive.ObjectIDFromHex(str)
|
|
}
|
|
if s.DistrictCode != nil {
|
|
m["districtCode"] = s.DistrictCode
|
|
}
|
|
cond = m
|
|
return
|
|
|
|
}
|
|
|
|
// Deduplication 切片去重
|
|
func Deduplication(src []primitive.ObjectID) []primitive.ObjectID {
|
|
if len(src) == 0 {
|
|
return src
|
|
}
|
|
dst := []primitive.ObjectID{}
|
|
m := make(map[primitive.ObjectID]int)
|
|
for _, s := range src {
|
|
m[s] = 1
|
|
}
|
|
for k := range m {
|
|
dst = append(dst, k)
|
|
}
|
|
return dst
|
|
}
|