155 lines
5.1 KiB
Go
155 lines
5.1 KiB
Go
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
|
||
}
|