Commit 5dfa463a392e96b8103d1683927a72e06c1cd764

Authored by 陆恒
1 parent 6e0d8bcb
Exists in master

提交聊天相关接口

src/HttpServer/logic/constdef.go
1 package logic 1 package logic
2 2
3 var ( 3 var (
4 - WETCHATAPPID="wx572a2a5ec4538f33" 4 + WETCHATAPPID = "wx572a2a5ec4538f33"
5 WETCHATSERCRT = "b31e2e7406af88fe7395cd178bdb64fc" 5 WETCHATSERCRT = "b31e2e7406af88fe7395cd178bdb64fc"
6 ) 6 )
7 7
8 const ( 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 VERSION_CONFIG = "version/v1.9.json" 13 VERSION_CONFIG = "version/v1.9.json"
13 ) 14 )
14 15
15 const ( 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 \ No newline at end of file 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,6 +201,37 @@ type QueryNewMessageResp struct {
201 Result QueryNewMessageResult `json:"result"` 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 type InviteWorkReq struct { 235 type InviteWorkReq struct {
205 Uuid int `json:"uuid"` 236 Uuid int `json:"uuid"`
206 } 237 }
@@ -372,7 +403,7 @@ type MsgCheckDesc struct { @@ -372,7 +403,7 @@ type MsgCheckDesc struct {
372 } 403 }
373 404
374 type MsgCheckResp struct { 405 type MsgCheckResp struct {
375 - Errcode string `json:"errcode"` 406 + Errcode int `json:"errcode"`
376 Errmsg string `json:"errmsg"` 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,7 +841,7 @@ func GetdagongList(uuid int) (*WorkList, []InviteWorkOffDesc, error) {
841 //加入打工列表 841 //加入打工列表
842 func AddDagongList(uuid int, masteruuid int, list WorkList) error { 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 if err != nil { 845 if err != nil {
846 logger.Error("AddDagongList err=%v", err) 846 logger.Error("AddDagongList err=%v", err)
847 return err 847 return err
@@ -886,17 +886,45 @@ func QueryUserTeamId(uuid int) (int, error) { @@ -886,17 +886,45 @@ func QueryUserTeamId(uuid int) (int, error) {
886 return tmp.Team_id, nil 886 return tmp.Team_id, nil
887 } 887 }
888 888
889 -func GetChatEmojInfo(uuid int) []int { 889 +func GetChatEmojInfo(uuid int) *EmojunlockInfo {
890 var tmp EmojunlockInfo 890 var tmp EmojunlockInfo
891 vv, err := redishandler.GetRedisClient().HGet(redis.USER_CHAT_EMOJUNLOCK_KEY, strconv.Itoa(uuid)) 891 vv, err := redishandler.GetRedisClient().HGet(redis.USER_CHAT_EMOJUNLOCK_KEY, strconv.Itoa(uuid))
892 if err != nil { 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 err = json.Unmarshal([]byte(vv), &tmp) 909 err = json.Unmarshal([]byte(vv), &tmp)
896 if err != nil { 910 if err != nil {
897 return nil 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 func CheckTeamHasNewMessage(uuid int) (bool, error) { 930 func CheckTeamHasNewMessage(uuid int) (bool, error) {
@@ -976,7 +1004,7 @@ func GetPrivateBriefList(uuid int) []QueryBrifeMessageData { @@ -976,7 +1004,7 @@ func GetPrivateBriefList(uuid int) []QueryBrifeMessageData {
976 tmp.Uuid = val 1004 tmp.Uuid = val
977 tmp.Isnew = 1 1005 tmp.Isnew = 1
978 tmp.Ctype = 2 1006 tmp.Ctype = 2
979 - heads, names, err := mysql.QueryNameAndHead(val) 1007 + heads, names, _, err := mysql.QueryNameAndHead(val)
980 if err != nil { 1008 if err != nil {
981 logger.Error("GetPrivateBriefList err=%v", err) 1009 logger.Error("GetPrivateBriefList err=%v", err)
982 } 1010 }
@@ -998,7 +1026,7 @@ func GetPrivateBriefList(uuid int) []QueryBrifeMessageData { @@ -998,7 +1026,7 @@ func GetPrivateBriefList(uuid int) []QueryBrifeMessageData {
998 tmp.Uuid = val 1026 tmp.Uuid = val
999 tmp.Isnew = 0 1027 tmp.Isnew = 0
1000 tmp.Ctype = 2 1028 tmp.Ctype = 2
1001 - heads, names, err := mysql.QueryNameAndHead(val) 1029 + heads, names, _, err := mysql.QueryNameAndHead(val)
1002 if err != nil { 1030 if err != nil {
1003 logger.Error("GetPrivateBriefList err=%v", err) 1031 logger.Error("GetPrivateBriefList err=%v", err)
1004 } 1032 }
@@ -1119,3 +1147,159 @@ func GetPrivateChatMessage(uuid, taduid int) []QueryChatMessageData { @@ -1119,3 +1147,159 @@ func GetPrivateChatMessage(uuid, taduid int) []QueryChatMessageData {
1119 sort.Sort(rtsl) 1147 sort.Sort(rtsl)
1120 return rtsl 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,11 +96,35 @@ func startServerHttpServe() {
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 http.HandleFunc("/catcafe/chat/queryChatMessage", queryChatMessage) //获取详细聊天信息
  99 + http.HandleFunc("/catcafe/chat/unlockEmj", UnlockEmj) //获取详细聊天信息
  100 + http.HandleFunc("/catcafe/chat/doChat", DoChat) //请求聊天
99 101
100 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) 102 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
101 CheckErr(err) 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 func queryChatMessage(w http.ResponseWriter, r *http.Request) { 128 func queryChatMessage(w http.ResponseWriter, r *http.Request) {
105 129
106 result, _ := ioutil.ReadAll(r.Body) 130 result, _ := ioutil.ReadAll(r.Body)
src/HttpServer/logic/logic.go
@@ -271,6 +271,121 @@ func HandleQueryInvite(w http.ResponseWriter, data string) { @@ -271,6 +271,121 @@ 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 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 func HandlequeryChatMessage(w http.ResponseWriter, data string) { 389 func HandlequeryChatMessage(w http.ResponseWriter, data string) {
275 390
276 SetHeader(w) 391 SetHeader(w)
@@ -331,7 +446,9 @@ func HandlequeryBrifeMessage(w http.ResponseWriter, data string) { @@ -331,7 +446,9 @@ func HandlequeryBrifeMessage(w http.ResponseWriter, data string) {
331 446
332 //先查询表情信息 447 //先查询表情信息
333 emjs := GetChatEmojInfo(rdata.Uuid) 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 var world QueryBrifeMessageData 454 var world QueryBrifeMessageData
@@ -1425,8 +1542,8 @@ func HandleTextCheck(w http.ResponseWriter, data string) { @@ -1425,8 +1542,8 @@ func HandleTextCheck(w http.ResponseWriter, data string) {
1425 var msgresp MsgCheckResp 1542 var msgresp MsgCheckResp
1426 _ = json.Unmarshal(result, &msgresp) 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 resp.Result.Data = msgresp.Errmsg 1547 resp.Result.Data = msgresp.Errmsg
1431 1548
1432 resp.Result.Code = ERROR_OK 1549 resp.Result.Code = ERROR_OK
src/common/redis/redis.go
@@ -324,6 +324,16 @@ func (client *RedisClient) LPop(listName string) (string, error) { @@ -324,6 +324,16 @@ func (client *RedisClient) LPop(listName string) (string, error) {
324 return value, err 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 func (client *RedisClient) LRem(listName string, count int, value string) error { 337 func (client *RedisClient) LRem(listName string, count int, value string) error {
328 conn := client.m_pool.Get() 338 conn := client.m_pool.Get()
329 defer conn.Close() 339 defer conn.Close()
@@ -345,6 +355,16 @@ func (client *RedisClient) RPush(listName string, element string) error { @@ -345,6 +355,16 @@ func (client *RedisClient) RPush(listName string, element string) error {
345 return err 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 func (client *RedisClient) LLen(listName string) (int, error) { 368 func (client *RedisClient) LLen(listName string) (int, error) {
349 conn := client.m_pool.Get() 369 conn := client.m_pool.Get()
350 defer conn.Close() 370 defer conn.Close()
src/mysql/dbmysql.go
@@ -14,13 +14,13 @@ import ( @@ -14,13 +14,13 @@ import (
14 ) 14 )
15 15
16 var ( 16 var (
17 - m_game_db *sql.DB 17 + m_game_db *sql.DB
18 ) 18 )
19 19
20 type QuerInviteDesc struct { 20 type QuerInviteDesc struct {
21 - Uuid int  
22 - NickName string  
23 - HeadUrl string 21 + Uuid int
  22 + NickName string
  23 + HeadUrl string
24 IsFecthed int 24 IsFecthed int
25 } 25 }
26 26
@@ -55,7 +55,7 @@ func ExcuteCmd(cmd string) error { @@ -55,7 +55,7 @@ func ExcuteCmd(cmd string) error {
55 return err 55 return err
56 } 56 }
57 57
58 -func TestClearData(uid int) (int,error) { 58 +func TestClearData(uid int) (int, error) {
59 cmd := fmt.Sprintf("select coin from b_user_ext_04 where user_id=%d", uid) 59 cmd := fmt.Sprintf("select coin from b_user_ext_04 where user_id=%d", uid)
60 60
61 rows, err := m_game_db.Query(cmd) 61 rows, err := m_game_db.Query(cmd)
@@ -64,52 +64,51 @@ func TestClearData(uid int) (int,error) { @@ -64,52 +64,51 @@ func TestClearData(uid int) (int,error) {
64 } 64 }
65 if err != nil { 65 if err != nil {
66 logger.Notic("TestClearData mysql select error:%v", err) 66 logger.Notic("TestClearData mysql select error:%v", err)
67 - return 0,err 67 + return 0, err
68 } 68 }
69 69
70 -  
71 var value int 70 var value int
72 for rows.Next() { 71 for rows.Next() {
73 72
74 err = rows.Scan(&value) 73 err = rows.Scan(&value)
75 if err != nil { 74 if err != nil {
76 logger.Notic("TestClearData mysql handle result error:%v", err) 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 break 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 tablename := "b_user_ext_0" + strconv.Itoa(i) 87 tablename := "b_user_ext_0" + strconv.Itoa(i)
89 cmd := "update " + tablename + " set coin = " + strconv.Itoa(gold) + " where user_id= " + strconv.Itoa(uuid) 88 cmd := "update " + tablename + " set coin = " + strconv.Itoa(gold) + " where user_id= " + strconv.Itoa(uuid)
90 err := ExcuteCmd(cmd) 89 err := ExcuteCmd(cmd)
91 if err != nil { 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 return err 92 return err
94 } 93 }
95 cmd = "update " + tablename + " set love_exp = " + strconv.Itoa(love) + " where user_id= " + strconv.Itoa(uuid) 94 cmd = "update " + tablename + " set love_exp = " + strconv.Itoa(love) + " where user_id= " + strconv.Itoa(uuid)
96 err = ExcuteCmd(cmd) 95 err = ExcuteCmd(cmd)
97 if err != nil { 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 return err 98 return err
100 } 99 }
101 } 100 }
102 return nil 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 tablename := "b_base_data_0" + strconv.Itoa(i) 107 tablename := "b_base_data_0" + strconv.Itoa(i)
109 cmd := "DELETE from " + tablename + " where data_uid= " + strconv.Itoa(uuid) 108 cmd := "DELETE from " + tablename + " where data_uid= " + strconv.Itoa(uuid)
110 err := ExcuteCmd(cmd) 109 err := ExcuteCmd(cmd)
111 if err != nil { 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 return err 112 return err
114 } 113 }
115 } 114 }
@@ -117,12 +116,10 @@ func DoClearData(uuid int) error{ @@ -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 tablename := "b_user_ext_0" + strconv.Itoa(i) 123 tablename := "b_user_ext_0" + strconv.Itoa(i)
127 cmd := "SELECT user_id,lv,exp,login_time from " + tablename 124 cmd := "SELECT user_id,lv,exp,login_time from " + tablename
128 rows, err := m_game_db.Query(cmd) 125 rows, err := m_game_db.Query(cmd)
@@ -140,7 +137,7 @@ func QueryAllData(f *os.File) error{ @@ -140,7 +137,7 @@ func QueryAllData(f *os.File) error{
140 Ulv := 0 137 Ulv := 0
141 Exp := 0 138 Exp := 0
142 LoginTime := 0 139 LoginTime := 0
143 - err = rows.Scan(&Uid, &Ulv, &Exp,&LoginTime) //不scan会导致连接不释放 140 + err = rows.Scan(&Uid, &Ulv, &Exp, &LoginTime) //不scan会导致连接不释放
144 if err != nil { 141 if err != nil {
145 logger.Error("Scan failed,err:%v", err) 142 logger.Error("Scan failed,err:%v", err)
146 return err 143 return err
@@ -154,10 +151,10 @@ func QueryAllData(f *os.File) error{ @@ -154,10 +151,10 @@ func QueryAllData(f *os.File) error{
154 tm := time.Unix(int64(LoginTime), 0) 151 tm := time.Unix(int64(LoginTime), 0)
155 //fmt.Println(tm.Format("2006-01-02 15:04:05")) 152 //fmt.Println(tm.Format("2006-01-02 15:04:05"))
156 str := strconv.Itoa(Uid) + " " + strconv.Itoa(Ulv) + " " + strconv.Itoa(Exp) + " " + tm.Format("2006-01-02 15:04:05") + "\n" 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 //logger.Info("ddt str=%v",str) 155 //logger.Info("ddt str=%v",str)
159 if err != nil { 156 if err != nil {
160 - logger.Error("WRITETOFILEFAILED ERR=%v",err) 157 + logger.Error("WRITETOFILEFAILED ERR=%v", err)
161 return err 158 return err
162 } 159 }
163 //fmt.Fprintln(w, str) 160 //fmt.Fprintln(w, str)
@@ -168,42 +165,39 @@ func QueryAllData(f *os.File) error{ @@ -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 var rtslice []QuerInviteDesc 169 var rtslice []QuerInviteDesc
176 170
177 //首先取出邀请关系id 171 //首先取出邀请关系id
178 rkey := redis.USER_INVITEREWARD_FETCH_REWARD + ":" + strconv.Itoa(uuid) 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 if err != nil { 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 var tmp QuerInviteDesc 180 var tmp QuerInviteDesc
187 181
188 bytestr := string(val.([]byte)) 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 if err != nil { 186 if err != nil {
193 tmp.IsFecthed = 1 187 tmp.IsFecthed = 1
194 - logger.Error("QueryInvite failed err=%v",err) 188 + logger.Error("QueryInvite failed err=%v", err)
195 continue 189 continue
196 } 190 }
197 191
198 - stat,_ := strconv.Atoi(val) 192 + stat, _ := strconv.Atoi(val)
199 tmp.IsFecthed = stat 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 tablename := "b_user_ext_0" + strconv.Itoa(i) 201 tablename := "b_user_ext_0" + strconv.Itoa(i)
208 cmd := "SELECT nickname,avatar_url from " + tablename + " where user_id= " + strconv.Itoa(val.Uuid) 202 cmd := "SELECT nickname,avatar_url from " + tablename + " where user_id= " + strconv.Itoa(val.Uuid)
209 rows, err := m_game_db.Query(cmd) 203 rows, err := m_game_db.Query(cmd)
@@ -229,15 +223,16 @@ func QueryInvite(uuid int) ([]QuerInviteDesc,error){ @@ -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 var nickname string 230 var nickname string
237 var headurl string 231 var headurl string
238 - for i:=0;i<10;i++ { 232 + var gender int
  233 + for i := 0; i < 10; i++ {
239 tablename := "b_user_ext_0" + strconv.Itoa(i) 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 rows, err := m_game_db.Query(cmd) 236 rows, err := m_game_db.Query(cmd)
242 defer func() { 237 defer func() {
243 if rows != nil { 238 if rows != nil {
@@ -247,17 +242,17 @@ func QueryNameAndHead(uuid int) (string,string,error) { @@ -247,17 +242,17 @@ func QueryNameAndHead(uuid int) (string,string,error) {
247 242
248 if err != nil { 243 if err != nil {
249 logger.Error("Query failed,err:%v", err) 244 logger.Error("Query failed,err:%v", err)
250 - return "","",err 245 + return "", "", 1, err
251 } 246 }
252 for rows.Next() { 247 for rows.Next() {
253 248
254 - err = rows.Scan(&nickname, &headurl) //不scan会导致连接不释放 249 + err = rows.Scan(&nickname, &headurl, &gender) //不scan会导致连接不释放
255 if err != nil { 250 if err != nil {
256 logger.Error("Scan failed,err:%v", err) 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 \ No newline at end of file 257 \ No newline at end of file
  258 + return nickname, headurl, gender, nil
  259 +}