package group_power_r import ( "git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/mycontext" "git.hilo.cn/hilo-common/resource/mysql" "git.hilo.cn/hilo-common/utils" "github.com/gin-gonic/gin" "github.com/jinzhu/now" "hilo-group/_const/enum/groupPower_e" "hilo-group/cv/group_power_cv" "hilo-group/cv/user_cv" "hilo-group/domain/model/groupPower_m" "hilo-group/domain/model/user_m" "hilo-group/myerr/bizerr" "hilo-group/req" "hilo-group/resp" "time" ) // @Tags 国家势力 // @Summary 家族榜单 // @Param token header string true "token" // @Param nonce header string true "随机数字" // @Param period path string true "榜单周期 day:日 week:周 month:月" // @Success 200 {object} group_power_cv.CvGroupPowerRank // @Router /v1/groupPower/rank/{period} [get] func GroupPowerRank(c *gin.Context) (*mycontext.MyContext, error) { myContext := mycontext.CreateMyContext(c.Keys) userId, err := req.GetUserId(c) if err != nil { return myContext, err } period := c.Param("period") if period != "day" && period != "week" && period != "month" { return myContext, bizerr.InvalidParameter } var beginDate, endDate string switch period { case "day": beginDate, endDate = time.Now().Format("2006-01-02"), time.Now().Format("2006-01-02") case "week": beginDate, endDate = utils.GetMonday(time.Now()).Format("2006-01-02"), utils.GetMonday(time.Now()).AddDate(0, 0, 6).Format("2006-01-02") case "month": beginDate, endDate = now.BeginningOfMonth().Format("2006-01-02"), now.EndOfMonth().Format("2006-01-02") } var model = domain.CreateModelContext(myContext) rank, err := groupPower_m.GetGroupPowerExpRank(model, beginDate, endDate, 30) if err != nil { return myContext, err } var ids []mysql.ID for _, g := range rank { ids = append(ids, g.GroupPowerId) } response := group_power_cv.CvGroupPowerRank{} myGroupPower, err := groupPower_m.GetGroupPowerUserOrNil(model, userId) if err != nil { return myContext, err } if myGroupPower != nil { ids = append(ids, myGroupPower.GroupPowerId) } grades, err := groupPower_m.MGetGroupPowerGrade(model, ids) if err != nil { return myContext, err } if myGroupPower != nil && myGroupPower.Role == groupPower_e.GroupPowerUserRoleMgr { myGroupPowerRank, err := groupPower_m.GetGroupPowerExpMyRank(model, beginDate, endDate, myGroupPower.GroupPowerId) if err != nil { return myContext, err } response.MyGroupPower = group_power_cv.CvGroupPowerRankData{ GroupPowerId: myGroupPower.GroupPowerId, GroupPic: "todo", Name: "todo", Nameplate: "todo", Grade: grades[myGroupPower.GroupPowerId].Grade, Exp: myGroupPowerRank.Exp, Rank: myGroupPowerRank.Rank, } } for r, v := range rank { response.Items = append(response.Items, group_power_cv.CvGroupPowerRankData{ GroupPowerId: v.GroupPowerId, GroupPic: "todo", // todo Name: "todo", Nameplate: "todo", Grade: grades[v.GroupPowerId].Grade, Exp: v.Exp, Rank: r + 1, // 查询已做排序 }) } resp.ResponseOk(c, response) return myContext, nil } type GroupPowerStarReq struct { GroupPowerId mysql.ID `form:"groupPowerId" binding:"required"` Type groupPower_e.GroupPowerStarType `form:"type" binding:"required"` PageSize int `form:"pageSize" binding:"required"` PageIndex int `form:"pageIndex" binding:"required"` } // @Tags 国家势力 // @Summary 家族之星 // @Param token header string true "token" // @Param nonce header string true "随机数字" // @Param groupPowerId query int true "分页大小 默认:10" default(10) // @Param type query string true "类型 1:送礼 2:活跃 3:收礼物" // @Param pageSize query int false "分页大小 默认:10" default(10) // @Param pageIndex query int false "第几个分页,从1开始 默认:1" default(1) // @Success 200 {object} []group_power_cv.CvGroupPowerStarData // @Router /v1/groupPower/star [get] func GroupPowerStar(c *gin.Context) (*mycontext.MyContext, error) { myContext := mycontext.CreateMyContext(c.Keys) param := new(GroupPowerStarReq) if err := c.ShouldBindQuery(param); err != nil { return myContext, err } if param.PageIndex <= 0 { param.PageIndex = 1 } var model = domain.CreateModelContext(myContext) offset, limit := (param.PageIndex-1)*param.PageSize, param.PageSize rank, err := groupPower_m.GetGroupPowerMonthStarRank(model, param.GroupPowerId, param.Type, offset, limit) if err != nil { return myContext, err } var response []group_power_cv.CvGroupPowerStarData var userIds []mysql.ID for _, row := range rank { userIds = append(userIds, row.UserId) } users, err := user_m.GetUserMapByIds(model, userIds) for _, row := range rank { user := users[row.UserId] response = append(response, group_power_cv.CvGroupPowerStarData{ CvUserTiny: user_cv.CvUserTiny{ Id: user.ID, ExternalId: user.ExternalId, Code: user.Code, Nick: user.Nick, Avatar: user.Avatar, }, Score: row.Score, }) } resp.ResponseOk(c, response) return myContext, nil }