Commit 32fb64dc authored by hujiebin's avatar hujiebin

批量获取用户范围上麦时长

parent 4be5481e
...@@ -89,3 +89,18 @@ func MGetUserOnMicSeconds(model *domain.Model, day string, tz timezone_e.Timezon ...@@ -89,3 +89,18 @@ func MGetUserOnMicSeconds(model *domain.Model, day string, tz timezone_e.Timezon
} }
return res, nil 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
}
...@@ -38,3 +38,34 @@ func MGetUserOnMicSeconds(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -38,3 +38,34 @@ func MGetUserOnMicSeconds(c *gin.Context) (*mycontext.MyContext, error) {
resp.ResponseOk(c, response) resp.ResponseOk(c, response)
return myCtx, nil 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
}
...@@ -161,6 +161,7 @@ func InitRouter() *gin.Engine { ...@@ -161,6 +161,7 @@ func InitRouter() *gin.Engine {
innerMic := inner.Group("/mic") innerMic := inner.Group("/mic")
{ {
innerMic.GET("/onMicSeconds", wrapper(mic_r.MGetUserOnMicSeconds)) innerMic.GET("/onMicSeconds", wrapper(mic_r.MGetUserOnMicSeconds))
innerMic.GET("/onMicSeconds/range", wrapper(mic_r.MGetUserOnMicSecondsRange))
} }
r.GET("/test", wrapper(group_power_r.Test)) r.GET("/test", wrapper(group_power_r.Test))
return r return r
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment