|
@@ -0,0 +1,274 @@
|
|
|
+package models
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "encoding/json"
|
|
|
+ "errors"
|
|
|
+ "eta/eta_forum_task/utils"
|
|
|
+ "eta/eta_forum_task/utils/mgodb"
|
|
|
+ "fmt"
|
|
|
+)
|
|
|
+
|
|
|
+func init() {
|
|
|
+ if utils.MgoUrlData != `` {
|
|
|
+ var mgoConfig mgodb.MgoConfig
|
|
|
+ if e := json.Unmarshal([]byte(utils.MgoUrlData), &mgoConfig); e != nil {
|
|
|
+ panic("mongodb链接失败,Err:" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ mgoCli := mgodb.MgoNewClient(mgoConfig)
|
|
|
+ utils.MgoDataCli = mgoCli
|
|
|
+ utils.MgoDataDbName = mgoConfig.Database
|
|
|
+ //result, err := TestMgoFindOne("data_ths", bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"})
|
|
|
+ //fmt.Println(time.Now())
|
|
|
+ //result, err := TestMgoFindOne("data_wind", bson.M{"edbcode": "s0033227", "datatime": "2007-12-29"})
|
|
|
+ //fmt.Println(time.Now())
|
|
|
+ //
|
|
|
+ //fmt.Println(err)
|
|
|
+ //fmt.Println(result)
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// TestMgoFindOne
|
|
|
+// @Description: 获取单条数据
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-04-25 15:44:07
|
|
|
+// @param colName string 集合名词:`data_ths`
|
|
|
+// @param whereParams interface{} bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
|
|
|
+// @return result interface{}
|
|
|
+// @return err error
|
|
|
+func TestMgoFindOne(colName string, whereParams interface{}) (result interface{}, err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if utils.MgoDataCli == nil {
|
|
|
+ err = errors.New("mongodb连接失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ db := utils.MgoDataCli.Database("hz_data")
|
|
|
+ coll := db.Collection("data_ths")
|
|
|
+ ctx := context.TODO()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //err = coll.Find(ctx, whereParams).One(&result)
|
|
|
+ err = coll.Find(ctx, whereParams).All(&result)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 创建集合
|
|
|
+//func MgoCreateCollection(collectionName string) (err error) {
|
|
|
+// ctx := context.TODO()
|
|
|
+//
|
|
|
+// mgoClient := mgodb.MgoNewClient()
|
|
|
+//
|
|
|
+// defer func() {
|
|
|
+// mgoClient.Close(ctx)
|
|
|
+// }()
|
|
|
+//
|
|
|
+// colName := collectionName
|
|
|
+// err = mgoClient.Database("hz_data").CreateCollection(ctx, colName)
|
|
|
+// return
|
|
|
+//}
|
|
|
+
|
|
|
+// 批量新增多条数据
|
|
|
+func MgoBatchInsertData(colName string, dataList interface{}) (err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ _, err = coll.Collection.InsertMany(ctx, dataList)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("InsertMany:Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 插入单条数据
|
|
|
+func MgoInsertData(colName string, dataItem interface{}) (insertedID interface{}, err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ result, err := coll.Collection.InsertOne(ctx, dataItem)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ insertedID = result.InsertedID
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+删除数据
|
|
|
+colName := `data_gl`
|
|
|
+whereParams := bson.M{"edbcode": "s0033227"}
|
|
|
+err := MgoRemove(colName, whereParams)
|
|
|
+*/
|
|
|
+func MgoRemove(colName string, whereParams interface{}) (err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ err = coll.Remove(ctx, whereParams)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+删除多条数据
|
|
|
+colName := `data_gl`
|
|
|
+whereParams := bson.M{"edbcode": "s0033227"}
|
|
|
+err := MgoRemoveAll(colName, whereParams)
|
|
|
+*/
|
|
|
+func MgoRemoveAll(colName string, whereParams interface{}) (count int64, err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ res, err := coll.RemoveAll(ctx, whereParams)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("RemoveAll Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ count = res.DeletedCount
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+修改单条数据
|
|
|
+colName := `data_ths`
|
|
|
+whereParams := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
|
|
|
+params := bson.M{"$set": bson.M{"value": "1000"}}
|
|
|
+*/
|
|
|
+func MgoUpdateData(colName string, params, whereParams interface{}) (err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ err = coll.UpdateOne(ctx, whereParams, params)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+获取单条数据
|
|
|
+colName := `data_ths`
|
|
|
+whereParams := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
|
|
|
+*/
|
|
|
+func MgoFindOne(colName string, whereParams interface{}) (result interface{}, err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ err = coll.Find(ctx, whereParams).One(&result)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+分页获取数据
|
|
|
+colName := `data_ths`
|
|
|
+whereParams := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
|
|
|
+
|
|
|
+sort:="-weight"
|
|
|
+skip:0
|
|
|
+limit:10
|
|
|
+*/
|
|
|
+func MgoBatchFind(colName, sort string, whereParams interface{}, skip, limit int64) (list []interface{}, err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ err = coll.Find(ctx, whereParams).Sort(sort).Skip(skip).Limit(limit).All(&list)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+MgoUpsertData
|
|
|
+更新插入数据-数据存在即更新, 否则新增
|
|
|
+colName := `data_ths`
|
|
|
+filter := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
|
|
|
+replacement := bson.M{"edb_info_id":0,"edb_code":m.EdbCode,"data_time":d.DataTime,"value":f,"create_time":now,"modify_time":now,"data_timestamp": stamp}
|
|
|
+*/
|
|
|
+func MgoUpsertData(colName string, filter, replacement interface{}) (err error) {
|
|
|
+ if colName == "" {
|
|
|
+ err = errors.New("集合名称不可为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ctx := context.TODO()
|
|
|
+ coll, err := mgodb.MgoGetColl(colName)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ _ = coll.Close(ctx)
|
|
|
+ }()
|
|
|
+ _, err = coll.Upsert(ctx, filter, replacement)
|
|
|
+ return
|
|
|
+}
|