+88
@@ -0,0 +1,88 @@
|
||||
package aiimagetovideodata
|
||||
|
||||
import (
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/aiimagetovideomod"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []aiimagetovideomod.AiImageToVideo
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]aiimagetovideomod.AiImageToVideo, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.AiImageToVideo).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = aiimagetovideomod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res aiimagetovideomod.AiImageToVideo, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.AiImageToVideo, id.Hex()).ResBind(&res).Cache(aiimagetovideomod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []aiimagetovideomod.AiImageToVideo, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.AiImageToVideo+"-all").ResBind(&res).Cache(aiimagetovideomod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data aiimagetovideomod.AiImageToVideo) (primitive.ObjectID, error) {
|
||||
newID, err := aiimagetovideomod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.AiImageToVideo).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := aiimagetovideomod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.AiImageToVideo).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = aiimagetovideomod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.AiImageToVideo).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package aiimagetovideodata
|
||||
|
||||
import "91porn-server/models/v/aiimagetovideomod"
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []aiimagetovideomod.AiImageToVideo) (res []*aiimagetovideomod.AiImageToVideoInfo) {
|
||||
res = make([]*aiimagetovideomod.AiImageToVideoInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item aiimagetovideomod.AiImageToVideo) (res *aiimagetovideomod.AiImageToVideoInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &aiimagetovideomod.AiImageToVideoInfo{
|
||||
ID: item.ID,
|
||||
UID: item.UID,
|
||||
ImgUrl: item.ImgUrl,
|
||||
NewImgUrl: item.NewImgUrl,
|
||||
Status: item.Status,
|
||||
Coin: item.Coin,
|
||||
IsFreeTimes: item.IsFreeTimes,
|
||||
IsHide: item.IsHide,
|
||||
Remark: item.Remark,
|
||||
IsDelete: item.IsDelete,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package aiplazadata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/aiplazamod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []aiplazamod.AiPlaza
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]aiplazamod.AiPlaza, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.AiPlaza).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = aiplazamod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res aiplazamod.AiPlaza, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.AiPlaza, id.Hex()).ResBind(&res).Cache(aiplazamod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []aiplazamod.AiPlaza, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.AiPlaza+"-all").ResBind(&res).Cache(aiplazamod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data aiplazamod.AiPlaza) (primitive.ObjectID, error) {
|
||||
newID, err := aiplazamod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.AiPlaza).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := aiplazamod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.AiPlaza).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id ...primitive.ObjectID) (err error) {
|
||||
err = aiplazamod.DeleteByID(t, id...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.AiPlaza).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+153
@@ -0,0 +1,153 @@
|
||||
package aiplazadata
|
||||
|
||||
import (
|
||||
"91porn-server/app/service/vidhelpser"
|
||||
"91porn-server/common"
|
||||
"91porn-server/models/v/aiplazamod"
|
||||
"91porn-server/models/v/collectmod"
|
||||
"91porn-server/models/v/likemod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []aiplazamod.AiPlaza) (res []*aiplazamod.AiPlazaInfo) {
|
||||
res = make([]*aiplazamod.AiPlazaInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
// 获取用户数据
|
||||
uids := []uint64{}
|
||||
for _, item := range origin {
|
||||
uids = append(uids, item.Uid)
|
||||
}
|
||||
userMap := vidhelpser.GetSimpleUserMapNoUID(uids)
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppSimpleData(item, userMap)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppSimpleData 格式化app数据
|
||||
func FormatAppSimpleData(item aiplazamod.AiPlaza, userMap map[uint64]*vidmod.Publisher) (res *aiplazamod.AiPlazaInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &aiplazamod.AiPlazaInfo{
|
||||
ID: item.ID,
|
||||
Type: item.Type,
|
||||
Template: item.Template,
|
||||
Uid: item.Uid,
|
||||
Title: item.Title,
|
||||
OriginalImage: item.OriginalImage,
|
||||
OriginalVideo: item.OriginalVideo,
|
||||
OriginalVideoCover: item.OriginalVideoCover,
|
||||
OriginContent: item.OriginContent,
|
||||
GenerateImage: item.GenerateImage,
|
||||
GenerateVideo: item.GenerateVideo,
|
||||
GenerateVideoCover: item.GenerateVideoCover,
|
||||
Status: item.Status,
|
||||
Reason: item.Reason,
|
||||
SortCode: item.SortCode,
|
||||
LikeCount: item.LikeCount,
|
||||
CollectCount: item.CollectCount,
|
||||
CommentCount: item.CommentCount,
|
||||
ViewCount: item.ViewCount,
|
||||
ReviewAt: item.ReviewAt,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
if userMap != nil {
|
||||
user, ok := userMap[item.Uid]
|
||||
if ok && user != nil {
|
||||
res.Name = user.Name
|
||||
res.Gender = user.Gender
|
||||
res.Portrait = user.Portrait
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app列表数据
|
||||
func FormatAppData(uid uint64, item aiplazamod.AiPlaza) (res *aiplazamod.AiPlazaInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
userMap := vidhelpser.GetSimpleUserMapNoUID([]uint64{item.Uid})
|
||||
// 获取是否点赞,收藏数据
|
||||
dataStatus := GetDataStatus(uid, []primitive.ObjectID{item.ID})
|
||||
// 组装返回数据
|
||||
res = &aiplazamod.AiPlazaInfo{
|
||||
ID: item.ID,
|
||||
Type: item.Type,
|
||||
Template: item.Template,
|
||||
Uid: item.Uid,
|
||||
Title: item.Title,
|
||||
OriginalImage: item.OriginalImage,
|
||||
OriginalVideo: item.OriginalVideo,
|
||||
OriginalVideoCover: item.OriginalVideoCover,
|
||||
OriginContent: item.OriginContent,
|
||||
GenerateImage: item.GenerateImage,
|
||||
GenerateVideo: item.GenerateVideo,
|
||||
GenerateVideoCover: item.GenerateVideoCover,
|
||||
Status: item.Status,
|
||||
Reason: item.Reason,
|
||||
SortCode: item.SortCode,
|
||||
ReviewAt: item.ReviewAt,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
if userMap != nil {
|
||||
user, ok := userMap[item.Uid]
|
||||
if ok && user != nil {
|
||||
res.Name = user.Name
|
||||
res.Gender = user.Gender
|
||||
res.Portrait = user.Portrait
|
||||
}
|
||||
}
|
||||
if dataStatus != nil {
|
||||
res.HasLiked = dataStatus[item.ID].HasLiked
|
||||
res.HasCollected = dataStatus[item.ID].HasCollected
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DataStatus 数据状态
|
||||
type DataStatus struct {
|
||||
//已点赞
|
||||
HasLiked bool `json:"hasLiked" bson:"hasLiked"`
|
||||
//已收藏
|
||||
HasCollected bool `json:"hasCollected" bson:"hasCollected"`
|
||||
}
|
||||
|
||||
// GetDataStatus 获取数据状态信息
|
||||
func GetDataStatus(uid uint64, objIds []primitive.ObjectID) map[primitive.ObjectID]DataStatus {
|
||||
mLike := make(map[primitive.ObjectID]bool)
|
||||
mCollect := make(map[primitive.ObjectID]bool)
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(2)
|
||||
common.Go(func() {
|
||||
defer wg.Done()
|
||||
mLike, _ = likemod.IsLikeVideos(uid, objIds)
|
||||
})
|
||||
common.Go(func() {
|
||||
defer wg.Done()
|
||||
mCollect, _ = collectmod.IsCollectVideos(uid, objIds)
|
||||
})
|
||||
wg.Wait()
|
||||
m := make(map[primitive.ObjectID]DataStatus)
|
||||
for _, v := range objIds {
|
||||
info := DataStatus{
|
||||
HasLiked: mLike[v],
|
||||
HasCollected: mCollect[v],
|
||||
}
|
||||
m[v] = info
|
||||
}
|
||||
return m
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package aitemplatemoduledata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/aitemplatemodulemod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []aitemplatemodulemod.AiTemplateModule
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]aitemplatemodulemod.AiTemplateModule, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(3*time.Minute).AutoListKey(models.AiTemplateModule).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = aitemplatemodulemod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res aitemplatemodulemod.AiTemplateModule, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(5*time.Minute).AutoInfoKey(models.AiTemplateModule, id.Hex()).ResBind(&res).Cache(aitemplatemodulemod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []aitemplatemodulemod.AiTemplateModule, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(8*time.Minute).AutoListKey(models.AiTemplateModule+"-all").ResBind(&res).Cache(aitemplatemodulemod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data aitemplatemodulemod.AiTemplateModule) (primitive.ObjectID, error) {
|
||||
newID, err := aitemplatemodulemod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.AiTemplateModule).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := aitemplatemodulemod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.AiTemplateModule).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = aitemplatemodulemod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.AiTemplateModule).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package aitemplatemoduledata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/aitemplatemodulemod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []aitemplatemodulemod.AiTemplateModule) (res []*aitemplatemodulemod.AiTemplateModuleInfo) {
|
||||
res = make([]*aitemplatemodulemod.AiTemplateModuleInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item aitemplatemodulemod.AiTemplateModule) (res *aitemplatemodulemod.AiTemplateModuleInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &aitemplatemodulemod.AiTemplateModuleInfo{
|
||||
ID: item.ID,
|
||||
Type: item.Type,
|
||||
Name: item.Name,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package aitexttoimagedata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/aitexttoimagemod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []aitexttoimagemod.AiTextToImage
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]aitexttoimagemod.AiTextToImage, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(3*time.Minute).AutoListKey(models.AiTextToImage).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = aitexttoimagemod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res aitexttoimagemod.AiTextToImage, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(5*time.Minute).AutoInfoKey(models.AiTextToImage, id.Hex()).ResBind(&res).Cache(aitexttoimagemod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []aitexttoimagemod.AiTextToImage, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(8*time.Minute).AutoListKey(models.AiTextToImage+"-all").ResBind(&res).Cache(aitexttoimagemod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data aitexttoimagemod.AiTextToImage) (primitive.ObjectID, error) {
|
||||
newID, err := aitexttoimagemod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.AiTextToImage).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := aitexttoimagemod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.AiTextToImage).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = aitexttoimagemod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.AiTextToImage).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package aitexttoimagedata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/aitexttoimagemod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []aitexttoimagemod.AiTextToImage) (res []*aitexttoimagemod.AiTextToImageInfo) {
|
||||
res = make([]*aitexttoimagemod.AiTextToImageInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item aitexttoimagemod.AiTextToImage) (res *aitexttoimagemod.AiTextToImageInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &aitexttoimagemod.AiTextToImageInfo{
|
||||
ID: item.ID,
|
||||
UID: item.UID,
|
||||
Text: item.Text,
|
||||
NewImgUrl: item.NewImgUrl,
|
||||
Status: item.Status,
|
||||
AspectRatio: item.AspectRatio,
|
||||
StyleType: item.StyleType,
|
||||
Coin: item.Coin,
|
||||
DebitAmountCoin: item.DebitAmountCoin,
|
||||
DebitIncomeCoin: item.DebitIncomeCoin,
|
||||
IsFreeTimes: item.IsFreeTimes,
|
||||
IsHide: item.IsHide,
|
||||
Remark: item.Remark,
|
||||
IsDelete: item.IsDelete,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package aitexttonoveldata
|
||||
|
||||
import (
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/aitexttonovelmod"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []aitexttonovelmod.AiTextToNovel
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]aitexttonovelmod.AiTextToNovel, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.AiTextToNovel).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = aitexttonovelmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res aitexttonovelmod.AiTextToNovel, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.AiTextToNovel, id.Hex()).ResBind(&res).Cache(aitexttonovelmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []aitexttonovelmod.AiTextToNovel, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.AiTextToNovel+"-all").ResBind(&res).Cache(aitexttonovelmod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data aitexttonovelmod.AiTextToNovel) (primitive.ObjectID, error) {
|
||||
newID, err := aitexttonovelmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.AiTextToNovel).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := aitexttonovelmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.AiTextToNovel).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = aitexttonovelmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.AiTextToNovel).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package aitexttonoveldata
|
||||
|
||||
import "91porn-server/models/v/aitexttonovelmod"
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []aitexttonovelmod.AiTextToNovel) (res []*aitexttonovelmod.AiTextToNovel) {
|
||||
res = make([]*aitexttonovelmod.AiTextToNovel, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item aitexttonovelmod.AiTextToNovel) (res *aitexttonovelmod.AiTextToNovel) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &aitexttonovelmod.AiTextToNovel{
|
||||
ID: item.ID,
|
||||
UID: item.UID,
|
||||
Description: item.Description,
|
||||
Content: item.Content,
|
||||
Status: item.Status,
|
||||
CharacterSetting: item.CharacterSetting,
|
||||
LocationScene: item.LocationScene,
|
||||
Details: item.Details,
|
||||
ModelType: item.ModelType,
|
||||
Coin: item.Coin,
|
||||
DebitAmountCoin: item.DebitAmountCoin,
|
||||
DebitIncomeCoin: item.DebitIncomeCoin,
|
||||
IsFreeTimes: item.IsFreeTimes,
|
||||
IsHide: item.IsHide,
|
||||
Remark: item.Remark,
|
||||
IsDelete: item.IsDelete,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package bannerjumpdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/bannerjumpmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []bannerjumpmod.BannerJump
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache() (res []bannerjumpmod.BannerJump, err error) {
|
||||
t := time.Now()
|
||||
cond := bson.M{"enable": true, "startAt": bson.M{"$lte": t}, "endAt": bson.M{"$gt": t}}
|
||||
sort := bson.D{{"weight", -1}, {"createdAt", -1}}
|
||||
_, err = cachev2.Classes().CacheTime(8*time.Minute).AutoListKey(models.BannerJump+"-all").ResBind(&res).Cache(bannerjumpmod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data bannerjumpmod.BannerJump) (primitive.ObjectID, error) {
|
||||
newID, err := bannerjumpmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.BannerJump).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := bannerjumpmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.BannerJump).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = bannerjumpmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.BannerJump).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package imgroupdata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/imgroupmod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []imgroupmod.ImGroup) (res []*imgroupmod.ImGroupInfo) {
|
||||
res = make([]*imgroupmod.ImGroupInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item imgroupmod.ImGroup) (res *imgroupmod.ImGroupInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &imgroupmod.ImGroupInfo{
|
||||
ID: item.ID,
|
||||
GroupId: item.GroupId,
|
||||
Name: item.Name,
|
||||
Cover: item.Cover,
|
||||
Summary: item.Summary,
|
||||
MemberNum: item.MemberNum,
|
||||
FakeMemberNum: item.FakeMemberNum,
|
||||
Price: item.Price,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package imgroupdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/imgroupmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []imgroupmod.ImGroup
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]imgroupmod.ImGroup, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.ImGroup).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = imgroupmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res imgroupmod.ImGroup, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.ImGroup, id.Hex()).ResBind(&res).Cache(imgroupmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []imgroupmod.ImGroup, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.ImGroup+"-all").ResBind(&res).Cache(imgroupmod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data imgroupmod.ImGroup) (primitive.ObjectID, error) {
|
||||
newID, err := imgroupmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.ImGroup).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := imgroupmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.ImGroup).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = imgroupmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.ImGroup).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package imgroupmemberdata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/imgroupmembermod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []imgroupmembermod.ImGroupMember) (res []*imgroupmembermod.ImGroupMemberInfo) {
|
||||
res = make([]*imgroupmembermod.ImGroupMemberInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item imgroupmembermod.ImGroupMember) (res *imgroupmembermod.ImGroupMemberInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &imgroupmembermod.ImGroupMemberInfo{
|
||||
ID: item.ID,
|
||||
Uid: item.Uid,
|
||||
Price: item.Price,
|
||||
CreatedAt: item.CreatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package imgroupmemberdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/imgroupmembermod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []imgroupmembermod.ImGroupMember
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]imgroupmembermod.ImGroupMember, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.ImGroupMember).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = imgroupmembermod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res imgroupmembermod.ImGroupMember, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.ImGroupMember, id.Hex()).ResBind(&res).Cache(imgroupmembermod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []imgroupmembermod.ImGroupMember, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.ImGroupMember+"-all").ResBind(&res).Cache(imgroupmembermod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data imgroupmembermod.ImGroupMember) (primitive.ObjectID, error) {
|
||||
newID, err := imgroupmembermod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.ImGroupMember).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := imgroupmembermod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.ImGroupMember).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = imgroupmembermod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.ImGroupMember).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package immessagedata
|
||||
|
||||
import (
|
||||
"91porn-server/app/service/vidhelpser"
|
||||
"91porn-server/models/v/immessagemod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []immessagemod.ImMessage) (res []*immessagemod.ImMessageInfo) {
|
||||
res = make([]*immessagemod.ImMessageInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
// 获取用户数据
|
||||
uids := []uint64{}
|
||||
for _, item := range origin {
|
||||
uids = append(uids, item.Uid)
|
||||
}
|
||||
userMap := vidhelpser.GetSimpleUserMapNoUID(uids)
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item, userMap)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item immessagemod.ImMessage, userMap map[uint64]*vidmod.Publisher) (res *immessagemod.ImMessageInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
// 组装返回数据
|
||||
res = &immessagemod.ImMessageInfo{
|
||||
ID: item.ID,
|
||||
GroupId: item.GroupId,
|
||||
Uid: item.Uid,
|
||||
Content: item.Content,
|
||||
Image: item.Image,
|
||||
CreatedAt: item.CreatedAt,
|
||||
}
|
||||
if userMap != nil {
|
||||
user, ok := userMap[item.Uid]
|
||||
if ok && user != nil {
|
||||
res.Name = user.Name
|
||||
res.Gender = user.Gender
|
||||
res.Portrait = user.Portrait
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package immessagedata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/immessagemod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []immessagemod.ImMessage
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]immessagemod.ImMessage, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.ImMessage).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = immessagemod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res immessagemod.ImMessage, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.ImMessage, id.Hex()).ResBind(&res).Cache(immessagemod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []immessagemod.ImMessage, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.ImMessage+"-all").ResBind(&res).Cache(immessagemod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data immessagemod.ImMessage) (primitive.ObjectID, error) {
|
||||
newID, err := immessagemod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.ImMessage).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := immessagemod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.ImMessage).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = immessagemod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.ImMessage).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
package mediabookshelfdata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/mediabookshelfmod"
|
||||
"91porn-server/models/v/mediamod"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"time"
|
||||
)
|
||||
|
||||
// AppData 需要组装返回的数据
|
||||
type AppData struct {
|
||||
BaseInfo *mediabookshelfmod.MediaBookshelfInfo `json:"baseInfo"` // 基础信息
|
||||
}
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []mediabookshelfmod.MediaBookshelf) (res []AppData) {
|
||||
res = make([]AppData, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item mediabookshelfmod.MediaBookshelf) (res AppData) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res.BaseInfo = &mediabookshelfmod.MediaBookshelfInfo{
|
||||
ID: item.ID,
|
||||
Name: item.Name,
|
||||
UID: item.UID,
|
||||
ReadAt: item.ReadAt,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdateTime: item.UpdateTime,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// AppSimpleData 仅返回基础数据
|
||||
type AppSimpleData *mediabookshelfmod.MediaBookshelfInfo
|
||||
|
||||
// FormatAppSimpleDataList 格式化app列表数据
|
||||
func FormatAppSimpleDataList(origin []mediabookshelfmod.MediaBookshelf, skip, limit int64, sort bson.D) (res []AppSimpleData) {
|
||||
res = make([]AppSimpleData, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
var mids []primitive.ObjectID
|
||||
for i := range origin {
|
||||
mids = append(mids, origin[i].MID)
|
||||
}
|
||||
|
||||
filter := bson.M{"_id": bson.M{"$in": mids}}
|
||||
opts := options.Find().SetSkip(skip).SetLimit(limit)
|
||||
if len(sort) > 0 {
|
||||
opts = opts.SetSort(sort)
|
||||
}
|
||||
media, err := mediamod.QueryMediaByCond(filter, opts)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
m := make(map[primitive.ObjectID]*mediamod.Media)
|
||||
for i := range media {
|
||||
m[media[i].ID] = media[i]
|
||||
}
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppSimpleData(item, m[item.MID])
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppSimpleData 格式化app数据
|
||||
func FormatAppSimpleData(item mediabookshelfmod.MediaBookshelf, media *mediamod.Media) (res AppSimpleData) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &mediabookshelfmod.MediaBookshelfInfo{
|
||||
ID: item.MID,
|
||||
//MID: item.MID,
|
||||
Name: media.Title,
|
||||
VerticalCover: media.VerticalCover,
|
||||
TotalEpisode: media.TotalEpisode,
|
||||
CurrentEpisode: media.CurrentEpisode,
|
||||
MediaType: media.MediaType,
|
||||
MediaSubType: int(media.MediaSubType),
|
||||
UpdateStatus: media.UpdateStatus,
|
||||
CountBrowse: media.CountBrowse,
|
||||
Permission: media.Permission,
|
||||
Price: media.Price,
|
||||
UID: item.UID,
|
||||
ReadAt: item.ReadAt,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdateTime: item.UpdateTime,
|
||||
}
|
||||
if time.Now().Add(-time.Hour*24*7).Unix() < media.ContentUpdateTime.Unix() {
|
||||
res.IsNew = true
|
||||
}
|
||||
return
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
package mediabookshelfdata
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/mediabookshelfmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
func getKey(uid uint64) string {
|
||||
return fmt.Sprintf("%s-%d", models.MediaBookshelf, uid)
|
||||
}
|
||||
|
||||
type ListRes struct {
|
||||
List []mediabookshelfmod.MediaBookshelf
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(uid uint64, cond bson.M, skip, limit int64, sort bson.D) ([]mediabookshelfmod.MediaBookshelf, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(getKey(uid)).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = mediabookshelfmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
func GetInfoByCond(cond bson.M) (mediabookshelfmod.MediaBookshelf, error) {
|
||||
return mediabookshelfmod.GetInfoByCond(cond)
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, uid uint64, data mediabookshelfmod.MediaBookshelf) (primitive.ObjectID, error) {
|
||||
newID, err := mediabookshelfmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(getKey(uid)).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := mediabookshelfmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.MediaBookshelf).AutoClear(true, nil)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteDataByCond 删除数据
|
||||
func DeleteDataByCond(t *db.MongoTool, uid uint64, cond bson.M) (err error) {
|
||||
err = mediabookshelfmod.DeleteByCond(t, cond)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(getKey(uid)).AutoClear(true, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteDataByIds 删除数据
|
||||
func DeleteDataByIds(t *db.MongoTool, uid uint64, ids []primitive.ObjectID) (err error) {
|
||||
err = mediabookshelfmod.DeleteByIDS(t, uid, ids)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(getKey(uid)).AutoClear(true, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = mediabookshelfmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.MediaBookshelf).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package mediacontentdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/mediacontentmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []mediacontentmod.MediaContent
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]mediacontentmod.MediaContent, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.MediaContent).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = mediacontentmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res mediacontentmod.MediaContent, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(10*time.Minute).AutoInfoKey(models.MediaContent, id.Hex()).ResBind(&res).Cache(mediacontentmod.GetInfo, id, true)
|
||||
return
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package mediadata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/mediamod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []*mediamod.Media
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]*mediamod.Media, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.Media).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.HasNext, err = mediamod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res mediamod.Media, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(5*time.Minute).AutoInfoKey(models.Media, id.Hex()).ResBind(&res).Cache(mediamod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package mediatagdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/mediatagmod"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []mediatagmod.MediaTag
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetTagIdsByNameFromCache 通过名字获取标签id
|
||||
func GetTagIdsByNameFromCache(name string) (ids []primitive.ObjectID, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(300*time.Second).AutoListKey(models.MediaTag).ResBind(&ids).Cache(mediatagmod.FindTagIdsByName, name)
|
||||
return
|
||||
}
|
||||
|
||||
// GetTagByNameFromCache 通过名字获取标签id
|
||||
func GetTagByNameFromCache(name string) (tag mediatagmod.MediaTag, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(300*time.Second).AutoListKey(models.MediaTag).ResBind(&tag).Cache(mediatagmod.FindOneTagByName, name)
|
||||
return tag, err
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]mediatagmod.MediaTag, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(3600*time.Second).AutoListKey(models.MediaTag).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = mediatagmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res mediatagmod.MediaTag, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(7200*time.Second).AutoInfoKey(models.MediaTag, id.Hex()).ResBind(&res).Cache(mediatagmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data mediatagmod.MediaTag) (primitive.ObjectID, error) {
|
||||
newID, err := mediatagmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.MediaTag).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := mediatagmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.MediaTag).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = mediatagmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.MediaTag).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package mediatagdimensiondata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/mediatagdimensionmod"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []mediatagdimensionmod.MediaTagDimension
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]mediatagdimensionmod.MediaTagDimension, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(3600*time.Second).AutoListKey(models.MediaTagDimension).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = mediatagdimensionmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res mediatagdimensionmod.MediaTagDimension, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(7200*time.Second).AutoInfoKey(models.MediaTagDimension, id.Hex()).ResBind(&res).Cache(mediatagdimensionmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data mediatagdimensionmod.MediaTagDimension) (primitive.ObjectID, error) {
|
||||
newID, err := mediatagdimensionmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.MediaTagDimension).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := mediatagdimensionmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.MediaTagDimension).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = mediatagdimensionmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.MediaTagDimension).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package nakedchatdata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/nakedchatmod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []nakedchatmod.NakedChat) (res []*nakedchatmod.NakedChatSimple) {
|
||||
res = make([]*nakedchatmod.NakedChatSimple, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppSimpleData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppSimpleData 格式化app数据
|
||||
func FormatAppSimpleData(item nakedchatmod.NakedChat) (res *nakedchatmod.NakedChatSimple) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &nakedchatmod.NakedChatSimple{
|
||||
ID: item.ID,
|
||||
Title: item.Title,
|
||||
Cover: item.Cover,
|
||||
Price: item.Price,
|
||||
Age: item.Age,
|
||||
Weight: item.Weight,
|
||||
Height: item.Height,
|
||||
Cup: item.Cup,
|
||||
SaleNum: item.SaleNum + item.FakeSaleNum,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item nakedchatmod.NakedChat) (res *nakedchatmod.NakedChatInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &nakedchatmod.NakedChatInfo{
|
||||
ID: item.ID,
|
||||
Title: item.Title,
|
||||
Cover: item.Cover,
|
||||
Price: item.Price,
|
||||
Options: item.Options,
|
||||
Images: item.Images,
|
||||
Video: item.Video,
|
||||
Contact: item.Contact,
|
||||
Age: item.Age,
|
||||
Weight: item.Weight,
|
||||
Height: item.Height,
|
||||
Cup: item.Cup,
|
||||
SaleNum: item.SaleNum + item.FakeSaleNum,
|
||||
BusinessHours: item.BusinessHours,
|
||||
Summary: item.Summary,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package nakedchatdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/nakedchatmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []nakedchatmod.NakedChat
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]nakedchatmod.NakedChat, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.NakedChat).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = nakedchatmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res nakedchatmod.NakedChat, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.NakedChat, id.Hex()).ResBind(&res).Cache(nakedchatmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []nakedchatmod.NakedChat, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.NakedChat+"-all").ResBind(&res).Cache(nakedchatmod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data nakedchatmod.NakedChat) (primitive.ObjectID, error) {
|
||||
newID, err := nakedchatmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.NakedChat).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := nakedchatmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.NakedChat).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = nakedchatmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.NakedChat).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package nakedchatorderdata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/nakedchatordermod"
|
||||
)
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []nakedchatordermod.NakedChatOrder) (res []*nakedchatordermod.NakedChatOrderInfo) {
|
||||
res = make([]*nakedchatordermod.NakedChatOrderInfo, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item nakedchatordermod.NakedChatOrder) (res *nakedchatordermod.NakedChatOrderInfo) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &nakedchatordermod.NakedChatOrderInfo{
|
||||
ID: item.ID,
|
||||
Nid: item.Nid,
|
||||
Uid: item.Uid,
|
||||
UserContact: item.UserContact,
|
||||
Num: item.Num,
|
||||
Price: item.Price,
|
||||
Amount: item.Amount,
|
||||
Remark: item.Remark,
|
||||
Status: item.Status,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package nakedchatorderdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/nakedchatordermod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []nakedchatordermod.NakedChatOrder
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]nakedchatordermod.NakedChatOrder, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.NakedChatOrder).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = nakedchatordermod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res nakedchatordermod.NakedChatOrder, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.NakedChatOrder, id.Hex()).ResBind(&res).Cache(nakedchatordermod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []nakedchatordermod.NakedChatOrder, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.NakedChatOrder+"-all").ResBind(&res).Cache(nakedchatordermod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data nakedchatordermod.NakedChatOrder) (primitive.ObjectID, error) {
|
||||
newID, err := nakedchatordermod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.NakedChatOrder).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := nakedchatordermod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.NakedChatOrder).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = nakedchatordermod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.NakedChatOrder).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package quicksearchdata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/quicksearchmod"
|
||||
)
|
||||
|
||||
// AppData 需要组装返回的数据
|
||||
type AppData struct {
|
||||
BaseInfo *quicksearchmod.QuickSearchInfo `json:"baseInfo"` // 基础信息
|
||||
}
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []quicksearchmod.QuickSearch) (res []AppData) {
|
||||
res = make([]AppData, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item quicksearchmod.QuickSearch) (res AppData) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res.BaseInfo = &quicksearchmod.QuickSearchInfo{
|
||||
ID: item.ID,
|
||||
Enabled: item.Enabled,
|
||||
Title: item.Title,
|
||||
SearchKeyword: item.SearchKeyword,
|
||||
Link: item.Link,
|
||||
Type: item.Type,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// AppSimpleData 仅返回基础数据
|
||||
type AppSimpleData *quicksearchmod.QuickSearchInfo
|
||||
|
||||
// FormatAppSimpleDataList 格式化app列表数据
|
||||
func FormatAppSimpleDataList(origin []quicksearchmod.QuickSearch) (res []AppSimpleData) {
|
||||
res = make([]AppSimpleData, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppSimpleData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppSimpleData 格式化app数据
|
||||
func FormatAppSimpleData(item quicksearchmod.QuickSearch) (res AppSimpleData) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &quicksearchmod.QuickSearchInfo{
|
||||
ID: item.ID,
|
||||
Enabled: item.Enabled,
|
||||
Title: item.Title,
|
||||
SearchKeyword: item.SearchKeyword,
|
||||
Link: item.Link,
|
||||
Type: item.Type,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdatedAt: item.UpdatedAt,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package quicksearchdata
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/quicksearchmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []quicksearchmod.QuickSearch
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]quicksearchmod.QuickSearch, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.QuickSearch).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = quicksearchmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res quicksearchmod.QuickSearch, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.QuickSearch, id.Hex()).ResBind(&res).Cache(quicksearchmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M) (res []quicksearchmod.QuickSearch, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(3*time.Minute).AutoListKey(models.QuickSearch+"-all").ResBind(&res).Cache(quicksearchmod.GetAll, cond)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data quicksearchmod.QuickSearch) (primitive.ObjectID, error) {
|
||||
newID, err := quicksearchmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.QuickSearch).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := quicksearchmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.QuickSearch).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = quicksearchmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.QuickSearch).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package signrecorddata
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/signrecordmod"
|
||||
)
|
||||
|
||||
// AppData 需要组装返回的数据
|
||||
type AppData struct {
|
||||
BaseInfo *signrecordmod.SignRecordInfo `json:"baseInfo"` // 基础信息
|
||||
}
|
||||
|
||||
// FormatAppDataList 格式化app列表数据
|
||||
func FormatAppDataList(origin []signrecordmod.SignRecord) (res []AppData) {
|
||||
res = make([]AppData, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppData 格式化app数据
|
||||
func FormatAppData(item signrecordmod.SignRecord) (res AppData) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res.BaseInfo = &signrecordmod.SignRecordInfo{
|
||||
ID: item.ID,
|
||||
PID: item.PID,
|
||||
UID: item.UID,
|
||||
TotalDays: item.TotalDays,
|
||||
CurrentSignDays: item.CurrentSignDays,
|
||||
ForgetSignDays: item.ForgetSignDays,
|
||||
RenewalSignDays: item.RenewalSignDays,
|
||||
SignTime: item.SignTime,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdateTime: item.UpdateTime,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// AppSimpleData 仅返回基础数据
|
||||
type AppSimpleData *signrecordmod.SignRecordInfo
|
||||
|
||||
// FormatAppSimpleDataList 格式化app列表数据
|
||||
func FormatAppSimpleDataList(origin []signrecordmod.SignRecord) (res []AppSimpleData) {
|
||||
res = make([]AppSimpleData, len(origin))
|
||||
if len(origin) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
for i, item := range origin {
|
||||
res[i] = FormatAppSimpleData(item)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// FormatAppSimpleData 格式化app数据
|
||||
func FormatAppSimpleData(item signrecordmod.SignRecord) (res AppSimpleData) {
|
||||
if item.ID.IsZero() {
|
||||
return
|
||||
}
|
||||
|
||||
// 组装返回数据
|
||||
res = &signrecordmod.SignRecordInfo{
|
||||
ID: item.ID,
|
||||
PID: item.PID,
|
||||
UID: item.UID,
|
||||
TotalDays: item.TotalDays,
|
||||
CurrentSignDays: item.CurrentSignDays,
|
||||
ForgetSignDays: item.ForgetSignDays,
|
||||
RenewalSignDays: item.RenewalSignDays,
|
||||
SignTime: item.SignTime,
|
||||
CreatedAt: item.CreatedAt,
|
||||
UpdateTime: item.UpdateTime,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package signrecorddata
|
||||
|
||||
import (
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/signrecordmod"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []signrecordmod.SignRecord
|
||||
Count int64
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
// GetListFromCache 从缓存获取列表数据
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]signrecordmod.SignRecord, int64, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.SignRecord).ResBind(&data).Cache(GetListData, cond, skip, limit, sort)
|
||||
return data.List, data.Count, data.HasNext, err
|
||||
}
|
||||
|
||||
// GetListData 获取列表数据并组装适合缓存格式返回
|
||||
func GetListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
res.List, res.Count, res.HasNext, err = signrecordmod.GetList(cond, skip, limit, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res signrecordmod.SignRecord, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoInfoKey(models.SignRecord, id.Hex()).ResBind(&res).Cache(signrecordmod.GetInfo, id)
|
||||
return
|
||||
}
|
||||
|
||||
// GetAllFromCache 获取所有数据
|
||||
func GetAllFromCache(cond bson.M, sort bson.D) (res []signrecordmod.SignRecord, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.SignRecord+"-all").ResBind(&res).Cache(signrecordmod.GetAll, cond, sort)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data signrecordmod.SignRecord) (primitive.ObjectID, error) {
|
||||
newID, err := signrecordmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
_, err = cachev2.Classes().Table(models.SignRecord).AutoClear(true, nil)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := signrecordmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
_, _ = cachev2.Classes().Table(models.SignRecord).AutoClear(true, &id)
|
||||
|
||||
return affect, err
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = signrecordmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
all := "*"
|
||||
_, _ = cachev2.Classes().Table(models.SignRecord).AutoClear(true, &all)
|
||||
return
|
||||
}
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
package sysconfdata
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/db"
|
||||
"91porn-server/common/localcache"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/sysconfmod"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// GetIntsFromSharedCache reads integer settings from the shared cache without
|
||||
// the process-local one-minute layer, so management changes take effect at once.
|
||||
func GetIntsFromSharedCache(defaults map[sysconfmod.VCode]int) (map[sysconfmod.VCode]int, error) {
|
||||
configure, err := getAllFromSharedCache()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
values := make(map[sysconfmod.VCode]int, len(defaults))
|
||||
for code, fallback := range defaults {
|
||||
values[code] = fallback
|
||||
if raw, ok := configure[string(code)]; ok {
|
||||
if parsed, parseErr := strconv.Atoi(raw); parseErr == nil {
|
||||
values[code] = parsed
|
||||
}
|
||||
}
|
||||
}
|
||||
return values, nil
|
||||
}
|
||||
|
||||
const (
|
||||
tmpLocalCacheKey = "AllSysConfTmpKey"
|
||||
// DefaultTotalWatchCount preserves the legacy free-trial behavior when the
|
||||
// shared configuration is absent or temporarily unavailable.
|
||||
DefaultTotalWatchCount uint64 = 3
|
||||
)
|
||||
|
||||
// GetAllFromCache 获取全部配置项
|
||||
func GetAllFromCache() (res sysconfmod.ConfMap, err error) {
|
||||
// 频繁访问 从本地进程内缓存中获取,对象不存在则从redis中获取
|
||||
r, _ := localcache.C.Get(tmpLocalCacheKey)
|
||||
if r != nil {
|
||||
return r.(sysconfmod.ConfMap), nil
|
||||
}
|
||||
defer func() {
|
||||
localcache.C.Set(tmpLocalCacheKey, res, 1*time.Minute)
|
||||
}()
|
||||
return getAllFromSharedCache()
|
||||
}
|
||||
|
||||
// GetTotalWatchCount returns the configured non-VIP free-trial count from the
|
||||
// existing bounded configuration cache and falls back to the legacy default.
|
||||
func GetTotalWatchCount() uint64 {
|
||||
configure, err := GetAllFromCache()
|
||||
if err != nil {
|
||||
return DefaultTotalWatchCount
|
||||
}
|
||||
return totalWatchCount(configure)
|
||||
}
|
||||
|
||||
func totalWatchCount(configure sysconfmod.ConfMap) uint64 {
|
||||
raw, ok := configure[string(sysconfmod.VCodeTotalWatchCount)]
|
||||
if !ok {
|
||||
return DefaultTotalWatchCount
|
||||
}
|
||||
value, err := strconv.ParseUint(raw, 10, 64)
|
||||
if err != nil {
|
||||
return DefaultTotalWatchCount
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
func getAllFromSharedCache() (res sysconfmod.ConfMap, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(5 * time.Minute).AutoListKey(models.SysConf).ResBind(&res).Cache(sysconfmod.GetAllConfig)
|
||||
return
|
||||
}
|
||||
|
||||
// GetBoolFromSharedCache 绕过进程内缓存读取布尔配置,后台修改并清理 Redis 后可立即生效。
|
||||
func GetBoolFromSharedCache(code sysconfmod.VCode) (bool, error) {
|
||||
values, err := GetBoolsFromSharedCache(code)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return values[code], nil
|
||||
}
|
||||
|
||||
// GetBoolsFromSharedCache reads several switches from one shared-cache
|
||||
// snapshot. This keeps request paths that need related switches from fetching
|
||||
// and decoding the same configuration map repeatedly.
|
||||
func GetBoolsFromSharedCache(codes ...sysconfmod.VCode) (map[sysconfmod.VCode]bool, error) {
|
||||
configure, err := getAllFromSharedCache()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
values := make(map[sysconfmod.VCode]bool, len(codes))
|
||||
for _, code := range codes {
|
||||
if _, exists := configure[string(code)]; !exists {
|
||||
continue
|
||||
}
|
||||
values[code] = configure.GetBool(code)
|
||||
}
|
||||
return values, nil
|
||||
}
|
||||
|
||||
func clearAllCache() error {
|
||||
localcache.C.Delete(tmpLocalCacheKey)
|
||||
_, err := cachev2.Classes().AutoListKey(models.SysConf).DeleteCurrent()
|
||||
return err
|
||||
}
|
||||
|
||||
// GetByGpCodeFromCache 获取分组配置数据
|
||||
func GetByGpCodeFromCache(code sysconfmod.GPCode) (res sysconfmod.ConfMap, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(30*time.Minute).AutoListKey(models.SysConf).ResBind(&res).Cache(sysconfmod.GetByGpCode, code)
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData 插入数据
|
||||
func InsertData(t *db.MongoTool, data sysconfmod.SysConf) (primitive.ObjectID, error) {
|
||||
newID, err := sysconfmod.Insert(t, data)
|
||||
if err != nil {
|
||||
return newID, err
|
||||
}
|
||||
// 清除缓存数据
|
||||
if err = clearAllCache(); err != nil {
|
||||
return newID, err
|
||||
}
|
||||
return newID, nil
|
||||
}
|
||||
|
||||
// UpdateData 更新数据
|
||||
func UpdateData(t *db.MongoTool, id string, data map[string]interface{}) (int64, error) {
|
||||
objID, err := primitive.ObjectIDFromHex(id)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
affect, err := sysconfmod.UpdateByID(t, objID, data)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if err = clearAllCache(); err != nil {
|
||||
return affect, err
|
||||
}
|
||||
return affect, nil
|
||||
}
|
||||
|
||||
// DeleteData 删除数据
|
||||
func DeleteData(t *db.MongoTool, id primitive.ObjectID) (err error) {
|
||||
err = sysconfmod.DeleteByID(t, id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 清理缓存
|
||||
return clearAllCache()
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package sysconfdata
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"91porn-server/models/v/sysconfmod"
|
||||
)
|
||||
|
||||
func TestTotalWatchCount(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
config sysconfmod.ConfMap
|
||||
want uint64
|
||||
}{
|
||||
{name: "configured", config: sysconfmod.ConfMap{string(sysconfmod.VCodeTotalWatchCount): "5"}, want: 5},
|
||||
{name: "zero is allowed", config: sysconfmod.ConfMap{string(sysconfmod.VCodeTotalWatchCount): "0"}, want: 0},
|
||||
{name: "missing", config: sysconfmod.ConfMap{}, want: DefaultTotalWatchCount},
|
||||
{name: "invalid", config: sysconfmod.ConfMap{string(sysconfmod.VCodeTotalWatchCount): "invalid"}, want: DefaultTotalWatchCount},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := totalWatchCount(tt.config); got != tt.want {
|
||||
t.Fatalf("totalWatchCount() = %d, want %d", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package viddata
|
||||
|
||||
import (
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/models"
|
||||
"91porn-server/models/v/vidmod"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
type ListRes struct {
|
||||
List []*vidmod.VideoModel
|
||||
HasNext bool
|
||||
}
|
||||
|
||||
func GetListFromCache(cond bson.M, skip, limit int64, sort bson.D) ([]*vidmod.VideoModel, bool, error) {
|
||||
var data ListRes
|
||||
_, err := cachev2.Classes().CacheTime(10*time.Minute).AutoListKey(models.VideoInfo).ResBind(&data).Cache(getListData, cond, skip, limit, sort)
|
||||
return data.List, data.HasNext, err
|
||||
}
|
||||
|
||||
// getListData 获取列表数据并组装适合缓存格式返回
|
||||
func getListData(cond bson.M, skip, limit int64, sort bson.D) (res ListRes, err error) {
|
||||
opt := options.Find().SetLimit(limit).SetSkip(skip).SetSort(sort)
|
||||
res.List, res.HasNext, err = vidmod.FindList(cond, opt)
|
||||
return
|
||||
}
|
||||
|
||||
// GetInfoFromCache 获取数据详情
|
||||
func GetInfoFromCache(id primitive.ObjectID) (res vidmod.VideoModel, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(5*time.Minute).AutoInfoKey(models.VideoInfo, id.Hex()).ResBind(&res).Cache(vidmod.GetVideoInfo, id.Hex())
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user