| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package models
- import (
- "time"
- "github.com/astaxie/beego/orm"
- "github.com/lifei6671/godoc/conf"
- )
- type MemberRelationshipResult struct {
- MemberId int `json:"member_id"`
- Account string `json:"account"`
- Description string `json:"description"`
- Email string `json:"email"`
- Phone string `json:"phone"`
- Avatar string `json:"avatar"`
- Role int `json:"role"` //用户角色:0 管理员/ 1 普通用户
- Status int `json:"status"` //用户状态:0 正常/1 禁用
- CreateTime time.Time `json:"create_time"`
- CreateAt int `json:"create_at"`
- RelationshipId int `json:"relationship_id"`
- BookId int `json:"book_id"`
- // RoleId 角色:0 创始人(创始人不能被移除) / 1 管理员/2 编辑者/3 观察者
- RoleId int `json:"role_id"`
- RoleName string `json:"role_name"`
- }
- func NewMemberRelationshipResult() *MemberRelationshipResult {
- return &MemberRelationshipResult{}
- }
- func (m *MemberRelationshipResult) FromMember(member *Member) *MemberRelationshipResult {
- m.MemberId = member.MemberId
- m.Account = member.Account
- m.Description = member.Description
- m.Email = member.Email
- m.Phone = member.Phone
- m.Avatar = member.Avatar
- m.Role = member.Role
- m.Status = member.Status
- m.CreateTime = member.CreateTime
- m.CreateAt = member.CreateAt
- return m
- }
- func (m *MemberRelationshipResult) ResolveRoleName () *MemberRelationshipResult {
- if m.RoleId == conf.BookAdmin {
- m.RoleName = "管理者"
- }else if m.RoleId == conf.BookEditor {
- m.RoleName = "编辑者"
- }else if m.RoleId == conf.BookObserver {
- m.RoleName = "观察者"
- }
- return m
- }
- func (m *MemberRelationshipResult) FindForUsersByBookId(book_id ,pageIndex, pageSize int) ([]*MemberRelationshipResult,int,error) {
- o := orm.NewOrm()
- var members []*MemberRelationshipResult
- sql1 := "SELECT * FROM md_relationship AS rel LEFT JOIN md_members as member ON rel.member_id = member.member_id WHERE rel.book_id = ? ORDER BY rel.relationship_id DESC LIMIT ?,?"
- sql2 := "SELECT count(*) AS total_count FROM md_relationship AS rel LEFT JOIN md_members as member ON rel.member_id = member.member_id WHERE rel.book_id = ?"
- var total_count int
- err := o.Raw(sql2,book_id).QueryRow(&total_count)
- if err != nil {
- return members,0,err
- }
- offset := (pageIndex-1) * pageSize
- _,err = o.Raw(sql1,book_id,offset,pageSize).QueryRows(&members)
- if err != nil {
- return members,0,err
- }
- for _,item := range members {
- item.ResolveRoleName()
- }
- return members,total_count,nil
- }
|