From afa4ef12db73c33f27962ae5a171bce08cb244f8 Mon Sep 17 00:00:00 2001 From: lwl0608 Date: Wed, 4 Sep 2024 19:05:49 +0800 Subject: [PATCH] total --- api/proto/vas/proto/vas.go | 1 + app/mix/controller/zone_vas_api.go | 3 ++- app/mix/dao/mysql_zone.go | 25 +++++++++++++++++++++++++ app/mix/service/logic/vas_zone.go | 9 +++++++++ app/mix/service/vasservice.go | 5 ++++- 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/api/proto/vas/proto/vas.go b/api/proto/vas/proto/vas.go index 833e6da9..7fb47529 100644 --- a/api/proto/vas/proto/vas.go +++ b/api/proto/vas/proto/vas.go @@ -272,6 +272,7 @@ type GetZoneMemberListV2Data struct { List []*ZoneMemberVo `json:"list"` Offset int64 `json:"offset"` More int32 `json:"more"` + Total int64 `json:"total"` } type GetZoneMemberListV2Resp struct { diff --git a/app/mix/controller/zone_vas_api.go b/app/mix/controller/zone_vas_api.go index 01cf1c00..8c0627c6 100644 --- a/app/mix/controller/zone_vas_api.go +++ b/app/mix/controller/zone_vas_api.go @@ -142,7 +142,7 @@ func ZoneMemberListV2(ctx *gin.Context) { ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam) return } - list, ec, err := service.DefaultService.ZoneMemberListV2(ctx, req) + list, total, ec, err := service.DefaultService.ZoneMemberListV2(ctx, req) if ec != errcode.ErrCodeVasSrvOk { logger.Error("ZoneMemberList fail, req: %v, ec: %v", util.ToJson(req), ec) if ec == errcode.ErrCodeVasSrvFail && err != nil { @@ -155,6 +155,7 @@ func ZoneMemberListV2(ctx *gin.Context) { data := &vasproto.GetZoneMemberListV2Data{ List: list, Offset: req.Offset + int64(len(list)), + Total: total, } if int64(len(list)) >= req.Limit { data.More = 1 diff --git a/app/mix/dao/mysql_zone.go b/app/mix/dao/mysql_zone.go index 56034236..54778692 100644 --- a/app/mix/dao/mysql_zone.go +++ b/app/mix/dao/mysql_zone.go @@ -465,6 +465,31 @@ func (m *Mysql) GetZoneMemberListV2(ctx *gin.Context, tx *sqlx.Tx, zid, offset, return } +// 获取空间成员列表 +func (m *Mysql) GetZoneMemberCnt(ctx *gin.Context, tx *sqlx.Tx, zid int64, memType int32) (cnt int64, err error) { + type CntSt struct { + Cnt int64 `json:"cnt"` + } + cntSt := CntSt{} + sqlStr := fmt.Sprintf(fmt.Sprintf("select count(1) as cnt from %s where zid=? and member_type=?", TableVasZoneMember)) + args := []interface{}{zid, memType} + if tx != nil { + err = tx.GetContext(ctx, &cntSt, sqlStr, args...) + } else { + db := m.getDBVas() + err = db.SelectContext(ctx, &cntSt, sqlStr, args...) + } + if err == sql.ErrNoRows { + err = nil + return + } + if err != nil { + return + } + cnt = cntSt.Cnt + return +} + // 获取空间成员列表 func (m *Mysql) SearchZoneMember(ctx *gin.Context, tx *sqlx.Tx, zid, memMid int64) (list []*dbstruct.ZoneMember, err error) { list = make([]*dbstruct.ZoneMember, 0) diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index c422f7d0..c1dab06e 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -1006,6 +1006,15 @@ func (v *Vas) GetZoneMemberListV2(ctx *gin.Context, zid, offset, limit int64, me return } +// 空间成员列表 +func (v *Vas) GetZoneMemberCnt(ctx *gin.Context, zid int64, memType int32) (cnt int64, err error) { + cnt, err = v.store.GetZoneMemberCnt(ctx, nil, zid, memType) + if err != nil { + return + } + return +} + // 搜索空间成员 func (v *Vas) SearchZoneMember(ctx *gin.Context, zid, memMid int64) (list []*dbstruct.ZoneMember, err error) { list, err = v.store.SearchZoneMember(ctx, nil, zid, memMid) diff --git a/app/mix/service/vasservice.go b/app/mix/service/vasservice.go index efbf1ee8..b7d1d0a2 100644 --- a/app/mix/service/vasservice.go +++ b/app/mix/service/vasservice.go @@ -1001,7 +1001,7 @@ func (s *Service) ZoneMemberList(ctx *gin.Context, req *vasproto.GetZoneMemberLi return } -func (s *Service) ZoneMemberListV2(ctx *gin.Context, req *vasproto.GetZoneMemberListV2Req) (list []*vasproto.ZoneMemberVo, ec errcode.ErrCode, err error) { +func (s *Service) ZoneMemberListV2(ctx *gin.Context, req *vasproto.GetZoneMemberListV2Req) (list []*vasproto.ZoneMemberVo, total int64, ec errcode.ErrCode, err error) { list = make([]*vasproto.ZoneMemberVo, 0) // 获取成员列表 @@ -1028,6 +1028,9 @@ func (s *Service) ZoneMemberListV2(ctx *gin.Context, req *vasproto.GetZoneMember } list = append(list, tmp) } + + // 总数 + total, _ = _DefaultVas.GetZoneMemberCnt(ctx, req.Zid, req.MemberType) return }