Commit 5dfa463a392e96b8103d1683927a72e06c1cd764
1 parent
6e0d8bcb
Exists in
master
提交聊天相关接口
Showing
7 changed files
with
441 additions
and
69 deletions
Show diff stats
src/HttpServer/logic/constdef.go
1 | 1 | package logic |
2 | 2 | |
3 | 3 | var ( |
4 | - WETCHATAPPID="wx572a2a5ec4538f33" | |
4 | + WETCHATAPPID = "wx572a2a5ec4538f33" | |
5 | 5 | WETCHATSERCRT = "b31e2e7406af88fe7395cd178bdb64fc" |
6 | 6 | ) |
7 | 7 | |
8 | 8 | const ( |
9 | - ENV_ENUM = 100 | |
10 | - LBASE64 = 1 | |
11 | - RESURL = "https://pck2d.miso-lab.com/" | |
9 | + ENV_ENUM = 100 | |
10 | + LBASE64 = 1 | |
11 | + CHATLIMITNUM = 50 //聊天记录保存数量 | |
12 | + RESURL = "https://pck2d.miso-lab.com/" | |
12 | 13 | VERSION_CONFIG = "version/v1.9.json" |
13 | 14 | ) |
14 | 15 | |
15 | 16 | const ( |
16 | - FRIEND_MAX_NUM = 50 //好友人数上限 | |
17 | - FRIEND_APPLY_LIMIT = 50 //好友申请当日上限 | |
18 | - FRIEND_APPROVE_LIMIT = 50 //好友批准当日上限 | |
19 | - FRIEND_RECOMMAND_NUM = 3 //推荐好友数量 | |
20 | - TEAM_MAXNUM = 4 //队伍最大人数 | |
21 | -) | |
22 | 17 | \ No newline at end of file |
18 | + FRIEND_MAX_NUM = 50 //好友人数上限 | |
19 | + FRIEND_APPLY_LIMIT = 50 //好友申请当日上限 | |
20 | + FRIEND_APPROVE_LIMIT = 50 //好友批准当日上限 | |
21 | + FRIEND_RECOMMAND_NUM = 3 //推荐好友数量 | |
22 | + TEAM_MAXNUM = 4 //队伍最大人数 | |
23 | +) | ... | ... |
src/HttpServer/logic/datadef.go
... | ... | @@ -201,6 +201,37 @@ type QueryNewMessageResp struct { |
201 | 201 | Result QueryNewMessageResult `json:"result"` |
202 | 202 | } |
203 | 203 | |
204 | +type UnlockEmjReq struct { | |
205 | + Uuid int `json:"uuid"` | |
206 | + Pos int `json:"pos"` | |
207 | +} | |
208 | + | |
209 | +type DoChatReq struct { | |
210 | + Uuid int `json:"uuid"` | |
211 | + Ctype int `json:"ctype"` | |
212 | + Taruuid int `json:"taruuid"` | |
213 | + Message string `json:"message"` | |
214 | +} | |
215 | + | |
216 | +type DoChatResp struct { | |
217 | + Status string `json:"status"` | |
218 | + Result CommonResult `json:"result"` | |
219 | +} | |
220 | + | |
221 | +type UnlockEmjDesc struct { | |
222 | + Emjinfo []int `json:"emjinfo"` | |
223 | +} | |
224 | + | |
225 | +type UnlockEmjResult struct { | |
226 | + Code int `json:"code"` | |
227 | + Data UnlockEmjDesc `json:"data"` | |
228 | +} | |
229 | + | |
230 | +type UnlockEmjResp struct { | |
231 | + Status string `json:"status"` | |
232 | + Result UnlockEmjResult `json:"result"` | |
233 | +} | |
234 | + | |
204 | 235 | type InviteWorkReq struct { |
205 | 236 | Uuid int `json:"uuid"` |
206 | 237 | } |
... | ... | @@ -372,7 +403,7 @@ type MsgCheckDesc struct { |
372 | 403 | } |
373 | 404 | |
374 | 405 | type MsgCheckResp struct { |
375 | - Errcode string `json:"errcode"` | |
406 | + Errcode int `json:"errcode"` | |
376 | 407 | Errmsg string `json:"errmsg"` |
377 | 408 | } |
378 | 409 | ... | ... |
src/HttpServer/logic/function.go
... | ... | @@ -841,7 +841,7 @@ func GetdagongList(uuid int) (*WorkList, []InviteWorkOffDesc, error) { |
841 | 841 | //加入打工列表 |
842 | 842 | func AddDagongList(uuid int, masteruuid int, list WorkList) error { |
843 | 843 | |
844 | - nickname, headurl, err := mysql.QueryNameAndHead(uuid) | |
844 | + nickname, headurl, _, err := mysql.QueryNameAndHead(uuid) | |
845 | 845 | if err != nil { |
846 | 846 | logger.Error("AddDagongList err=%v", err) |
847 | 847 | return err |
... | ... | @@ -886,17 +886,45 @@ func QueryUserTeamId(uuid int) (int, error) { |
886 | 886 | return tmp.Team_id, nil |
887 | 887 | } |
888 | 888 | |
889 | -func GetChatEmojInfo(uuid int) []int { | |
889 | +func GetChatEmojInfo(uuid int) *EmojunlockInfo { | |
890 | 890 | var tmp EmojunlockInfo |
891 | 891 | vv, err := redishandler.GetRedisClient().HGet(redis.USER_CHAT_EMOJUNLOCK_KEY, strconv.Itoa(uuid)) |
892 | 892 | if err != nil { |
893 | - return nil | |
893 | + //return nil | |
894 | + //如果还没有则做一个初始化 | |
895 | + tmp.Emojinfo = append(tmp.Emojinfo, 0) | |
896 | + tmp.Emojinfo = append(tmp.Emojinfo, 0) | |
897 | + tmp.Emojinfo = append(tmp.Emojinfo, 0) | |
898 | + tmp.Emojinfo = append(tmp.Emojinfo, 0) | |
899 | + savestr, err := json.Marshal(&tmp) | |
900 | + if err != nil { | |
901 | + logger.Error("GetChatEmojInfo err=%v", err) | |
902 | + } | |
903 | + err = redishandler.GetRedisClient().HSet(redis.USER_CHAT_EMOJUNLOCK_KEY, strconv.Itoa(uuid), string(savestr)) | |
904 | + if err != nil { | |
905 | + logger.Error("GetChatEmojInfo err=%v", err) | |
906 | + } | |
907 | + return &tmp | |
894 | 908 | } |
895 | 909 | err = json.Unmarshal([]byte(vv), &tmp) |
896 | 910 | if err != nil { |
897 | 911 | return nil |
898 | 912 | } |
899 | - return tmp.Emojinfo | |
913 | + return &tmp | |
914 | +} | |
915 | + | |
916 | +func SaveChatEmojInfo(uuid int, save *EmojunlockInfo) error { | |
917 | + savestr, err := json.Marshal(save) | |
918 | + if err != nil { | |
919 | + logger.Error("SaveChatEmojInfo err=%v") | |
920 | + return err | |
921 | + } | |
922 | + err = redishandler.GetRedisClient().HSet(redis.USER_CHAT_EMOJUNLOCK_KEY, strconv.Itoa(uuid), string(savestr)) | |
923 | + if err != nil { | |
924 | + logger.Error("SaveChatEmojInfo err=%v", err) | |
925 | + return err | |
926 | + } | |
927 | + return nil | |
900 | 928 | } |
901 | 929 | |
902 | 930 | func CheckTeamHasNewMessage(uuid int) (bool, error) { |
... | ... | @@ -976,7 +1004,7 @@ func GetPrivateBriefList(uuid int) []QueryBrifeMessageData { |
976 | 1004 | tmp.Uuid = val |
977 | 1005 | tmp.Isnew = 1 |
978 | 1006 | tmp.Ctype = 2 |
979 | - heads, names, err := mysql.QueryNameAndHead(val) | |
1007 | + heads, names, _, err := mysql.QueryNameAndHead(val) | |
980 | 1008 | if err != nil { |
981 | 1009 | logger.Error("GetPrivateBriefList err=%v", err) |
982 | 1010 | } |
... | ... | @@ -998,7 +1026,7 @@ func GetPrivateBriefList(uuid int) []QueryBrifeMessageData { |
998 | 1026 | tmp.Uuid = val |
999 | 1027 | tmp.Isnew = 0 |
1000 | 1028 | tmp.Ctype = 2 |
1001 | - heads, names, err := mysql.QueryNameAndHead(val) | |
1029 | + heads, names, _, err := mysql.QueryNameAndHead(val) | |
1002 | 1030 | if err != nil { |
1003 | 1031 | logger.Error("GetPrivateBriefList err=%v", err) |
1004 | 1032 | } |
... | ... | @@ -1119,3 +1147,159 @@ func GetPrivateChatMessage(uuid, taduid int) []QueryChatMessageData { |
1119 | 1147 | sort.Sort(rtsl) |
1120 | 1148 | return rtsl |
1121 | 1149 | } |
1150 | + | |
1151 | +func WorldChat(message string, uuid int) (int, string) { | |
1152 | + length, err := redishandler.GetRedisClient().LLen(redis.WORLD_CHAT_INFO_KEY) | |
1153 | + if err == nil { | |
1154 | + if length >= CHATLIMITNUM { | |
1155 | + //需要先把多余的聊天记录删除 | |
1156 | + delcnt := length - CHATLIMITNUM | |
1157 | + for i := 0; i < delcnt; i++ { | |
1158 | + _, err = redishandler.GetRedisClient().RPop(redis.WORLD_CHAT_INFO_KEY) | |
1159 | + if err != nil { | |
1160 | + logger.Error("WorldChat failed err=%v", err) | |
1161 | + } | |
1162 | + } | |
1163 | + } | |
1164 | + } | |
1165 | + | |
1166 | + //构建新的结构 | |
1167 | + var chats QueryChatMessageData | |
1168 | + chats.Message = message | |
1169 | + chats.Uuid = uuid | |
1170 | + chats.Chattime = int(time.Now().Unix()) | |
1171 | + name, head, sex, err := mysql.QueryNameAndHead(uuid) | |
1172 | + if err != nil { | |
1173 | + logger.Error("WorldChat err=%v", err) | |
1174 | + } | |
1175 | + chats.Headurl = head | |
1176 | + chats.Nickname = name | |
1177 | + chats.Sex = sex | |
1178 | + | |
1179 | + savestr, err := json.Marshal(&chats) | |
1180 | + if err != nil { | |
1181 | + logger.Error("WorldChat err=%v", err) | |
1182 | + return 1, "json failed" | |
1183 | + } | |
1184 | + | |
1185 | + err = redishandler.GetRedisClient().LPush(redis.WORLD_CHAT_INFO_KEY, string(savestr)) | |
1186 | + if err != nil { | |
1187 | + logger.Error("WorldChat err=%v", err) | |
1188 | + return 2, "redis failed" | |
1189 | + } | |
1190 | + return 0, "success" | |
1191 | +} | |
1192 | + | |
1193 | +func TeamChat(message string, uuid int) (int, string) { | |
1194 | + tid, err := QueryUserTeamId(uuid) | |
1195 | + if err != nil { | |
1196 | + logger.Error("TeamChat err=%v", err) | |
1197 | + return 1, "getteamid failed" | |
1198 | + } | |
1199 | + rkey := redis.USER_CHAT_TEAM_INFO_KEY + ":" + strconv.Itoa(tid) | |
1200 | + length, err := redishandler.GetRedisClient().LLen(rkey) | |
1201 | + if err == nil { | |
1202 | + if length >= CHATLIMITNUM { | |
1203 | + //需要先把多余的聊天记录删除 | |
1204 | + delcnt := length - CHATLIMITNUM | |
1205 | + for i := 0; i < delcnt; i++ { | |
1206 | + _, err = redishandler.GetRedisClient().RPop(rkey) | |
1207 | + if err != nil { | |
1208 | + logger.Error("TeamChat failed err=%v", err) | |
1209 | + } | |
1210 | + } | |
1211 | + } | |
1212 | + } | |
1213 | + | |
1214 | + //构建新的结构 | |
1215 | + var chats QueryChatMessageData | |
1216 | + chats.Message = message | |
1217 | + chats.Uuid = uuid | |
1218 | + chats.Chattime = int(time.Now().Unix()) | |
1219 | + name, head, sex, err := mysql.QueryNameAndHead(uuid) | |
1220 | + if err != nil { | |
1221 | + logger.Error("TeamChat err=%v", err) | |
1222 | + } | |
1223 | + chats.Headurl = head | |
1224 | + chats.Nickname = name | |
1225 | + chats.Sex = sex | |
1226 | + | |
1227 | + savestr, err := json.Marshal(&chats) | |
1228 | + if err != nil { | |
1229 | + logger.Error("TeamChat err=%v", err) | |
1230 | + return 1, "json failed" | |
1231 | + } | |
1232 | + | |
1233 | + err = redishandler.GetRedisClient().LPush(rkey, string(savestr)) | |
1234 | + if err != nil { | |
1235 | + logger.Error("TeamChat err=%v", err) | |
1236 | + return 2, "redis failed" | |
1237 | + } | |
1238 | + return 0, "" | |
1239 | +} | |
1240 | + | |
1241 | +func PrivateChat(message string, uuid int, taruid int) (int, string) { | |
1242 | + //存入待收人的列表 | |
1243 | + rkey := redis.USER_CHAT_PRIVATE_INFO_KEY + ":" + strconv.Itoa(taruid) + ":" + strconv.Itoa(uuid) | |
1244 | + length, err := redishandler.GetRedisClient().LLen(rkey) | |
1245 | + if err == nil { | |
1246 | + if length >= CHATLIMITNUM { | |
1247 | + //需要先把多余的聊天记录删除 | |
1248 | + delcnt := length - CHATLIMITNUM | |
1249 | + for i := 0; i < delcnt; i++ { | |
1250 | + _, err = redishandler.GetRedisClient().RPop(rkey) | |
1251 | + if err != nil { | |
1252 | + logger.Error("PrivateChat failed err=%v", err) | |
1253 | + } | |
1254 | + } | |
1255 | + } | |
1256 | + } | |
1257 | + | |
1258 | + //构建新的结构 | |
1259 | + var chats QueryChatMessageData | |
1260 | + chats.Message = message | |
1261 | + chats.Uuid = uuid | |
1262 | + chats.Chattime = int(time.Now().Unix()) | |
1263 | + name, head, sex, err := mysql.QueryNameAndHead(uuid) | |
1264 | + if err != nil { | |
1265 | + logger.Error("PrivateChat err=%v", err) | |
1266 | + } | |
1267 | + chats.Headurl = head | |
1268 | + chats.Nickname = name | |
1269 | + chats.Sex = sex | |
1270 | + | |
1271 | + savestr, err := json.Marshal(&chats) | |
1272 | + if err != nil { | |
1273 | + logger.Error("PrivateChat err=%v", err) | |
1274 | + return 1, "json failed" | |
1275 | + } | |
1276 | + | |
1277 | + err = redishandler.GetRedisClient().LPush(rkey, string(savestr)) | |
1278 | + if err != nil { | |
1279 | + logger.Error("PrivateChat err=%v", err) | |
1280 | + return 2, "redis failed" | |
1281 | + } | |
1282 | + | |
1283 | + //存入自己的聊天记录 | |
1284 | + rkey = redis.USER_CHAT_PRIVATE_INFO_KEY + ":" + strconv.Itoa(uuid) + ":" + strconv.Itoa(taruid) | |
1285 | + length, err = redishandler.GetRedisClient().LLen(rkey) | |
1286 | + if err == nil { | |
1287 | + if length >= CHATLIMITNUM { | |
1288 | + //需要先把多余的聊天记录删除 | |
1289 | + delcnt := length - CHATLIMITNUM | |
1290 | + for i := 0; i < delcnt; i++ { | |
1291 | + _, err = redishandler.GetRedisClient().RPop(rkey) | |
1292 | + if err != nil { | |
1293 | + logger.Error("PrivateChat failed err=%v", err) | |
1294 | + } | |
1295 | + } | |
1296 | + } | |
1297 | + } | |
1298 | + | |
1299 | + err = redishandler.GetRedisClient().LPush(rkey, string(savestr)) | |
1300 | + if err != nil { | |
1301 | + logger.Error("PrivateChat err=%v", err) | |
1302 | + return 2, "redis failed" | |
1303 | + } | |
1304 | + return 0, "" | |
1305 | +} | ... | ... |
src/HttpServer/logic/httpserver.go
... | ... | @@ -96,11 +96,35 @@ func startServerHttpServe() { |
96 | 96 | http.HandleFunc("/catcafe/chat/queryNewMessage", queryNewMessage) //查询红点请求 |
97 | 97 | http.HandleFunc("/catcafe/chat/queryBrifeMessage", queryBrifeMessage) //获取聊天页签请求 |
98 | 98 | http.HandleFunc("/catcafe/chat/queryChatMessage", queryChatMessage) //获取详细聊天信息 |
99 | + http.HandleFunc("/catcafe/chat/unlockEmj", UnlockEmj) //获取详细聊天信息 | |
100 | + http.HandleFunc("/catcafe/chat/doChat", DoChat) //请求聊天 | |
99 | 101 | |
100 | 102 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
101 | 103 | CheckErr(err) |
102 | 104 | } |
103 | 105 | |
106 | +func DoChat(w http.ResponseWriter, r *http.Request) { | |
107 | + | |
108 | + result, _ := ioutil.ReadAll(r.Body) | |
109 | + r.Body.Close() | |
110 | + | |
111 | + s := string(result) | |
112 | + logger.Info("DoChat , body:%v", s) | |
113 | + | |
114 | + HandleDoChat(w, s) | |
115 | +} | |
116 | + | |
117 | +func UnlockEmj(w http.ResponseWriter, r *http.Request) { | |
118 | + | |
119 | + result, _ := ioutil.ReadAll(r.Body) | |
120 | + r.Body.Close() | |
121 | + | |
122 | + s := string(result) | |
123 | + logger.Info("UnlockEmj , body:%v", s) | |
124 | + | |
125 | + HandleUnlockEmj(w, s) | |
126 | +} | |
127 | + | |
104 | 128 | func queryChatMessage(w http.ResponseWriter, r *http.Request) { |
105 | 129 | |
106 | 130 | result, _ := ioutil.ReadAll(r.Body) | ... | ... |
src/HttpServer/logic/logic.go
... | ... | @@ -271,6 +271,121 @@ func HandleQueryInvite(w http.ResponseWriter, data string) { |
271 | 271 | fmt.Fprint(w, string(respstr)) |
272 | 272 | } |
273 | 273 | |
274 | +func HandleDoChat(w http.ResponseWriter, data string) { | |
275 | + | |
276 | + SetHeader(w) | |
277 | + var resp DoChatResp | |
278 | + resp.Status = "true" | |
279 | + var rdata DoChatReq | |
280 | + err := json.Unmarshal([]byte(data), &rdata) | |
281 | + for { | |
282 | + if err != nil { | |
283 | + logger.Error("HandleDoChat json unmarshal failed=%v", err) | |
284 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
285 | + break | |
286 | + } | |
287 | + | |
288 | + //需要验证敏感词 | |
289 | + msgtoken := GetAccessToken() | |
290 | + msgurl := URL_WEIXINMSG_CHECK + "?access_token=" + msgtoken | |
291 | + var check MsgCheckDesc | |
292 | + check.Content = rdata.Message | |
293 | + bys, err := json.Marshal(&check) | |
294 | + if err != nil { | |
295 | + logger.Error("HandleDoChat json failed=%v", err) | |
296 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
297 | + break | |
298 | + } | |
299 | + | |
300 | + body := bytes.NewBuffer(bys) | |
301 | + res, err := http.Post(msgurl, "application/json;charset=utf-8", body) | |
302 | + if err != nil { | |
303 | + logger.Error(" HandleDoChat ERROR_HTTPPOSTFAILED err=%v", err) | |
304 | + resp.Result.Code = ERROR_HTTPPOSTFAILED | |
305 | + return | |
306 | + } | |
307 | + | |
308 | + result, _ := ioutil.ReadAll(res.Body) | |
309 | + defer res.Body.Close() | |
310 | + | |
311 | + var msgresp MsgCheckResp | |
312 | + _ = json.Unmarshal(result, &msgresp) | |
313 | + | |
314 | + if msgresp.Errcode != 0 { | |
315 | + resp.Result.Code = msgresp.Errcode | |
316 | + resp.Result.Data = msgresp.Errmsg | |
317 | + break | |
318 | + } | |
319 | + | |
320 | + if rdata.Ctype == 0 { | |
321 | + resp.Result.Code, resp.Result.Data = WorldChat(rdata.Message, rdata.Uuid) | |
322 | + } else if rdata.Ctype == 1 { | |
323 | + resp.Result.Code, resp.Result.Data = TeamChat(rdata.Message, rdata.Uuid) | |
324 | + } else if rdata.Ctype == 2 { | |
325 | + resp.Result.Code, resp.Result.Data = PrivateChat(rdata.Message, rdata.Uuid, rdata.Taruuid) | |
326 | + } else { | |
327 | + logger.Error("HandleDoChat failed err ctypr") | |
328 | + resp.Result.Code = ERROR_CHATPARAMFAILED | |
329 | + resp.Result.Data = "ctypr failed" | |
330 | + break | |
331 | + } | |
332 | + break | |
333 | + } | |
334 | + | |
335 | + //回包 | |
336 | + respstr, _ := json.Marshal(&resp) | |
337 | + fmt.Fprint(w, string(respstr)) | |
338 | +} | |
339 | + | |
340 | +func HandleUnlockEmj(w http.ResponseWriter, data string) { | |
341 | + | |
342 | + SetHeader(w) | |
343 | + var resp UnlockEmjResp | |
344 | + resp.Status = "true" | |
345 | + var rdata UnlockEmjReq | |
346 | + err := json.Unmarshal([]byte(data), &rdata) | |
347 | + for { | |
348 | + if err != nil { | |
349 | + logger.Error("HandleUnlockEmj json unmarshal failed=%v", err) | |
350 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
351 | + break | |
352 | + } | |
353 | + | |
354 | + if rdata.Pos < 0 { | |
355 | + logger.Error("HandleUnlockEmj param failed=%v", rdata) | |
356 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
357 | + break | |
358 | + } | |
359 | + | |
360 | + emjs := GetChatEmojInfo(rdata.Uuid) | |
361 | + if emjs == nil { | |
362 | + logger.Error("HandleUnlockEmj redis failed=%v", rdata) | |
363 | + resp.Result.Code = ERROR_GETUSERMAPBYUIDFAILED | |
364 | + break | |
365 | + } | |
366 | + | |
367 | + if rdata.Pos > len(emjs.Emojinfo)-1 { | |
368 | + logger.Error("HandleUnlockEmj param failed=%v", rdata) | |
369 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
370 | + break | |
371 | + } | |
372 | + | |
373 | + emjs.Emojinfo[rdata.Pos] = 1 | |
374 | + err = SaveChatEmojInfo(rdata.Uuid, emjs) | |
375 | + if err != nil { | |
376 | + logger.Error("HandleUnlockEmj redis failed=%v", rdata) | |
377 | + resp.Result.Code = ERROR_GETUSERMAPBYUIDFAILED | |
378 | + break | |
379 | + } | |
380 | + resp.Result.Data.Emjinfo = append(resp.Result.Data.Emjinfo, emjs.Emojinfo...) | |
381 | + break | |
382 | + } | |
383 | + | |
384 | + //回包 | |
385 | + respstr, _ := json.Marshal(&resp) | |
386 | + fmt.Fprint(w, string(respstr)) | |
387 | +} | |
388 | + | |
274 | 389 | func HandlequeryChatMessage(w http.ResponseWriter, data string) { |
275 | 390 | |
276 | 391 | SetHeader(w) |
... | ... | @@ -331,7 +446,9 @@ func HandlequeryBrifeMessage(w http.ResponseWriter, data string) { |
331 | 446 | |
332 | 447 | //先查询表情信息 |
333 | 448 | emjs := GetChatEmojInfo(rdata.Uuid) |
334 | - resp.Result.Data.Emojinfo = append(resp.Result.Data.Emojinfo, emjs...) | |
449 | + if emjs != nil { | |
450 | + resp.Result.Data.Emojinfo = append(resp.Result.Data.Emojinfo, emjs.Emojinfo...) | |
451 | + } | |
335 | 452 | |
336 | 453 | //世界频道 |
337 | 454 | var world QueryBrifeMessageData |
... | ... | @@ -1425,8 +1542,8 @@ func HandleTextCheck(w http.ResponseWriter, data string) { |
1425 | 1542 | var msgresp MsgCheckResp |
1426 | 1543 | _ = json.Unmarshal(result, &msgresp) |
1427 | 1544 | |
1428 | - code, _ := strconv.Atoi(msgresp.Errcode) | |
1429 | - resp.Result.Code = code | |
1545 | + //code, _ := strconv.Atoi(msgresp.Errcode) | |
1546 | + resp.Result.Code = msgresp.Errcode | |
1430 | 1547 | resp.Result.Data = msgresp.Errmsg |
1431 | 1548 | |
1432 | 1549 | resp.Result.Code = ERROR_OK | ... | ... |
src/common/redis/redis.go
... | ... | @@ -324,6 +324,16 @@ func (client *RedisClient) LPop(listName string) (string, error) { |
324 | 324 | return value, err |
325 | 325 | } |
326 | 326 | |
327 | +func (client *RedisClient) RPop(listName string) (string, error) { | |
328 | + conn := client.m_pool.Get() | |
329 | + defer conn.Close() | |
330 | + value, err := redis.String(conn.Do("RPOP", listName)) | |
331 | + if err != nil { | |
332 | + //fmt.Println("LPop redis get failed:", err) | |
333 | + } | |
334 | + return value, err | |
335 | +} | |
336 | + | |
327 | 337 | func (client *RedisClient) LRem(listName string, count int, value string) error { |
328 | 338 | conn := client.m_pool.Get() |
329 | 339 | defer conn.Close() |
... | ... | @@ -345,6 +355,16 @@ func (client *RedisClient) RPush(listName string, element string) error { |
345 | 355 | return err |
346 | 356 | } |
347 | 357 | |
358 | +func (client *RedisClient) LPush(listName string, element string) error { | |
359 | + conn := client.m_pool.Get() | |
360 | + defer conn.Close() | |
361 | + _, err := redis.Int(conn.Do("LPUSH", listName, element)) | |
362 | + if err != nil { | |
363 | + //fmt.Println("RPush redis get failed:", err) | |
364 | + } | |
365 | + return err | |
366 | +} | |
367 | + | |
348 | 368 | func (client *RedisClient) LLen(listName string) (int, error) { |
349 | 369 | conn := client.m_pool.Get() |
350 | 370 | defer conn.Close() | ... | ... |
src/mysql/dbmysql.go
... | ... | @@ -14,13 +14,13 @@ import ( |
14 | 14 | ) |
15 | 15 | |
16 | 16 | var ( |
17 | - m_game_db *sql.DB | |
17 | + m_game_db *sql.DB | |
18 | 18 | ) |
19 | 19 | |
20 | 20 | type QuerInviteDesc struct { |
21 | - Uuid int | |
22 | - NickName string | |
23 | - HeadUrl string | |
21 | + Uuid int | |
22 | + NickName string | |
23 | + HeadUrl string | |
24 | 24 | IsFecthed int |
25 | 25 | } |
26 | 26 | |
... | ... | @@ -55,7 +55,7 @@ func ExcuteCmd(cmd string) error { |
55 | 55 | return err |
56 | 56 | } |
57 | 57 | |
58 | -func TestClearData(uid int) (int,error) { | |
58 | +func TestClearData(uid int) (int, error) { | |
59 | 59 | cmd := fmt.Sprintf("select coin from b_user_ext_04 where user_id=%d", uid) |
60 | 60 | |
61 | 61 | rows, err := m_game_db.Query(cmd) |
... | ... | @@ -64,52 +64,51 @@ func TestClearData(uid int) (int,error) { |
64 | 64 | } |
65 | 65 | if err != nil { |
66 | 66 | logger.Notic("TestClearData mysql select error:%v", err) |
67 | - return 0,err | |
67 | + return 0, err | |
68 | 68 | } |
69 | 69 | |
70 | - | |
71 | 70 | var value int |
72 | 71 | for rows.Next() { |
73 | 72 | |
74 | 73 | err = rows.Scan(&value) |
75 | 74 | if err != nil { |
76 | 75 | logger.Notic("TestClearData mysql handle result error:%v", err) |
77 | - return 0,err | |
76 | + return 0, err | |
78 | 77 | } |
79 | - logger.Info("TestClearData coin=%v",value) | |
78 | + logger.Info("TestClearData coin=%v", value) | |
80 | 79 | |
81 | 80 | break |
82 | 81 | } |
83 | - return value,nil | |
82 | + return value, nil | |
84 | 83 | } |
85 | 84 | |
86 | -func DoAddGold(uuid,gold,love int) error { | |
87 | - for i:=0;i<10;i++ { | |
85 | +func DoAddGold(uuid, gold, love int) error { | |
86 | + for i := 0; i < 10; i++ { | |
88 | 87 | tablename := "b_user_ext_0" + strconv.Itoa(i) |
89 | 88 | cmd := "update " + tablename + " set coin = " + strconv.Itoa(gold) + " where user_id= " + strconv.Itoa(uuid) |
90 | 89 | err := ExcuteCmd(cmd) |
91 | 90 | if err != nil { |
92 | - logger.Error("DoAddGold err=%v,cmd=%v",err,cmd) | |
91 | + logger.Error("DoAddGold err=%v,cmd=%v", err, cmd) | |
93 | 92 | return err |
94 | 93 | } |
95 | 94 | cmd = "update " + tablename + " set love_exp = " + strconv.Itoa(love) + " where user_id= " + strconv.Itoa(uuid) |
96 | 95 | err = ExcuteCmd(cmd) |
97 | 96 | if err != nil { |
98 | - logger.Error("DoAddGold err=%v,cmd=%v",err,cmd) | |
97 | + logger.Error("DoAddGold err=%v,cmd=%v", err, cmd) | |
99 | 98 | return err |
100 | 99 | } |
101 | 100 | } |
102 | 101 | return nil |
103 | 102 | } |
104 | 103 | |
105 | -func DoClearData(uuid int) error{ | |
104 | +func DoClearData(uuid int) error { | |
106 | 105 | //先删除十张分表的数据 |
107 | - for i:=0;i<10;i++ { | |
106 | + for i := 0; i < 10; i++ { | |
108 | 107 | tablename := "b_base_data_0" + strconv.Itoa(i) |
109 | 108 | cmd := "DELETE from " + tablename + " where data_uid= " + strconv.Itoa(uuid) |
110 | 109 | err := ExcuteCmd(cmd) |
111 | 110 | if err != nil { |
112 | - logger.Error("DoClearData err=%v,cmd=%v",err,cmd) | |
111 | + logger.Error("DoClearData err=%v,cmd=%v", err, cmd) | |
113 | 112 | return err |
114 | 113 | } |
115 | 114 | } |
... | ... | @@ -117,12 +116,10 @@ func DoClearData(uuid int) error{ |
117 | 116 | |
118 | 117 | } |
119 | 118 | |
120 | - | |
121 | - | |
122 | -func QueryAllData(f *os.File) error{ | |
119 | +func QueryAllData(f *os.File) error { | |
123 | 120 | |
124 | 121 | //先查询十张分表的数据 |
125 | - for i:=0;i<10;i++ { | |
122 | + for i := 0; i < 10; i++ { | |
126 | 123 | tablename := "b_user_ext_0" + strconv.Itoa(i) |
127 | 124 | cmd := "SELECT user_id,lv,exp,login_time from " + tablename |
128 | 125 | rows, err := m_game_db.Query(cmd) |
... | ... | @@ -140,7 +137,7 @@ func QueryAllData(f *os.File) error{ |
140 | 137 | Ulv := 0 |
141 | 138 | Exp := 0 |
142 | 139 | LoginTime := 0 |
143 | - err = rows.Scan(&Uid, &Ulv, &Exp,&LoginTime) //不scan会导致连接不释放 | |
140 | + err = rows.Scan(&Uid, &Ulv, &Exp, &LoginTime) //不scan会导致连接不释放 | |
144 | 141 | if err != nil { |
145 | 142 | logger.Error("Scan failed,err:%v", err) |
146 | 143 | return err |
... | ... | @@ -154,10 +151,10 @@ func QueryAllData(f *os.File) error{ |
154 | 151 | tm := time.Unix(int64(LoginTime), 0) |
155 | 152 | //fmt.Println(tm.Format("2006-01-02 15:04:05")) |
156 | 153 | str := strconv.Itoa(Uid) + " " + strconv.Itoa(Ulv) + " " + strconv.Itoa(Exp) + " " + tm.Format("2006-01-02 15:04:05") + "\n" |
157 | - _,err = f.WriteString(str) | |
154 | + _, err = f.WriteString(str) | |
158 | 155 | //logger.Info("ddt str=%v",str) |
159 | 156 | if err != nil { |
160 | - logger.Error("WRITETOFILEFAILED ERR=%v",err) | |
157 | + logger.Error("WRITETOFILEFAILED ERR=%v", err) | |
161 | 158 | return err |
162 | 159 | } |
163 | 160 | //fmt.Fprintln(w, str) |
... | ... | @@ -168,42 +165,39 @@ func QueryAllData(f *os.File) error{ |
168 | 165 | |
169 | 166 | } |
170 | 167 | |
171 | - | |
172 | - | |
173 | - | |
174 | -func QueryInvite(uuid int) ([]QuerInviteDesc,error){ | |
168 | +func QueryInvite(uuid int) ([]QuerInviteDesc, error) { | |
175 | 169 | var rtslice []QuerInviteDesc |
176 | 170 | |
177 | 171 | //首先取出邀请关系id |
178 | 172 | rkey := redis.USER_INVITEREWARD_FETCH_REWARD + ":" + strconv.Itoa(uuid) |
179 | - vv,err := redishandler.GetRedisClient().HGetAllKeys(rkey) | |
173 | + vv, err := redishandler.GetRedisClient().HGetAllKeys(rkey) | |
180 | 174 | if err != nil { |
181 | - logger.Error("QueryInvite err=%v",err) | |
182 | - return nil,err | |
175 | + logger.Error("QueryInvite err=%v", err) | |
176 | + return nil, err | |
183 | 177 | } |
184 | 178 | |
185 | - for _,val := range vv { | |
179 | + for _, val := range vv { | |
186 | 180 | var tmp QuerInviteDesc |
187 | 181 | |
188 | 182 | bytestr := string(val.([]byte)) |
189 | - bytenum,_ := strconv.Atoi(bytestr) | |
190 | - tmp.Uuid =bytenum | |
191 | - val,err :=redishandler.GetRedisClient().HGet(rkey,bytestr) | |
183 | + bytenum, _ := strconv.Atoi(bytestr) | |
184 | + tmp.Uuid = bytenum | |
185 | + val, err := redishandler.GetRedisClient().HGet(rkey, bytestr) | |
192 | 186 | if err != nil { |
193 | 187 | tmp.IsFecthed = 1 |
194 | - logger.Error("QueryInvite failed err=%v",err) | |
188 | + logger.Error("QueryInvite failed err=%v", err) | |
195 | 189 | continue |
196 | 190 | } |
197 | 191 | |
198 | - stat,_ := strconv.Atoi(val) | |
192 | + stat, _ := strconv.Atoi(val) | |
199 | 193 | tmp.IsFecthed = stat |
200 | 194 | |
201 | - rtslice = append(rtslice,tmp) | |
195 | + rtslice = append(rtslice, tmp) | |
202 | 196 | } |
203 | 197 | |
204 | 198 | //需要查询对应的数据 |
205 | - for k,val := range rtslice { | |
206 | - for i:=0;i<10;i++ { | |
199 | + for k, val := range rtslice { | |
200 | + for i := 0; i < 10; i++ { | |
207 | 201 | tablename := "b_user_ext_0" + strconv.Itoa(i) |
208 | 202 | cmd := "SELECT nickname,avatar_url from " + tablename + " where user_id= " + strconv.Itoa(val.Uuid) |
209 | 203 | rows, err := m_game_db.Query(cmd) |
... | ... | @@ -229,15 +223,16 @@ func QueryInvite(uuid int) ([]QuerInviteDesc,error){ |
229 | 223 | } |
230 | 224 | } |
231 | 225 | |
232 | - return rtslice,nil | |
226 | + return rtslice, nil | |
233 | 227 | } |
234 | 228 | |
235 | -func QueryNameAndHead(uuid int) (string,string,error) { | |
229 | +func QueryNameAndHead(uuid int) (string, string, int, error) { | |
236 | 230 | var nickname string |
237 | 231 | var headurl string |
238 | - for i:=0;i<10;i++ { | |
232 | + var gender int | |
233 | + for i := 0; i < 10; i++ { | |
239 | 234 | tablename := "b_user_ext_0" + strconv.Itoa(i) |
240 | - cmd := "SELECT nickname,avatar_url from " + tablename + " where user_id= " + strconv.Itoa(uuid) | |
235 | + cmd := "SELECT nickname,avatar_url,gender from " + tablename + " where user_id= " + strconv.Itoa(uuid) | |
241 | 236 | rows, err := m_game_db.Query(cmd) |
242 | 237 | defer func() { |
243 | 238 | if rows != nil { |
... | ... | @@ -247,17 +242,17 @@ func QueryNameAndHead(uuid int) (string,string,error) { |
247 | 242 | |
248 | 243 | if err != nil { |
249 | 244 | logger.Error("Query failed,err:%v", err) |
250 | - return "","",err | |
245 | + return "", "", 1, err | |
251 | 246 | } |
252 | 247 | for rows.Next() { |
253 | 248 | |
254 | - err = rows.Scan(&nickname, &headurl) //不scan会导致连接不释放 | |
249 | + err = rows.Scan(&nickname, &headurl, &gender) //不scan会导致连接不释放 | |
255 | 250 | if err != nil { |
256 | 251 | logger.Error("Scan failed,err:%v", err) |
257 | - return "","",err | |
252 | + return "", "", 1, err | |
258 | 253 | } |
259 | 254 | } |
260 | 255 | } |
261 | 256 | |
262 | - return nickname,headurl,nil | |
263 | -} | |
264 | 257 | \ No newline at end of file |
258 | + return nickname, headurl, gender, nil | |
259 | +} | ... | ... |