Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
7
func updateUserOnLineStatus(msg proto.Message) {
Sign in to like and favorite skills
func updateUserOnLineStatus(msg proto.Message) { notifyMsg := &proto.UserStatusNotifyResp{} err := json.Unmarshal([]byte(msg.Data), notifyMsg) if err != nil { fmt.Println(util.GetFileLine(), "updateUserOnLineStatus json unmarshal failed", err) return } user, ok := onlineUserMap[notifyMsg.UserId] if !ok { user = &proto.UserInfo{ UserId: notifyMsg.UserId, } } user.Status = notifyMsg.Status onlineUserMap[notifyMsg.UserId] = user outPutUserOnLine() }
func (p *RedisMgr) getUser(conn redis.Conn, userId string) (user *proto.UserInfo, err error) { res, err := redis.String(conn.Do("Hget", UserTable, userId)) //star_coding //include key not exist and user not exsit if err != nil { fmt.Println("get User err ", err) if err == redis.ErrNil { err = proto.ErrUserNotExist } return } user = &proto.UserInfo{} err = json.Unmarshal([]byte(res), user) if err != nil { return } return } func (p *RedisMgr) Login(userId string, passwd string) (user *proto.UserInfo, err error) { fmt.Println(util.GetFileLine() + " redis handle login") conn := p.pool.Get() defer conn.Close() user, err = p.getUser(conn, userId) if err != nil { return } if user.UserId != userId || user.Passwd != passwd { err = proto.ErrInvalidPasswd return } user.Status = proto.ONLINE user.LastLogin = util.GetTodayDateTime() return } func (p *RedisMgr) Register(user *proto.UserInfo) (err error) { fmt.Println(util.GetFileLine() + " redis handle register") conn := p.pool.Get() defer conn.Close() if user == nil { fmt.Println(util.GetFileLine() + "invalid user") err = proto.ErrInvalidParams return } _, err = p.getUser(conn, user.UserId) //has exist if err == nil { err = proto.ErrUserExist return } //not unregister if err != proto.ErrUserNotExist { return } data, err := json.Marshal(user) if err != nil { return } _, err = conn.Do("HSet", UserTable, user.UserId, string(data)) if err != nil { return } return }
func (m *Map) Delete(key interface{}) { read, _ := m.read.Load().(readOnly) e, ok := read.m[key] if !ok && read.amended { m.mu.Lock() read, _ = m.read.Load().(readOnly) e, ok = read.m[key] if !ok && read.amended { delete(m.dirty, key) } m.mu.Unlock() } if ok { e.delete() } }