From e62704c866ef71e0725e923fb5878a9d0e9e1cb5 Mon Sep 17 00:00:00 2001 From: 陆恒 Date: Fri, 5 Jun 2020 10:11:15 +0800 Subject: [PATCH] 提交 --- src/HttpServer/logic/function.go | 27 +++++++++++++++++++++++++++ src/HttpServer/logic/httpserver.go | 38 ++++++++++++++++++++++++++++++++++++++ src/common/redis/def.go | 17 ++++++++++------- 3 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 01932ab..507c6ba 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -1150,6 +1150,16 @@ func GetPrivateChatMessage(uuid, taduid int) []QueryChatMessageData { } func WorldChat(message string, uuid int) (int, string) { + + //需要检查是否能发言 + isexist, err := redishandler.GetRedisClient().HExists(redis.USER_CHATFORBIGLIST_WORLD_KEY, strconv.Itoa(uuid)) + if err == nil { + if isexist { + //被禁言了 无法发言 + return 99, "you are forbided" + } + } + length, err := redishandler.GetRedisClient().LLen(redis.WORLD_CHAT_INFO_KEY) if err == nil { if length >= CHATLIMITNUM { @@ -1192,6 +1202,15 @@ func WorldChat(message string, uuid int) (int, string) { } func TeamChat(message string, uuid int) (int, string) { + //需要检查是否能发言 + isexist, err := redishandler.GetRedisClient().HExists(redis.USER_CHATFORBIGLIST_TEAM_KEY, strconv.Itoa(uuid)) + if err == nil { + if isexist { + //被禁言了 无法发言 + return 99, "you are forbided" + } + } + tid, err := QueryUserTeamId(uuid) if err != nil { logger.Error("TeamChat err=%v", err) @@ -1240,6 +1259,14 @@ func TeamChat(message string, uuid int) (int, string) { } func PrivateChat(message string, uuid int, taruid int) (int, string) { + isexist, err := redishandler.GetRedisClient().HExists(redis.USER_CHATFORBIGLIST_PRIVATE_KEY, strconv.Itoa(uuid)) + if err == nil { + if isexist { + //被禁言了 无法发言 + return 99, "you are forbided" + } + } + //存入待收人的列表 rkey := redis.USER_CHAT_PRIVATE_INFO_KEY + ":" + strconv.Itoa(taruid) + ":" + strconv.Itoa(uuid) length, err := redishandler.GetRedisClient().LLen(rkey) diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index b02eb84..b18c196 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -4,6 +4,7 @@ import ( "HttpServer/conf" "HttpServer/redishandler" "common/logger" + "common/redis" "fmt" "io" "io/ioutil" @@ -71,6 +72,7 @@ func startServerHttpServe() { http.HandleFunc("/catcafe/ClearData", ClearData) //情况账号的测试接口 http.HandleFunc("/catcafe/AddWhiteList", AddWhiteList) //情况账号的测试接口 http.HandleFunc("/catcafe/AddGoldAndLove", AddGoldAndLove) //情况账号的测试接口 + http.HandleFunc("/catcafe/ForbidChats", ForbidChats) //禁言接口 http.HandleFunc("/catcafe/QueryAllAccount", QueryAllAccount) //查询所有账号的等级信息等数据 //------------------------------------------------------------- http.HandleFunc("/catcafe/login", UserLogin) //游客登录 @@ -258,6 +260,42 @@ func QueryAllAccount(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "success") } +func ForbidChats(w http.ResponseWriter, r *http.Request) { + query := r.URL.Query() + suuid := query.Get("uuid") + stype := query.Get("type") //0世界频道 1工会频道 2私聊 + soption := query.Get("option") //1解封 其他禁言 + + if suuid == "" { + fmt.Fprint(w, "uuid is nil,please check") + return + } + + rkey := "" + if stype == "0" { + rkey = redis.USER_CHATFORBIGLIST_WORLD_KEY + } else if stype == "1" { + rkey = redis.USER_CHATFORBIGLIST_TEAM_KEY + } else { + rkey = redis.USER_CHATFORBIGLIST_PRIVATE_KEY + } + + if soption == "1" { + err := redishandler.GetRedisClient().HDel(rkey, suuid) + if err != nil { + logger.Error("ForbidChats err=%v") + } + } else { + err := redishandler.GetRedisClient().HSet(rkey, suuid, "1") + if err != nil { + logger.Error("ForbidChats err=%v") + } + } + + fmt.Fprint(w, "禁言成功!") + +} + func AddGoldAndLove(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() diff --git a/src/common/redis/def.go b/src/common/redis/def.go index 93b3bd4..eab8cd8 100644 --- a/src/common/redis/def.go +++ b/src/common/redis/def.go @@ -22,11 +22,14 @@ const ( USER_BACKUP_DATA = "CATCAFE_USER_BACKUP_DATA" //玩家数据保存的备份 USER_NEW_DATA_KEY = "cat:cafe:data_new:where:data_uid:" //玩家数据保存的新的key - USER_CHAT_ISNEW = "CATCAFE_USER_CHAT_ISNEW" //hset field为uuid 存在表示有新消息了不用再去计算 否则需要挨个去判断 - WORLD_CHAT_INFO_KEY = "CATCAFE_WORLD_CHAT_INFO_KEY" //存储的是世界聊天 list结构 最新的消息在最头部 - USER_CHAT_TEAM_LASTGET_KEY = "CATCAFE_USER_CHAT_TEAM_LASTGET_KEY" // 结构是hset field是uuid value是存储的是最后一次获取工会聊天的时间戳,用于和工会聊天最新一条消息做对比,如果时间比最新一条小则有新的消息 - USER_CHAT_TEAM_INFO_KEY = "CATCAFE_USER_CHAT_TEAM_INFO_KEY" // 加teamid 存储的是队伍聊天的信息 list结构 最新的消息在最头部 - USER_CHAT_PRIVATE_LASTGET_KEY = "CATCAFE_USER_CHAT_PRIVATE_LASTGET_KEY" // hset key加自己的uuid field为目标的uuid value为时间戳 - USER_CHAT_PRIVATE_INFO_KEY = "CATCAFE_USER_CHAT_PRIVATE_INFO_KEY" //list key需要加上自己的:uuid再加上目标:uuid 存储的是和自己相关的所有聊天信息 - USER_CHAT_EMOJUNLOCK_KEY = "CATCAFE_USER_CHAT_EMOJUNLOCK_KEY" //hset 记录的是玩家表情页签解锁情况 []int 0表示未解锁 1表示解锁 + USER_CHAT_ISNEW = "CATCAFE_USER_CHAT_ISNEW" //hset field为uuid 存在表示有新消息了不用再去计算 否则需要挨个去判断 + WORLD_CHAT_INFO_KEY = "CATCAFE_WORLD_CHAT_INFO_KEY" //存储的是世界聊天 list结构 最新的消息在最头部 + USER_CHAT_TEAM_LASTGET_KEY = "CATCAFE_USER_CHAT_TEAM_LASTGET_KEY" // 结构是hset field是uuid value是存储的是最后一次获取工会聊天的时间戳,用于和工会聊天最新一条消息做对比,如果时间比最新一条小则有新的消息 + USER_CHAT_TEAM_INFO_KEY = "CATCAFE_USER_CHAT_TEAM_INFO_KEY" // 加teamid 存储的是队伍聊天的信息 list结构 最新的消息在最头部 + USER_CHAT_PRIVATE_LASTGET_KEY = "CATCAFE_USER_CHAT_PRIVATE_LASTGET_KEY" // hset key加自己的uuid field为目标的uuid value为时间戳 + USER_CHAT_PRIVATE_INFO_KEY = "CATCAFE_USER_CHAT_PRIVATE_INFO_KEY" //list key需要加上自己的:uuid再加上目标:uuid 存储的是和自己相关的所有聊天信息 + USER_CHAT_EMOJUNLOCK_KEY = "CATCAFE_USER_CHAT_EMOJUNLOCK_KEY" //hset 记录的是玩家表情页签解锁情况 []int 0表示未解锁 1表示解锁 + USER_CHATFORBIGLIST_WORLD_KEY = "CAECAFE_USER_CHATFORBIGLIST_WORLD_KEY" //hset 记录玩家世界是否被禁言 + USER_CHATFORBIGLIST_TEAM_KEY = "CAECAFE_USER_CHATFORBIGLIST_TEAM_KEY" //hset 记录玩家工会是否被禁言 + USER_CHATFORBIGLIST_PRIVATE_KEY = "CAECAFE_USER_CHATFORBIGLIST_PRIVATE_KEY" //hset 记录玩家私聊是否被禁言 ) -- libgit2 0.21.0