From 32fb64dce3af8d09eb4acd5eb1a53c63237d4016 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Tue, 11 Apr 2023 14:53:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E8=8E=B7=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=8C=83=E5=9B=B4=E4=B8=8A=E9=BA=A6=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/model/mic_m/mic.go | 15 +++++++++++++++ route/mic_r/inner.go | 31 +++++++++++++++++++++++++++++++ route/router.go | 1 + 3 files changed, 47 insertions(+) diff --git a/domain/model/mic_m/mic.go b/domain/model/mic_m/mic.go index 5530205..d83f144 100644 --- a/domain/model/mic_m/mic.go +++ b/domain/model/mic_m/mic.go @@ -89,3 +89,18 @@ func MGetUserOnMicSeconds(model *domain.Model, day string, tz timezone_e.Timezon } return res, nil } + +// 批量获取用户上麦时长 +// @return userId->seconds +func MGetUserOnMicSecondsRange(model *domain.Model, beginDate, endDate string, tz timezone_e.Timezone, userIds []uint64) (map[mysql.ID]mysql.Num, error) { + var rows []UserOnMic + res := make(map[mysql.ID]mysql.Num) + if err := model.DB().Model(UserOnMic{}).Where("`date` >= ? AND `date` <= ? AND tz = ? AND user_id in ?", beginDate, endDate, tz, userIds).Find(&rows).Error; err != nil { + model.Log.Errorf("MGetUserOnMic fail:%v", err) + return res, err + } + for _, r := range rows { + res[r.UserId] = r.Seconds + } + return res, nil +} diff --git a/route/mic_r/inner.go b/route/mic_r/inner.go index 06ca920..a98ddeb 100644 --- a/route/mic_r/inner.go +++ b/route/mic_r/inner.go @@ -38,3 +38,34 @@ func MGetUserOnMicSeconds(c *gin.Context) (*mycontext.MyContext, error) { resp.ResponseOk(c, response) return myCtx, nil } + +type MGetUserOnMicSecondsRangeReq struct { + BeginDate string `form:"beginDate" binding:"required"` + EndDate string `form:"endDate" binding:"required"` + Ids []mysql.ID `form:"ids" binding:"required"` + Tz timezone_e.Timezone `form:"tz"` +} + +// @Tags 麦位-内部 +// @Summary 批量获取用户范围上麦时长 +// @Param beginDate query string true "天 格式2006-001-02" +// @Param endDate query string true "天 格式2006-001-02" +// @Param ids query string true "用户id,如:ids=1&ids=2&ids=3" +// @Param tz query string false "时区 0:北京时间(默认) 1:沙特时间" +// @Success 200 {object} map[uint64]uint32 +// @Router /inner/mic/onMicSeconds [get] +func MGetUserOnMicSecondsRange(c *gin.Context) (*mycontext.MyContext, error) { + myCtx := mycontext.CreateMyContext(c.Keys) + var model = domain.CreateModelContext(myCtx) + var req MGetUserOnMicSecondsRangeReq + if err := c.ShouldBindQuery(&req); err != nil { + return myCtx, err + } + onMic, err := mic_m.MGetUserOnMicSecondsRange(model, req.BeginDate, req.EndDate, req.Tz, req.Ids) + if err != nil { + return myCtx, err + } + response := onMic + resp.ResponseOk(c, response) + return myCtx, nil +} diff --git a/route/router.go b/route/router.go index 19d523c..5d7115f 100644 --- a/route/router.go +++ b/route/router.go @@ -161,6 +161,7 @@ func InitRouter() *gin.Engine { innerMic := inner.Group("/mic") { innerMic.GET("/onMicSeconds", wrapper(mic_r.MGetUserOnMicSeconds)) + innerMic.GET("/onMicSeconds/range", wrapper(mic_r.MGetUserOnMicSecondsRange)) } r.GET("/test", wrapper(group_power_r.Test)) return r -- 2.22.0