删除一个用户.
(oldId int, adminId int)
| 381 | //删除一个用户. |
| 382 | |
| 383 | func (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 | } |
nothing calls this directly
no test coverage detected