package ws import ( "fmt" ) func init() { N.RegisterLogic(LogicLogin, loginFunc) } func loginFunc(c *Client, msg *Message) { if _, ok := msg.Data["token"]; !ok { _ = c.WriteJson(map[string]interface{}{ "msg": "token不能为空", "code": 506, }) return } claims, err := ParseAccessToken(msg.Data["token"].(string)) if err != nil { _ = c.WriteJson(map[string]interface{}{ "msg": "token解析出错, " + err.Error(), "code": 507, }) return } c.Online = true c.Id = fmt.Sprintf("%s:%d", claims.AccountType, claims.AccountId) c.AccountId = claims.AccountId c.AccountType = claims.AccountType c.Pid = claims.CustomerPid if err = c.Register(); err != nil { _ = c.WriteJson(map[string]interface{}{ "msg": err.Error(), "code": 404, }) return } if claims.AccountType == IDCustomer { if c.Pid == 0 { // 主账号发给子账号 m := &Message{ Type: TypeNotice, Dest: 0, Tag: IDCustomer, RoomId: c.RoomId, From: c.Id, Data: map[string]interface{}{ "content": "主账号上线", }, } c.Send(m) } else { // 子账号发给主账号 m := &Message{ Type: TypeNotice, Dest: claims.CustomerPid, Tag: IDCustomer, RoomId: c.RoomId, From: c.Id, Data: map[string]interface{}{ "content": "子账号上线", }, } c.Send(m) } } _ = c.WriteJson(map[string]interface{}{ "msg": "登录成功", "code": 200, }) }