Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
xuzhenhao
/
rlw-dev
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit c06b5b7d
authored
Dec 28, 2017
by
xuzhenhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改了排行榜个人排行以及前后数据返回
1 parent
47bb6f9c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
111 additions
and
13 deletions
sdkredis/ice_gametopREDIS.go
sdkredis/redisCommon.go
sdkredis/ice_gametopREDIS.go
View file @
c06b5b7
...
...
@@ -383,19 +383,22 @@ func IceGameTopRedisGetSingleUserRangeRankInfo(uid string, gtid string, gid stri
return
nil
,
resIndex
,
err
}
// 获取当前用户排名
rank
,
err
:=
RedisZRank
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
rank
,
err
:=
GetSingleUserRank
(
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
if
err
!=
nil
{
return
nil
,
rank
.
(
string
),
err
}
rankIndex
:=
rank
.
(
int
)
//获取当前用户分数
score
,
err
:=
RedisZScore
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
if
err
!=
nil
{
resIndex
=
"105202"
return
nil
,
resIndex
,
err
}
if
rank
==
nil
{
if
score
==
nil
{
err
=
errors
.
New
(
"用户未提交分数"
)
return
nil
,
"105201"
,
err
}
log
.
Println
(
"key:"
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
log
.
Println
(
"rank:"
,
rank
)
rankIndex
:=
int
(
rank
.
(
int64
))
scoreString
:=
"("
+
score
.
(
string
)
// 获取当前用户前x位和后x位的排名数据
var
prerankIndex
int
var
nextrankIndex
int
...
...
@@ -427,11 +430,67 @@ func IceGameTopRedisGetSingleUserRangeRankInfo(uid string, gtid string, gid stri
nextrankIndex
=
rankIndex
+
nextrankIndex
// 排序
var
strList
[]
string
var
strList
,
strList1
,
strList2
[]
string
if
sorceorder
==
"1"
{
strList
,
err
=
RedisSort
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
prerankIndex
,
nextrankIndex
)
if
nextrankIndex
!=
0
{
strList1
,
err
=
RedisZRangeByScore
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
score
,
"+inf"
,
"true"
,
0
,
nextrankIndex
)
}
if
prerankIndex
!=
0
{
strList2
,
err
=
RedisZRevRangeByScore
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
score
,
"-inf"
,
"true"
,
0
,
prerankIndex
)
//将结果倒序
var
tempList
[]
string
for
i
:=
len
(
strList2
);
i
<
0
;
i
-=
2
{
tempList
=
append
(
tempList
,
strList2
[
i
-
1
])
tempList
=
append
(
tempList
,
strList2
[
i
])
}
strList2
=
tempList
}
if
len
(
strList2
)
==
0
{
strList
=
append
(
strList
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
strList
=
append
(
strList
,
score
.
(
string
))
if
len
(
strList1
)
!=
0
{
strList
=
append
(
strList
,
strList1
...
)
}
}
else
{
strList
=
append
(
strList
,
strList2
...
)
strList
=
append
(
strList
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
strList
=
append
(
strList
,
score
.
(
string
))
if
len
(
strList1
)
!=
0
{
strList
=
append
(
strList
,
strList1
...
)
}
}
}
else
if
sorceorder
==
"0"
{
strList
,
err
=
RedisReverseSort
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
prerankIndex
,
nextrankIndex
)
if
nextrankIndex
!=
0
{
strList1
,
err
=
RedisZRangeByScore
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
score
,
"+inf"
,
"true"
,
0
,
prerankIndex
)
//将结果倒序
var
tempList
[]
string
for
i
:=
len
(
strList1
);
i
<
0
;
i
-=
2
{
tempList
=
append
(
tempList
,
strList1
[
i
-
1
])
tempList
=
append
(
tempList
,
strList1
[
i
])
}
strList1
=
tempList
}
if
prerankIndex
!=
0
{
strList2
,
err
=
RedisZRevRangeByScore
(
redisConn
,
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
score
,
"-inf"
,
"true"
,
0
,
nextrankIndex
)
}
if
len
(
strList1
)
==
0
{
strList
=
append
(
strList
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
strList
=
append
(
strList
,
score
.
(
string
))
if
len
(
strList2
)
!=
0
{
strList
=
append
(
strList
,
strList2
...
)
}
}
else
{
strList
=
append
(
strList
,
strList1
...
)
strList
=
append
(
strList
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
strList
=
append
(
strList
,
score
.
(
string
))
if
len
(
strList2
)
!=
0
{
strList
=
append
(
strList
,
strList2
...
)
}
}
}
if
err
!=
nil
{
resIndex
=
"105203"
...
...
@@ -446,7 +505,6 @@ func IceGameTopRedisGetSingleUserRangeRankInfo(uid string, gtid string, gid stri
igt
:=
make
([]
IGT
,
len
(
strList
)
/
2
)
log
.
Println
(
igt
)
log
.
Println
(
len
(
igt
))
index
:=
0
var
resultstr
string
var
valuecount
=
2
_
,
err
=
RedisDBSelect
(
redisConn
,
4
)
...
...
@@ -466,7 +524,11 @@ func IceGameTopRedisGetSingleUserRangeRankInfo(uid string, gtid string, gid stri
s
=
i
/
2
}
igt
[
s
]
.
UID
=
currUID
igt
[
s
]
.
RankIndex
=
prerankIndex
+
index
+
1
rank
,
err
:=
GetSingleUserRank
(
"sortset:gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
,
"ice_gametop:uid:"
+
uid
+
":gtid:"
+
gtid
+
":gid:"
+
gid
+
":toptype:"
+
toptype
+
":mykey"
)
if
err
!=
nil
{
return
nil
,
rank
.
(
string
),
err
}
igt
[
s
]
.
RankIndex
=
rank
.
(
int
)
igt
[
s
]
.
MyKey
=
strList
[
i
+
1
]
//查询储存昵称以及头像url的redis
resultstr
,
err
=
RedisGetKV
(
redisConn
,
"GUID:"
+
igt
[
s
]
.
UID
)
...
...
@@ -493,8 +555,6 @@ func IceGameTopRedisGetSingleUserRangeRankInfo(uid string, gtid string, gid stri
igt
[
s
]
.
NickName
=
result
[
0
]
//第一个为昵称
igt
[
s
]
.
HeadPortraitURL
=
result
[
1
]
//第二个为头像url
}
index
++
}
_
,
err
=
RedisDBSelect
(
redisConn
,
2
)
if
err
!=
nil
{
...
...
@@ -536,3 +596,21 @@ func IceGameTopRedisCreateRank(gtid string, gid string, toptype string, gtname s
return
nil
}
//获取单个用户的排名
func
GetSingleUserRank
(
key
string
,
member
string
)
(
rankIndex
interface
{},
err
error
)
{
redisConn
:=
RedisClient
.
GetConn
()
defer
RedisClose
(
redisConn
)
rank
,
err
:=
RedisZRank
(
redisConn
,
key
,
member
)
if
err
!=
nil
{
resIndex
=
"105202"
return
resIndex
,
err
}
if
rank
==
nil
{
err
=
errors
.
New
(
"用户未提交分数"
)
return
"105201"
,
err
}
log
.
Println
(
"key:"
,
key
)
log
.
Println
(
"rank:"
,
rank
)
rankIndex
=
int
(
rank
.
(
int64
))
}
sdkredis/redisCommon.go
View file @
c06b5b7
...
...
@@ -223,3 +223,23 @@ func RedisIncrBy(conn redis.Conn, key string, num int64) (reply interface{}, err
func
RedisZRank
(
conn
redis
.
Conn
,
key
string
,
member
string
)
(
reply
interface
{},
err
error
)
{
return
RedisCommand
(
conn
,
"zrank"
,
key
,
member
)
}
/*
* zrangebyscore
*/
func
RedisZRangeByScore
(
conn
redis
.
Conn
,
key
string
,
startScore
string
,
endScore
string
,
limit
string
,
limitStart
int
,
limitEnd
int
)
(
reply
interface
{},
err
error
)
{
if
limit
==
"true"
{
return
RedisCommand
(
conn
,
"zrangebyscore"
,
key
,
startScore
,
endScore
,
"withscore"
,
"limit"
,
limitStart
,
limitEnd
)
}
return
RedisCommand
(
conn
,
"zrangebyscore"
,
key
,
startScore
,
endScore
,
"withscore"
)
}
/*
* zrevrangebyscore
*/
func
RedisZRevRangeByScore
(
conn
redis
.
Conn
,
key
string
,
startScore
string
,
endScore
string
,
limit
string
,
limitStart
int
,
limitEnd
int
)
(
reply
interface
{},
err
error
)
{
if
limit
==
"true"
{
return
RedisCommand
(
conn
,
"zrevrangebyscore"
,
key
,
startScore
,
endScore
,
"withscore"
,
"limit"
,
limitStart
,
limitEnd
)
}
return
RedisCommand
(
conn
,
"zrevrangebyscore"
,
key
,
startScore
,
endScore
,
"withscore"
)
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment