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  }