123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- package v1
- import (
- "context"
- "designs/app/common/request"
- "designs/app/common/response"
- "designs/global"
- "github.com/gin-gonic/gin"
- "strconv"
- "time"
- )
- // 总览,返回当天的 接口访问总数,登录人数,新增用户数
- func Overview(c *gin.Context) {
- form := request.Check(c, &struct {
- Day string `form:"day" json:"day" binding:"required"`
- }{})
- //查询接口访问次数
- dayCount, err := global.App.Redis.Get(context.Background(), "dayLog:"+form.Day).Result()
- if err != nil {
- global.App.Log.Error("redis incr error", "err", err)
- }
- dayLoginLog, err := global.App.Redis.Get(context.Background(), "dayLog:"+form.Day).Result()
- if err != nil {
- global.App.Log.Error("redis get error", "err", err)
- }
- //查询新注册人数
- dayRegisterLog, err := global.App.Redis.Get(context.Background(), "registerDayLog:"+form.Day).Result()
- if err != nil {
- global.App.Log.Error("redis get error", "err", err)
- }
- response.Success(c, gin.H{
- "data": map[string]interface{}{
- "dayCount": dayCount,
- "dayLoginLog": dayLoginLog,
- "dayRegisterLog": dayRegisterLog,
- },
- })
- }
- // 获取指定接口的请求次数 (小时的, 天的)
- // 后期还可以根据游戏,平台 ,甚至用户等参数,去获取接口访问的频率
- func GetInterfaceLog(c *gin.Context) {
- form := request.Check(c, &struct {
- Day string `form:"day" json:"day" binding:""`
- Hour string `form:"hour" json:"hour" binding:""`
- Interface string `form:"interface" json:"interface" binding:"required"`
- Pf string `form:"pf" json:"pf" binding:""`
- Gid string `form:"gid" json:"gid" binding:""`
- }{})
- if form.Hour == "" && form.Day == "" {
- response.Fail(c, 1003, "day ,和hour 参数必须选一个传")
- }
- var key string
- if form.Day != "" {
- key = "dayLog:"
- } else if form.Hour != "" {
- key = "hourInterfaceLog:"
- }
- if form.Pf != "" && form.Gid != "" {
- key = key + form.Gid + ":" + form.Pf
- }
- key = key + ":" + form.Interface
- if form.Day != "" {
- key = key + ":" + form.Day
- } else if form.Hour != "" {
- key = key + ":" + form.Hour
- }
- //查询新注册人数
- res, err := global.App.Redis.Get(context.Background(), key).Result()
- if err != nil {
- global.App.Log.Error("redis get error", "err", err)
- }
- response.Success(c, gin.H{
- "data": res,
- })
- }
- // 获取所有的接口,以及接口的名字
- func GetInterfaceInfo(c *gin.Context) {
- response.Success(c, gin.H{
- "data": []struct {
- Name string `json:"name"`
- Path string `json:"path"`
- }{
- {Name: "登录", Path: "/v1/user/login"},
- {Name: "刷新", Path: "/v1/user/refreshToken"},
- {Name: "添加游戏配置", Path: "/v1/user/addGidConfig"},
- {Name: "查看游戏配置", Path: "/v1/user/getGidConfig"},
- {Name: "查看系统时间", Path: "/v1/user/getSysTime"},
- {Name: "获取用户数据", Path: "/v1/user/getUserData"},
- {Name: "设置游戏数据", Path: "/v1/user/setGameData"},
- {Name: "获取游戏数据", Path: "/v1/user/getGameData"},
- {Name: "更新用户信息", Path: "/v1/user/updateUserInfo"},
- {Name: "设置排行数据", Path: "/v1/user/SetRankData"},
- {Name: "获取排行数据", Path: "/v1/user/getRankData"},
- {Name: "设置省内排行数据", Path: "/v1/user/setProvinceRankData"},
- {Name: "获取省内排行数据", Path: "/v1/user/getProvinceRankData"},
- {Name: "更新用户位置数据", Path: "/v1/user/getProvinceRankSumData"},
- {Name: "获取省内排行总榜数据", Path: "/v1/user/updateUserlocation"},
- },
- })
- }
- // 获取某一日内,接口每个小时的访问数
- func GetInterfaceData(c *gin.Context) {
- form := request.Check(c, &struct {
- Day string `form:"day" json:"day" binding:""`
- Interface string `form:"interface" json:"interface" binding:"required"`
- Pf string `form:"pf" json:"pf" binding:""`
- Gid string `form:"gid" json:"gid" binding:""`
- }{})
- type hourDara struct {
- Hour int `json:"hour"`
- Data int `json:"data"`
- }
- var res []hourDara
- for i := 1; i <= 24; i++ {
- key := "hourInterfaceLog:" + form.Interface + ":" + form.Day + strconv.Itoa(i)
- if form.Pf != "" && form.Gid != "" {
- key = "hourInterfaceLog:" + form.Gid + ":" + form.Pf + ":" + form.Interface + ":" + form.Day + strconv.Itoa(i)
- }
- data, err := global.App.Redis.Get(context.Background(), key).Result()
- if err != nil {
- global.App.Log.Error("redis get error", "err", err)
- }
- dataInt, _ := strconv.Atoi(data)
- res = append(res, hourDara{
- Hour: i,
- Data: dataInt,
- })
- }
- response.Success(c, gin.H{
- "data": res,
- })
- }
- // 获取某一区间内,接口每天的访问数
- func GetInterfaceDataByDay(c *gin.Context) {
- form := request.Check(c, &struct {
- Start string `form:"start" json:"start" binding:""`
- End string `form:"end" json:"end" binding:""`
- Interface string `form:"interface" json:"interface" binding:"required"`
- Pf string `form:"pf" json:"pf" binding:""`
- Gid string `form:"gid" json:"gid" binding:""`
- }{})
- dayRange, err := GenerateDaysBetween(form.Start, form.End)
- if err != nil {
- response.Fail(c, 1003, err.Error())
- return
- }
- type dayData struct {
- Day string `json:"day"`
- Data int `json:"data"`
- }
- var res []dayData
- for _, v := range dayRange {
- key := "dayLog:" + form.Interface + ":" + v
- if form.Pf != "" && form.Gid != "" {
- key = "dayLog:" + form.Gid + ":" + form.Pf + ":" + form.Interface + ":" + v
- }
- data, err := global.App.Redis.Get(context.Background(), key).Result()
- if err != nil {
- global.App.Log.Error("redis get error", "err", err)
- }
- dataInt, _ := strconv.Atoi(data)
- res = append(res, dayData{
- Day: v,
- Data: dataInt,
- })
- }
- response.Success(c, gin.H{
- "data": res,
- })
- }
- func GenerateDaysBetween(startDate, endDate string) ([]string, error) {
- start, err := time.Parse("20060102", startDate)
- if err != nil {
- return nil, err
- }
- end, err := time.Parse("20060102", endDate)
- if err != nil {
- return nil, err
- }
- var days []time.Time
- for curr := start; !curr.After(end); curr = curr.AddDate(0, 0, 1) {
- days = append(days, curr)
- }
- var res []string
- for _, v := range days {
- res = append(res, v.Format("20060102"))
- }
- return res, nil
- }
|