Commit f032452a73cce4624036a8eb1ec0bd3d3f1a733c
1 parent
0b85f107
Exists in
master
提交聊天相关接口
Showing
6 changed files
with
493 additions
and
322 deletions
Show diff stats
src/HttpServer/logic/datadef.go
| @@ -14,6 +14,11 @@ const ( | @@ -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 | type WechatLoginReq struct { | 22 | type WechatLoginReq struct { |
| 18 | Channel_id int `json:"channel_id"` | 23 | Channel_id int `json:"channel_id"` |
| 19 | Invite_type int `json:"invite_type"` | 24 | Invite_type int `json:"invite_type"` |
| @@ -113,6 +118,24 @@ type QueryInviteResp struct { | @@ -113,6 +118,24 @@ type QueryInviteResp struct { | ||
| 113 | Result QueryInviteResult `json:"result"` | 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 | type InviteWorkReq struct{ | 140 | type InviteWorkReq struct{ |
| 118 | Uuid int `json:"uuid"` | 141 | Uuid int `json:"uuid"` |
src/HttpServer/logic/function.go
| @@ -22,36 +22,35 @@ func SetHeader(w http.ResponseWriter) { | @@ -22,36 +22,35 @@ func SetHeader(w http.ResponseWriter) { | ||
| 22 | w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") | 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 | index := 0 | 27 | index := 0 |
| 29 | - for k,val := range tinfo.BInfo.Buff { | 28 | + for k, val := range tinfo.BInfo.Buff { |
| 30 | if val.Type == btype { | 29 | if val.Type == btype { |
| 31 | index = k | 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 | tinfo.BInfo.Buff[index].BuffInfo[i].EndTime += addtime | 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 | var tmp AddTeamBuffSpec | 39 | var tmp AddTeamBuffSpec |
| 41 | tmp.Build_type = vak.Type | 40 | tmp.Build_type = vak.Type |
| 42 | - for _,val1 := range vak.BuffInfo { | 41 | + for _, val1 := range vak.BuffInfo { |
| 43 | var tmp1 BuffTimeInfo | 42 | var tmp1 BuffTimeInfo |
| 44 | tmp1.Buff_begin_time = val1.BeginTime | 43 | tmp1.Buff_begin_time = val1.BeginTime |
| 45 | tmp1.Buff_end_time = val1.EndTime | 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 | bfind := false | 52 | bfind := false |
| 54 | - for k,val := range tinfo.BInfo.Devote { | 53 | + for k, val := range tinfo.BInfo.Devote { |
| 55 | if val.Type == btype { | 54 | if val.Type == btype { |
| 56 | tinfo.BInfo.Devote[k].Assets += assets | 55 | tinfo.BInfo.Devote[k].Assets += assets |
| 57 | bfind = true | 56 | bfind = true |
| @@ -63,37 +62,37 @@ func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) { | @@ -63,37 +62,37 @@ func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) { | ||
| 63 | tmp.UserId = uuid | 62 | tmp.UserId = uuid |
| 64 | tmp.Assets = assets | 63 | tmp.Assets = assets |
| 65 | tmp.Type = btype | 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 | //需要处理一下buff | 68 | //需要处理一下buff |
| 70 | nowtime := int(time.Now().Unix()) | 69 | nowtime := int(time.Now().Unix()) |
| 71 | - addTime := 1800*muti | 70 | + addTime := 1800 * muti |
| 72 | var index = 0 | 71 | var index = 0 |
| 73 | - for k,val := range tinfo.BInfo.Buff { | 72 | + for k, val := range tinfo.BInfo.Buff { |
| 74 | if val.Type == btype { | 73 | if val.Type == btype { |
| 75 | index = k | 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 | if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime >= nowtime { | 78 | if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime >= nowtime { |
| 80 | tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += addTime | 79 | tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += addTime |
| 81 | } else { | 80 | } else { |
| 82 | var tmp TeamBuffInfo | 81 | var tmp TeamBuffInfo |
| 83 | tmp.BeginTime = nowtime | 82 | tmp.BeginTime = nowtime |
| 84 | tmp.EndTime = nowtime + addTime | 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 | tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += 86399 | 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 | v := tinfo.BInfo.Buff[index].BuffInfo[i] | 93 | v := tinfo.BInfo.Buff[index].BuffInfo[i] |
| 95 | if v.BeginTime < yestime && v.EndTime < yestime { | 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 | i-- | 96 | i-- |
| 98 | } | 97 | } |
| 99 | } | 98 | } |
| @@ -101,7 +100,7 @@ func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) { | @@ -101,7 +100,7 @@ func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) { | ||
| 101 | 100 | ||
| 102 | func (tinfo *TeamInfo) IsInTeam(uuid int) bool { | 101 | func (tinfo *TeamInfo) IsInTeam(uuid int) bool { |
| 103 | inteam := false | 102 | inteam := false |
| 104 | - for _,val := range tinfo.MemInfo.MemList { | 103 | + for _, val := range tinfo.MemInfo.MemList { |
| 105 | if val == uuid { | 104 | if val == uuid { |
| 106 | inteam = true | 105 | inteam = true |
| 107 | break | 106 | break |
| @@ -110,123 +109,123 @@ func (tinfo *TeamInfo) IsInTeam(uuid int) bool { | @@ -110,123 +109,123 @@ func (tinfo *TeamInfo) IsInTeam(uuid int) bool { | ||
| 110 | return inteam | 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 | if val == uuid { | 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 | break | 117 | break |
| 119 | } | 118 | } |
| 120 | } | 119 | } |
| 121 | 120 | ||
| 122 | //删除team关系 | 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 | if err != nil { | 129 | if err != nil { |
| 131 | - logger.Error("SetTouristUid failed,err=%v",err) | 130 | + logger.Error("SetTouristUid failed,err=%v", err) |
| 132 | return err | 131 | return err |
| 133 | } | 132 | } |
| 134 | return nil | 133 | return nil |
| 135 | } | 134 | } |
| 136 | 135 | ||
| 137 | //获取游客的uid 返回值为uid | 136 | //获取游客的uid 返回值为uid |
| 138 | -func GetTouristUid(utoken string) (int,error){ | 137 | +func GetTouristUid(utoken string) (int, error) { |
| 139 | uidstr, err := redishandler.GetRedisClient().HGet(redis.USER_TOURIST_UID, utoken) | 138 | uidstr, err := redishandler.GetRedisClient().HGet(redis.USER_TOURIST_UID, utoken) |
| 140 | if err != nil { | 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 | //获取玩家新的uuid | 147 | //获取玩家新的uuid |
| 149 | func GetNewUUid() int { | 148 | func GetNewUUid() int { |
| 150 | redishandler.GetRedisClient().Incr(redis.USER_MAX_UUID) | 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 | if err != nil { | 151 | if err != nil { |
| 153 | - logger.Error("GetNewUUid failed,err=%v",err) | 152 | + logger.Error("GetNewUUid failed,err=%v", err) |
| 154 | return 0 | 153 | return 0 |
| 155 | } | 154 | } |
| 156 | 155 | ||
| 157 | - return newuuid+100000 | 156 | + return newuuid + 100000 |
| 158 | } | 157 | } |
| 159 | 158 | ||
| 160 | //获取新的teamid | 159 | //获取新的teamid |
| 161 | func GetNewTeamId() int { | 160 | func GetNewTeamId() int { |
| 162 | redishandler.GetRedisClient().Incr(redis.TEAM_MAX_UUID) | 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 | if err != nil { | 163 | if err != nil { |
| 165 | - logger.Error("GetNewUUid failed,err=%v",err) | 164 | + logger.Error("GetNewUUid failed,err=%v", err) |
| 166 | return 0 | 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 | err := redishandler.GetRedisClient().HSet(redis.USER_BASE_DATA, strconv.Itoa(uuid), value) | 172 | err := redishandler.GetRedisClient().HSet(redis.USER_BASE_DATA, strconv.Itoa(uuid), value) |
| 174 | return err | 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 | if err != nil { | 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 | err := redishandler.GetRedisClient().HSet(redis.USER_BASIC_DATA, strconv.Itoa(uuid), value) | 188 | err := redishandler.GetRedisClient().HSet(redis.USER_BASIC_DATA, strconv.Itoa(uuid), value) |
| 190 | return err | 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 | if err != nil { | 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 | basic := new(UserBaseData) | 198 | basic := new(UserBaseData) |
| 200 | err = json.Unmarshal([]byte(strval), basic) | 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 | if extdata == nil { | 205 | if extdata == nil { |
| 207 | return nil | 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 | err := redishandler.GetRedisClient().HSet(redis.USER_EXT_DATA, strconv.Itoa(extdata.Userid), string(ext)) | 211 | err := redishandler.GetRedisClient().HSet(redis.USER_EXT_DATA, strconv.Itoa(extdata.Userid), string(ext)) |
| 213 | return err | 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 | if err != nil { | 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 | ext := new(UserData) | 221 | ext := new(UserData) |
| 223 | err = json.Unmarshal([]byte(strval), ext) | 222 | err = json.Unmarshal([]byte(strval), ext) |
| 224 | - return ext,err | 223 | + return ext, err |
| 225 | } | 224 | } |
| 226 | 225 | ||
| 227 | //检测队伍名称是否已经存在 | 226 | //检测队伍名称是否已经存在 |
| 228 | func GetUserTeamNameIsExist(name string) bool { | 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 | if err != nil { | 229 | if err != nil { |
| 231 | return true | 230 | return true |
| 232 | } | 231 | } |
| @@ -234,7 +233,7 @@ func GetUserTeamNameIsExist(name string) bool { | @@ -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 | err := redishandler.GetRedisClient().HDel(redis.TEAM_USERTEAM_NAME, name) | 237 | err := redishandler.GetRedisClient().HDel(redis.TEAM_USERTEAM_NAME, name) |
| 239 | if err != nil { | 238 | if err != nil { |
| 240 | logger.Error("SetUserTeamName err=%v),err") | 239 | logger.Error("SetUserTeamName err=%v),err") |
| @@ -243,7 +242,7 @@ func DelUserTeamName(name string) error{ | @@ -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 | err := redishandler.GetRedisClient().HSet(redis.TEAM_USERTEAM_NAME, name, strconv.Itoa(teamid)) | 246 | err := redishandler.GetRedisClient().HSet(redis.TEAM_USERTEAM_NAME, name, strconv.Itoa(teamid)) |
| 248 | if err != nil { | 247 | if err != nil { |
| 249 | logger.Error("SetUserTeamName err=%v),err") | 248 | logger.Error("SetUserTeamName err=%v),err") |
| @@ -251,8 +250,8 @@ func SetUserTeamName(name string,teamid int) { | @@ -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 | err := redishandler.GetRedisClient().HSet(redis.TEAM_INFO, strconv.Itoa(teamid), string(team)) | 255 | err := redishandler.GetRedisClient().HSet(redis.TEAM_INFO, strconv.Itoa(teamid), string(team)) |
| 257 | if err != nil { | 256 | if err != nil { |
| 258 | logger.Error("SaveTeamInfo err=%v),err") | 257 | logger.Error("SaveTeamInfo err=%v),err") |
| @@ -262,21 +261,21 @@ func SaveTeamInfo(teamid int,tinfo *TeamInfo) error { | @@ -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 | info := new(TeamInfo) | 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 | if err != nil { | 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 | err = json.Unmarshal([]byte(vv), info) | 272 | err = json.Unmarshal([]byte(vv), info) |
| 274 | - return info,err | 273 | + return info, err |
| 275 | } | 274 | } |
| 276 | 275 | ||
| 277 | //保存teamid与uuid | 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 | if err != nil { | 279 | if err != nil { |
| 281 | logger.Error("SaveTeamToUuid err=%v),err") | 280 | logger.Error("SaveTeamToUuid err=%v),err") |
| 282 | return err | 281 | return err |
| @@ -285,111 +284,110 @@ func SaveTeamToUuid(teamid,uuid int) error { | @@ -285,111 +284,110 @@ func SaveTeamToUuid(teamid,uuid int) error { | ||
| 285 | } | 284 | } |
| 286 | 285 | ||
| 287 | //获取teamid与uuid | 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 | if err != nil { | 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 | type TeamSlice []*TeamInfo | 298 | type TeamSlice []*TeamInfo |
| 300 | 299 | ||
| 301 | -func (a TeamSlice) Len() int { // 重写 Len() 方法 | 300 | +func (a TeamSlice) Len() int { // 重写 Len() 方法 |
| 302 | return len(a) | 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 | a[i], a[j] = a[j], a[i] | 304 | a[i], a[j] = a[j], a[i] |
| 306 | } | 305 | } |
| 307 | func (a TeamSlice) Less(i, j int) bool { // 重写 Less() 方法, 从大到小排序 | 306 | func (a TeamSlice) Less(i, j int) bool { // 重写 Less() 方法, 从大到小排序 |
| 308 | return a[j].BaseInfo.Assets < a[i].BaseInfo.Assets | 307 | return a[j].BaseInfo.Assets < a[i].BaseInfo.Assets |
| 309 | } | 308 | } |
| 310 | 309 | ||
| 311 | - | ||
| 312 | //获取所有的team,分页 传入页签 | 310 | //获取所有的team,分页 传入页签 |
| 313 | -func GetTeamListByCond(shopnum int,page int) (TeamSlice,error,int) { | 311 | +func GetTeamListByCond(shopnum int, page int) (TeamSlice, error, int) { |
| 314 | if page < 0 { | 312 | if page < 0 { |
| 315 | - logger.Error("GetTeamListByCond invalid page=%v",page) | 313 | + logger.Error("GetTeamListByCond invalid page=%v", page) |
| 316 | page = 1 | 314 | page = 1 |
| 317 | } | 315 | } |
| 318 | var rtslice TeamSlice | 316 | var rtslice TeamSlice |
| 319 | - vv,err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO) | 317 | + vv, err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO) |
| 320 | if err != nil { | 318 | if err != nil { |
| 321 | logger.Error("GetTeamListByCond err") | 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 | one := new(TeamInfo) | 324 | one := new(TeamInfo) |
| 327 | bytestr := val.([]byte) | 325 | bytestr := val.([]byte) |
| 328 | err = json.Unmarshal(bytestr, one) | 326 | err = json.Unmarshal(bytestr, one) |
| 329 | if err == nil { | 327 | if err == nil { |
| 330 | if one.BaseInfo.Num <= shopnum { | 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 | sort.Sort(rtslice) | 334 | sort.Sort(rtslice) |
| 337 | 335 | ||
| 338 | - begin := (page-1) * 10 | 336 | + begin := (page - 1) * 10 |
| 339 | end := begin + 9 | 337 | end := begin + 9 |
| 340 | sumlen := len(rtslice) | 338 | sumlen := len(rtslice) |
| 341 | - if begin > sumlen{ | 339 | + if begin > sumlen { |
| 342 | begin = sumlen - 10 | 340 | begin = sumlen - 10 |
| 343 | } | 341 | } |
| 344 | if end > sumlen { | 342 | if end > sumlen { |
| 345 | end = sumlen - 1 | 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 | if page < 0 { | 351 | if page < 0 { |
| 354 | - logger.Error("GetTeamListByCond invalid page=%v",page) | 352 | + logger.Error("GetTeamListByCond invalid page=%v", page) |
| 355 | page = 1 | 353 | page = 1 |
| 356 | } | 354 | } |
| 357 | var rtslice TeamSlice | 355 | var rtslice TeamSlice |
| 358 | - vv,err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO) | 356 | + vv, err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO) |
| 359 | if err != nil { | 357 | if err != nil { |
| 360 | logger.Error("GetTeamListByCond err") | 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 | one := new(TeamInfo) | 363 | one := new(TeamInfo) |
| 366 | bytestr := val.([]byte) | 364 | bytestr := val.([]byte) |
| 367 | err = json.Unmarshal(bytestr, one) | 365 | err = json.Unmarshal(bytestr, one) |
| 368 | if err == nil { | 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 | sort.Sort(rtslice) | 373 | sort.Sort(rtslice) |
| 376 | 374 | ||
| 377 | - begin := (page-1) * 10 | 375 | + begin := (page - 1) * 10 |
| 378 | end := begin + 9 | 376 | end := begin + 9 |
| 379 | sumlen := len(rtslice) | 377 | sumlen := len(rtslice) |
| 380 | - if begin > sumlen{ | 378 | + if begin > sumlen { |
| 381 | begin = sumlen - 10 | 379 | begin = sumlen - 10 |
| 382 | } | 380 | } |
| 383 | if end > sumlen { | 381 | if end > sumlen { |
| 384 | end = sumlen - 1 | 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 | func (alist *ApproveList) InApproveList(uuid int) bool { | 389 | func (alist *ApproveList) InApproveList(uuid int) bool { |
| 392 | - for _,val := range alist.Approve_info { | 390 | + for _, val := range alist.Approve_info { |
| 393 | if val.Uuid == uuid { | 391 | if val.Uuid == uuid { |
| 394 | return true | 392 | return true |
| 395 | } | 393 | } |
| @@ -398,56 +396,56 @@ func (alist *ApproveList) InApproveList(uuid int) bool { | @@ -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 | return nil | 400 | return nil |
| 403 | } | 401 | } |
| 404 | 402 | ||
| 405 | //待批准列表 | 403 | //待批准列表 |
| 406 | -func GetUserApproveList(uuid int) (*ApproveList,error) { | 404 | +func GetUserApproveList(uuid int) (*ApproveList, error) { |
| 407 | rt := new(ApproveList) | 405 | rt := new(ApproveList) |
| 408 | //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo | 406 | //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo |
| 409 | userkey := redis.FRIEND_APPROVELIST_KEY + ":" + strconv.Itoa(uuid) | 407 | userkey := redis.FRIEND_APPROVELIST_KEY + ":" + strconv.Itoa(uuid) |
| 410 | - vv,err := redishandler.GetRedisClient().HGetAllValues(userkey) | 408 | + vv, err := redishandler.GetRedisClient().HGetAllValues(userkey) |
| 411 | if err != nil { | 409 | if err != nil { |
| 412 | logger.Error("GetUserApproveList err") | 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 | one := new(ApplyInfo) | 416 | one := new(ApplyInfo) |
| 419 | bytestr := val.([]byte) | 417 | bytestr := val.([]byte) |
| 420 | err = json.Unmarshal(bytestr, one) | 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 | userkey := redis.FRIEND_APPROVELIST_KEY + ":" + strconv.Itoa(uuid) | 435 | userkey := redis.FRIEND_APPROVELIST_KEY + ":" + strconv.Itoa(uuid) |
| 438 | var finfo ApplyInfo | 436 | var finfo ApplyInfo |
| 439 | finfo.Uuid = adduuid | 437 | finfo.Uuid = adduuid |
| 440 | finfo.Apply_time = int(time.Now().Unix()) | 438 | finfo.Apply_time = int(time.Now().Unix()) |
| 441 | - str,err := json.Marshal(&finfo) | 439 | + str, err := json.Marshal(&finfo) |
| 442 | if err != nil { | 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 | return err | 444 | return err |
| 447 | } | 445 | } |
| 448 | 446 | ||
| 449 | func (alist *ApplyList) InApplyList(uuid int) bool { | 447 | func (alist *ApplyList) InApplyList(uuid int) bool { |
| 450 | - for _,val := range alist.Apply_info { | 448 | + for _, val := range alist.Apply_info { |
| 451 | if val.Uuid == uuid { | 449 | if val.Uuid == uuid { |
| 452 | return true | 450 | return true |
| 453 | } | 451 | } |
| @@ -455,88 +453,88 @@ func (alist *ApplyList) InApplyList(uuid int) bool { | @@ -455,88 +453,88 @@ func (alist *ApplyList) InApplyList(uuid int) bool { | ||
| 455 | return false | 453 | return false |
| 456 | } | 454 | } |
| 457 | 455 | ||
| 458 | -func GetUserApplyList(uuid int) (*ApplyList,error) { | 456 | +func GetUserApplyList(uuid int) (*ApplyList, error) { |
| 459 | rt := new(ApplyList) | 457 | rt := new(ApplyList) |
| 460 | //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo | 458 | //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo |
| 461 | userkey := redis.FRIEND_APPLYLIST_KEY + ":" + strconv.Itoa(uuid) | 459 | userkey := redis.FRIEND_APPLYLIST_KEY + ":" + strconv.Itoa(uuid) |
| 462 | - vv,err := redishandler.GetRedisClient().HGetAllValues(userkey) | 460 | + vv, err := redishandler.GetRedisClient().HGetAllValues(userkey) |
| 463 | if err != nil { | 461 | if err != nil { |
| 464 | logger.Error("GetUserApplyList err") | 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 | one := new(ApplyInfo) | 468 | one := new(ApplyInfo) |
| 471 | bytestr := val.([]byte) | 469 | bytestr := val.([]byte) |
| 472 | err = json.Unmarshal(bytestr, one) | 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 | userkey := redis.FRIEND_APPLYLIST_KEY + ":" + strconv.Itoa(uuid) | 487 | userkey := redis.FRIEND_APPLYLIST_KEY + ":" + strconv.Itoa(uuid) |
| 490 | var finfo ApplyInfo | 488 | var finfo ApplyInfo |
| 491 | finfo.Uuid = adduuid | 489 | finfo.Uuid = adduuid |
| 492 | finfo.Apply_time = int(time.Now().Unix()) | 490 | finfo.Apply_time = int(time.Now().Unix()) |
| 493 | - str,err := json.Marshal(&finfo) | 491 | + str, err := json.Marshal(&finfo) |
| 494 | if err != nil { | 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 | return err | 496 | return err |
| 499 | } | 497 | } |
| 500 | 498 | ||
| 501 | -func GetUserFriendList(uuid int) (*FriendList,error) { | 499 | +func GetUserFriendList(uuid int) (*FriendList, error) { |
| 502 | //todo | 500 | //todo |
| 503 | rt := new(FriendList) | 501 | rt := new(FriendList) |
| 504 | //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo | 502 | //存储为hset key为 固定key+uuid ,field为被添加者的uuid,fieldW为FriendInfo |
| 505 | userkey := redis.FRIEND_LIST_KEY + ":" + strconv.Itoa(uuid) | 503 | userkey := redis.FRIEND_LIST_KEY + ":" + strconv.Itoa(uuid) |
| 506 | - vv,err := redishandler.GetRedisClient().HGetAllValues(userkey) | 504 | + vv, err := redishandler.GetRedisClient().HGetAllValues(userkey) |
| 507 | if err != nil { | 505 | if err != nil { |
| 508 | logger.Error("GetUserFriendList err") | 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 | one := new(FriendInfo) | 511 | one := new(FriendInfo) |
| 514 | bytestr := val.([]byte) | 512 | bytestr := val.([]byte) |
| 515 | err = json.Unmarshal(bytestr, one) | 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 | userkey := redis.FRIEND_LIST_KEY + ":" + strconv.Itoa(uuid) | 523 | userkey := redis.FRIEND_LIST_KEY + ":" + strconv.Itoa(uuid) |
| 526 | var finfo FriendInfo | 524 | var finfo FriendInfo |
| 527 | finfo.Uuid = adduuid | 525 | finfo.Uuid = adduuid |
| 528 | finfo.Status = status | 526 | finfo.Status = status |
| 529 | - str,err := json.Marshal(&finfo) | 527 | + str, err := json.Marshal(&finfo) |
| 530 | if err != nil { | 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 | return err | 532 | return err |
| 535 | } | 533 | } |
| 536 | 534 | ||
| 537 | //判断是否已经是好友 | 535 | //判断是否已经是好友 |
| 538 | func (flist *FriendList) IsInFreiendList(uuid int) bool { | 536 | func (flist *FriendList) IsInFreiendList(uuid int) bool { |
| 539 | - for _,val := range flist.Friends { | 537 | + for _, val := range flist.Friends { |
| 540 | if val.Uuid == uuid && val.Status == 0 { | 538 | if val.Uuid == uuid && val.Status == 0 { |
| 541 | return true | 539 | return true |
| 542 | } | 540 | } |
| @@ -544,53 +542,52 @@ func (flist *FriendList) IsInFreiendList(uuid int) bool { | @@ -544,53 +542,52 @@ func (flist *FriendList) IsInFreiendList(uuid int) bool { | ||
| 544 | return false | 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 | if err != nil { | 547 | if err != nil { |
| 550 | - logger.Error("SaveCacheRecommandFriendList err=%v",err) | 548 | + logger.Error("SaveCacheRecommandFriendList err=%v", err) |
| 551 | return | 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 | if err != nil { | 552 | if err != nil { |
| 555 | - logger.Error("SaveCacheRecommandFriendList err=%v",err) | 553 | + logger.Error("SaveCacheRecommandFriendList err=%v", err) |
| 556 | return | 554 | return |
| 557 | } | 555 | } |
| 558 | } | 556 | } |
| 559 | 557 | ||
| 560 | -func GetCacheRecommandFriendList(uuid int) (*GetRecommendListDesc,error) { | 558 | +func GetCacheRecommandFriendList(uuid int) (*GetRecommendListDesc, error) { |
| 561 | rt := new(GetRecommendListDesc) | 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 | if err != nil { | 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 | if err != nil { | 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 | func DelCacheRecommandFriendList(uuid int) error { | 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 | return err | 577 | return err |
| 580 | } | 578 | } |
| 581 | 579 | ||
| 582 | - | ||
| 583 | func GetFfiendData(frienduuid int) *GetRecommendListInfo { | 580 | func GetFfiendData(frienduuid int) *GetRecommendListInfo { |
| 584 | - tmpext,err := GetUserExt(frienduuid) | 581 | + tmpext, err := GetUserExt(frienduuid) |
| 585 | if err != nil { | 582 | if err != nil { |
| 586 | return nil | 583 | return nil |
| 587 | } | 584 | } |
| 588 | - tmpbasic,err := GetUserBasic(frienduuid) | 585 | + tmpbasic, err := GetUserBasic(frienduuid) |
| 589 | if err != nil { | 586 | if err != nil { |
| 590 | return nil | 587 | return nil |
| 591 | } | 588 | } |
| 592 | 589 | ||
| 593 | - tmpinfo := new(GetRecommendListInfo) | 590 | + tmpinfo := new(GetRecommendListInfo) |
| 594 | tmpinfo.Hot = tmpext.Hot | 591 | tmpinfo.Hot = tmpext.Hot |
| 595 | tmpinfo.Bean = tmpext.Bean | 592 | tmpinfo.Bean = tmpext.Bean |
| 596 | tmpinfo.Userid = tmpext.Userid | 593 | tmpinfo.Userid = tmpext.Userid |
| @@ -609,158 +606,154 @@ func GetFfiendData(frienduuid int) *GetRecommendListInfo { | @@ -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 | if err == nil { | 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 | if err != nil { | 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 | if err != nil { | 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 | //首先对pwd加密 | 724 | //首先对pwd加密 |
| 732 | h := md5.New() | 725 | h := md5.New() |
| 733 | h.Write([]byte(pwd)) // 需要加密的字符串为 | 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 | return err | 729 | return err |
| 737 | } | 730 | } |
| 738 | 731 | ||
| 739 | -func CheckAccout(account ,pwd string) error { | 732 | +func CheckAccout(account, pwd string) error { |
| 740 | h := md5.New() | 733 | h := md5.New() |
| 741 | h.Write([]byte(pwd)) // 需要加密的字符串为 | 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 | if err != nil { | 737 | if err != nil { |
| 745 | return err | 738 | return err |
| 746 | } | 739 | } |
| 747 | - if pwdstr!= newpwd { | 740 | + if pwdstr != newpwd { |
| 748 | return errors.New("pwdword not right!") | 741 | return errors.New("pwdword not right!") |
| 749 | } | 742 | } |
| 750 | return nil | 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 | if err != nil { | 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 | func GetAccountToken(acc string) string { | 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 | if err != nil { | 755 | if err != nil { |
| 763 | - logger.Error("GetAccountToken failed err=%v",err) | 756 | + logger.Error("GetAccountToken failed err=%v", err) |
| 764 | return "" | 757 | return "" |
| 765 | } | 758 | } |
| 766 | 759 | ||
| @@ -771,7 +764,7 @@ type WorkList []InviteWorkDesc | @@ -771,7 +764,7 @@ type WorkList []InviteWorkDesc | ||
| 771 | 764 | ||
| 772 | func (wl *WorkList) IsInWork(uuid int) bool { | 765 | func (wl *WorkList) IsInWork(uuid int) bool { |
| 773 | isIn := false | 766 | isIn := false |
| 774 | - for _,val := range *wl { | 767 | + for _, val := range *wl { |
| 775 | if val.Uuid == uuid { | 768 | if val.Uuid == uuid { |
| 776 | isIn = true | 769 | isIn = true |
| 777 | } | 770 | } |
| @@ -780,79 +773,77 @@ func (wl *WorkList) IsInWork(uuid int) bool { | @@ -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 | if err != nil { | 779 | if err != nil { |
| 787 | //logger.Error("GetdagongList err=%v",err) | 780 | //logger.Error("GetdagongList err=%v",err) |
| 788 | - return nil,nil,nil | 781 | + return nil, nil, nil |
| 789 | } | 782 | } |
| 790 | 783 | ||
| 791 | var reallist WorkList | 784 | var reallist WorkList |
| 792 | var list WorkList | 785 | var list WorkList |
| 793 | - err = json.Unmarshal([]byte(vv),&list) | 786 | + err = json.Unmarshal([]byte(vv), &list) |
| 794 | if err != nil { | 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 | //此处时间改为600s | 792 | //此处时间改为600s |
| 800 | nowtime := int(time.Now().Unix()) | 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 | //list = append(list[:i],list[i+1:]...) | 796 | //list = append(list[:i],list[i+1:]...) |
| 804 | //i-- | 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 | if err != nil { | 810 | if err != nil { |
| 818 | //logger.Error("GetdagongList err=%v",err) | 811 | //logger.Error("GetdagongList err=%v",err) |
| 819 | - return nil,nil,nil | 812 | + return nil, nil, nil |
| 820 | } | 813 | } |
| 821 | 814 | ||
| 822 | var list WorkList | 815 | var list WorkList |
| 823 | - err = json.Unmarshal([]byte(vv),&list) | 816 | + err = json.Unmarshal([]byte(vv), &list) |
| 824 | if err != nil { | 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 | var offlist []InviteWorkOffDesc | 822 | var offlist []InviteWorkOffDesc |
| 830 | //此处时间改为600s | 823 | //此处时间改为600s |
| 831 | nowtime := int(time.Now().Unix()) | 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 | var tmp InviteWorkOffDesc | 827 | var tmp InviteWorkOffDesc |
| 835 | tmp.Uuid = list[i].Uuid | 828 | tmp.Uuid = list[i].Uuid |
| 836 | tmp.InviteTime = list[i].InviteTime | 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 | i-- | 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 | if err != nil { | 845 | if err != nil { |
| 855 | - logger.Error("AddDagongList err=%v",err) | 846 | + logger.Error("AddDagongList err=%v", err) |
| 856 | return err | 847 | return err |
| 857 | } | 848 | } |
| 858 | 849 | ||
| @@ -862,19 +853,112 @@ func AddDagongList(uuid int,masteruuid int,list WorkList) error { | @@ -862,19 +853,112 @@ func AddDagongList(uuid int,masteruuid int,list WorkList) error { | ||
| 862 | tmp.Nickname = nickname | 853 | tmp.Nickname = nickname |
| 863 | tmp.InviteTime = int(time.Now().Unix()) | 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 | if err != nil { | 859 | if err != nil { |
| 869 | - logger.Error("AddDagongList err=%v",err) | 860 | + logger.Error("AddDagongList err=%v", err) |
| 870 | return err | 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 | if err != nil { | 865 | if err != nil { |
| 875 | - logger.Error("AddDagongList err=%v",err) | 866 | + logger.Error("AddDagongList err=%v", err) |
| 876 | return err | 867 | return err |
| 877 | } | 868 | } |
| 878 | 869 | ||
| 879 | return nil | 870 | return nil |
| 880 | -} | ||
| 881 | \ No newline at end of file | 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,12 +92,25 @@ func startServerHttpServe() { | ||
| 92 | http.HandleFunc("/catcafe/user/newGetData",NewGetData) //新的获取玩家数据接口 | 92 | http.HandleFunc("/catcafe/user/newGetData",NewGetData) //新的获取玩家数据接口 |
| 93 | http.HandleFunc("/catcafe/user/newSaveData",NewSaveData) //新的保存玩家数据接口 | 93 | http.HandleFunc("/catcafe/user/newSaveData",NewSaveData) //新的保存玩家数据接口 |
| 94 | 94 | ||
| 95 | + http.HandleFunc("/catcafe/chat/queryNewMessage",queryNewMessage) //查询红点请求 | ||
| 96 | + | ||
| 95 | 97 | ||
| 96 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) | 98 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
| 97 | CheckErr(err) | 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 | func NewSaveData(w http.ResponseWriter, r *http.Request) { | 114 | func NewSaveData(w http.ResponseWriter, r *http.Request) { |
| 102 | 115 | ||
| 103 | result, _ := ioutil.ReadAll(r.Body) | 116 | result, _ := ioutil.ReadAll(r.Body) |
src/HttpServer/logic/logic.go
| @@ -274,6 +274,55 @@ func HandleQueryInvite(w http.ResponseWriter, data string) { | @@ -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 | func HandleNewSaveData(w http.ResponseWriter, data string) { | 326 | func HandleNewSaveData(w http.ResponseWriter, data string) { |
| 278 | SetHeader(w) | 327 | SetHeader(w) |
| 279 | var resp SaveDataBackupResp | 328 | var resp SaveDataBackupResp |
src/common/redis/def.go
| 1 | package redis | 1 | package redis |
| 2 | 2 | ||
| 3 | const ( | 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 | USER_CHAT_PRIVATE_LASTGET_KEY = "CATCAFE_USER_CHAT_PRIVATE_LASTGET_KEY" // hset key加自己的uuid field为目标的uuid value为时间戳 | 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,6 +169,8 @@ func QueryAllData(f *os.File) error{ | ||
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | 171 | ||
| 172 | + | ||
| 173 | + | ||
| 172 | func QueryInvite(uuid int) ([]QuerInviteDesc,error){ | 174 | func QueryInvite(uuid int) ([]QuerInviteDesc,error){ |
| 173 | var rtslice []QuerInviteDesc | 175 | var rtslice []QuerInviteDesc |
| 174 | 176 |