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

155 lines
5.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}