重构
This commit is contained in:
81
handle/api/req_login_alarm.go
Normal file
81
handle/api/req_login_alarm.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"omc/core"
|
||||
"omc/core/manage"
|
||||
"omc/core/parse"
|
||||
"omc/handle/service"
|
||||
|
||||
"github.com/aceld/zinx/ziface"
|
||||
"github.com/aceld/zinx/zlog"
|
||||
"github.com/aceld/zinx/znet"
|
||||
)
|
||||
|
||||
var ReqLoginAlarmMsgID uint32 = 1
|
||||
var ReqLoginAlarmMsgType uint32 = 2
|
||||
var ReqLoginAlarmMsgName string = "ackLoginAlarm"
|
||||
|
||||
// reqLoginAlarm 登录
|
||||
type ReqLoginAlarm struct {
|
||||
znet.BaseRouter
|
||||
}
|
||||
|
||||
// reqLoginAlarm;user=omc;key=omc;type=msg
|
||||
func (s *ReqLoginAlarm) Handle(request ziface.IRequest) {
|
||||
// 登录消息处理
|
||||
body, err := parse.RequestBodyDecode(request, []string{"user", "key", "type"})
|
||||
// 账户密码
|
||||
username := body.Data["user"]
|
||||
key := body.Data["key"]
|
||||
if err != nil || username == "" || key == "" {
|
||||
zlog.Ins().ErrorF("inlaid message body %s", err.Error())
|
||||
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.ResultError(ReqLoginAlarmMsgName, "inlaid message body", ""))
|
||||
return
|
||||
}
|
||||
|
||||
// 获取当前请求的通道
|
||||
m := manage.GetManager(request.GetConnection().GetName())
|
||||
if m == nil {
|
||||
zlog.Ins().ErrorF("server internal error")
|
||||
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.ResultError(ReqLoginAlarmMsgName, "server internal error", ""))
|
||||
return
|
||||
}
|
||||
uid, err := request.GetConnection().GetProperty("UID")
|
||||
if err != nil {
|
||||
zlog.Ins().ErrorF("GetProperty UID error %s", err)
|
||||
request.GetConnection().Stop()
|
||||
return
|
||||
}
|
||||
|
||||
// 登录信息
|
||||
err = service.UserLogin(username, key)
|
||||
if err != nil {
|
||||
zlog.Ins().ErrorF("LoginFail %s", err)
|
||||
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
|
||||
"result": "autherror",
|
||||
"resDesc": err.Error(),
|
||||
}))
|
||||
// 已登录的,登录错误超过3次,断开连接
|
||||
if uid != nil || uid != "" {
|
||||
isClose, _ := m.LoginFail(uid.(string))
|
||||
if isClose {
|
||||
request.GetConnection().Stop()
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// manager 用户登录更新
|
||||
err = m.LoginSuccess(uid.(string), username, key)
|
||||
if err != nil {
|
||||
zlog.Ins().ErrorF("manager:%s", err)
|
||||
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
|
||||
"result": "autherror",
|
||||
"resDesc": err.Error(),
|
||||
}))
|
||||
return
|
||||
}
|
||||
zlog.Ins().InfoF("user login loginSuccess,username:%s, type:%s, channel:%s", username, key, request.GetConnection().GetName())
|
||||
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.ResultSuccess(ReqLoginAlarmMsgName, "", ""))
|
||||
}
|
||||
Reference in New Issue
Block a user