finclip-app-manager/infrastructure/db/repo/mongo/bundle.go

155 lines
5.1 KiB
Go
Raw Normal View History

2023-10-31 14:07:26 +08:00
package mongo
import (
"context"
"finclip-app-manager/domain/entity"
"finclip-app-manager/domain/repository"
mgo "gitlab.finogeeks.club/finclip-backend-v2/finclip-mgo"
"gitlab.finogeeks.club/finclip-backend-v2/finclip-mgo/bson"
)
var _ repository.IBundleRepo = new(BundleByMongoRepo)
type BundleByMongoRepo struct {
}
type BundleMongo struct {
BundleID string `json:"bundle_id" bson:"bundle_id"`
Remark string `json:"remark" bson:"remark"`
SDKKey string `json:"sdk_key" bson:"sdk_key"`
SDKID string `json:"sdk_id" bson:"sdk_id"`
IsFirstCreate bool `json:"is_first_create" bson:"is_first_create"` //是否第一次创建
CreatedAt int64 `json:"created_at" bson:"created_at"`
CreatedAccount string `json:"created_account" bson:"created_account"`
CreatedBy string `json:"created_by" bson:"created_by"`
IsForbidden int `json:"is_forbidden" bson:"is_forbidden"` //0:可用 1禁用
}
func (b BundleByMongoRepo) Insert(ctx context.Context, bundles []entity.Bundle) error {
var err error
for _, v := range bundles {
err = bundleTable.Insert(ctx, convertBundleToBundleMongo(v))
}
if err != nil {
return err
}
return err
}
func (b BundleByMongoRepo) GetListByBundleId(ctx context.Context, ids []string, pageNo int, pageSize int) (int, []entity.Bundle, error) {
bundleMongos := make([]BundleMongo, 0)
filter := bson.M{"bundle_id": bson.M{"$in": ids}}
total, err := bundleTable.GetSome(ctx, filter, []string{}, pageSize, pageNo, &bundleMongos)
if b.NotFound(err) {
return 0, []entity.Bundle{}, nil
}
bundles := make([]entity.Bundle, 0)
for _, bundleMongo := range bundleMongos {
bundles = append(bundles, convertBundleMongoToBundle(bundleMongo))
}
return total, bundles, err
}
func (b BundleByMongoRepo) GetListByBundleIds(ctx context.Context, ids []string) ([]entity.Bundle, error) {
bundles := make([]BundleMongo, 0)
filter := bson.M{"bundle_id": bson.M{"$in": ids}}
_, err := bundleTable.GetAllV2(ctx, filter, []string{}, &bundles)
if b.NotFound(err) {
return []entity.Bundle{}, nil
}
result := make([]entity.Bundle, 0)
for _, bundleMongo := range bundles {
result = append(result, convertBundleMongoToBundle(bundleMongo))
}
return result, err
}
func (b BundleByMongoRepo) ExistBundleId(ctx context.Context, bundleId string) (bool, error) {
total, err := bundleTable.Count(ctx, bson.M{"bundle_id": bundleId})
if err != nil {
return false, err
}
return total > 0, nil
}
func (b BundleByMongoRepo) GetInfoByBundleId(ctx context.Context, bundleId string) (entity.Bundle, error) {
mgoInfo := BundleMongo{}
err := bundleTable.GetOne(ctx, bson.M{"bundle_id": bundleId}, &mgoInfo)
if err != nil {
return entity.Bundle{}, err
}
return convertBundleMongoToBundle(mgoInfo), err
}
func (b BundleByMongoRepo) ListAllBundleInfos(ctx context.Context, searchText string, selectType, pageNo int, pageSize int) (int, []entity.Bundle, error) {
bundleInfos := make([]BundleMongo, 0, pageSize)
filter := bson.M{}
if searchText != "" {
filter["bundle_id"] = bson.RegEx{Pattern: searchText, Options: "i"}
}
if selectType == 1 {
filter["is_forbidden"] = 0
} else if selectType == 2 {
filter["is_forbidden"] = 1
}
pageNo += 1
total, err := bundleTable.GetSome(context.Background(), filter, []string{"-created_at"}, pageSize, pageNo, &bundleInfos)
if err != nil {
return 0, nil, err
}
result := make([]entity.Bundle, 0)
for _, v := range bundleInfos {
result = append(result, convertBundleMongoToBundle(v))
}
return total, result, nil
}
func (b BundleByMongoRepo) AllCount(ctx context.Context) (int, error) {
return bundleTable.Count(ctx, bson.M{"is_forbidden": 0})
}
func (b BundleByMongoRepo) UpdateBundleForbidden(ctx context.Context, bundleId string, IsForbidden int) error {
return bundleTable.UpdateOne(ctx, bson.M{"bundle_id": bundleId}, bson.M{"$set": bson.M{"is_forbidden": IsForbidden}})
}
func (b BundleByMongoRepo) UpdateBundlePlatform(ctx context.Context, bundleId, remark string) error {
return bundleTable.UpdateOne(ctx, bson.M{"bundle_id": bundleId}, bson.M{"$set": bson.M{"remark": remark}})
}
func (b BundleByMongoRepo) NotFound(err error) bool {
return err == mgo.ErrNotFound
}
func convertBundleToBundleMongo(bundleInfo entity.Bundle) BundleMongo {
result := BundleMongo{}
result.BundleID = bundleInfo.BundleID
result.Remark = bundleInfo.Remark
result.SDKKey = bundleInfo.SDKKey
result.SDKID = bundleInfo.SDKID
result.IsFirstCreate = bundleInfo.IsFirstCreate
result.CreatedAt = bundleInfo.CreatedAt
result.CreatedAccount = bundleInfo.CreatedAccount
result.CreatedBy = bundleInfo.CreatedBy
result.IsForbidden = bundleInfo.IsForbidden
return result
}
func convertBundleMongoToBundle(bundleMongo BundleMongo) entity.Bundle {
result := entity.Bundle{}
result.BundleID = bundleMongo.BundleID
result.Remark = bundleMongo.Remark
result.SDKKey = bundleMongo.SDKKey
result.SDKID = bundleMongo.SDKID
result.IsFirstCreate = bundleMongo.IsFirstCreate
result.CreatedAt = bundleMongo.CreatedAt
result.CreatedAccount = bundleMongo.CreatedAccount
result.CreatedBy = bundleMongo.CreatedBy
result.IsForbidden = bundleMongo.IsForbidden
return result
}