Commit 5dfa463a392e96b8103d1683927a72e06c1cd764

Authored by 陆恒
1 parent 6e0d8bcb
Exists in master

提交聊天相关接口

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 +}
... ...