package wdchannmod import ( "fmt" "91porn-server/common/db" "91porn-server/common/log" "91porn-server/models" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) const table = models.WithdrawChannel // initIndex 设置index func initIndex() { coll := coll(nil) many := []mongo.IndexModel{ { Keys: bson.D{{Key: "payType", Value: 1}, {Key: "cid", Value: 1}}, Options: options.Index().SetUnique(true), }, { Keys: bson.D{{Key: "createdAt", Value: 1}}, }, { Keys: bson.D{{Key: "updatedAt", Value: 1}}, }, } if _, err := coll.CreateIndex(many); err != nil { panic(fmt.Sprintf("%s model set index err ==>[%+v]", table, err)) } } func coll(t *db.MongoTool) *db.MongoTool { if t == nil { return mdb.Coll(table) } return t.Coll(table) } // InsertWithdrawChannel 插入一条数据 func InsertWithdrawChannel(c *WithdrawChannel) error { if _, err := coll(nil).InsertOne(c); err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "InsertWithdrawChannel", table, "InsertOne", err), log.Any("c", c), ) return err } return nil } // DeleteWithdrawChannel delete func DeleteWithdrawChannel(cond bson.M) (int64, error) { result, err := coll(nil).DeleteMany(cond) if err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "DeleteWithdrawChannel", table, "DeleteMany", err), log.Any("cond", cond), ) return 0, err } return result.DeletedCount, err } // UpdateWithdrawChannel 金币配置更新 func UpdateWithdrawChannel(id string, set *WithdrawChannelSelector) (int64, error) { oid, err := primitive.ObjectIDFromHex(id) if err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "UpdateWithdrawChannel", table, "ObjectIDFromHex", err), log.Any("id", id), log.Any("set", set), ) log.ZapLog.Warn("withdraw UpdateWithdrawChannel ObjectIDFromHex fail", log.E(err)) return 0, err } result, err := coll(nil).UpdateOne(bson.M{"_id": oid}, bson.M{"$set": set}) if err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "UpdateWithdrawChannel", table, "UpdateOne", err), log.Any("id", id), log.Any("set", set), ) return 0, err } return result.ModifiedCount, nil } // GetWithdrawChannels 条件获取支付渠道列表 func GetWithdrawChannels() ([]*WithdrawChannel, error) { opts := options.FindOptions{} opts.SetSort(bson.D{{Key: "updatedAt", Value: 1}}) var back []*WithdrawChannel if err := coll(nil).Find(&back, bson.M{}, &opts); err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "GetWithdrawChannels", table, "Find", err)) return nil, err } return back, nil } // GetWithdrawChannel 条件获取支付渠道列表 func GetWithdrawChannel(paytype string) (w *WithdrawChannel, err error) { w = &WithdrawChannel{} if err = coll(nil).FindOne(w, bson.M{"payType": paytype}); err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "GetWithdrawChannel", table, "FindOne", err), log.Any("payType", paytype), ) return } return } // GetWithdrawChannel 条件获取可用的提现方式 func GetActiveWithdrawChannels() ([]*AppWithdrawChannels, error) { opts := options.FindOptions{} opts.SetSort(bson.D{{Key: "weight", Value: -1}, {Key: "updatedAt", Value: 1}}) var back []*AppWithdrawChannels if err := coll(nil).Find(&back, bson.M{"active": true}, &opts); err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "GetActiveWithdrawChannels", table, "Find", err)) return nil, err } return back, nil } // GetWithdrawChannel 条件获取支付渠道列表 func IsYinse() (bool, error) { w := WithdrawChannel{} if err := coll(nil).FindOne(&w, bson.M{"cid": "yinse", "active": true}); err != nil { log.Warn(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "IsYinse", table, "FindOne", err)) return false, err } return !w.ID.IsZero(), nil }