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,6 +140,49 @@ type QueryBrifeMessageResp struct { | ||
140 | Result QueryBrifeMessageResult `json:"result"` | 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 | type QueryNewMessageReq struct { | 186 | type QueryNewMessageReq struct { |
144 | Uuid int `json:"uuid"` | 187 | Uuid int `json:"uuid"` |
145 | } | 188 | } |
src/HttpServer/logic/errordef.go
1 | package logic | 1 | package logic |
2 | 2 | ||
3 | - | ||
4 | const ( | 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 | ERROR_FRIENDGETFRIENDINFOFAILED = 32 //获取好友信息失败 | 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 | \ No newline at end of file | 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,3 +1057,65 @@ func CheckHasNewMessage(uuid int) (bool, error) { | ||
1057 | 1057 | ||
1058 | return false, nil | 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,11 +95,23 @@ func startServerHttpServe() { | ||
95 | 95 | ||
96 | http.HandleFunc("/catcafe/chat/queryNewMessage", queryNewMessage) //查询红点请求 | 96 | http.HandleFunc("/catcafe/chat/queryNewMessage", queryNewMessage) //查询红点请求 |
97 | http.HandleFunc("/catcafe/chat/queryBrifeMessage", queryBrifeMessage) //获取聊天页签请求 | 97 | http.HandleFunc("/catcafe/chat/queryBrifeMessage", queryBrifeMessage) //获取聊天页签请求 |
98 | + http.HandleFunc("/catcafe/chat/queryChatMessage", queryChatMessage) //获取详细聊天信息 | ||
98 | 99 | ||
99 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) | 100 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
100 | CheckErr(err) | 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 | func queryBrifeMessage(w http.ResponseWriter, r *http.Request) { | 115 | func queryBrifeMessage(w http.ResponseWriter, r *http.Request) { |
104 | 116 | ||
105 | result, _ := ioutil.ReadAll(r.Body) | 117 | result, _ := ioutil.ReadAll(r.Body) |
src/HttpServer/logic/logic.go
@@ -271,6 +271,50 @@ func HandleQueryInvite(w http.ResponseWriter, data string) { | @@ -271,6 +271,50 @@ func HandleQueryInvite(w http.ResponseWriter, data string) { | ||
271 | fmt.Fprint(w, string(respstr)) | 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 | func HandlequeryBrifeMessage(w http.ResponseWriter, data string) { | 318 | func HandlequeryBrifeMessage(w http.ResponseWriter, data string) { |
275 | 319 | ||
276 | SetHeader(w) | 320 | SetHeader(w) |