|
@@ -55,6 +55,52 @@ func (m *EdbDataBusiness) GetCollection() *qmgo.Collection {
|
|
|
return db.Collection(m.CollectionName())
|
|
|
}
|
|
|
|
|
|
+// GetItem
|
|
|
+// @Description: 根据条件获取单条数据
|
|
|
+// @author: Roc
|
|
|
+// @receiver m
|
|
|
+// @datetime 2024-05-09 10:00:49
|
|
|
+// @param whereParams interface{}
|
|
|
+// @return item *EdbDataBusiness
|
|
|
+// @return err error
|
|
|
+func (m *EdbDataBusiness) GetItem(whereParams interface{}) (item *EdbDataBusiness, err error) {
|
|
|
+ if utils.MgoDataCli == nil {
|
|
|
+ err = errors.New("mongodb连接失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ db := utils.MgoDataCli.Database(m.DataBaseName())
|
|
|
+ coll := db.Collection(m.CollectionName())
|
|
|
+
|
|
|
+ return m.GetItemByColl(coll, whereParams)
|
|
|
+}
|
|
|
+
|
|
|
+// GetItemByColl
|
|
|
+// @Description: 根据条件获取单条数据
|
|
|
+// @author: Roc
|
|
|
+// @receiver m
|
|
|
+// @datetime 2024-05-09 13:22:06
|
|
|
+// @param coll *qmgo.Collection
|
|
|
+// @param whereParams interface{}
|
|
|
+// @return item *EdbDataBusiness
|
|
|
+// @return err error
|
|
|
+func (m *EdbDataBusiness) GetItemByColl(coll *qmgo.Collection, whereParams interface{}) (item *EdbDataBusiness, err error) {
|
|
|
+ ctx := context.TODO()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("MgoGetColl Err:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = coll.Find(ctx, whereParams).One(&item)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ item.DataTime = item.DataTime.In(time.Local)
|
|
|
+ item.CreateTime = item.CreateTime.In(time.Local)
|
|
|
+ item.ModifyTime = item.ModifyTime.In(time.Local)
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// GetAllDataList
|
|
|
// @Description: 根据条件获取所有数据
|
|
|
// @author: Roc
|
|
@@ -188,18 +234,37 @@ func (m *EdbDataBusiness) GetCountDataList(whereParams interface{}) (count int64
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// InsertDataByColl
|
|
|
+// @Description: 写入单条数据(外部传入集合)
|
|
|
+// @author: Roc
|
|
|
+// @receiver m
|
|
|
+// @datetime 2024-04-26 14:22:18
|
|
|
+// @param addData interface{}
|
|
|
+// @return err error
|
|
|
+func (m *EdbDataBusiness) InsertDataByColl(coll *qmgo.Collection, addData interface{}) (err error) {
|
|
|
+ ctx := context.TODO()
|
|
|
+ _, err = coll.InsertOne(ctx, addData)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("InsertDataByColl:Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// BatchInsertData
|
|
|
// @Description: 批量写入数据
|
|
|
// @author: Roc
|
|
|
// @receiver m
|
|
|
// @datetime 2024-04-26 14:22:18
|
|
|
-// @param dataList interface{}
|
|
|
+// @param bulk int 每次请求保存的数据量
|
|
|
+// @param dataList []interface{}
|
|
|
// @return err error
|
|
|
-func (m *EdbDataBusiness) BatchInsertData(dataList []EdbDataBusiness) (err error) {
|
|
|
+func (m *EdbDataBusiness) BatchInsertData(bulk int, dataList []interface{}) (err error) {
|
|
|
db := utils.MgoDataCli.Database(m.DataBaseName())
|
|
|
coll := db.Collection(m.CollectionName())
|
|
|
|
|
|
- return m.BatchInsertDataByColl(coll, dataList)
|
|
|
+ return m.BatchInsertDataByColl(coll, bulk, dataList)
|
|
|
}
|
|
|
|
|
|
// BatchInsertDataByColl
|
|
@@ -207,16 +272,52 @@ func (m *EdbDataBusiness) BatchInsertData(dataList []EdbDataBusiness) (err error
|
|
|
// @author: Roc
|
|
|
// @receiver m
|
|
|
// @datetime 2024-04-26 14:22:18
|
|
|
-// @param dataList interface{}
|
|
|
+// @param coll *qmgo.Collection
|
|
|
+// @param bulk int 每次请求保存的数据量
|
|
|
+// @param dataList []interface{}
|
|
|
// @return err error
|
|
|
-func (m *EdbDataBusiness) BatchInsertDataByColl(coll *qmgo.Collection, dataList []EdbDataBusiness) (err error) {
|
|
|
+func (m *EdbDataBusiness) BatchInsertDataByColl(coll *qmgo.Collection, bulk int, dataList []interface{}) (err error) {
|
|
|
ctx := context.TODO()
|
|
|
- _, err = coll.InsertMany(ctx, dataList)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("BatchInsertData:Err:" + err.Error())
|
|
|
+ dataNum := len(dataList)
|
|
|
+ if dataNum <= 0 {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // 不设置每次保存切片数量大小,或者实际数据量小于设置的切片数量大小,那么就直接保存吧
|
|
|
+ if bulk <= 0 || dataNum <= bulk {
|
|
|
+ _, err = coll.InsertMany(ctx, dataList)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("BatchInsertData:Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分批保存
|
|
|
+ i := 0
|
|
|
+ tmpAddDataList := make([]interface{}, 0)
|
|
|
+ for _, v := range dataList {
|
|
|
+ tmpAddDataList = append(tmpAddDataList, v)
|
|
|
+ i++
|
|
|
+ if i >= bulk {
|
|
|
+ _, err = coll.InsertMany(ctx, tmpAddDataList)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("BatchInsertData:Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ i = 0
|
|
|
+ tmpAddDataList = make([]interface{}, 0)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(tmpAddDataList) > 0 {
|
|
|
+ _, err = coll.InsertMany(ctx, tmpAddDataList)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("BatchInsertData:Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|