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) | ... | ... |