mindoc/models/member_result.go
Minho 1afb119bde 1、实现超级管理员用户管理功能
2、实现超级管理员项目列表功能
3、实现项目成员列表功能
2017-04-24 18:25:17 +08:00

93 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}