MCPcopy Index your code
hub / github.com/TruthHun/BookStack / Delete

Method Delete

models/member.go:383–456  ·  view source on GitHub ↗

删除一个用户.

(oldId int, adminId int)

Source from the content-addressed store, hash-verified

381//删除一个用户.
382
383func (m *Member) Delete(oldId int, adminId int) (err error) {
384 o := orm.NewOrm()
385 err = o.Begin()
386 if err != nil {
387 return err
388 }
389 defer func() {
390 if err != nil {
391 o.Rollback()
392 } else {
393 o.Commit()
394 }
395 }()
396
397 _, err = o.Raw("DELETE FROM md_members WHERE member_id = ?", oldId).Exec()
398 if err != nil {
399 return
400 }
401
402 var books []Book
403 o.QueryTable("md_books").Filter("member_id", oldId).Limit(10000000).All(&books, "book_id")
404
405 if len(books) > 0 {
406 var booksId []interface{}
407
408 for _, book := range books {
409 booksId = append(booksId, book.BookId)
410 }
411
412 _, err = o.Raw("UPDATE md_books SET member_id = ? WHERE member_id = ?", adminId, oldId).Exec()
413 if err != nil {
414 return
415 }
416
417 _, err = o.Raw("UPDATE md_document_history SET member_id=? WHERE member_id = ?", adminId, oldId).Exec()
418 if err != nil {
419 return err
420 }
421
422 _, err = o.QueryTable("md_documents").Filter("book_id__in", booksId...).Update(orm.Params{"member_id": adminId})
423 if err != nil {
424 return err
425 }
426 }
427
428 var relationshipList []*Relationship
429
430 _, err = o.QueryTable(NewRelationship().TableNameWithPrefix()).Filter("member_id", oldId).All(&relationshipList)
431 if err == nil {
432 for _, relationship := range relationshipList {
433 //如果存在创始人,则删除
434 if relationship.RoleId == 0 {
435 rel := NewRelationship()
436 err = o.QueryTable(relationship.TableNameWithPrefix()).Filter("book_id", relationship.BookId).Filter("member_id", adminId).One(rel)
437 if err == nil {
438 if _, err = o.Delete(relationship); err != nil {
439 beego.Error(err)
440 }

Callers

nothing calls this directly

Calls 5

NewRelationshipFunction · 0.85
appendFunction · 0.50
AllMethod · 0.45
UpdateMethod · 0.45
TableNameWithPrefixMethod · 0.45

Tested by

no test coverage detected