Commit 6e0d8bcb6399c1c7bdcd32d03f700e877ce0de7c
1 parent
8c80e014
Exists in
master
聊天相关接口
Showing
5 changed files
with
203 additions
and
42 deletions
Show diff stats
src/HttpServer/logic/datadef.go
| ... | ... | @@ -140,6 +140,49 @@ type QueryBrifeMessageResp struct { |
| 140 | 140 | Result QueryBrifeMessageResult `json:"result"` |
| 141 | 141 | } |
| 142 | 142 | |
| 143 | +type QueryChatMessageReq struct { | |
| 144 | + Uuid int `json:"uuid"` | |
| 145 | + Ctype int `json:"ctype"` | |
| 146 | + Taruuid int `json:"taruuid"` | |
| 147 | +} | |
| 148 | + | |
| 149 | +type QueryChatMessageDatas []QueryChatMessageData | |
| 150 | + | |
| 151 | +func (s QueryChatMessageDatas) Len() int { | |
| 152 | + return len(s) | |
| 153 | +} | |
| 154 | + | |
| 155 | +func (s QueryChatMessageDatas) Swap(i, j int) { | |
| 156 | + s[i], s[j] = s[j], s[i] | |
| 157 | +} | |
| 158 | + | |
| 159 | +func (s QueryChatMessageDatas) Less(i, j int) bool { | |
| 160 | + return s[i].Chattime > s[i].Chattime | |
| 161 | +} | |
| 162 | + | |
| 163 | +type QueryChatMessageData struct { | |
| 164 | + Uuid int `json:"uuid"` | |
| 165 | + Sex int `json:"sex"` | |
| 166 | + Chattime int `json:"chattime"` | |
| 167 | + Headurl string `json:"headurl"` | |
| 168 | + Nickname string `json:"nickname"` | |
| 169 | + Message string `json:"message"` | |
| 170 | +} | |
| 171 | + | |
| 172 | +type QueryChatMessageDesc struct { | |
| 173 | + Channelinfo []QueryChatMessageData `json:"channelinfo"` | |
| 174 | +} | |
| 175 | + | |
| 176 | +type QueryChatMessageResult struct { | |
| 177 | + Code int `json:"code"` | |
| 178 | + Data QueryChatMessageDesc `json:"data"` | |
| 179 | +} | |
| 180 | + | |
| 181 | +type QueryChatMessageResp struct { | |
| 182 | + Status string `json:"status"` | |
| 183 | + Result QueryChatMessageResult `json:"result"` | |
| 184 | +} | |
| 185 | + | |
| 143 | 186 | type QueryNewMessageReq struct { |
| 144 | 187 | Uuid int `json:"uuid"` |
| 145 | 188 | } | ... | ... |
src/HttpServer/logic/errordef.go
| 1 | 1 | package logic |
| 2 | 2 | |
| 3 | - | |
| 4 | 3 | const ( |
| 5 | - ERROR_OK = 0 //没有错误 | |
| 6 | - ERROR_JSONUNMASHFAILED = 1 //json解析失败 | |
| 7 | - ERROR_GETUSERBASICFAILED = 2 //获取玩家basic数据失败 | |
| 8 | - ERROR_GETUSEREXTFAILED = 3 //获取玩家ext数据失败 | |
| 9 | - ERROR_GETUSERIDFAILED = 4 //获取玩家uuid失败 | |
| 10 | - ERROR_GETUSERMAPBYUIDFAILED = 5 //从玩家在线数据获取失败 | |
| 11 | - ERROR_SRVDB_FAILED = 6 //服務器存储数据失败或者读取失败 | |
| 12 | - ERROR_HTTPPOSTFAILED = 7 //http请求失败 | |
| 13 | - ERROR_TEAM_ALREADYEXIST = 8 //队伍名称已经存在 | |
| 14 | - ERROR_CREATE_SHOPNOTENOUGH = 9 //创建队伍店铺数量不够 | |
| 15 | - ERROR_QUERYTEAMID_FAILED = 10 //查询队伍id失败 | |
| 16 | - ERROR_GETTEAMINFO_FAILED = 11 //查询队伍信息失败 | |
| 17 | - ERROR_NOTCAPTION = 12 //不是队长无法修改队伍信息 | |
| 18 | - ERROR_TEAMNAMETHSDAME = 13 //修改队伍时名称重复 | |
| 19 | - ERROR_TEAMALREADYINTEAM = 14 //已经在队伍中无法再加入 | |
| 20 | - ERROR_TEAMNOTINTEAM = 15 //不在在队伍中无法再推出 | |
| 21 | - ERROR_GETUSERINFOBYIDFAILED = 16 //通过uid查询玩家数据失败 | |
| 22 | - ERROR_GETTEAMLISTFAILED = 17 //查询队伍列表失败 | |
| 23 | - ERROR_GETFRIENDLISTAILED = 18 //获取好友列表失败 | |
| 24 | - ERROR_INLISTAILED = 19 //已经在好友列表无法再添加 | |
| 25 | - ERROR_FRIENDISMAX = 20 //好友人数已经达到上限无法继续添加 | |
| 26 | - ERROR_FRIENDGETAPPLISTFAILED = 21 //获取申请好友列表失败 | |
| 27 | - ERROR_FRIENDAPPLYLIMIT = 22 //当日申请已达上限 | |
| 28 | - ERROR_FRIENDALREDAYINAPPLYLIST = 23 //已经在申请列表 | |
| 29 | - RROR_FRIENDGETAPPROVELISTFAILED = 24 //获取申请好友列表失败 | |
| 30 | - RROR_FRIENDINAPPROVELISTFAILED = 25 //已经在等待批准列表 | |
| 31 | - ERROR_FRIENDAPPROVELIMIT = 26 //当日批准已达上限 | |
| 32 | - ERROR_FRIENDGETRECOMMADNFAILED = 27 //获取推荐好友失败 | |
| 33 | - ERROR_NOTINAPPROVELIST = 28 //玩家不在好友申请列表 | |
| 34 | - ERROR_FRIENDAPPROVEFAILED = 29 //好友审批失败 | |
| 35 | - ERROR_FRIENDNOTFRIEND = 30 //不是好友 | |
| 36 | - ERROR_FRIENDDELFRIENDFAILED = 31 //删除好友失败 | |
| 4 | + ERROR_OK = 0 //没有错误 | |
| 5 | + ERROR_JSONUNMASHFAILED = 1 //json解析失败 | |
| 6 | + ERROR_GETUSERBASICFAILED = 2 //获取玩家basic数据失败 | |
| 7 | + ERROR_GETUSEREXTFAILED = 3 //获取玩家ext数据失败 | |
| 8 | + ERROR_GETUSERIDFAILED = 4 //获取玩家uuid失败 | |
| 9 | + ERROR_GETUSERMAPBYUIDFAILED = 5 //从玩家在线数据获取失败 | |
| 10 | + ERROR_SRVDB_FAILED = 6 //服務器存储数据失败或者读取失败 | |
| 11 | + ERROR_HTTPPOSTFAILED = 7 //http请求失败 | |
| 12 | + ERROR_TEAM_ALREADYEXIST = 8 //队伍名称已经存在 | |
| 13 | + ERROR_CREATE_SHOPNOTENOUGH = 9 //创建队伍店铺数量不够 | |
| 14 | + ERROR_QUERYTEAMID_FAILED = 10 //查询队伍id失败 | |
| 15 | + ERROR_GETTEAMINFO_FAILED = 11 //查询队伍信息失败 | |
| 16 | + ERROR_NOTCAPTION = 12 //不是队长无法修改队伍信息 | |
| 17 | + ERROR_TEAMNAMETHSDAME = 13 //修改队伍时名称重复 | |
| 18 | + ERROR_TEAMALREADYINTEAM = 14 //已经在队伍中无法再加入 | |
| 19 | + ERROR_TEAMNOTINTEAM = 15 //不在在队伍中无法再推出 | |
| 20 | + ERROR_GETUSERINFOBYIDFAILED = 16 //通过uid查询玩家数据失败 | |
| 21 | + ERROR_GETTEAMLISTFAILED = 17 //查询队伍列表失败 | |
| 22 | + ERROR_GETFRIENDLISTAILED = 18 //获取好友列表失败 | |
| 23 | + ERROR_INLISTAILED = 19 //已经在好友列表无法再添加 | |
| 24 | + ERROR_FRIENDISMAX = 20 //好友人数已经达到上限无法继续添加 | |
| 25 | + ERROR_FRIENDGETAPPLISTFAILED = 21 //获取申请好友列表失败 | |
| 26 | + ERROR_FRIENDAPPLYLIMIT = 22 //当日申请已达上限 | |
| 27 | + ERROR_FRIENDALREDAYINAPPLYLIST = 23 //已经在申请列表 | |
| 28 | + RROR_FRIENDGETAPPROVELISTFAILED = 24 //获取申请好友列表失败 | |
| 29 | + RROR_FRIENDINAPPROVELISTFAILED = 25 //已经在等待批准列表 | |
| 30 | + ERROR_FRIENDAPPROVELIMIT = 26 //当日批准已达上限 | |
| 31 | + ERROR_FRIENDGETRECOMMADNFAILED = 27 //获取推荐好友失败 | |
| 32 | + ERROR_NOTINAPPROVELIST = 28 //玩家不在好友申请列表 | |
| 33 | + ERROR_FRIENDAPPROVEFAILED = 29 //好友审批失败 | |
| 34 | + ERROR_FRIENDNOTFRIEND = 30 //不是好友 | |
| 35 | + ERROR_FRIENDDELFRIENDFAILED = 31 //删除好友失败 | |
| 37 | 36 | ERROR_FRIENDGETFRIENDINFOFAILED = 32 //获取好友信息失败 |
| 38 | - ERROR_WECHATLOGINFAILED = 33 //获取好友信息失败 | |
| 39 | - ERROR_REGEISTACCOUNTEXIST = 34 //注册账号重复 | |
| 40 | - ERROR_ACCOUNTPWDWRONG= 35 //账号登录密码不对 | |
| 41 | - ERROR_TEAMISMAX= 36 //队伍人数已满 | |
| 42 | - ERROR_INVITEREAWARD_FETCHED= 37 //邀请奖励已经领取 | |
| 43 | - ERROR_ALREADY_INVITED= 38 //该玩家已经被邀请了 | |
| 44 | - ERROR_DAGONG_FULL= 39 //打工人数已经满了 无法继续打工 | |
| 45 | - ERROR_ALREADY_INWORK= 40 //正在打工中,无法再次打工 | |
| 46 | -) | |
| 47 | 37 | \ No newline at end of file |
| 38 | + ERROR_WECHATLOGINFAILED = 33 //获取好友信息失败 | |
| 39 | + ERROR_REGEISTACCOUNTEXIST = 34 //注册账号重复 | |
| 40 | + ERROR_ACCOUNTPWDWRONG = 35 //账号登录密码不对 | |
| 41 | + ERROR_TEAMISMAX = 36 //队伍人数已满 | |
| 42 | + ERROR_INVITEREAWARD_FETCHED = 37 //邀请奖励已经领取 | |
| 43 | + ERROR_ALREADY_INVITED = 38 //该玩家已经被邀请了 | |
| 44 | + ERROR_DAGONG_FULL = 39 //打工人数已经满了 无法继续打工 | |
| 45 | + ERROR_ALREADY_INWORK = 40 //正在打工中,无法再次打工 | |
| 46 | + ERROR_CHATPARAMFAILED = 41 //请求聊天数据参数不正确 | |
| 47 | +) | ... | ... |
src/HttpServer/logic/function.go
| ... | ... | @@ -1057,3 +1057,65 @@ func CheckHasNewMessage(uuid int) (bool, error) { |
| 1057 | 1057 | |
| 1058 | 1058 | return false, nil |
| 1059 | 1059 | } |
| 1060 | + | |
| 1061 | +func GetWorldChatMessage(uuid int) []QueryChatMessageData { | |
| 1062 | + var rtsl QueryChatMessageDatas | |
| 1063 | + vvs, err := redishandler.GetRedisClient().LRange(redis.WORLD_CHAT_INFO_KEY, 0, -1) | |
| 1064 | + if err != nil { | |
| 1065 | + logger.Error("GetWorldChatMessage err=%v", err) | |
| 1066 | + return rtsl | |
| 1067 | + } | |
| 1068 | + | |
| 1069 | + for _, val := range vvs { | |
| 1070 | + var tmp QueryChatMessageData | |
| 1071 | + err = json.Unmarshal([]byte(val), &tmp) | |
| 1072 | + if err == nil { | |
| 1073 | + rtsl = append(rtsl, tmp) | |
| 1074 | + } | |
| 1075 | + } | |
| 1076 | + sort.Sort(rtsl) | |
| 1077 | + return rtsl | |
| 1078 | +} | |
| 1079 | + | |
| 1080 | +func GetTeamChatMessage(uuid int) []QueryChatMessageData { | |
| 1081 | + var rtsl QueryChatMessageDatas | |
| 1082 | + tid, err := QueryUserTeamId(uuid) | |
| 1083 | + if err != nil { | |
| 1084 | + logger.Error("GetTeamChatMessage err=%v", err) | |
| 1085 | + return rtsl | |
| 1086 | + } | |
| 1087 | + rkey := redis.USER_CHAT_TEAM_INFO_KEY + ":" + strconv.Itoa(tid) | |
| 1088 | + vvs, err := redishandler.GetRedisClient().LRange(rkey, 0, -1) | |
| 1089 | + if err != nil { | |
| 1090 | + logger.Error("GetTeamChatMessage err=%v", err) | |
| 1091 | + return rtsl | |
| 1092 | + } | |
| 1093 | + for _, val := range vvs { | |
| 1094 | + var tmp QueryChatMessageData | |
| 1095 | + err = json.Unmarshal([]byte(val), &tmp) | |
| 1096 | + if err == nil { | |
| 1097 | + rtsl = append(rtsl, tmp) | |
| 1098 | + } | |
| 1099 | + } | |
| 1100 | + sort.Sort(rtsl) | |
| 1101 | + return rtsl | |
| 1102 | +} | |
| 1103 | + | |
| 1104 | +func GetPrivateChatMessage(uuid, taduid int) []QueryChatMessageData { | |
| 1105 | + var rtsl QueryChatMessageDatas | |
| 1106 | + rkey := redis.USER_CHAT_PRIVATE_INFO_KEY + ":" + strconv.Itoa(uuid) + ":" + strconv.Itoa(taduid) | |
| 1107 | + vvs, err := redishandler.GetRedisClient().LRange(rkey, 0, -1) | |
| 1108 | + if err != nil { | |
| 1109 | + logger.Error("GetPrivateChatMessage err=%v", err) | |
| 1110 | + return rtsl | |
| 1111 | + } | |
| 1112 | + for _, val := range vvs { | |
| 1113 | + var tmp QueryChatMessageData | |
| 1114 | + err = json.Unmarshal([]byte(val), &tmp) | |
| 1115 | + if err == nil { | |
| 1116 | + rtsl = append(rtsl, tmp) | |
| 1117 | + } | |
| 1118 | + } | |
| 1119 | + sort.Sort(rtsl) | |
| 1120 | + return rtsl | |
| 1121 | +} | ... | ... |
src/HttpServer/logic/httpserver.go
| ... | ... | @@ -95,11 +95,23 @@ func startServerHttpServe() { |
| 95 | 95 | |
| 96 | 96 | http.HandleFunc("/catcafe/chat/queryNewMessage", queryNewMessage) //查询红点请求 |
| 97 | 97 | http.HandleFunc("/catcafe/chat/queryBrifeMessage", queryBrifeMessage) //获取聊天页签请求 |
| 98 | + http.HandleFunc("/catcafe/chat/queryChatMessage", queryChatMessage) //获取详细聊天信息 | |
| 98 | 99 | |
| 99 | 100 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
| 100 | 101 | CheckErr(err) |
| 101 | 102 | } |
| 102 | 103 | |
| 104 | +func queryChatMessage(w http.ResponseWriter, r *http.Request) { | |
| 105 | + | |
| 106 | + result, _ := ioutil.ReadAll(r.Body) | |
| 107 | + r.Body.Close() | |
| 108 | + | |
| 109 | + s := string(result) | |
| 110 | + logger.Info("queryChatMessage , body:%v", s) | |
| 111 | + | |
| 112 | + HandlequeryChatMessage(w, s) | |
| 113 | +} | |
| 114 | + | |
| 103 | 115 | func queryBrifeMessage(w http.ResponseWriter, r *http.Request) { |
| 104 | 116 | |
| 105 | 117 | result, _ := ioutil.ReadAll(r.Body) | ... | ... |
src/HttpServer/logic/logic.go
| ... | ... | @@ -271,6 +271,50 @@ func HandleQueryInvite(w http.ResponseWriter, data string) { |
| 271 | 271 | fmt.Fprint(w, string(respstr)) |
| 272 | 272 | } |
| 273 | 273 | |
| 274 | +func HandlequeryChatMessage(w http.ResponseWriter, data string) { | |
| 275 | + | |
| 276 | + SetHeader(w) | |
| 277 | + var resp QueryChatMessageResp | |
| 278 | + resp.Status = "true" | |
| 279 | + var rdata QueryChatMessageReq | |
| 280 | + err := json.Unmarshal([]byte(data), &rdata) | |
| 281 | + for { | |
| 282 | + if err != nil { | |
| 283 | + logger.Error("HandlequeryChatMessage json unmarshal failed=%v", err) | |
| 284 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
| 285 | + break | |
| 286 | + } | |
| 287 | + | |
| 288 | + if rdata.Ctype == 2 && rdata.Taruuid == 0 { | |
| 289 | + logger.Error("HandlequeryChatMessage param failed=%v", rdata) | |
| 290 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
| 291 | + break | |
| 292 | + } | |
| 293 | + | |
| 294 | + if rdata.Ctype == 0 { | |
| 295 | + //世界频道 | |
| 296 | + worlds := GetWorldChatMessage(rdata.Uuid) | |
| 297 | + resp.Result.Data.Channelinfo = append(resp.Result.Data.Channelinfo, worlds...) | |
| 298 | + } else if rdata.Ctype == 1 { | |
| 299 | + teams := GetTeamChatMessage(rdata.Uuid) | |
| 300 | + resp.Result.Data.Channelinfo = append(resp.Result.Data.Channelinfo, teams...) | |
| 301 | + } else if rdata.Ctype == 2 { | |
| 302 | + privates := GetPrivateChatMessage(rdata.Uuid, rdata.Taruuid) | |
| 303 | + resp.Result.Data.Channelinfo = append(resp.Result.Data.Channelinfo, privates...) | |
| 304 | + } else { | |
| 305 | + logger.Error("HandlequeryChatMessage ctype failed %v", rdata) | |
| 306 | + resp.Result.Code = ERROR_CHATPARAMFAILED | |
| 307 | + break | |
| 308 | + } | |
| 309 | + | |
| 310 | + break | |
| 311 | + } | |
| 312 | + | |
| 313 | + //回包 | |
| 314 | + respstr, _ := json.Marshal(&resp) | |
| 315 | + fmt.Fprint(w, string(respstr)) | |
| 316 | +} | |
| 317 | + | |
| 274 | 318 | func HandlequeryBrifeMessage(w http.ResponseWriter, data string) { |
| 275 | 319 | |
| 276 | 320 | SetHeader(w) | ... | ... |