Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
im-microservice
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Li Feifei
im-microservice
Commits
a21c2425
Commit
a21c2425
authored
Jul 10, 2020
by
李洪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登录退出修改
parent
263bf26a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
185 additions
and
68 deletions
+185
-68
helper.go
helper/helper.go
+12
-2
im_user.go
sevice/im_user/im_user.go
+39
-5
im_user_login_db.go
sevice/im_user/im_user_login_db.go
+130
-57
main.go
sevice/im_user_relationship/main.go
+4
-4
No files found.
helper/helper.go
View file @
a21c2425
...
@@ -32,8 +32,8 @@ func GetNowTime() string {
...
@@ -32,8 +32,8 @@ func GetNowTime() string {
var
ctx
=
context
.
Background
()
var
ctx
=
context
.
Background
()
func
Get
Code
(
mobile
string
)
(
string
,
error
)
{
func
Get
Redis
(
field
string
)
(
string
,
error
)
{
val
,
err
:=
db
.
RedisClient
.
Get
(
ctx
,
mobile
)
.
Result
()
val
,
err
:=
db
.
RedisClient
.
Get
(
ctx
,
field
)
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
...
@@ -41,6 +41,16 @@ func GetCode(mobile string) (string, error) {
...
@@ -41,6 +41,16 @@ func GetCode(mobile string) (string, error) {
return
val
,
nil
return
val
,
nil
}
}
func
SetRedis
(
fieldKey
string
,
val
string
)
error
{
err
:=
db
.
RedisClient
.
Set
(
ctx
,
fieldKey
,
val
,
0
)
.
Err
()
return
err
}
func
DelRedis
(
fieldKey
string
)
error
{
err
:=
db
.
RedisClient
.
Del
(
ctx
,
fieldKey
)
.
Err
()
return
err
}
func
Paginate
(
count
,
step
,
page
int64
)
(
int64
,
int64
)
{
func
Paginate
(
count
,
step
,
page
int64
)
(
int64
,
int64
)
{
offset
:=
step
*
(
page
-
1
)
offset
:=
step
*
(
page
-
1
)
total
:=
int64
(
math
.
Ceil
(
float64
(
count
)
/
float64
(
step
)))
total
:=
int64
(
math
.
Ceil
(
float64
(
count
)
/
float64
(
step
)))
...
...
sevice/im_user/im_user.go
View file @
a21c2425
...
@@ -6,6 +6,7 @@ import (
...
@@ -6,6 +6,7 @@ import (
"im-microservice/pb"
"im-microservice/pb"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/grpc/status"
)
)
...
@@ -32,6 +33,11 @@ type ImUserQ struct {
...
@@ -32,6 +33,11 @@ type ImUserQ struct {
//注册
//注册
func
(
u
*
ImUserServer
)
ImUserRegister
(
ctx
context
.
Context
,
in
*
pb
.
ImUserRequest
)
(
reply
*
pb
.
ImUserRegReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImUserRegister
(
ctx
context
.
Context
,
in
*
pb
.
ImUserRequest
)
(
reply
*
pb
.
ImUserRegReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
// 是否已经注册过, 如果已经注册返回用户信息
// 是否已经注册过, 如果已经注册返回用户信息
if
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
);
c_user
.
Accid
!=
""
{
if
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
);
c_user
.
Accid
!=
""
{
err
=
status
.
Error
(
10438
,
"用户已存在"
)
err
=
status
.
Error
(
10438
,
"用户已存在"
)
...
@@ -52,6 +58,11 @@ func (u *ImUserServer) ImUserRegister(ctx context.Context, in *pb.ImUserRequest)
...
@@ -52,6 +58,11 @@ func (u *ImUserServer) ImUserRegister(ctx context.Context, in *pb.ImUserRequest)
//修改用户信息
//修改用户信息
func
(
u
*
ImUserServer
)
ImuserSave
(
ctx
context
.
Context
,
in
*
pb
.
ImUserRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImuserSave
(
ctx
context
.
Context
,
in
*
pb
.
ImUserRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
//查询用户是否存在
//查询用户是否存在
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
if
c_user
.
Token
==
""
{
if
c_user
.
Token
==
""
{
...
@@ -95,14 +106,19 @@ func (u *ImUserServer) ImuserSave(ctx context.Context, in *pb.ImUserRequest) (re
...
@@ -95,14 +106,19 @@ func (u *ImUserServer) ImuserSave(ctx context.Context, in *pb.ImUserRequest) (re
//用户登录
//用户登录
func
(
u
*
ImUserServer
)
ImUserLogin
(
ctx
context
.
Context
,
in
*
pb
.
ImUserLoginRequest
)
(
reply
*
pb
.
ImUserRegReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImUserLogin
(
ctx
context
.
Context
,
in
*
pb
.
ImUserLoginRequest
)
(
reply
*
pb
.
ImUserRegReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
//获取用户信息
//获取用户信息
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
if
c_user
.
Token
==
""
{
if
c_user
.
Token
==
""
{
err
=
status
.
Error
(
404
,
"用户不存在"
)
err
=
status
.
Error
(
404
,
"用户不存在"
)
return
return
}
}
//
更新用户登录时间
//
用户登录处理
_
,
err
=
LoginHandle
(
c_user
.
Id
,
in
.
GetPlatform
()
)
err
=
LoginHandle
(
in
)
if
err
!=
nil
{
if
err
!=
nil
{
//err = status.Error(500, "用户登录时间更新失败")
//err = status.Error(500, "用户登录时间更新失败")
return
return
...
@@ -116,14 +132,18 @@ func (u *ImUserServer) ImUserLogin(ctx context.Context, in *pb.ImUserLoginReques
...
@@ -116,14 +132,18 @@ func (u *ImUserServer) ImUserLogin(ctx context.Context, in *pb.ImUserLoginReques
//用户退出
//用户退出
func
(
u
*
ImUserServer
)
ImUserLoginOut
(
ctx
context
.
Context
,
in
*
pb
.
ImUserLoginRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImUserLoginOut
(
ctx
context
.
Context
,
in
*
pb
.
ImUserLoginRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
c_user
,
_
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
if
c_user
.
Accid
==
""
{
if
c_user
.
Accid
==
""
{
err
=
status
.
Error
(
404
,
"用户不存在"
)
err
=
status
.
Error
(
404
,
"用户不存在"
)
return
return
}
}
_
,
err
=
LoginOutHandle
(
c_user
.
Id
,
in
.
GetPlatform
()
)
err
=
LoginOutHandle
(
in
)
if
err
!=
nil
{
if
err
!=
nil
{
err
=
status
.
Error
(
500
,
"数据库操作失败"
)
return
return
}
}
...
@@ -133,6 +153,11 @@ func (u *ImUserServer) ImUserLoginOut(ctx context.Context, in *pb.ImUserLoginReq
...
@@ -133,6 +153,11 @@ func (u *ImUserServer) ImUserLoginOut(ctx context.Context, in *pb.ImUserLoginReq
//用户禁言
//用户禁言
func
(
u
*
ImUserServer
)
ImUserForbiddenWords
(
ctx
context
.
Context
,
in
*
pb
.
ImUserSetRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImUserForbiddenWords
(
ctx
context
.
Context
,
in
*
pb
.
ImUserSetRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
var
mute
int64
=
0
var
mute
int64
=
0
if
in
.
GetMute
()
==
true
{
if
in
.
GetMute
()
==
true
{
mute
=
1
mute
=
1
...
@@ -160,6 +185,11 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe
...
@@ -160,6 +185,11 @@ func (u *ImUserServer) ImUserForbiddenWords(ctx context.Context, in *pb.ImUserSe
//用户禁音视频
//用户禁音视频
func
(
u
*
ImUserServer
)
ImUserForbiddenAV
(
ctx
context
.
Context
,
in
*
pb
.
ImUserSetRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImUserForbiddenAV
(
ctx
context
.
Context
,
in
*
pb
.
ImUserSetRequest
)
(
reply
*
pb
.
ImUserSetReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
var
mute
int64
=
0
var
mute
int64
=
0
if
in
.
GetMute
()
==
true
{
if
in
.
GetMute
()
==
true
{
mute
=
1
mute
=
1
...
@@ -188,7 +218,11 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe
...
@@ -188,7 +218,11 @@ func (u *ImUserServer) ImUserForbiddenAV(ctx context.Context, in *pb.ImUserSetRe
//获取用户信息
//获取用户信息
func
(
u
*
ImUserServer
)
ImUserOne
(
ctx
context
.
Context
,
in
*
pb
.
ImUserOneRequest
)
(
reply
*
pb
.
ImUserOneReply
,
err
error
)
{
func
(
u
*
ImUserServer
)
ImUserOne
(
ctx
context
.
Context
,
in
*
pb
.
ImUserOneRequest
)
(
reply
*
pb
.
ImUserOneReply
,
err
error
)
{
// 请求超时
if
ctx
.
Err
()
==
context
.
Canceled
{
err
=
status
.
New
(
codes
.
Canceled
,
"Client cancelled, abandoning."
)
.
Err
()
return
}
reply
=
&
pb
.
ImUserOneReply
{}
reply
=
&
pb
.
ImUserOneReply
{}
c_user
,
err
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
c_user
,
err
:=
GetImUserByAccidAppkey
(
in
.
GetAccid
(),
in
.
Common
.
Appkey
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
sevice/im_user/im_user_login_db.go
View file @
a21c2425
package
im_user
package
im_user
import
(
import
(
"im-microservice/pb"
//"fmt"
//"fmt"
//"errors"
//"errors"
"im-microservice/db"
"bytes"
"encoding/json"
"im-microservice/helper"
"im-microservice/helper"
//"im-microservice/pb"
//"im-microservice/pb"
//"github.com/astaxie/beego/orm"
"github.com/astaxie/beego/orm"
"google.golang.org/grpc/status"
"google.golang.org/grpc/status"
)
)
const
(
ul_table_name
=
"im_user_login"
ul_user_id
=
"user_id"
ul_login_status
=
"login_status"
ul_updatetime
=
"updatetime"
ul_platform
=
"platform"
)
//用户登录处理
//用户登录处理
func
LoginHandle
(
user_id
int64
,
platform
string
)
(
db
.
ImUserLogin
,
error
)
{
func
LoginHandle
(
in
*
pb
.
ImUserLoginRequest
)
error
{
loginMap
:=
make
(
map
[
int
]
map
[
string
]
interface
{})
loginOne
:=
map
[
string
]
interface
{}{
"platform"
:
in
.
Platform
,
"Updatetime"
:
helper
.
GetNowTime
(),
}
num
:=
1
//查询该设备平台是否已经存在数据
//查询该设备平台是否已经存在数据
log_user
,
err
:=
GetLogin
(
user_id
,
platform
)
var
buffer
bytes
.
Buffer
if
err
!=
nil
{
buffer
.
WriteString
(
in
.
Accid
)
//插入数据
buffer
.
WriteString
(
"_"
)
log_user
.
LoginStatus
=
1
buffer
.
WriteString
(
in
.
Common
.
Appkey
)
log_user
.
Platform
=
platform
fieldKey
:=
buffer
.
String
()
log_user
.
Updatetime
=
helper
.
GetNowTime
()
jsonStr
,
err
:=
helper
.
GetRedis
(
fieldKey
)
log_user
.
UserId
=
user_id
_
,
err
:=
db
.
MysqlClient
.
Insert
(
&
log_user
)
if
err
==
nil
{
if
err
!=
nil
{
//不是第一次登录了
return
log_user
,
err
json
.
Unmarshal
([]
byte
(
jsonStr
),
&
loginMap
)
}
for
_
,
m
:=
range
loginMap
{
}
else
{
if
m
[
"platform"
]
==
in
.
Platform
{
//修改数据
err
=
status
.
Error
(
417
,
"该种设备已经登录了"
)
if
err
:=
UpdateLogin
(
user_id
,
platform
,
1
);
err
!=
nil
{
return
err
return
log_user
,
err
}
num
+=
1
}
}
log_user
.
LoginStatus
=
1
}
}
return
log_user
,
nil
}
//用户退出
loginMap
[
num
]
=
loginOne
func
LoginOutHandle
(
user_id
int64
,
platform
string
)
(
db
.
ImUserLogin
,
error
)
{
loginJson
,
_
:=
json
.
Marshal
(
loginMap
)
//查询登录信息
err
=
helper
.
SetRedis
(
fieldKey
,
string
(
loginJson
))
log_user
,
err
:=
GetLogin
(
user_id
,
platform
)
if
err
!=
nil
{
if
err
!=
nil
{
err
=
status
.
Error
(
500
,
"用户还没有登录信息"
)
return
err
return
log_user
,
err
}
//修改
if
err
:=
UpdateLogin
(
user_id
,
platform
,
0
);
err
!=
nil
{
return
log_user
,
err
}
}
return
log_user
,
nil
return
nil
}
}
//查询
//用户退出处理
func
GetLogin
(
user_id
int64
,
platform
string
)
(
db
.
ImUserLogin
,
error
)
{
func
LoginOutHandle
(
in
*
pb
.
ImUserLoginRequest
)
error
{
var
log_user
db
.
ImUserLogin
loginMap
:=
make
(
map
[
int
]
map
[
string
]
interface
{})
err
:=
db
.
MysqlClient
.
QueryTable
(
ul_table_name
)
.
Filter
(
ul_user_id
,
user_id
)
.
Filter
(
ul_platform
,
platform
)
.
One
(
&
log_user
)
var
buffer
bytes
.
Buffer
if
err
!=
nil
{
buffer
.
WriteString
(
in
.
Accid
)
return
log_user
,
err
buffer
.
WriteString
(
"_"
)
buffer
.
WriteString
(
in
.
Common
.
Appkey
)
fieldKey
:=
buffer
.
String
()
jsonStr
,
err
:=
helper
.
GetRedis
(
fieldKey
)
if
jsonStr
==
""
{
err
=
status
.
Error
(
404
,
"没有登录信息"
)
return
err
}
json
.
Unmarshal
([]
byte
(
jsonStr
),
&
loginMap
)
var
num
int
n
:=
0
for
k
,
m
:=
range
loginMap
{
if
m
[
"platform"
]
==
in
.
Platform
{
num
=
k
}
n
+=
1
}
if
n
==
1
{
err
=
helper
.
DelRedis
(
fieldKey
)
return
err
}
}
return
log_user
,
nil
}
//修改
delete
(
loginMap
,
num
)
func
UpdateLogin
(
user_id
int64
,
platform
string
,
login_status
int64
)
error
{
loginJson
,
_
:=
json
.
Marshal
(
loginMap
)
orm_params
:=
make
(
orm
.
Params
)
err
=
helper
.
SetRedis
(
fieldKey
,
string
(
loginJson
))
orm_params
[
ul_login_status
]
=
login_status
orm_params
[
ul_updatetime
]
=
helper
.
GetNowTime
()
_
,
err
:=
db
.
MysqlClient
.
QueryTable
(
ul_table_name
)
.
Filter
(
ul_user_id
,
user_id
)
.
Filter
(
ul_platform
,
platform
)
.
Update
(
orm_params
)
if
err
!=
nil
{
if
err
!=
nil
{
err
=
status
.
Error
(
500
,
err
.
Error
())
return
err
return
err
}
}
return
err
return
nil
}
}
// //用户登录处理
// func LoginHandle(in *pb.ImUserLoginRequest) (db.ImUserLogin, error) {
// //查询该设备平台是否已经存在数据
// var buffer bytes.Buffer
// buffer.WriteString(in.Accid)
// buffer.WriteString("_")
// buffer.WriteString(in.Common.Appkey)
// log_user, err := helper.GetRedis(buffer.String())
// if err != nil {
// //插入数据
// log_user.LoginStatus = 1
// log_user.Platform = platform
// log_user.Updatetime = helper.GetNowTime()
// log_user.UserId = user_id
// _, err := db.MysqlClient.Insert(&log_user)
// if err != nil {
// return log_user, err
// }
// } else {
// //修改数据
// if err := UpdateLogin(user_id, platform, 1); err != nil {
// return log_user, err
// }
// log_user.LoginStatus = 1
// }
// return log_user, nil
// }
// //用户退出
// func LoginOutHandle(user_id int64, platform string) (db.ImUserLogin, error) {
// //查询登录信息
// log_user, err := GetLogin(user_id, platform)
// if err != nil {
// err = status.Error(500, "用户还没有登录信息")
// return log_user, err
// }
// //修改
// if err := UpdateLogin(user_id, platform, 0); err != nil {
// return log_user, err
// }
// return log_user, nil
// }
// //查询
// func GetLogin(user_id int64, platform string) (db.ImUserLogin, error) {
// var log_user db.ImUserLogin
// err := db.MysqlClient.QueryTable(ul_table_name).Filter(ul_user_id, user_id).Filter(ul_platform, platform).One(&log_user)
// if err != nil {
// return log_user, err
// }
// return log_user, nil
// }
// //修改
// func UpdateLogin(user_id int64, platform string, login_status int64) error {
// orm_params := make(orm.Params)
// orm_params[ul_login_status] = login_status
// orm_params[ul_updatetime] = helper.GetNowTime()
// _, err := db.MysqlClient.QueryTable(ul_table_name).Filter(ul_user_id, user_id).Filter(ul_platform, platform).Update(orm_params)
// if err != nil {
// err = status.Error(500, err.Error())
// return err
// }
// return err
// }
sevice/im_user_relationship/main.go
View file @
a21c2425
...
@@ -29,10 +29,10 @@ func (us *UserRelationshipService) Add(ctx context.Context,
...
@@ -29,10 +29,10 @@ func (us *UserRelationshipService) Add(ctx context.Context,
// 更改用户版本信息
// 更改用户版本信息
u_map
:=
make
(
map
[
string
]
interface
{})
u_map
:=
make
(
map
[
string
]
interface
{})
u_map
[
"edition"
]
=
helper
.
GetNowTime
()
u_map
[
"edition"
]
=
helper
.
GetNowTime
()
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Accid
,
u_map
)
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Accid
,
in
.
Common
.
Appkey
,
u_map
)
// 更改请求用户版本信息
// 更改请求用户版本信息
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Faccid
,
u_map
)
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Faccid
,
in
.
Common
.
Appkey
,
u_map
)
reply
=
&
pb
.
UserRelationshipAddReply
{}
reply
=
&
pb
.
UserRelationshipAddReply
{}
return
return
...
@@ -52,10 +52,10 @@ func (us *UserRelationshipService) Delete(ctx context.Context,
...
@@ -52,10 +52,10 @@ func (us *UserRelationshipService) Delete(ctx context.Context,
// 更改用户版本信息
// 更改用户版本信息
u_map
:=
make
(
map
[
string
]
interface
{})
u_map
:=
make
(
map
[
string
]
interface
{})
u_map
[
"edition"
]
=
helper
.
GetNowTime
()
u_map
[
"edition"
]
=
helper
.
GetNowTime
()
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Accid
,
u_map
)
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Accid
,
in
.
Common
.
Appkey
,
u_map
)
// 更改被添加用户版本信息
// 更改被添加用户版本信息
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Faccid
,
u_map
)
_
,
_
=
im_user
.
UpdateImUser
(
in
.
Faccid
,
in
.
Common
.
Appkey
,
u_map
)
reply
=
&
pb
.
UserRelationshipAddReply
{}
reply
=
&
pb
.
UserRelationshipAddReply
{}
return
return
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment