Commit 6e0d8bcb6399c1c7bdcd32d03f700e877ce0de7c

Authored by 陆恒
1 parent 8c80e014
Exists in master

聊天相关接口

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)