diff --git a/internal/serviceGame/game_role.go b/internal/serviceGame/game_role.go index 60103b3..08be0f2 100644 --- a/internal/serviceGame/game_role.go +++ b/internal/serviceGame/game_role.go @@ -87,58 +87,18 @@ var DateFormat = "2006-01-02" func (s *gameRoleImpl) GetOnlineTopList(ctx context.Context, req *game.RoleOnlineTopReq) (res *game.RoleOnlineTopRes, err error) { res = new(game.RoleOnlineTopRes) - fsql := fmt.Sprintf(`select num,server,channel,date from game_online where STR_TO_DATE(date, "%%Y-%%m-%%d")="%s" `, time.Now().Format(DateFormat)) + fsql := fmt.Sprintf(`select max(num) as num,server,channel,date from game_online where STR_TO_DATE(date, "%%Y-%%m-%%d")="%s" `, time.Now().Format(DateFormat)) if req.ServerId != 0 { - fsql += fmt.Sprintf(" and server=%d ", req.ServerId) + fsql += fmt.Sprintf("and server=%d ", req.ServerId) } - data := []game.RoleOnlineTop{} - err = g.Model().Raw(fsql).Scan(&data) - - //g.Log().Printf(ctx, "res1: %v", gjson.MustEncodeString(data)) - res1 := []game.RoleOnlineTop{} - for _, v := range data { - index := isContain(res1, v.Date, v.Server) - if index == -1 { - v1 := game.RoleOnlineTop{ - Server: v.Server, - Date: v.Date, - Num: v.Num, - } - res1 = append(res1, v1) - } else { - res1[index].Num += v.Num - } - } - //g.Log().Printf(ctx, "res1: %v", gjson.MustEncodeString(res1)) - for _, v := range res1 { - index := isContain(res.Onlines, "", v.Server) - if index == -1 { - v1 := game.RoleOnlineTop{ - Server: v.Server, - Date: "", - Num: v.Num, - } - res.Onlines = append(res.Onlines, v1) - } else { - if res.Onlines[index].Num < v.Num { - res.Onlines[index].Num = v.Num - } - //g.Log().Printf(ctx, "v1: %v, v: %v", gjson.MustEncodeString(res.Onlines[index]), gjson.MustEncodeString(v)) - } - } - g.Log().Printf(ctx, "res.Onlines: %v", gjson.MustEncodeString(res.Onlines)) + fsql += "group by date,server,channel" + sSql := fmt.Sprintf(`select sum(b.num) as num,b.server,b.date from (%s) as b group by b.date,b.server`, fsql) + tsql := fmt.Sprintf(`select max(a.num) as num,a.server from (%s) as a group by a.server ORDER BY a.server asc`, sSql) + err = g.Model().Raw(tsql).Scan(&res.Onlines) + //g.Log().Printf(ctx, "res.Onlines: %v", gjson.MustEncodeString(res.Onlines)) return } -func isContain(data []game.RoleOnlineTop, date string, server int) int { - for k, v := range data { - if date == v.Date && server == v.Server { - return k - } - } - return -1 -} - func (s *gameRoleImpl) GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes, err error) { res, err = internal.GetAccount(ctx, req) return diff --git a/internal/serviceGame/internal/basicinfo.go b/internal/serviceGame/internal/basicinfo.go index aab8cf1..38121f9 100644 --- a/internal/serviceGame/internal/basicinfo.go +++ b/internal/serviceGame/internal/basicinfo.go @@ -910,8 +910,8 @@ func LoginOut(ctx context.Context, req *game.LoginOutReq) (res *game.LoginOutRes }) } } - if gtime.Timestamp()-online[req.Server] > 2 { - online[req.Server] = gtime.Timestamp() + if gtime.Now().Unix()-online[req.Server] > 5 { + online[req.Server] = gtime.Now().Unix() var onlineData []entity.OnlineData onlineModel := g.Model("login_out_log", "a"). diff --git a/internal/serviceGame/internal/cdKey.go b/internal/serviceGame/internal/cdKey.go index 10aff8e..b23894a 100644 --- a/internal/serviceGame/internal/cdKey.go +++ b/internal/serviceGame/internal/cdKey.go @@ -5,7 +5,6 @@ import ( "crypto/md5" "errors" "fmt" - "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gfile" "log" @@ -138,17 +137,25 @@ func GetGiftExchangeConfig(ctx context.Context, req *game.GetGiftExchangeListReq } res.Total, err = model.Count() err = model.Page(req.PageNum, req.PageSize).OrderDesc("id").Scan(&res.List) - log.Println("GetGiftExchangeConfig: ", gjson.MustEncodeString(res)) + //log.Println("GetGiftExchangeConfig: ", gjson.MustEncodeString(res)) return } +var fileSize = map[string]*FileSize{} + +type FileSize struct { + Size int64 + Times int +} + func GetGiftExchange(ctx context.Context, req *game.GetGiftExchangeReq) (res *game.GetGiftExchangeRes, err error) { res = new(game.GetGiftExchangeRes) var path = gfile.Join(gfile.RealPath("download"), req.File) - log.Println("GetGiftExchange: ", req.File, path, gfile.Exists(path)) - if gfile.Exists(path) { + //log.Println("GetGiftExchange: ", req.File, path, gfile.Exists(path)) + if gfile.Exists(path) && gfile.Size(path) != 0 && fileSize[path] != nil && gfile.Size(path) == fileSize[path].Size { res.State = 1 } + fileSize[path] = &FileSize{Size: gfile.Size(path), Times: 0} return }