ref: UDM重载数据批量更新

This commit is contained in:
TsMask
2023-09-23 10:57:48 +08:00
parent 6147809e6e
commit f5b4819797
3 changed files with 55 additions and 14 deletions

View File

@@ -207,7 +207,7 @@ type UdmUserApi struct {
// GET /auths // GET /auths
func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) { func (s *UdmUserApi) UdmAuthUserList(w http.ResponseWriter, r *http.Request) {
querys := ctx.QueryMap(r) querys := ctx.QueryMap(r)
querys["neId"] = "-" querys["neId"] = ""
data := s.authUser.Page(querys) data := s.authUser.Page(querys)
ctx.JSON(w, 200, result.Ok(data)) ctx.JSON(w, 200, result.Ok(data))
} }
@@ -607,7 +607,7 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
// GET /subs // GET /subs
func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) { func (s *UdmUserApi) UdmSubUserList(w http.ResponseWriter, r *http.Request) {
querys := ctx.QueryMap(r) querys := ctx.QueryMap(r)
querys["neId"] = "-" querys["neId"] = ""
data := s.subUser.Page(querys) data := s.subUser.Page(querys)
ctx.JSON(w, 200, result.Ok(data)) ctx.JSON(w, 200, result.Ok(data))
} }

View File

@@ -160,20 +160,44 @@ func (r *RepoUdmAuthUser) ClearAndInsert(neID string, authArr []model.UdmAuthUse
var num int64 = 0 var num int64 = 0
// 清空指定ne_id // 清空指定ne_id
_, err := datasource.ExecDB("", "DELETE FROM u_auth_user WHERE ne_id = ?", []any{neID}) _, err := datasource.ExecDB("", "TRUNCATE TABLE u_auth_user", nil)
// _, err := datasource.ExecDB("", "DELETE FROM u_auth_user WHERE ne_id = ?", []any{neID})
if err != nil { if err != nil {
log.Errorf("TRUNCATE err => %v", err) log.Errorf("TRUNCATE err => %v", err)
return num
} }
for _, u := range authArr { n := len(authArr)
u.NeID = neID batchSize := 5000
results, err := datasource.DefaultDB().Table("u_auth_user").Insert(u) for i := 0; i < n; i += batchSize {
end := i + batchSize
if end > n {
end = n
}
batch := authArr[i:end]
// 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_auth_user").InsertMulti(batch)
if err != nil { if err != nil {
return num continue
} }
num += results num += results
} }
// // 清空指定ne_id
// _, err := datasource.ExecDB("", "DELETE FROM u_auth_user WHERE ne_id = ?", []any{neID})
// if err != nil {
// log.Errorf("TRUNCATE err => %v", err)
// return num
// }
// for _, u := range authArr {
// u.NeID = neID
// results, err := datasource.DefaultDB().Table("u_auth_user").Insert(u)
// if err != nil {
// return num
// }
// num += results
// }
return num return num
} }

View File

@@ -178,20 +178,37 @@ func (r *RepoUdmSubUser) ClearAndInsert(neID string, subArr []model.UdmSubUser)
var num int64 = 0 var num int64 = 0
// 清空指定ne_id // 清空指定ne_id
// _, err := datasource.ExecDB("", "TRUNCATE TABLE u_sub_user", nil) _, err := datasource.ExecDB("", "TRUNCATE TABLE u_sub_user", nil)
_, err := datasource.ExecDB("", "DELETE FROM u_sub_user WHERE ne_id = ?", []any{neID}) // _, err := datasource.ExecDB("", "DELETE FROM u_sub_user WHERE ne_id = ?", []any{neID})
if err != nil { if err != nil {
log.Errorf("TRUNCATE err => %v", err) log.Errorf("TRUNCATE err => %v", err)
} }
for _, u := range subArr { n := len(subArr)
u.NeID = neID batchSize := 5000
results, err := datasource.DefaultDB().Table("u_sub_user").Insert(u) for i := 0; i < n; i += batchSize {
end := i + batchSize
if end > n {
end = n
}
batch := subArr[i:end]
// 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_sub_user").InsertMulti(batch)
if err != nil { if err != nil {
return num continue
} }
num += results num += results
} }
// for _, u := range subArr {
// u.NeID = neID
// results, err := datasource.DefaultDB().Table("u_sub_user").Insert(u)
// if err != nil {
// return num
// }
// num += results
// }
return num return num
} }