diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index e2be1db..3119903 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -308,6 +308,99 @@ type AddTeamBuffResp struct { Result AddTeamBuffResult `json:"result"` } +type GetTeamBuffReq struct{ + Token string `json:"token"` +} + +type GetTeamBuffResp struct { + Status string `json:"status"` + Result AddTeamBuffResult `json:"result"` +} + +type GetTeamDataReq struct{ + Token string `json:"token"` +} + +type GetTeamDataTeamUserList struct { + Uuid int `json:"uuid"` +} + +type GetTeamDataDesc struct { + Team_data CreateTeamInfo `json:"team_data"` + Team_user_list []GetTeamDataTeamUserList `json:"team_user_list"` + Build_list QuitTeamDesc `json:"build_list"` +} + +type GetTeamDataResult struct { + Code int `json:"code"` + Data GetTeamDataDesc `json:"data"` +} + +type GetTeamDataResp struct { + Status string `json:"status"` + Result GetTeamDataResult `json:"result"` +} + +type GetDataByUserIdReq struct{ + Token string `json:"token"` + Field string `json:"field"` + User_id int `json:"user_id"` +} + +type GetDataByUserIdDesc struct { + Base_data string `json:"base_data"` + User_base_data UserBaseData `json:"user_base_data"` + Extdata UserExtData `json:"user_ext_data"` +} + +type GetDataByUserIdResult struct { + Code int `json:"code"` + Data GetDataByUserIdDesc `json:"data"` +} + +type GetDataByUserIdResp struct { + Status string `json:"status"` + Result GetDataByUserIdResult `json:"result"` +} + + +type GetTeamListReq struct{ + Token string `json:"token"` + Store_num int `json:"store_num"` + Page int `json:"page"` +} + +type GetTeamListDesc struct { + Items []int `json:"items"` + Count int `json:"count"` +} + +type GetTeamListResult struct { + Code int `json:"code"` + Data GetTeamListDesc `json:"data"` +} + + +type GetTeamListResp struct { + Status string `json:"status"` + Result GetTeamListResult `json:"result"` +} + +type SearchTeamReq struct{ + Token string `json:"token"` + Name string `json:"name"` + Store_num int `json:"store_num"` + Page int `json:"page"` +} + + + + +type SearchTeamResp struct { + Status string `json:"status"` + Result GetTeamListResult `json:"result"` +} + //********************************************************************************************************** diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index 421e490..73ad58b 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -18,4 +18,6 @@ const ( ERROR_TEAMNAMETHSDAME = 13 //修改队伍时名称重复 ERROR_TEAMALREADYINTEAM = 14 //已经在队伍中无法再加入 ERROR_TEAMNOTINTEAM = 15 //不在在队伍中无法再推出 + ERROR_GETUSERINFOBYIDFAILED = 16 //通过uid查询玩家数据失败 + ERROR_GETTEAMLISTFAILED = 17 //查询队伍列表失败 ) \ No newline at end of file diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 4d8e284..8e42373 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -6,7 +6,9 @@ import ( "common/redis" "encoding/json" "net/http" + "sort" "strconv" + "strings" "time" ) @@ -112,6 +114,9 @@ func (tinfo *TeamInfo) DelTeamMember(uuid int) { } } + //删除team关系 + SaveTeamToUuid(0,uuid) + } //设置 @@ -284,4 +289,96 @@ func GetTeamByUuid(uuid int) (int,error) { teamid,err := strconv.Atoi(vv) return teamid,err +} + +type TeamSlice []*TeamInfo + +func (a TeamSlice) Len() int { // 重写 Len() 方法 + return len(a) +} +func (a TeamSlice) Swap(i, j int){ // 重写 Swap() 方法 + a[i], a[j] = a[j], a[i] +} +func (a TeamSlice) Less(i, j int) bool { // 重写 Less() 方法, 从大到小排序 + return a[j].BaseInfo.Assets < a[i].BaseInfo.Assets +} + + +//获取所有的team,分页 传入页签 +func GetTeamListByCond(shopnum int,page int) (TeamSlice,error,int) { + if page < 0 { + logger.Error("GetTeamListByCond invalid page=%v",page) + page = 1 + } + var rtslice TeamSlice + vv,err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO) + if err != nil { + logger.Error("GetTeamListByCond err") + return nil,err,0 + } + + for _,val := range vv { + one := new(TeamInfo) + bytestr := val.([]byte) + err = json.Unmarshal(bytestr, one) + if err == nil { + if one.BaseInfo.Num <= shopnum { + rtslice = append(rtslice,one) + } + } + } + //排序 + sort.Sort(rtslice) + + begin := (page-1) * 10 + end := begin + 9 + sumlen := len(rtslice) + if begin > sumlen{ + begin = sumlen - 10 + } + if end > sumlen { + end = sumlen - 1 + } + + return rtslice[begin:end],nil,sumlen + +} + +func GetTeamListByNameCond(shopnum int,page int, name string) (TeamSlice,error,int) { + if page < 0 { + logger.Error("GetTeamListByCond invalid page=%v",page) + page = 1 + } + var rtslice TeamSlice + vv,err := redishandler.GetRedisClient().HGetAllValues(redis.TEAM_INFO) + if err != nil { + logger.Error("GetTeamListByCond err") + return nil,err,0 + } + + for _,val := range vv { + one := new(TeamInfo) + bytestr := val.([]byte) + err = json.Unmarshal(bytestr, one) + if err == nil { + if one.BaseInfo.Num <= shopnum && strings.Index(one.BaseInfo.Name,name) != -1{ + rtslice = append(rtslice,one) + } + } + } + //排序 + sort.Sort(rtslice) + + begin := (page-1) * 10 + end := begin + 9 + sumlen := len(rtslice) + if begin > sumlen{ + begin = sumlen - 10 + } + if end > sumlen { + end = sumlen - 1 + } + + return rtslice[begin:end],nil,sumlen + } \ No newline at end of file diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index 44545a1..b03a8ec 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -41,12 +41,72 @@ func startServerHttpServe() { http.HandleFunc("/catcafe/team/quitTeam", QuitTeam) //被邀请加入队伍 http.HandleFunc("/catcafe/team/updateTeamBuild", UpdateTeamBuild) //升级队伍建筑等级 http.HandleFunc("/catcafe/team/addTeamBuff", AddTeamBuff) //添加BUFF时间 + http.HandleFunc("/catcafe/team/getTeamBuff", GetTeamBuff) //获取BUFF时间 + http.HandleFunc("/catcafe/team/getTeamData", GetTeamData) //获取玩家队伍信息 + http.HandleFunc("/catcafe/team/getDataByUserId", GetDataByUserId) //获取队伍成员的详细数据 + http.HandleFunc("/catcafe/team/getTeamList", GetTeamList) //查询队伍列表 + http.HandleFunc("/catcafe/team/searchTeam", SearchTeam) //根据名称搜索队伍 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } +func SearchTeam(w http.ResponseWriter, r *http.Request) { + + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("SearchTeam , body:%v,uuid=%v", s) + + HandleSearchTeam(w,s) +} + +func GetTeamList(w http.ResponseWriter, r *http.Request) { + + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("GetTeamList , body:%v,uuid=%v", s) + + HandleGetTeamList(w,s) +} + +func GetDataByUserId(w http.ResponseWriter, r *http.Request) { + + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("GetDataByUserId , body:%v,uuid=%v", s) + + HandleGetDataByUserId(w,s) +} + +func GetTeamData(w http.ResponseWriter, r *http.Request) { + + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("GetTeamData , body:%v,uuid=%v", s) + + HandleGetTeamData(w,s) +} + +func GetTeamBuff(w http.ResponseWriter, r *http.Request) { + + result, _ := ioutil.ReadAll(r.Body) + r.Body.Close() + + s := string(result) + logger.Info("GetTeamBuff , body:%v,uuid=%v", s) + + HandleGetTeamBuff(w,s) +} + func AddTeamBuff(w http.ResponseWriter, r *http.Request) { diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index 09ebab0..f120af8 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -262,10 +262,10 @@ func HandlesaveData(w http.ResponseWriter, data string) { func HandlegetData(w http.ResponseWriter, data string) { SetHeader(w) - var resp SaveDataResp + var resp GetDataResp resp.Status = "true" resp.Result.Code = ERROR_OK - var rdata SaveDataReq + var rdata GetDataReq err := json.Unmarshal([]byte(data), &rdata) for { if err != nil { @@ -290,7 +290,7 @@ func HandlegetData(w http.ResponseWriter, data string) { break } - resp.Result.Data = ubase + resp.Result.Data.Base_data = ubase resp.Result.Code = ERROR_OK break } @@ -614,6 +614,8 @@ func HandleJoinTeam(w http.ResponseWriter, data string) { tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList,uuid) + //保存队伍与uuid + SaveTeamToUuid(tinfo.BaseInfo.Id,uuid) //保存队伍数据 SaveTeamInfo(tinfo.BaseInfo.Id,tinfo) @@ -677,6 +679,9 @@ func HandleJoinTeamByInvite(w http.ResponseWriter, data string) { tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList,uuid) + + //保存队伍与uuid + SaveTeamToUuid(tinfo.BaseInfo.Id,uuid) //保存队伍数据 SaveTeamInfo(tinfo.BaseInfo.Id,tinfo) @@ -885,4 +890,255 @@ func HandleAddTeamBuff(w http.ResponseWriter, data string) { //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) +} + +func HandleGetTeamBuff(w http.ResponseWriter, data string) { + SetHeader(w) + var resp GetTeamBuffResp + resp.Status = "true" + resp.Result.Code = ERROR_OK + var rdata GetTeamBuffReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandleGetTeamBuff json unmarshal failed=%v", err) + resp.Result.Code = ERROR_JSONUNMASHFAILED + break + } + + uuid,err := GetTouristUid(rdata.Token) + if err != nil || uuid==0{ + logger.Error("HandleGetTeamBuff GetTouristUid failed=%v", err) + resp.Result.Code = ERROR_GETUSERIDFAILED + break + } + + teamid,err := GetTeamByUuid(uuid) + if err != nil { + logger.Error("HandleGetTeamBuff GetTeamInfoFailed failed=%v", err) + resp.Result.Code = ERROR_GETTEAMINFO_FAILED + break + } + tinfo ,err := GetTeamInfo(teamid) + if err != nil { + logger.Error("HandleGetTeamBuff GetTeamInfoFailed failed=%v", err) + resp.Result.Code = ERROR_GETTEAMINFO_FAILED + break + } + + + //处理buff + for _,vak := range tinfo.BInfo.Buff { + var tmp AddTeamBuffSpec + tmp.Build_type = vak.Type + for _,val1 := range vak.BuffInfo { + var tmp1 BuffTimeInfo + tmp1.Buff_begin_time = val1.BeginTime + tmp1.Buff_end_time = val1.EndTime + tmp.Buff_time = append(tmp.Buff_time,tmp1) + } + resp.Result.Data.Build_list = append(resp.Result.Data.Build_list,tmp) + } + + resp.Result.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandleGetTeamData(w http.ResponseWriter, data string) { + SetHeader(w) + var resp GetTeamDataResp + resp.Status = "true" + resp.Result.Code = ERROR_OK + var rdata GetTeamDataReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandleGetTeamData json unmarshal failed=%v", err) + resp.Result.Code = ERROR_JSONUNMASHFAILED + break + } + + uuid,err := GetTouristUid(rdata.Token) + if err != nil || uuid==0{ + logger.Error("HandleGetTeamData GetTouristUid failed=%v", err) + resp.Result.Code = ERROR_GETUSERIDFAILED + break + } + + teamid,err := GetTeamByUuid(uuid) + if err != nil { + logger.Error("HandleGetTeamData GetTeamInfoFailed failed=%v", err) + resp.Result.Code = ERROR_GETTEAMINFO_FAILED + break + } + tinfo ,err := GetTeamInfo(teamid) + if err != nil { + logger.Error("HandleGetTeamData GetTeamInfoFailed failed=%v", err) + resp.Result.Code = ERROR_GETTEAMINFO_FAILED + break + } + + resp.Result.Data.Team_data = tinfo.BaseInfo + for _,val := range tinfo.MemInfo.MemList { + var tmp GetTeamDataTeamUserList + tmp.Uuid = val + resp.Result.Data.Team_user_list = append(resp.Result.Data.Team_user_list,tmp) + } + for _,val := range tinfo.BInfo.Devote { + var tmp TeamDevoteInfo + tmp = val + resp.Result.Data.Build_list.Build_list = append(resp.Result.Data.Build_list.Build_list,tmp) + } + + resp.Result.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + + +func HandleGetDataByUserId(w http.ResponseWriter, data string) { + SetHeader(w) + var resp GetDataByUserIdResp + resp.Status = "true" + resp.Result.Code = ERROR_OK + var rdata GetDataByUserIdReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandleGetDataByUserId json unmarshal failed=%v", err) + resp.Result.Code = ERROR_JSONUNMASHFAILED + break + } + + uuid,err := GetTouristUid(rdata.Token) + if err != nil || uuid==0{ + logger.Error("HandleGetDataByUserId GetTouristUid failed=%v", err) + resp.Result.Code = ERROR_GETUSERIDFAILED + break + } + + basic,err := GetUserBasic(rdata.User_id) + if err != nil { + logger.Error("HandleGetDataByUserId GetUserBasic failed=%v", err) + resp.Result.Code = ERROR_GETUSERINFOBYIDFAILED + break + } + base,err := GetUserBaseData(rdata.User_id) + if err != nil { + logger.Error("HandleGetDataByUserId GetUserBase failed=%v", err) + resp.Result.Code = ERROR_GETUSERINFOBYIDFAILED + break + } + ext,err := GetUserExt(rdata.User_id) + if err != nil { + logger.Error("HandleGetDataByUserId GetUserExt failed=%v", err) + resp.Result.Code = ERROR_GETUSERINFOBYIDFAILED + break + } + + resp.Result.Data.Base_data = base + resp.Result.Data.User_base_data = *basic + resp.Result.Data.Extdata = *ext + + resp.Result.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + + +func HandleGetTeamList(w http.ResponseWriter, data string) { + SetHeader(w) + var resp GetTeamListResp + resp.Status = "true" + resp.Result.Code = ERROR_OK + var rdata GetTeamListReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandleGetTeamList json unmarshal failed=%v", err) + resp.Result.Code = ERROR_JSONUNMASHFAILED + break + } + + uuid,err := GetTouristUid(rdata.Token) + if err != nil || uuid==0{ + logger.Error("HandleGetTeamList GetTouristUid failed=%v", err) + resp.Result.Code = ERROR_GETUSERIDFAILED + break + } + + teams,err,sum := GetTeamListByCond(rdata.Store_num,rdata.Page) + if err != nil { + logger.Error("HandleGetTeamList GetTeamListByCond failed=%v", err) + resp.Result.Code = ERROR_GETTEAMLISTFAILED + break + } + + resp.Result.Data.Count = sum + for _,val := range teams { + resp.Result.Data.Items = append(resp.Result.Data.Items,val.BaseInfo.Id) + } + + resp.Result.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) +} + +func HandleSearchTeam(w http.ResponseWriter, data string) { + SetHeader(w) + var resp SearchTeamResp + resp.Status = "true" + resp.Result.Code = ERROR_OK + var rdata SearchTeamReq + err := json.Unmarshal([]byte(data), &rdata) + for { + if err != nil { + logger.Error("HandleSearchTeam json unmarshal failed=%v", err) + resp.Result.Code = ERROR_JSONUNMASHFAILED + break + } + + uuid,err := GetTouristUid(rdata.Token) + if err != nil || uuid==0{ + logger.Error("HandleSearchTeam GetTouristUid failed=%v", err) + resp.Result.Code = ERROR_GETUSERIDFAILED + break + } + + teams,err,sum := GetTeamListByNameCond(rdata.Store_num,rdata.Page,rdata.Name) + if err != nil { + logger.Error("HandleSearchTeam GetTeamListByCond failed=%v", err) + resp.Result.Code = ERROR_GETTEAMLISTFAILED + break + } + + resp.Result.Data.Count = sum + for _,val := range teams { + resp.Result.Data.Items = append(resp.Result.Data.Items,val.BaseInfo.Id) + } + + resp.Result.Code = ERROR_OK + break + } + + //回包 + respstr, _ := json.Marshal(&resp) + fmt.Fprint(w, string(respstr)) } \ No newline at end of file -- libgit2 0.21.0