Commit f032452a73cce4624036a8eb1ec0bd3d3f1a733c

Authored by 陆恒
1 parent 0b85f107
Exists in master

提交聊天相关接口

src/HttpServer/logic/datadef.go
... ... @@ -14,6 +14,11 @@ const (
14 14  
15 15 )
16 16  
  17 +type RedisTeamInfo struct {
  18 + Team_id int `json:"team_id"`
  19 + User_id int `json:"user_id"`
  20 +}
  21 +
17 22 type WechatLoginReq struct {
18 23 Channel_id int `json:"channel_id"`
19 24 Invite_type int `json:"invite_type"`
... ... @@ -113,6 +118,24 @@ type QueryInviteResp struct {
113 118 Result QueryInviteResult `json:"result"`
114 119 }
115 120  
  121 +type QueryNewMessageReq struct{
  122 + Uuid int `json:"uuid"`
  123 +}
  124 +
  125 +type QueryNewMessageDesc struct {
  126 + Isnew int `json:"isnew"`
  127 +}
  128 +
  129 +type QueryNewMessageResult struct {
  130 + Code int `json:"code"`
  131 + Data QueryNewMessageDesc `json:"data"`
  132 +}
  133 +
  134 +type QueryNewMessageResp struct {
  135 + Status string `json:"status"`
  136 + Result QueryNewMessageResult `json:"result"`
  137 +}
  138 +
116 139  
117 140 type InviteWorkReq struct{
118 141 Uuid int `json:"uuid"`
... ...
src/HttpServer/logic/function.go
... ... @@ -22,36 +22,35 @@ func SetHeader(w http.ResponseWriter) {
22 22 w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid")
23 23 }
24 24  
25   -
26   -func (tinfo *TeamInfo) DoAddBuffTimee(btype int,muti int,resp *AddTeamBuffResp) {
27   - addtime := 1800*muti
  25 +func (tinfo *TeamInfo) DoAddBuffTimee(btype int, muti int, resp *AddTeamBuffResp) {
  26 + addtime := 1800 * muti
28 27 index := 0
29   - for k,val := range tinfo.BInfo.Buff {
  28 + for k, val := range tinfo.BInfo.Buff {
30 29 if val.Type == btype {
31 30 index = k
32 31 }
33 32 }
34 33  
35   - for i:=0;i<len(tinfo.BInfo.Buff[index].BuffInfo);i++ {
  34 + for i := 0; i < len(tinfo.BInfo.Buff[index].BuffInfo); i++ {
36 35 tinfo.BInfo.Buff[index].BuffInfo[i].EndTime += addtime
37 36 }
38 37  
39   - for _,vak := range tinfo.BInfo.Buff {
  38 + for _, vak := range tinfo.BInfo.Buff {
40 39 var tmp AddTeamBuffSpec
41 40 tmp.Build_type = vak.Type
42   - for _,val1 := range vak.BuffInfo {
  41 + for _, val1 := range vak.BuffInfo {
43 42 var tmp1 BuffTimeInfo
44 43 tmp1.Buff_begin_time = val1.BeginTime
45 44 tmp1.Buff_end_time = val1.EndTime
46   - tmp.Buff_time = append(tmp.Buff_time,tmp1)
  45 + tmp.Buff_time = append(tmp.Buff_time, tmp1)
47 46 }
48   - resp.Result.Data.Build_list = append(resp.Result.Data.Build_list,tmp)
  47 + resp.Result.Data.Build_list = append(resp.Result.Data.Build_list, tmp)
49 48 }
50 49 }
51 50  
52   -func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) {
  51 +func (tinfo *TeamInfo) DoDevote(btype int, assets int, uuid int, muti int) {
53 52 bfind := false
54   - for k,val := range tinfo.BInfo.Devote {
  53 + for k, val := range tinfo.BInfo.Devote {
55 54 if val.Type == btype {
56 55 tinfo.BInfo.Devote[k].Assets += assets
57 56 bfind = true
... ... @@ -63,37 +62,37 @@ func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) {
63 62 tmp.UserId = uuid
64 63 tmp.Assets = assets
65 64 tmp.Type = btype
66   - tinfo.BInfo.Devote = append(tinfo.BInfo.Devote,tmp)
  65 + tinfo.BInfo.Devote = append(tinfo.BInfo.Devote, tmp)
67 66 }
68 67  
69 68 //需要处理一下buff
70 69 nowtime := int(time.Now().Unix())
71   - addTime := 1800*muti
  70 + addTime := 1800 * muti
72 71 var index = 0
73   - for k,val := range tinfo.BInfo.Buff {
  72 + for k, val := range tinfo.BInfo.Buff {
74 73 if val.Type == btype {
75 74 index = k
76 75 }
77 76 }
78   - if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime < nowtime + 86399 {
  77 + if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime < nowtime+86399 {
79 78 if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime >= nowtime {
80 79 tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += addTime
81 80 } else {
82 81 var tmp TeamBuffInfo
83 82 tmp.BeginTime = nowtime
84 83 tmp.EndTime = nowtime + addTime
85   - tinfo.BInfo.Buff[index].BuffInfo = append(tinfo.BInfo.Buff[index].BuffInfo,tmp)
  84 + tinfo.BInfo.Buff[index].BuffInfo = append(tinfo.BInfo.Buff[index].BuffInfo, tmp)
86 85 }
87   - }else {
  86 + } else {
88 87 tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += 86399
89 88 }
90 89  
91 90 //删除掉无用的
92   - yestime := nowtime-86400
93   - for i:=0;i<len(tinfo.BInfo.Buff[index].BuffInfo);i++ {
  91 + yestime := nowtime - 86400
  92 + for i := 0; i < len(tinfo.BInfo.Buff[index].BuffInfo); i++ {
94 93 v := tinfo.BInfo.Buff[index].BuffInfo[i]
95 94 if v.BeginTime < yestime && v.EndTime < yestime {
96   - tinfo.BInfo.Buff = append(tinfo.BInfo.Buff[:i],tinfo.BInfo.Buff[i+1:]...)
  95 + tinfo.BInfo.Buff = append(tinfo.BInfo.Buff[:i], tinfo.BInfo.Buff[i+1:]...)
97 96 i--
98 97 }
99 98 }
... ... @@ -101,7 +100,7 @@ func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) {
101 100  
102 101 func (tinfo *TeamInfo) IsInTeam(uuid int) bool {
103 102 inteam := false
104   - for _,val := range tinfo.MemInfo.MemList {
  103 + for _, val := range tinfo.MemInfo.MemList {
105 104 if val == uuid {
106 105 inteam = true
107 106 break
... ... @@ -110,123 +109,123 @@ func (tinfo *TeamInfo) IsInTeam(uuid int) bool {
110 109 return inteam
111 110 }
112 111  
113   -func (tinfo *TeamInfo) DelTeamMember(uuid int) {
  112 +func (tinfo *TeamInfo) DelTeamMember(uuid int) {
114 113  
115   - for k,val := range tinfo.MemInfo.MemList {
  114 + for k, val := range tinfo.MemInfo.MemList {
116 115 if val == uuid {
117   - tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList[:k],tinfo.MemInfo.MemList[k+1:]...)
  116 + tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList[:k], tinfo.MemInfo.MemList[k+1:]...)
118 117 break
119 118 }
120 119 }
121 120  
122 121 //删除team关系
123   - SaveTeamToUuid(0,uuid)
  122 + SaveTeamToUuid(0, uuid)
124 123  
125 124 }
126 125  
127 126 //设置
128   -func SetTouristUid(utoken string,uid int) error{
129   - err := redishandler.GetRedisClient().HSet(redis.USER_TOURIST_UID, utoken,strconv.Itoa(uid))
  127 +func SetTouristUid(utoken string, uid int) error {
  128 + err := redishandler.GetRedisClient().HSet(redis.USER_TOURIST_UID, utoken, strconv.Itoa(uid))
130 129 if err != nil {
131   - logger.Error("SetTouristUid failed,err=%v",err)
  130 + logger.Error("SetTouristUid failed,err=%v", err)
132 131 return err
133 132 }
134 133 return nil
135 134 }
136 135  
137 136 //获取游客的uid 返回值为uid
138   -func GetTouristUid(utoken string) (int,error){
  137 +func GetTouristUid(utoken string) (int, error) {
139 138 uidstr, err := redishandler.GetRedisClient().HGet(redis.USER_TOURIST_UID, utoken)
140 139 if err != nil {
141   - return 0,err
  140 + return 0, err
142 141 }
143 142  
144   - uid,err := strconv.Atoi(uidstr)
145   - return uid,err
  143 + uid, err := strconv.Atoi(uidstr)
  144 + return uid, err
146 145 }
147 146  
148 147 //获取玩家新的uuid
149 148 func GetNewUUid() int {
150 149 redishandler.GetRedisClient().Incr(redis.USER_MAX_UUID)
151   - newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.USER_MAX_UUID)
  150 + newuuid, err := redishandler.GetRedisClient().GetInt(redis.USER_MAX_UUID)
152 151 if err != nil {
153   - logger.Error("GetNewUUid failed,err=%v",err)
  152 + logger.Error("GetNewUUid failed,err=%v", err)
154 153 return 0
155 154 }
156 155  
157   - return newuuid+100000
  156 + return newuuid + 100000
158 157 }
159 158  
160 159 //获取新的teamid
161 160 func GetNewTeamId() int {
162 161 redishandler.GetRedisClient().Incr(redis.TEAM_MAX_UUID)
163   - newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.TEAM_MAX_UUID)
  162 + newuuid, err := redishandler.GetRedisClient().GetInt(redis.TEAM_MAX_UUID)
164 163 if err != nil {
165   - logger.Error("GetNewUUid failed,err=%v",err)
  164 + logger.Error("GetNewUUid failed,err=%v", err)
166 165 return 0
167 166 }
168 167  
169   - return newuuid+100000
  168 + return newuuid + 100000
170 169 }
171 170  
172   -func SaveUserBaseData(uuid int,value string) error {
  171 +func SaveUserBaseData(uuid int, value string) error {
173 172 err := redishandler.GetRedisClient().HSet(redis.USER_BASE_DATA, strconv.Itoa(uuid), value)
174 173 return err
175 174 }
176 175  
177   -func GetUserBaseData(uuid int ) (string,error) {
178   - strval,err := redishandler.GetRedisClient().HGet(redis.USER_BASIC_DATA, strconv.Itoa(uuid))
  176 +func GetUserBaseData(uuid int) (string, error) {
  177 + strval, err := redishandler.GetRedisClient().HGet(redis.USER_BASIC_DATA, strconv.Itoa(uuid))
179 178 if err != nil {
180   - logger.Error("GetUserBasic failed,err=%v",err)
181   - return "",err
  179 + logger.Error("GetUserBasic failed,err=%v", err)
  180 + return "", err
182 181 }
183 182  
184   - return strval,err
  183 + return strval, err
185 184  
186 185 }
187 186  
188   -func SaveUserBasic(uuid int,value string) error {
  187 +func SaveUserBasic(uuid int, value string) error {
189 188 err := redishandler.GetRedisClient().HSet(redis.USER_BASIC_DATA, strconv.Itoa(uuid), value)
190 189 return err
191 190 }
192 191  
193   -func GetUserBasic(uuid int ) (*UserBaseData,error) {
194   - strval,err := redishandler.GetRedisClient().HGet(redis.USER_BASIC_DATA, strconv.Itoa(uuid))
  192 +func GetUserBasic(uuid int) (*UserBaseData, error) {
  193 + strval, err := redishandler.GetRedisClient().HGet(redis.USER_BASIC_DATA, strconv.Itoa(uuid))
195 194 if err != nil {
196   - logger.Error("GetUserBasic failed,err=%v",err)
197   - return nil,err
  195 + logger.Error("GetUserBasic failed,err=%v", err)
  196 + return nil, err
198 197 }
199 198 basic := new(UserBaseData)
200 199 err = json.Unmarshal([]byte(strval), basic)
201   - return basic,err
  200 + return basic, err
202 201  
203 202 }
204 203  
205   -func SaveUserExt(extdata * UserData) error {
  204 +func SaveUserExt(extdata *UserData) error {
206 205 if extdata == nil {
207 206 return nil
208 207 }
209   - m_userInfo.Set(uint32(extdata.Userid),extdata)
  208 + m_userInfo.Set(uint32(extdata.Userid), extdata)
210 209  
211   - ext,_ := json.Marshal(&extdata)
  210 + ext, _ := json.Marshal(&extdata)
212 211 err := redishandler.GetRedisClient().HSet(redis.USER_EXT_DATA, strconv.Itoa(extdata.Userid), string(ext))
213 212 return err
214 213 }
215 214  
216   -func GetUserExt(uuid int) (*UserData,error) {
217   - strval,err := redishandler.GetRedisClient().HGet(redis.USER_EXT_DATA, strconv.Itoa(uuid))
  215 +func GetUserExt(uuid int) (*UserData, error) {
  216 + strval, err := redishandler.GetRedisClient().HGet(redis.USER_EXT_DATA, strconv.Itoa(uuid))
218 217 if err != nil {
219   - logger.Error("GetUserExt failed,err=%v",err)
220   - return nil,err
  218 + logger.Error("GetUserExt failed,err=%v", err)
  219 + return nil, err
221 220 }
222 221 ext := new(UserData)
223 222 err = json.Unmarshal([]byte(strval), ext)
224   - return ext,err
  223 + return ext, err
225 224 }
226 225  
227 226 //检测队伍名称是否已经存在
228 227 func GetUserTeamNameIsExist(name string) bool {
229   - _,err := redishandler.GetRedisClient().HGet(redis.TEAM_USERTEAM_NAME, name)
  228 + _, err := redishandler.GetRedisClient().HGet(redis.TEAM_USERTEAM_NAME, name)
230 229 if err != nil {
231 230 return true
232 231 }
... ... @@ -234,7 +233,7 @@ func GetUserTeamNameIsExist(name string) bool {
234 233 }
235 234  
236 235 //删除存储的队伍名称
237   -func DelUserTeamName(name string) error{
  236 +func DelUserTeamName(name string) error {
238 237 err := redishandler.GetRedisClient().HDel(redis.TEAM_USERTEAM_NAME, name)
239 238 if err != nil {
240 239 logger.Error("SetUserTeamName err=%v),err")
... ... @@ -243,7 +242,7 @@ func DelUserTeamName(name string) error{
243 242 }
244 243  
245 244 //存储队伍名称
246   -func SetUserTeamName(name string,teamid int) {
  245 +func SetUserTeamName(name string, teamid int) {
247 246 err := redishandler.GetRedisClient().HSet(redis.TEAM_USERTEAM_NAME, name, strconv.Itoa(teamid))
248 247 if err != nil {
249 248 logger.Error("SetUserTeamName err=%v),err")
... ... @@ -251,8 +250,8 @@ func SetUserTeamName(name string,teamid int) {
251 250 }
252 251  
253 252 //保存队伍信息
254   -func SaveTeamInfo(teamid int,tinfo *TeamInfo) error {
255   - team,_ := json.Marshal(tinfo)
  253 +func SaveTeamInfo(teamid int, tinfo *TeamInfo) error {
  254 + team, _ := json.Marshal(tinfo)
256 255 err := redishandler.GetRedisClient().HSet(redis.TEAM_INFO, strconv.Itoa(teamid), string(team))
257 256 if err != nil {
258 257 logger.Error("SaveTeamInfo err=%v),err")
... ... @@ -262,21 +261,21 @@ func SaveTeamInfo(teamid int,tinfo *TeamInfo) error {
262 261 }
263 262  
264 263 //获取队伍信息
265   -func GetTeamInfo(teamid int) (*TeamInfo,error) {
  264 +func GetTeamInfo(teamid int) (*TeamInfo, error) {
266 265 info := new(TeamInfo)
267   - vv,err := redishandler.GetRedisClient().HGet(redis.TEAM_INFO,strconv.Itoa(teamid))
  266 + vv, err := redishandler.GetRedisClient().HGet(redis.TEAM_INFO, strconv.Itoa(teamid))
268 267 if err != nil {
269   - logger.Error("GetTeamInfo failed,err=%v",err)
270   - return nil,err
  268 + logger.Error("GetTeamInfo failed,err=%v", err)
  269 + return nil, err
271 270 }
272 271  
273 272 err = json.Unmarshal([]byte(vv), info)
274   - return info,err
  273 + return info, err
275 274 }
276 275  
277 276 //保存teamid与uuid
278   -func SaveTeamToUuid(teamid,uuid int) error {
279   - err := redishandler.GetRedisClient().HSet(redis.TEAM_TEAMID_TOUUID, strconv.Itoa(uuid), strconv.Itoa(teamid))
  277 +func SaveTeamToUuid(teamid, uuid int) error {
  278 + err := redishandler.GetRedisClient().HSet(redis.TEAM_TEAMID_TOUUID, strconv.Itoa(uuid), strconv.Itoa(teamid))
280 279 if err != nil {
281 280 logger.Error("SaveTeamToUuid err=%v),err")
282 281 return err
... ... @@ -285,111 +284,110 @@ func SaveTeamToUuid(teamid,uuid int) error {
285 284 }
286 285  
287 286 //获取teamid与uuid
288   -func GetTeamByUuid(uuid int) (int,error) {
289   - vv,err := redishandler.GetRedisClient().HGet(redis.TEAM_TEAMID_TOUUID,strconv.Itoa(uuid))
  287 +func GetTeamByUuid(uuid int) (int, error) {
  288 + vv, err := redishandler.GetRedisClient().HGet(redis.TEAM_TEAMID_TOUUID, strconv.Itoa(uuid))
290 289 if err != nil {
291   - logger.Error("GetTeamByUuid failed,err=%v",err)
292   - return 0,err
  290 + logger.Error("GetTeamByUuid failed,err=%v", err)
  291 + return 0, err
293 292 }
294 293  
295   - teamid,err := strconv.Atoi(vv)
296   - return teamid,err
  294 + teamid, err := strconv.Atoi(vv)
  295 + return teamid, err
297 296 }
298 297  
299 298 type TeamSlice []*TeamInfo
300 299  
301   -func (a TeamSlice) Len() int { // 重写 Len() 方法
  300 +func (a TeamSlice) Len() int { // 重写 Len() 方法
302 301 return len(a)
303 302 }
304   -func (a TeamSlice) Swap(i, j int){ // 重写 Swap() 方法
  303 +func (a TeamSlice) Swap(i, j int) { // 重写 Swap() 方法
305 304 a[i], a[j] = a[j], a[i]
306 305 }
307 306 func (a TeamSlice) Less(i, j int) bool { // 重写 Less() 方法, 从大到小排序
308 307 return a[j].BaseInfo.Assets < a[i].BaseInfo.Assets
309 308 }
310 309  
311   -
312 310 //获取所有的team,分页 传入页签
313   -func GetTeamListByCond(shopnum int,page int) (TeamSlice,error,int) {
  311 +func GetTeamListByCond(shopnum int, page int) (TeamSlice, error, int) {
314 312 if page < 0 {
315   - logger.Error("GetTeamListByCond invalid page=%v",page)
  313 + logger.Error("GetTeamListByCond invalid page=%v", page)
316 314 page = 1
317 315 }
318 316 var rtslice TeamSlice
319   - vv,err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO)
  317 + vv, err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO)
320 318 if err != nil {
321 319 logger.Error("GetTeamListByCond err")
322   - return nil,err,0
  320 + return nil, err, 0
323 321 }
324 322  
325   - for _,val := range vv {
  323 + for _, val := range vv {
326 324 one := new(TeamInfo)
327 325 bytestr := val.([]byte)
328 326 err = json.Unmarshal(bytestr, one)
329 327 if err == nil {
330 328 if one.BaseInfo.Num <= shopnum {
331   - rtslice = append(rtslice,one)
  329 + rtslice = append(rtslice, one)
332 330 }
333 331 }
334 332 }
335 333 //排序
336 334 sort.Sort(rtslice)
337 335  
338   - begin := (page-1) * 10
  336 + begin := (page - 1) * 10
339 337 end := begin + 9
340 338 sumlen := len(rtslice)
341   - if begin > sumlen{
  339 + if begin > sumlen {
342 340 begin = sumlen - 10
343 341 }
344 342 if end > sumlen {
345 343 end = sumlen - 1
346 344 }
347 345  
348   - return rtslice[begin:end],nil,sumlen
  346 + return rtslice[begin:end], nil, sumlen
349 347  
350 348 }
351 349  
352   -func GetTeamListByNameCond(shopnum int,page int, name string) (TeamSlice,error,int) {
  350 +func GetTeamListByNameCond(shopnum int, page int, name string) (TeamSlice, error, int) {
353 351 if page < 0 {
354   - logger.Error("GetTeamListByCond invalid page=%v",page)
  352 + logger.Error("GetTeamListByCond invalid page=%v", page)
355 353 page = 1
356 354 }
357 355 var rtslice TeamSlice
358   - vv,err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO)
  356 + vv, err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO)
359 357 if err != nil {
360 358 logger.Error("GetTeamListByCond err")
361   - return nil,err,0
  359 + return nil, err, 0
362 360 }
363 361  
364   - for _,val := range vv {
  362 + for _, val := range vv {
365 363 one := new(TeamInfo)
366 364 bytestr := val.([]byte)
367 365 err = json.Unmarshal(bytestr, one)
368 366 if err == nil {
369   - if one.BaseInfo.Num <= shopnum && strings.Index(one.BaseInfo.Name,name) != -1{
370   - rtslice = append(rtslice,one)
  367 + if one.BaseInfo.Num <= shopnum && strings.Index(one.BaseInfo.Name, name) != -1 {
  368 + rtslice = append(rtslice, one)
371 369 }
372 370 }
373 371 }
374 372 //排序
375 373 sort.Sort(rtslice)
376 374  
377   - begin := (page-1) * 10
  375 + begin := (page - 1) * 10
378 376 end := begin + 9
379 377 sumlen := len(rtslice)
380   - if begin > sumlen{
  378 + if begin > sumlen {
381 379 begin = sumlen - 10
382 380 }
383 381 if end > sumlen {
384 382 end = sumlen - 1
385 383 }
386 384  
387   - return rtslice[begin:end],nil,sumlen
  385 + return rtslice[begin:end], nil, sumlen
388 386  
389 387 }
390 388  
391 389 func (alist *ApproveList) InApproveList(uuid int) bool {
392   - for _,val := range alist.Approve_info {
  390 + for _, val := range alist.Approve_info {
393 391 if val.Uuid == uuid {
394 392 return true
395 393 }
... ... @@ -398,56 +396,56 @@ func (alist *ApproveList) InApproveList(uuid int) bool {
398 396 }
399 397  
400 398 //
401   -func DelFromApproveList(uuid,deluuid int) error {
  399 +func DelFromApproveList(uuid, deluuid int) error {
402 400 return nil
403 401 }
404 402  
405 403 //待批准列表
406   -func GetUserApproveList(uuid int) (*ApproveList,error) {
  404 +func GetUserApproveList(uuid int) (*ApproveList, error) {
407 405 rt := new(ApproveList)
408 406 //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo
409 407 userkey := redis.FRIEND_APPROVELIST_KEY + ":" + strconv.Itoa(uuid)
410   - vv,err := redishandler.GetRedisClient().HGetAllValues(userkey)
  408 + vv, err := redishandler.GetRedisClient().HGetAllValues(userkey)
411 409 if err != nil {
412 410 logger.Error("GetUserApproveList err")
413   - return nil,err
  411 + return nil, err
414 412 }
415 413  
416   - nowtime:= int(time.Now().Unix())
417   - for _,val := range vv {
  414 + nowtime := int(time.Now().Unix())
  415 + for _, val := range vv {
418 416 one := new(ApplyInfo)
419 417 bytestr := val.([]byte)
420 418 err = json.Unmarshal(bytestr, one)
421   - if err!= nil {
  419 + if err != nil {
422 420 //需要剔除超过时间的
423   - if nowtime <= one.Apply_time + 3*86400 {
424   - rt.Approve_info = append(rt.Approve_info,*one)
425   - }else {
  421 + if nowtime <= one.Apply_time+3*86400 {
  422 + rt.Approve_info = append(rt.Approve_info, *one)
  423 + } else {
426 424 //已经超时,需要删除
427   - redishandler.GetRedisClient().HDel(userkey,strconv.Itoa(one.Uuid))
  425 + redishandler.GetRedisClient().HDel(userkey, strconv.Itoa(one.Uuid))
428 426 }
429 427  
430 428 }
431 429  
432 430 }
433   - return rt,nil
  431 + return rt, nil
434 432 }
435 433  
436   -func SaveUserApproveList(uuid int,adduuid int) error {
  434 +func SaveUserApproveList(uuid int, adduuid int) error {
437 435 userkey := redis.FRIEND_APPROVELIST_KEY + ":" + strconv.Itoa(uuid)
438 436 var finfo ApplyInfo
439 437 finfo.Uuid = adduuid
440 438 finfo.Apply_time = int(time.Now().Unix())
441   - str,err := json.Marshal(&finfo)
  439 + str, err := json.Marshal(&finfo)
442 440 if err != nil {
443   - logger.Error("SaveUserApproveList failed,err=%v",err)
  441 + logger.Error("SaveUserApproveList failed,err=%v", err)
444 442 }
445   - err = redishandler.GetRedisClient().HSet(userkey,strconv.Itoa(adduuid),string(str))
  443 + err = redishandler.GetRedisClient().HSet(userkey, strconv.Itoa(adduuid), string(str))
446 444 return err
447 445 }
448 446  
449 447 func (alist *ApplyList) InApplyList(uuid int) bool {
450   - for _,val := range alist.Apply_info {
  448 + for _, val := range alist.Apply_info {
451 449 if val.Uuid == uuid {
452 450 return true
453 451 }
... ... @@ -455,88 +453,88 @@ func (alist *ApplyList) InApplyList(uuid int) bool {
455 453 return false
456 454 }
457 455  
458   -func GetUserApplyList(uuid int) (*ApplyList,error) {
  456 +func GetUserApplyList(uuid int) (*ApplyList, error) {
459 457 rt := new(ApplyList)
460 458 //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo
461 459 userkey := redis.FRIEND_APPLYLIST_KEY + ":" + strconv.Itoa(uuid)
462   - vv,err := redishandler.GetRedisClient().HGetAllValues(userkey)
  460 + vv, err := redishandler.GetRedisClient().HGetAllValues(userkey)
463 461 if err != nil {
464 462 logger.Error("GetUserApplyList err")
465   - return nil,err
  463 + return nil, err
466 464 }
467 465  
468   - nowtime:= int(time.Now().Unix())
469   - for _,val := range vv {
  466 + nowtime := int(time.Now().Unix())
  467 + for _, val := range vv {
470 468 one := new(ApplyInfo)
471 469 bytestr := val.([]byte)
472 470 err = json.Unmarshal(bytestr, one)
473   - if err!= nil {
  471 + if err != nil {
474 472 //需要剔除超过时间的
475   - if nowtime <= one.Apply_time + 86400 {
476   - rt.Apply_info = append(rt.Apply_info,*one)
477   - }else {
  473 + if nowtime <= one.Apply_time+86400 {
  474 + rt.Apply_info = append(rt.Apply_info, *one)
  475 + } else {
478 476 //已经超时,需要删除
479   - redishandler.GetRedisClient().HDel(userkey,strconv.Itoa(one.Uuid))
  477 + redishandler.GetRedisClient().HDel(userkey, strconv.Itoa(one.Uuid))
480 478 }
481 479  
482 480 }
483 481  
484 482 }
485   - return rt,nil
  483 + return rt, nil
486 484 }
487 485  
488   -func SaveUserApplyList(uuid int,adduuid int) error {
  486 +func SaveUserApplyList(uuid int, adduuid int) error {
489 487 userkey := redis.FRIEND_APPLYLIST_KEY + ":" + strconv.Itoa(uuid)
490 488 var finfo ApplyInfo
491 489 finfo.Uuid = adduuid
492 490 finfo.Apply_time = int(time.Now().Unix())
493   - str,err := json.Marshal(&finfo)
  491 + str, err := json.Marshal(&finfo)
494 492 if err != nil {
495   - logger.Error("SaveUserApplyList failed,err=%v",err)
  493 + logger.Error("SaveUserApplyList failed,err=%v", err)
496 494 }
497   - err = redishandler.GetRedisClient().HSet(userkey,strconv.Itoa(adduuid),string(str))
  495 + err = redishandler.GetRedisClient().HSet(userkey, strconv.Itoa(adduuid), string(str))
498 496 return err
499 497 }
500 498  
501   -func GetUserFriendList(uuid int) (*FriendList,error) {
  499 +func GetUserFriendList(uuid int) (*FriendList, error) {
502 500 //todo
503 501 rt := new(FriendList)
504 502 //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo
505 503 userkey := redis.FRIEND_LIST_KEY + ":" + strconv.Itoa(uuid)
506   - vv,err := redishandler.GetRedisClient().HGetAllValues(userkey)
  504 + vv, err := redishandler.GetRedisClient().HGetAllValues(userkey)
507 505 if err != nil {
508 506 logger.Error("GetUserFriendList err")
509   - return nil,err
  507 + return nil, err
510 508 }
511 509  
512   - for _,val := range vv {
  510 + for _, val := range vv {
513 511 one := new(FriendInfo)
514 512 bytestr := val.([]byte)
515 513 err = json.Unmarshal(bytestr, one)
516   - if err!= nil {
517   - rt.Friends = append(rt.Friends,*one)
  514 + if err != nil {
  515 + rt.Friends = append(rt.Friends, *one)
518 516 }
519 517  
520 518 }
521   - return rt,nil
  519 + return rt, nil
522 520 }
523 521  
524   -func SaveUserFriendList(uuid int,adduuid int,status int) error {
  522 +func SaveUserFriendList(uuid int, adduuid int, status int) error {
525 523 userkey := redis.FRIEND_LIST_KEY + ":" + strconv.Itoa(uuid)
526 524 var finfo FriendInfo
527 525 finfo.Uuid = adduuid
528 526 finfo.Status = status
529   - str,err := json.Marshal(&finfo)
  527 + str, err := json.Marshal(&finfo)
530 528 if err != nil {
531   - logger.Error("SaveUserFriendList failed,err=%v",err)
  529 + logger.Error("SaveUserFriendList failed,err=%v", err)
532 530 }
533   - err = redishandler.GetRedisClient().HSet(userkey,strconv.Itoa(adduuid),string(str))
  531 + err = redishandler.GetRedisClient().HSet(userkey, strconv.Itoa(adduuid), string(str))
534 532 return err
535 533 }
536 534  
537 535 //判断是否已经是好友
538 536 func (flist *FriendList) IsInFreiendList(uuid int) bool {
539   - for _,val := range flist.Friends {
  537 + for _, val := range flist.Friends {
540 538 if val.Uuid == uuid && val.Status == 0 {
541 539 return true
542 540 }
... ... @@ -544,53 +542,52 @@ func (flist *FriendList) IsInFreiendList(uuid int) bool {
544 542 return false
545 543 }
546 544  
547   -func SaveCacheRecommandFriendList(uuid int,data *GetRecommendListDesc) {
548   - savestr,err := json.Marshal(data)
  545 +func SaveCacheRecommandFriendList(uuid int, data *GetRecommendListDesc) {
  546 + savestr, err := json.Marshal(data)
549 547 if err != nil {
550   - logger.Error("SaveCacheRecommandFriendList err=%v",err)
  548 + logger.Error("SaveCacheRecommandFriendList err=%v", err)
551 549 return
552 550 }
553   - err = redishandler.GetRedisClient().HSet(redis.FRIEND_RECOMMANDLIST_KEY,strconv.Itoa(uuid),string(savestr))
  551 + err = redishandler.GetRedisClient().HSet(redis.FRIEND_RECOMMANDLIST_KEY, strconv.Itoa(uuid), string(savestr))
554 552 if err != nil {
555   - logger.Error("SaveCacheRecommandFriendList err=%v",err)
  553 + logger.Error("SaveCacheRecommandFriendList err=%v", err)
556 554 return
557 555 }
558 556 }
559 557  
560   -func GetCacheRecommandFriendList(uuid int) (*GetRecommendListDesc,error) {
  558 +func GetCacheRecommandFriendList(uuid int) (*GetRecommendListDesc, error) {
561 559 rt := new(GetRecommendListDesc)
562   - val,err:= redishandler.GetRedisClient().HGet(redis.FRIEND_RECOMMANDLIST_KEY,strconv.Itoa(uuid))
  560 + val, err := redishandler.GetRedisClient().HGet(redis.FRIEND_RECOMMANDLIST_KEY, strconv.Itoa(uuid))
563 561 if err != nil {
564   - logger.Error("GetCacheRecommandFriendList err=%v",err)
565   - return rt,err
  562 + logger.Error("GetCacheRecommandFriendList err=%v", err)
  563 + return rt, err
566 564 }
567 565  
568   - err = json.Unmarshal([]byte(val),rt)
  566 + err = json.Unmarshal([]byte(val), rt)
569 567 if err != nil {
570   - logger.Error("GetCacheRecommandFriendList err=%v",err)
571   - return nil,err
  568 + logger.Error("GetCacheRecommandFriendList err=%v", err)
  569 + return nil, err
572 570 }
573 571  
574   - return rt,nil
  572 + return rt, nil
575 573 }
576 574  
577 575 func DelCacheRecommandFriendList(uuid int) error {
578   - err := redishandler.GetRedisClient().HDel(redis.FRIEND_RECOMMANDLIST_KEY,strconv.Itoa(uuid))
  576 + err := redishandler.GetRedisClient().HDel(redis.FRIEND_RECOMMANDLIST_KEY, strconv.Itoa(uuid))
579 577 return err
580 578 }
581 579  
582   -
583 580 func GetFfiendData(frienduuid int) *GetRecommendListInfo {
584   - tmpext,err := GetUserExt(frienduuid)
  581 + tmpext, err := GetUserExt(frienduuid)
585 582 if err != nil {
586 583 return nil
587 584 }
588   - tmpbasic,err := GetUserBasic(frienduuid)
  585 + tmpbasic, err := GetUserBasic(frienduuid)
589 586 if err != nil {
590 587 return nil
591 588 }
592 589  
593   - tmpinfo := new(GetRecommendListInfo)
  590 + tmpinfo := new(GetRecommendListInfo)
594 591 tmpinfo.Hot = tmpext.Hot
595 592 tmpinfo.Bean = tmpext.Bean
596 593 tmpinfo.Userid = tmpext.Userid
... ... @@ -609,158 +606,154 @@ func GetFfiendData(frienduuid int) *GetRecommendListInfo {
609 606 }
610 607  
611 608 //获取推荐好友列表
612   -func (flist *FriendList)GetRecommandFriendList(uuid,friendnum int) (*GetRecommendListDesc,error) {
  609 +func (flist *FriendList) GetRecommandFriendList(uuid, friendnum int) (*GetRecommendListDesc, error) {
613 610  
614   - rlist,err := GetCacheRecommandFriendList(uuid)
  611 + rlist, err := GetCacheRecommandFriendList(uuid)
615 612 if err == nil {
616 613 //有缓存 ,直接返回
617   - return rlist,err
  614 + return rlist, err
618 615 }
619 616  
620   - selfext,err := GetUserExt(uuid)
  617 + selfext, err := GetUserExt(uuid)
621 618 if err != nil {
622   - return nil,err
  619 + return nil, err
623 620 }
624   - selfbasic,err := GetUserBasic(uuid)
  621 + selfbasic, err := GetUserBasic(uuid)
625 622 if err != nil {
626   - return nil,err
  623 + return nil, err
627 624 }
628 625  
  626 + var randlist []int //记录随机的几个好友
  627 + var first []int //初步筛选的id列表
  628 + var second []int //第二步
  629 + var third []int
  630 + vv, err := redishandler.GetRedisClient().HGetAllValues(redis.USER_EXT_DATA)
  631 + if err != nil {
  632 + return nil, err
  633 + }
629 634  
630   -
631   - var randlist []int //记录随机的几个好友
632   - var first []int //初步筛选的id列表
633   - var second []int //第二步
634   - var third []int
635   - vv,err := redishandler.GetRedisClient().HGetAllValues(redis.USER_EXT_DATA)
636   - if err != nil {
637   - return nil ,err
638   - }
639   -
640   - for _,val := range vv {
641   - one := new(UserExtData)
642   - bytestr := val.([]byte)
643   - err = json.Unmarshal(bytestr, one)
644   - if err == nil {
645   - if selfext.Hot <= one.Hot+500 && selfext.Hot >= one.Hot-500 {
646   - first = append(first,one.User_id)
647   - }
648   - }
649   - if len(randlist) < friendnum {
650   - randlist = append(randlist,one.User_id)
  635 + for _, val := range vv {
  636 + one := new(UserExtData)
  637 + bytestr := val.([]byte)
  638 + err = json.Unmarshal(bytestr, one)
  639 + if err == nil {
  640 + if selfext.Hot <= one.Hot+500 && selfext.Hot >= one.Hot-500 {
  641 + first = append(first, one.User_id)
651 642 }
652 643 }
653   -
654   - applylist,err := GetUserApplyList(uuid)
655   - if err != nil {
656   - logger.Error("GetRecommandFriendList failed err=%v",err)
657   - second = append(second,first...)
658   - }else {
659   - //第二步判断是否已经在申请列表,不再才加入
660   - for _,val := range first {
661   - if !applylist.InApplyList(val) {
662   - second = append(second,val)
663   - }
664   - }
  644 + if len(randlist) < friendnum {
  645 + randlist = append(randlist, one.User_id)
665 646 }
  647 + }
666 648  
667   - //第三步判断性别
668   - for _,val := range second {
669   - if len(third) >= friendnum {
670   - //数量已经满了,直接退出
671   - break
672   - }
673   -
674   - tmpbasic,err:= GetUserBasic(val)
675   - if err != nil {
676   - continue
677   - }
678   - if tmpbasic.User_gender != selfbasic.User_gender {
679   - third = append(third,val)
  649 + applylist, err := GetUserApplyList(uuid)
  650 + if err != nil {
  651 + logger.Error("GetRecommandFriendList failed err=%v", err)
  652 + second = append(second, first...)
  653 + } else {
  654 + //第二步判断是否已经在申请列表,不再才加入
  655 + for _, val := range first {
  656 + if !applylist.InApplyList(val) {
  657 + second = append(second, val)
680 658 }
681 659 }
  660 + }
682 661  
683   - //最后判断一下数量是否足够
684   - if len(third) < friendnum {
685   - //将随机的id补充进去
686   - for i:=0;i<friendnum-len(third);i++ {
687   - third = append(third,randlist[i])
688   - }
  662 + //第三步判断性别
  663 + for _, val := range second {
  664 + if len(third) >= friendnum {
  665 + //数量已经满了,直接退出
  666 + break
689 667 }
690 668  
691   - //最后赋值
692   - realrt := new(GetRecommendListDesc)
693   - for _,val := range third {
694   - tmpext,err := GetUserExt(val)
695   - if err != nil {
696   - logger.Error("GetRecommendListDesc third err=%v",err)
697   - continue
698   - }
699   - tmpbasic,err := GetUserBasic(val)
700   - if err != nil {
701   - logger.Error("GetRecommendListDesc third err=%v",err)
702   - continue
703   - }
704   - var tmpinfo GetRecommendListInfo
705   - tmpinfo.Hot = tmpext.Hot
706   - tmpinfo.Bean = tmpext.Bean
707   - tmpinfo.Userid = tmpext.Userid
708   - tmpinfo.Coin = tmpext.Coin
709   - tmpinfo.Reg_time = tmpext.Regtime
710   - tmpinfo.Lv = tmpext.Lv
711   - tmpinfo.Exp = tmpext.Exp
712   - tmpinfo.Nickname = tmpbasic.User_nickname
713   - tmpinfo.Avatar_url = tmpbasic.User_avatar_url
714   - tmpinfo.Cat_num = 0
715   - tmpinfo.City = tmpbasic.User_city
716   - tmpinfo.Gender = tmpbasic.User_gender
717   - tmpinfo.Love_exp = tmpext.Loevexp
718   - tmpinfo.Shop_num = tmpext.Shopnum
719   - realrt.Recommend_list = append(realrt.Recommend_list,tmpinfo)
  669 + tmpbasic, err := GetUserBasic(val)
  670 + if err != nil {
  671 + continue
  672 + }
  673 + if tmpbasic.User_gender != selfbasic.User_gender {
  674 + third = append(third, val)
  675 + }
  676 + }
720 677  
  678 + //最后判断一下数量是否足够
  679 + if len(third) < friendnum {
  680 + //将随机的id补充进去
  681 + for i := 0; i < friendnum-len(third); i++ {
  682 + third = append(third, randlist[i])
721 683 }
  684 + }
722 685  
  686 + //最后赋值
  687 + realrt := new(GetRecommendListDesc)
  688 + for _, val := range third {
  689 + tmpext, err := GetUserExt(val)
  690 + if err != nil {
  691 + logger.Error("GetRecommendListDesc third err=%v", err)
  692 + continue
  693 + }
  694 + tmpbasic, err := GetUserBasic(val)
  695 + if err != nil {
  696 + logger.Error("GetRecommendListDesc third err=%v", err)
  697 + continue
  698 + }
  699 + var tmpinfo GetRecommendListInfo
  700 + tmpinfo.Hot = tmpext.Hot
  701 + tmpinfo.Bean = tmpext.Bean
  702 + tmpinfo.Userid = tmpext.Userid
  703 + tmpinfo.Coin = tmpext.Coin
  704 + tmpinfo.Reg_time = tmpext.Regtime
  705 + tmpinfo.Lv = tmpext.Lv
  706 + tmpinfo.Exp = tmpext.Exp
  707 + tmpinfo.Nickname = tmpbasic.User_nickname
  708 + tmpinfo.Avatar_url = tmpbasic.User_avatar_url
  709 + tmpinfo.Cat_num = 0
  710 + tmpinfo.City = tmpbasic.User_city
  711 + tmpinfo.Gender = tmpbasic.User_gender
  712 + tmpinfo.Love_exp = tmpext.Loevexp
  713 + tmpinfo.Shop_num = tmpext.Shopnum
  714 + realrt.Recommend_list = append(realrt.Recommend_list, tmpinfo)
723 715  
  716 + }
724 717  
725 718 //保存到缓存
726   - SaveCacheRecommandFriendList(uuid,realrt)
727   - return realrt,nil
  719 + SaveCacheRecommandFriendList(uuid, realrt)
  720 + return realrt, nil
728 721 }
729 722  
730   -func SaveAccount(account ,pwd string) error {
  723 +func SaveAccount(account, pwd string) error {
731 724 //首先对pwd加密
732 725 h := md5.New()
733 726 h.Write([]byte(pwd)) // 需要加密的字符串为
734   - newpwd :=hex.EncodeToString(h.Sum(nil))
735   - err := redishandler.GetRedisClient().HSet(redis.USER_ACCOUNT_PASSWORD_KEY,account,newpwd)
  727 + newpwd := hex.EncodeToString(h.Sum(nil))
  728 + err := redishandler.GetRedisClient().HSet(redis.USER_ACCOUNT_PASSWORD_KEY, account, newpwd)
736 729 return err
737 730 }
738 731  
739   -func CheckAccout(account ,pwd string) error {
  732 +func CheckAccout(account, pwd string) error {
740 733 h := md5.New()
741 734 h.Write([]byte(pwd)) // 需要加密的字符串为
742   - newpwd :=hex.EncodeToString(h.Sum(nil))
743   - pwdstr,err := redishandler.GetRedisClient().HGet(redis.USER_ACCOUNT_PASSWORD_KEY,account)
  735 + newpwd := hex.EncodeToString(h.Sum(nil))
  736 + pwdstr, err := redishandler.GetRedisClient().HGet(redis.USER_ACCOUNT_PASSWORD_KEY, account)
744 737 if err != nil {
745 738 return err
746 739 }
747   - if pwdstr!= newpwd {
  740 + if pwdstr != newpwd {
748 741 return errors.New("pwdword not right!")
749 742 }
750 743 return nil
751 744 }
752 745  
753   -func SaveAccountToken(acc ,token string) {
754   - err := redishandler.GetRedisClient().HSet(redis.USER_ACCOUNT_PASSWORD_KEY,acc,token)
  746 +func SaveAccountToken(acc, token string) {
  747 + err := redishandler.GetRedisClient().HSet(redis.USER_ACCOUNT_PASSWORD_KEY, acc, token)
755 748 if err != nil {
756   - logger.Error("SaveAccountToken err=%v",err)
  749 + logger.Error("SaveAccountToken err=%v", err)
757 750 }
758 751 }
759 752  
760 753 func GetAccountToken(acc string) string {
761   - token,err := redishandler.GetRedisClient().HGet(redis.USER_ACCOUNT_PASSWORD_KEY,acc)
  754 + token, err := redishandler.GetRedisClient().HGet(redis.USER_ACCOUNT_PASSWORD_KEY, acc)
762 755 if err != nil {
763   - logger.Error("GetAccountToken failed err=%v",err)
  756 + logger.Error("GetAccountToken failed err=%v", err)
764 757 return ""
765 758 }
766 759  
... ... @@ -771,7 +764,7 @@ type WorkList []InviteWorkDesc
771 764  
772 765 func (wl *WorkList) IsInWork(uuid int) bool {
773 766 isIn := false
774   - for _,val := range *wl {
  767 + for _, val := range *wl {
775 768 if val.Uuid == uuid {
776 769 isIn = true
777 770 }
... ... @@ -780,79 +773,77 @@ func (wl *WorkList) IsInWork(uuid int) bool {
780 773 }
781 774  
782 775 //此接口为处理返回所有的打工列表
783   -func GetRealDagonglist(uuid int) (*WorkList,*WorkList,error) {
784   - vv,err := redishandler.GetRedisClient().HGet(redis.USER_INVITEWORK_RELATION,strconv.Itoa(uuid))
  776 +func GetRealDagonglist(uuid int) (*WorkList, *WorkList, error) {
  777 + vv, err := redishandler.GetRedisClient().HGet(redis.USER_INVITEWORK_RELATION, strconv.Itoa(uuid))
785 778  
786 779 if err != nil {
787 780 //logger.Error("GetdagongList err=%v",err)
788   - return nil,nil,nil
  781 + return nil, nil, nil
789 782 }
790 783  
791 784 var reallist WorkList
792 785 var list WorkList
793   - err = json.Unmarshal([]byte(vv),&list)
  786 + err = json.Unmarshal([]byte(vv), &list)
794 787 if err != nil {
795   - logger.Error("GetRealDagonglist err=%v",err)
796   - return nil,nil,err
  788 + logger.Error("GetRealDagonglist err=%v", err)
  789 + return nil, nil, err
797 790 }
798 791  
799 792 //此处时间改为600s
800 793 nowtime := int(time.Now().Unix())
801   - for i:=0;i<len(list);i++ {
802   - if nowtime > 600 + list[i].InviteTime {
  794 + for i := 0; i < len(list); i++ {
  795 + if nowtime > 600+list[i].InviteTime {
803 796 //list = append(list[:i],list[i+1:]...)
804 797 //i--
805   - }else {
806   - reallist = append(reallist,list[i])
  798 + } else {
  799 + reallist = append(reallist, list[i])
807 800 }
808 801 }
809 802  
810   - return &list,&reallist,nil
  803 + return &list, &reallist, nil
811 804 }
812 805  
813   -func GetdagongList(uuid int) (*WorkList,[]InviteWorkOffDesc,error) {
  806 +func GetdagongList(uuid int) (*WorkList, []InviteWorkOffDesc, error) {
814 807 //需要判断 超过时间 四小时的删除
815   - vv,err := redishandler.GetRedisClient().HGet(redis.USER_INVITEWORK_RELATION,strconv.Itoa(uuid))
  808 + vv, err := redishandler.GetRedisClient().HGet(redis.USER_INVITEWORK_RELATION, strconv.Itoa(uuid))
816 809  
817 810 if err != nil {
818 811 //logger.Error("GetdagongList err=%v",err)
819   - return nil,nil,nil
  812 + return nil, nil, nil
820 813 }
821 814  
822 815 var list WorkList
823   - err = json.Unmarshal([]byte(vv),&list)
  816 + err = json.Unmarshal([]byte(vv), &list)
824 817 if err != nil {
825   - logger.Error("GetdagongList err=%v",err)
826   - return nil,nil,err
  818 + logger.Error("GetdagongList err=%v", err)
  819 + return nil, nil, err
827 820 }
828 821  
829 822 var offlist []InviteWorkOffDesc
830 823 //此处时间改为600s
831 824 nowtime := int(time.Now().Unix())
832   - for i:=0;i<len(list);i++ {
833   - if nowtime > 4*3600 + list[i].InviteTime {
  825 + for i := 0; i < len(list); i++ {
  826 + if nowtime > 4*3600+list[i].InviteTime {
834 827 var tmp InviteWorkOffDesc
835 828 tmp.Uuid = list[i].Uuid
836 829 tmp.InviteTime = list[i].InviteTime
837   - offlist = append(offlist,tmp)
838   - list = append(list[:i],list[i+1:]...)
  830 + offlist = append(offlist, tmp)
  831 + list = append(list[:i], list[i+1:]...)
839 832  
840 833 i--
841 834  
842 835 }
843 836 }
844 837  
845   -
846   -
847   - return &list,offlist,nil
  838 + return &list, offlist, nil
848 839 }
849 840  
850 841 //加入打工列表
851   -func AddDagongList(uuid int,masteruuid int,list WorkList) error {
  842 +func AddDagongList(uuid int, masteruuid int, list WorkList) error {
852 843  
853   - nickname,headurl,err := mysql.QueryNameAndHead(uuid)
  844 + nickname, headurl, err := mysql.QueryNameAndHead(uuid)
854 845 if err != nil {
855   - logger.Error("AddDagongList err=%v",err)
  846 + logger.Error("AddDagongList err=%v", err)
856 847 return err
857 848 }
858 849  
... ... @@ -862,19 +853,112 @@ func AddDagongList(uuid int,masteruuid int,list WorkList) error {
862 853 tmp.Nickname = nickname
863 854 tmp.InviteTime = int(time.Now().Unix())
864 855  
865   - list = append(list,tmp)
  856 + list = append(list, tmp)
866 857  
867   - savestr,err := json.Marshal(&list)
  858 + savestr, err := json.Marshal(&list)
868 859 if err != nil {
869   - logger.Error("AddDagongList err=%v",err)
  860 + logger.Error("AddDagongList err=%v", err)
870 861 return err
871 862 }
872 863  
873   - err = redishandler.GetRedisClient().HSet(redis.USER_INVITEWORK_RELATION,strconv.Itoa(masteruuid),string(savestr))
  864 + err = redishandler.GetRedisClient().HSet(redis.USER_INVITEWORK_RELATION, strconv.Itoa(masteruuid), string(savestr))
874 865 if err != nil {
875   - logger.Error("AddDagongList err=%v",err)
  866 + logger.Error("AddDagongList err=%v", err)
876 867 return err
877 868 }
878 869  
879 870 return nil
880   -}
881 871 \ No newline at end of file
  872 +}
  873 +
  874 +//查询玩家现在所在的队伍id
  875 +func QueryUserTeamId(uuid int) (int, error) {
  876 + rkey := "cat:cafe:teamuser:where:user_id:" + strconv.Itoa(uuid) + ":status:0"
  877 + teamstr, err := redishandler.GetRedisClient().GetString(rkey)
  878 + if err != nil {
  879 + return 0, err
  880 + }
  881 + var tmp RedisTeamInfo
  882 + err = json.Unmarshal([]byte(teamstr), &tmp)
  883 + if err != nil {
  884 + return 0, nil
  885 + }
  886 +
  887 + return tmp.Team_id, nil
  888 +}
  889 +
  890 +func CheckHasNewMessage(uuid int) (bool, error) {
  891 + //首先检查工会记录
  892 + lastteamsec := 0
  893 + lastchatteamsec := 0
  894 + laststr, err := redishandler.GetRedisClient().HGet(redis.USER_CHAT_TEAM_LASTGET_KEY, strconv.Itoa(uuid))
  895 + if err == nil {
  896 + lastteamsec, _ = strconv.Atoi(laststr)
  897 + }
  898 +
  899 + //先取得玩家队伍id
  900 + teamid, err := QueryUserTeamId(uuid)
  901 + if err != nil {
  902 + return false, nil
  903 + }
  904 + //取出最后一条工会聊天记录
  905 + rteamkey := redis.USER_CHAT_TEAM_INFO_KEY + ":" + strconv.Itoa(teamid)
  906 + chatinfostr, err := redishandler.GetRedisClient().LIndex(rteamkey, 0)
  907 + if err != nil {
  908 + logger.Error("CheckHasNewMessage failed err=%v", err)
  909 + } else {
  910 + var chats ChatInfoDesc
  911 + err = json.Unmarshal([]byte(chatinfostr), &chats)
  912 + if err != nil {
  913 + logger.Error("CheckHasNewMessage failed err=%v", err)
  914 + } else {
  915 + lastchatteamsec = chats.ChatTime
  916 + }
  917 + }
  918 +
  919 + if lastchatteamsec > lastteamsec {
  920 + //新的聊天信息
  921 + redishandler.GetRedisClient().HSet(redis.USER_CHAT_ISNEW, strconv.Itoa(uuid), "1")
  922 + return true, nil
  923 + }
  924 +
  925 + //判断自己的私人聊天记录
  926 + var talklistuid []int
  927 + rselfkey := redis.USER_CHAT_PRIVATE_LASTGET_KEY + ":" + strconv.Itoa(uuid)
  928 + vv, err := redishandler.GetRedisClient().HGetAllKeys(rselfkey)
  929 + if err != nil {
  930 + return false, err
  931 + }
  932 +
  933 + for _, val := range vv {
  934 + bytestr := string(val.([]byte))
  935 + bytenum, _ := strconv.Atoi(bytestr)
  936 + talklistuid = append(talklistuid, bytenum)
  937 + }
  938 +
  939 + for _, val := range talklistuid {
  940 + selfgetsec := 0
  941 + selftalksec := 0
  942 + rkeysselfs := redis.USER_CHAT_PRIVATE_INFO_KEY + ":" + strconv.Itoa(uuid) + ":" + strconv.Itoa(val)
  943 + tmpstr, err := redishandler.GetRedisClient().HGet(rselfkey, strconv.Itoa(uuid))
  944 + if err == nil {
  945 + selfgetsec, _ = strconv.Atoi(tmpstr)
  946 + }
  947 +
  948 + //查询最后一条记录
  949 + cselfstr, err := redishandler.GetRedisClient().LIndex(rkeysselfs, 0)
  950 + if err == nil {
  951 + var chats ChatInfoDesc
  952 + err = json.Unmarshal([]byte(cselfstr), &chats)
  953 + if err == nil {
  954 + selftalksec = chats.ChatTime
  955 + }
  956 + }
  957 +
  958 + if selfgetsec < selftalksec {
  959 + redishandler.GetRedisClient().HSet(redis.USER_CHAT_ISNEW, strconv.Itoa(uuid), "1")
  960 + return true, nil
  961 + }
  962 + }
  963 +
  964 + return false, nil
  965 +}
... ...
src/HttpServer/logic/httpserver.go
... ... @@ -92,12 +92,25 @@ func startServerHttpServe() {
92 92 http.HandleFunc("/catcafe/user/newGetData",NewGetData) //新的获取玩家数据接口
93 93 http.HandleFunc("/catcafe/user/newSaveData",NewSaveData) //新的保存玩家数据接口
94 94  
  95 + http.HandleFunc("/catcafe/chat/queryNewMessage",queryNewMessage) //查询红点请求
  96 +
95 97  
96 98 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
97 99 CheckErr(err)
98 100 }
99 101  
100 102  
  103 +func queryNewMessage(w http.ResponseWriter, r *http.Request) {
  104 +
  105 + result, _ := ioutil.ReadAll(r.Body)
  106 + r.Body.Close()
  107 +
  108 + s := string(result)
  109 + //logger.Info("queryNewMessage , body:%v", s)
  110 +
  111 + HandlequeryNewMessage(w,s)
  112 +}
  113 +
101 114 func NewSaveData(w http.ResponseWriter, r *http.Request) {
102 115  
103 116 result, _ := ioutil.ReadAll(r.Body)
... ...
src/HttpServer/logic/logic.go
... ... @@ -274,6 +274,55 @@ func HandleQueryInvite(w http.ResponseWriter, data string) {
274 274 }
275 275  
276 276  
  277 +func HandlequeryNewMessage(w http.ResponseWriter, data string) {
  278 +
  279 + SetHeader(w)
  280 + var resp QueryNewMessageResp
  281 + resp.Status = "true"
  282 + resp.Result.Data.Isnew = 0
  283 + var rdata QueryNewMessageReq
  284 + err := json.Unmarshal([]byte(data), &rdata)
  285 + for {
  286 + if err != nil {
  287 + logger.Error("HandlequeryNewMessage json unmarshal failed=%v", err)
  288 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  289 + break
  290 + }
  291 + //先从缓存取,如果已经有新消息则直接返回
  292 + exist,err := redishandler.GetRedisClient().HExists(redis.USER_CHAT_ISNEW,strconv.Itoa(rdata.Uuid))
  293 + if err != nil {
  294 + logger.Error("HandlequeryNewMessage save failed=%v", err)
  295 + resp.Result.Code = ERROR_SRVDB_FAILED
  296 + resp.Result.Data.Isnew = 0
  297 + break
  298 + }
  299 +
  300 + if exist {
  301 + resp.Result.Data.Isnew = 1
  302 + break
  303 + }
  304 +
  305 + //如果没有 则进行判断
  306 + isnew,err := CheckHasNewMessage(rdata.Uuid)
  307 + if err != nil {
  308 + logger.Error("HandlequeryNewMessage CheckHasNewMessage failed=%v", err)
  309 + resp.Result.Code = ERROR_SRVDB_FAILED
  310 + resp.Result.Data.Isnew = 0
  311 + break
  312 + }
  313 +
  314 + if isnew {
  315 + resp.Result.Data.Isnew = 1
  316 + }
  317 +
  318 + break
  319 + }
  320 +
  321 + //回包
  322 + respstr, _ := json.Marshal(&resp)
  323 + fmt.Fprint(w, string(respstr))
  324 +}
  325 +
277 326 func HandleNewSaveData(w http.ResponseWriter, data string) {
278 327 SetHeader(w)
279 328 var resp SaveDataBackupResp
... ...
src/common/redis/def.go
1 1 package redis
2 2  
3 3 const (
4   - USER_TOURIST_UID = "CATCAFE_USER_TOURIST_UID" //存储对应设备编码与uid的对应关系
5   - USER_MAX_UUID = "CATCAFE_USER_MAX_UUID" //记录当前最大的uid,新增自增即可
6   - USER_BASIC_DATA = "CATCAFE_USER_BASIC_DATA" //玩家基础信息
7   - USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据
8   - USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据
9   - MSG_CKECK_ACCESSTOKEN = "CATCAFE_MSG_CKECK_ACCESSTOKEN" //敏感词检测的key
10   - TEAM_USERTEAM_NAME = "CATCAFE_TEAM_USERTEAM_NAME" //存储了玩家队伍名称
11   - TEAM_INFO = "CATCAFE_TEAM_INFO" //存储了玩家队伍信息
12   - TEAM_MAX_UUID = "CATCAFE_TEAM_MAX_UUID" //记录当前最大的teamid,新增自增即可
13   - TEAM_TEAMID_TOUUID = "CATCAFE_TEAM_TEAMID_TOUUID" //记录teamid与uuid的关系
14   - FRIEND_LIST_KEY = "CATCAFE_FRIEND_LIST_KEY" //玩家的好友列表的key,需要在末尾加死":uuid"
15   - FRIEND_APPLYLIST_KEY = "CATCAFE_FRIEND_APPLYLIST_KEY" //玩家申请好友列表,需要在末尾加死":uuid"
16   - FRIEND_APPROVELIST_KEY = "CATCAFE_FRIEND_APPROVELIST_KEY" //待批准好友列表,需要在末尾加死":uuid"
17   - FRIEND_RECOMMANDLIST_KEY = "CATCAFE_FRIEND_RECOMMANDLIST_KEY" //推荐好友缓存key
18   - USER_ACCOUNT_PASSWORD_KEY = "CATCAFE_USER_ACCOUNT_PASSWORD_KEY" //玩家账号密码的key
19   - USER_INVITEREWARD_FETCH_REWARD = "CATCAFE_USER_INVITEREWARD_FETCH_REWARD" //玩家邀请记录 hset key + uuid field为被邀请者的uuid value为领取状态
20   - USER_BEINVITE_UUIDRELATION = "CATCAFE_USER_BEINVITE_UUIDRELATION" //玩家被邀请关系记录表
21   - USER_INVITEWORK_RELATION = "CATCAFE_USER_INVITEWORK_RELATION" //玩家被邀请打工记录表
22   - USER_BACKUP_DATA = "CATCAFE_USER_BACKUP_DATA" //玩家数据保存的备份
23   - USER_NEW_DATA_KEY = "cat:cafe:data_new:where:data_uid:" //玩家数据保存的新的key
  4 + USER_TOURIST_UID = "CATCAFE_USER_TOURIST_UID" //存储对应设备编码与uid的对应关系
  5 + USER_MAX_UUID = "CATCAFE_USER_MAX_UUID" //记录当前最大的uid,新增自增即可
  6 + USER_BASIC_DATA = "CATCAFE_USER_BASIC_DATA" //玩家基础信息
  7 + USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据
  8 + USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据
  9 + MSG_CKECK_ACCESSTOKEN = "CATCAFE_MSG_CKECK_ACCESSTOKEN" //敏感词检测的key
  10 + TEAM_USERTEAM_NAME = "CATCAFE_TEAM_USERTEAM_NAME" //存储了玩家队伍名称
  11 + TEAM_INFO = "CATCAFE_TEAM_INFO" //存储了玩家队伍信息
  12 + TEAM_MAX_UUID = "CATCAFE_TEAM_MAX_UUID" //记录当前最大的teamid,新增自增即可
  13 + TEAM_TEAMID_TOUUID = "CATCAFE_TEAM_TEAMID_TOUUID" //记录teamid与uuid的关系
  14 + FRIEND_LIST_KEY = "CATCAFE_FRIEND_LIST_KEY" //玩家的好友列表的key,需要在末尾加死":uuid"
  15 + FRIEND_APPLYLIST_KEY = "CATCAFE_FRIEND_APPLYLIST_KEY" //玩家申请好友列表,需要在末尾加死":uuid"
  16 + FRIEND_APPROVELIST_KEY = "CATCAFE_FRIEND_APPROVELIST_KEY" //待批准好友列表,需要在末尾加死":uuid"
  17 + FRIEND_RECOMMANDLIST_KEY = "CATCAFE_FRIEND_RECOMMANDLIST_KEY" //推荐好友缓存key
  18 + USER_ACCOUNT_PASSWORD_KEY = "CATCAFE_USER_ACCOUNT_PASSWORD_KEY" //玩家账号密码的key
  19 + USER_INVITEREWARD_FETCH_REWARD = "CATCAFE_USER_INVITEREWARD_FETCH_REWARD" //玩家邀请记录 hset key + uuid field为被邀请者的uuid value为领取状态
  20 + USER_BEINVITE_UUIDRELATION = "CATCAFE_USER_BEINVITE_UUIDRELATION" //玩家被邀请关系记录表
  21 + USER_INVITEWORK_RELATION = "CATCAFE_USER_INVITEWORK_RELATION" //玩家被邀请打工记录表
  22 + USER_BACKUP_DATA = "CATCAFE_USER_BACKUP_DATA" //玩家数据保存的备份
  23 + USER_NEW_DATA_KEY = "cat:cafe:data_new:where:data_uid:" //玩家数据保存的新的key
24 24  
25   - USER_CHAT_ISNEW = "CATCAFE_USER_CHAT_ISNEW" //hset field为uuid 存在表示有新消息了不用再去计算 否则需要挨个去判断
26   - WORLD_CHAT_INFO_KEY = "CATCAFE_WORLD_CHAT_INFO_KEY" //存储的是世界聊天 list结构 最新的消息在最头部
27   - USER_CHAT_TEAM_LASTGET_KEY ="CATCAFE_USER_CHAT_TEAM_LASTGET_KEY" // 结构是hset field是uuid value是存储的是最后一次获取工会聊天的时间戳,用于和工会聊天最新一条消息做对比,如果时间比最新一条小则有新的消息
28   - USER_CHAT_TEAM_INFO_KEY = "CATCAFE_USER_CHAT_TEAM_INFO_KEY" // 加teamid 存储的是队伍聊天的信息 list结构 最新的消息在最头部
  25 + USER_CHAT_ISNEW = "CATCAFE_USER_CHAT_ISNEW" //hset field为uuid 存在表示有新消息了不用再去计算 否则需要挨个去判断
  26 + WORLD_CHAT_INFO_KEY = "CATCAFE_WORLD_CHAT_INFO_KEY" //存储的是世界聊天 list结构 最新的消息在最头部
  27 + USER_CHAT_TEAM_LASTGET_KEY = "CATCAFE_USER_CHAT_TEAM_LASTGET_KEY" // 结构是hset field是uuid value是存储的是最后一次获取工会聊天的时间戳,用于和工会聊天最新一条消息做对比,如果时间比最新一条小则有新的消息
  28 + USER_CHAT_TEAM_INFO_KEY = "CATCAFE_USER_CHAT_TEAM_INFO_KEY" // 加teamid 存储的是队伍聊天的信息 list结构 最新的消息在最头部
29 29 USER_CHAT_PRIVATE_LASTGET_KEY = "CATCAFE_USER_CHAT_PRIVATE_LASTGET_KEY" // hset key加自己的uuid field为目标的uuid value为时间戳
30   - USER_CHAT_PRIVATE_INFO_KEY = "CATCAFE_USER_CHAT_PRIVATE_INFO_KEY" //list key需要加上自己的uuid 存储的是和自己相关的所有聊天信息
  30 + USER_CHAT_PRIVATE_INFO_KEY = "CATCAFE_USER_CHAT_PRIVATE_INFO_KEY" //list key需要加上自己的:uuid再加上目标:uuid 存储的是和自己相关的所有聊天信息
31 31 )
... ...
src/mysql/dbmysql.go
... ... @@ -169,6 +169,8 @@ func QueryAllData(f *os.File) error{
169 169 }
170 170  
171 171  
  172 +
  173 +
172 174 func QueryInvite(uuid int) ([]QuerInviteDesc,error){
173 175 var rtslice []QuerInviteDesc
174 176  
... ...