Commit f1192a584a0201800b9dd4fca5d1ad9292799491

Authored by 陆恒
1 parent 3e2ecbe7
Exists in master

队伍buff相关

src/HttpServer/logic/datadef.go
... ... @@ -162,9 +162,29 @@ type TeamMemInfo struct {
162 162 MemList []int
163 163 }
164 164  
  165 +//玩家投资信心
  166 +type TeamDevoteInfo struct {
  167 + UserId int `json:"userid"`
  168 + Type int `json:"type"`
  169 + Assets int `json:"assets"`
  170 +}
  171 +
  172 +//玩家buff
  173 +type TeamBuffInfo struct {
  174 + BeginTime int
  175 + EndTime int
  176 +}
  177 +
  178 +//
  179 +type TeamAllBuff struct {
  180 + Type int
  181 + BuffInfo []TeamBuffInfo
  182 +}
  183 +
165 184 //队伍建筑信息
166 185 type TeamBuildingInfo struct {
167   -
  186 + Devote []TeamDevoteInfo
  187 + Buff []TeamAllBuff
168 188 }
169 189  
170 190 type CreateTeamInfo struct {
... ... @@ -235,6 +255,59 @@ type QuitTeamResp struct {
235 255 Result CommonResult `json:"result"`
236 256 }
237 257  
  258 +type UpdateTeamBuildReq struct{
  259 + Token string `json:"token"`
  260 + Build_type int `json:"build_type"`
  261 + Assets int `json:"assets"`
  262 + Muti int `json:"muti"`
  263 +}
  264 +
  265 +type QuitTeamDesc struct {
  266 + Build_list []TeamDevoteInfo `json:"build_list"`
  267 +}
  268 +
  269 +type QuitTeamResult struct {
  270 + Code int `json:"code"`
  271 + Data QuitTeamDesc `json:"data"`
  272 +}
  273 +
  274 +type UpdateTeamBuildResp struct {
  275 + Status string `json:"status"`
  276 + Result QuitTeamResult `json:"result"`
  277 +}
  278 +
  279 +
  280 +
  281 +type AddTeamBuffReq struct{
  282 + Token string `json:"token"`
  283 + Build_type int `json:"build_type"`
  284 + Muti int `json:"muti"`
  285 +}
  286 +
  287 +type BuffTimeInfo struct {
  288 + Buff_begin_time int `json:"buff_begin_time"`
  289 + Buff_end_time int `json:"buff_end_time"`
  290 +}
  291 +
  292 +type AddTeamBuffSpec struct {
  293 + Build_type int `json:"build_type"`
  294 + Buff_time []BuffTimeInfo `json:"buff_time"`
  295 +}
  296 +
  297 +type AddTeamBuffDesc struct {
  298 + Build_list []AddTeamBuffSpec `json:"build_list"`
  299 +}
  300 +
  301 +type AddTeamBuffResult struct {
  302 + Code int `json:"code"`
  303 + Data AddTeamBuffDesc `json:"data"`
  304 +}
  305 +
  306 +type AddTeamBuffResp struct {
  307 + Status string `json:"status"`
  308 + Result AddTeamBuffResult `json:"result"`
  309 +}
  310 +
238 311  
239 312 //**********************************************************************************************************
240 313  
... ...
src/HttpServer/logic/function.go
... ... @@ -7,6 +7,7 @@ import (
7 7 "encoding/json"
8 8 "net/http"
9 9 "strconv"
  10 + "time"
10 11 )
11 12  
12 13 func SetHeader(w http.ResponseWriter) {
... ... @@ -15,6 +16,82 @@ func SetHeader(w http.ResponseWriter) {
15 16 w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid")
16 17 }
17 18  
  19 +func (tinfo *TeamInfo) DoAddBuffTimee(btype int,muti int,resp *AddTeamBuffResp) {
  20 + addtime := 1800*muti
  21 + index := 0
  22 + for k,val := range tinfo.BInfo.Buff {
  23 + if val.Type == btype {
  24 + index = k
  25 + }
  26 + }
  27 +
  28 + for i:=0;i<len(tinfo.BInfo.Buff[index].BuffInfo);i++ {
  29 + tinfo.BInfo.Buff[index].BuffInfo[i].EndTime += addtime
  30 + }
  31 +
  32 + for _,vak := range tinfo.BInfo.Buff {
  33 + var tmp AddTeamBuffSpec
  34 + tmp.Build_type = vak.Type
  35 + for _,val1 := range vak.BuffInfo {
  36 + var tmp1 BuffTimeInfo
  37 + tmp1.Buff_begin_time = val1.BeginTime
  38 + tmp1.Buff_end_time = val1.EndTime
  39 + tmp.Buff_time = append(tmp.Buff_time,tmp1)
  40 + }
  41 + resp.Result.Data.Build_list = append(resp.Result.Data.Build_list,tmp)
  42 + }
  43 +}
  44 +
  45 +func (tinfo *TeamInfo) DoDevote(btype int,assets int ,uuid int,muti int) {
  46 + bfind := false
  47 + for k,val := range tinfo.BInfo.Devote {
  48 + if val.Type == btype {
  49 + tinfo.BInfo.Devote[k].Assets += assets
  50 + bfind = true
  51 + break
  52 + }
  53 + }
  54 + if !bfind {
  55 + var tmp TeamDevoteInfo
  56 + tmp.UserId = uuid
  57 + tmp.Assets = assets
  58 + tmp.Type = btype
  59 + tinfo.BInfo.Devote = append(tinfo.BInfo.Devote,tmp)
  60 + }
  61 +
  62 + //需要处理一下buff
  63 + nowtime := int(time.Now().Unix())
  64 + addTime := 1800*muti
  65 + var index = 0
  66 + for k,val := range tinfo.BInfo.Buff {
  67 + if val.Type == btype {
  68 + index = k
  69 + }
  70 + }
  71 + if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime < nowtime + 86399 {
  72 + if tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime >= nowtime {
  73 + tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += addTime
  74 + } else {
  75 + var tmp TeamBuffInfo
  76 + tmp.BeginTime = nowtime
  77 + tmp.EndTime = nowtime + addTime
  78 + tinfo.BInfo.Buff[index].BuffInfo = append(tinfo.BInfo.Buff[index].BuffInfo,tmp)
  79 + }
  80 + }else {
  81 + tinfo.BInfo.Buff[index].BuffInfo[len(tinfo.BInfo.Buff[index].BuffInfo)-1].EndTime += 86399
  82 + }
  83 +
  84 + //删除掉无用的
  85 + yestime := nowtime-86400
  86 + for i:=0;i<len(tinfo.BInfo.Buff[index].BuffInfo);i++ {
  87 + v := tinfo.BInfo.Buff[index].BuffInfo[i]
  88 + if v.BeginTime < yestime && v.EndTime < yestime {
  89 + tinfo.BInfo.Buff = append(tinfo.BInfo.Buff[:i],tinfo.BInfo.Buff[i+1:]...)
  90 + i--
  91 + }
  92 + }
  93 +}
  94 +
18 95 func (tinfo *TeamInfo) IsInTeam(uuid int) bool {
19 96 inteam := false
20 97 for _,val := range tinfo.MemInfo.MemList {
... ...
src/HttpServer/logic/httpserver.go
... ... @@ -39,12 +39,37 @@ func startServerHttpServe() {
39 39 http.HandleFunc("/catcafe/team/joinTeam", JoinTeam) //主动加入队伍
40 40 http.HandleFunc("/catcafe/team/joinTeamByInvite", JoinTeamByInvite) //被邀请加入队伍
41 41 http.HandleFunc("/catcafe/team/quitTeam", QuitTeam) //被邀请加入队伍
  42 + http.HandleFunc("/catcafe/team/updateTeamBuild", UpdateTeamBuild) //升级队伍建筑等级
  43 + http.HandleFunc("/catcafe/team/addTeamBuff", AddTeamBuff) //添加BUFF时间
42 44  
43 45  
44 46 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
45 47 CheckErr(err)
46 48 }
47 49  
  50 +
  51 +func AddTeamBuff(w http.ResponseWriter, r *http.Request) {
  52 +
  53 + result, _ := ioutil.ReadAll(r.Body)
  54 + r.Body.Close()
  55 +
  56 + s := string(result)
  57 + logger.Info("AddTeamBuff , body:%v,uuid=%v", s)
  58 +
  59 + HandleAddTeamBuff(w,s)
  60 +}
  61 +
  62 +func UpdateTeamBuild(w http.ResponseWriter, r *http.Request) {
  63 +
  64 + result, _ := ioutil.ReadAll(r.Body)
  65 + r.Body.Close()
  66 +
  67 + s := string(result)
  68 + logger.Info("UpdateTeamBuild , body:%v,uuid=%v", s)
  69 +
  70 + HandleUpdateTeamBuild(w,s)
  71 +}
  72 +
48 73 func QuitTeam(w http.ResponseWriter, r *http.Request) {
49 74  
50 75 result, _ := ioutil.ReadAll(r.Body)
... ...
src/HttpServer/logic/logic.go
... ... @@ -763,4 +763,126 @@ func HandleQuitTeam(w http.ResponseWriter, data string) {
763 763 //回包
764 764 respstr, _ := json.Marshal(&resp)
765 765 fmt.Fprint(w, string(respstr))
  766 +}
  767 +
  768 +
  769 +func HandleUpdateTeamBuild(w http.ResponseWriter, data string) {
  770 + SetHeader(w)
  771 + var resp UpdateTeamBuildResp
  772 + resp.Status = "true"
  773 + resp.Result.Code = ERROR_OK
  774 + var rdata UpdateTeamBuildReq
  775 + err := json.Unmarshal([]byte(data), &rdata)
  776 + for {
  777 + if err != nil {
  778 + logger.Error("HandleUpdateTeamBuild json unmarshal failed=%v", err)
  779 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  780 + break
  781 + }
  782 +
  783 + uuid,err := GetTouristUid(rdata.Token)
  784 + if err != nil || uuid==0{
  785 + logger.Error("HandleUpdateTeamBuild GetTouristUid failed=%v", err)
  786 + resp.Result.Code = ERROR_GETUSERIDFAILED
  787 + break
  788 + }
  789 +
  790 + teamid,err := GetTeamByUuid(uuid)
  791 + if err != nil {
  792 + logger.Error("HandleUpdateTeamBuild GetTeamInfoFailed failed=%v", err)
  793 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  794 + break
  795 + }
  796 + tinfo ,err := GetTeamInfo(teamid)
  797 + if err != nil {
  798 + logger.Error("HandleUpdateTeamBuild GetTeamInfoFailed failed=%v", err)
  799 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  800 + break
  801 + }
  802 + //判断一下是否已经在队伍中
  803 + inteam := tinfo.IsInTeam(uuid)
  804 +
  805 + if !inteam {
  806 + logger.Error("HandleQuitTeam not inteam failed=%v", err)
  807 + resp.Result.Code = ERROR_TEAMNOTINTEAM
  808 + break
  809 + }
  810 +
  811 +
  812 + //处理投资
  813 + tinfo.DoDevote(rdata.Build_type,rdata.Assets,uuid,rdata.Muti)
  814 +
  815 + //保存队伍数据
  816 + SaveTeamInfo(tinfo.BaseInfo.Id,tinfo)
  817 +
  818 + for _,val := range tinfo.BInfo.Devote {
  819 + resp.Result.Data.Build_list = append(resp.Result.Data.Build_list,val)
  820 + }
  821 +
  822 + resp.Result.Code = ERROR_OK
  823 + break
  824 + }
  825 +
  826 + //回包
  827 + respstr, _ := json.Marshal(&resp)
  828 + fmt.Fprint(w, string(respstr))
  829 +}
  830 +
  831 +func HandleAddTeamBuff(w http.ResponseWriter, data string) {
  832 + SetHeader(w)
  833 + var resp AddTeamBuffResp
  834 + resp.Status = "true"
  835 + resp.Result.Code = ERROR_OK
  836 + var rdata AddTeamBuffReq
  837 + err := json.Unmarshal([]byte(data), &rdata)
  838 + for {
  839 + if err != nil {
  840 + logger.Error("HandleAddTeamBuff json unmarshal failed=%v", err)
  841 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  842 + break
  843 + }
  844 +
  845 + uuid,err := GetTouristUid(rdata.Token)
  846 + if err != nil || uuid==0{
  847 + logger.Error("HandleAddTeamBuff GetTouristUid failed=%v", err)
  848 + resp.Result.Code = ERROR_GETUSERIDFAILED
  849 + break
  850 + }
  851 +
  852 + teamid,err := GetTeamByUuid(uuid)
  853 + if err != nil {
  854 + logger.Error("HandleAddTeamBuff GetTeamInfoFailed failed=%v", err)
  855 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  856 + break
  857 + }
  858 + tinfo ,err := GetTeamInfo(teamid)
  859 + if err != nil {
  860 + logger.Error("HandleAddTeamBuff GetTeamInfoFailed failed=%v", err)
  861 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  862 + break
  863 + }
  864 + //判断一下是否已经在队伍中
  865 + inteam := tinfo.IsInTeam(uuid)
  866 +
  867 + if !inteam {
  868 + logger.Error("HandleAddTeamBuff not inteam failed=%v", err)
  869 + resp.Result.Code = ERROR_TEAMNOTINTEAM
  870 + break
  871 + }
  872 +
  873 + //处理buff
  874 + tinfo.DoAddBuffTimee(rdata.Build_type,rdata.Muti,&resp)
  875 +
  876 +
  877 + //保存队伍数据
  878 + SaveTeamInfo(tinfo.BaseInfo.Id,tinfo)
  879 +
  880 +
  881 + resp.Result.Code = ERROR_OK
  882 + break
  883 + }
  884 +
  885 + //回包
  886 + respstr, _ := json.Marshal(&resp)
  887 + fmt.Fprint(w, string(respstr))
766 888 }
767 889 \ No newline at end of file
... ...