github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/central/mongo/service/impl/impl_org_members.go (about) 1 package impl 2 3 import ( 4 "github.com/sixexorg/magnetic-ring/central/entity" 5 "github.com/sixexorg/magnetic-ring/central/mongo" 6 "github.com/sixexorg/magnetic-ring/central/mongokey" 7 "gopkg.in/mgo.v2/bson" 8 ) 9 10 type MemberImpl struct { 11 record *entity.Member 12 LeagueId string 13 } 14 15 func NewMemberImpl(member *entity.Member, orgid string) *MemberImpl { 16 return &MemberImpl{member, orgid} 17 } 18 19 func (svc *MemberImpl) Insert() error { 20 leaguetxnskey := mongokey.NewLeagueMemberPrefixKey(svc.LeagueId) 21 session, col := mongo.KeyProvider(leaguetxnskey) 22 defer session.Close() 23 return col.Insert(svc.record) 24 } 25 26 func (svc *MemberImpl) Delete() error { 27 leaguetxnskey := mongokey.NewLeagueMemberPrefixKey(svc.LeagueId) 28 session, col := mongo.KeyProvider(leaguetxnskey) 29 defer session.Close() 30 return col.Remove(bson.M{"addr":svc.record.Addr}) 31 } 32 33 func (svc *MemberImpl) GetMebers(page,size int) (int,interface{}, error) { 34 35 leaguetxnskey := mongokey.NewLeagueMemberPrefixKey(svc.LeagueId) 36 session, col := mongo.KeyProvider(leaguetxnskey) 37 defer session.Close() 38 39 if page <= 0 { 40 page = 1 41 } 42 43 skip := size * (page-1) 44 45 var htor []*entity.Member 46 query := col.Find(bson.M{}) 47 48 total,err := query.Count() 49 50 if err != nil { 51 return 0,nil, err 52 } 53 54 err = query.Sort("addr").Skip(skip).Limit(size).All(&htor) 55 if err != nil { 56 return 0,nil, err 57 } 58 59 60 return total,htor, nil 61 }