Commit f1192a584a0201800b9dd4fca5d1ad9292799491
1 parent
3e2ecbe7
Exists in
master
队伍buff相关
Showing
4 changed files
with
298 additions
and
1 deletions
Show diff stats
src/HttpServer/logic/datadef.go
@@ -162,9 +162,29 @@ type TeamMemInfo struct { | @@ -162,9 +162,29 @@ type TeamMemInfo struct { | ||
162 | MemList []int | 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 | type TeamBuildingInfo struct { | 185 | type TeamBuildingInfo struct { |
167 | - | 186 | + Devote []TeamDevoteInfo |
187 | + Buff []TeamAllBuff | ||
168 | } | 188 | } |
169 | 189 | ||
170 | type CreateTeamInfo struct { | 190 | type CreateTeamInfo struct { |
@@ -235,6 +255,59 @@ type QuitTeamResp struct { | @@ -235,6 +255,59 @@ type QuitTeamResp struct { | ||
235 | Result CommonResult `json:"result"` | 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,6 +7,7 @@ import ( | ||
7 | "encoding/json" | 7 | "encoding/json" |
8 | "net/http" | 8 | "net/http" |
9 | "strconv" | 9 | "strconv" |
10 | + "time" | ||
10 | ) | 11 | ) |
11 | 12 | ||
12 | func SetHeader(w http.ResponseWriter) { | 13 | func SetHeader(w http.ResponseWriter) { |
@@ -15,6 +16,82 @@ func SetHeader(w http.ResponseWriter) { | @@ -15,6 +16,82 @@ func SetHeader(w http.ResponseWriter) { | ||
15 | w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") | 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 | func (tinfo *TeamInfo) IsInTeam(uuid int) bool { | 95 | func (tinfo *TeamInfo) IsInTeam(uuid int) bool { |
19 | inteam := false | 96 | inteam := false |
20 | for _,val := range tinfo.MemInfo.MemList { | 97 | for _,val := range tinfo.MemInfo.MemList { |
src/HttpServer/logic/httpserver.go
@@ -39,12 +39,37 @@ func startServerHttpServe() { | @@ -39,12 +39,37 @@ func startServerHttpServe() { | ||
39 | http.HandleFunc("/catcafe/team/joinTeam", JoinTeam) //主动加入队伍 | 39 | http.HandleFunc("/catcafe/team/joinTeam", JoinTeam) //主动加入队伍 |
40 | http.HandleFunc("/catcafe/team/joinTeamByInvite", JoinTeamByInvite) //被邀请加入队伍 | 40 | http.HandleFunc("/catcafe/team/joinTeamByInvite", JoinTeamByInvite) //被邀请加入队伍 |
41 | http.HandleFunc("/catcafe/team/quitTeam", QuitTeam) //被邀请加入队伍 | 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 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) | 46 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
45 | CheckErr(err) | 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 | func QuitTeam(w http.ResponseWriter, r *http.Request) { | 73 | func QuitTeam(w http.ResponseWriter, r *http.Request) { |
49 | 74 | ||
50 | result, _ := ioutil.ReadAll(r.Body) | 75 | result, _ := ioutil.ReadAll(r.Body) |
src/HttpServer/logic/logic.go
@@ -763,4 +763,126 @@ func HandleQuitTeam(w http.ResponseWriter, data string) { | @@ -763,4 +763,126 @@ func HandleQuitTeam(w http.ResponseWriter, data string) { | ||
763 | //回包 | 763 | //回包 |
764 | respstr, _ := json.Marshal(&resp) | 764 | respstr, _ := json.Marshal(&resp) |
765 | fmt.Fprint(w, string(respstr)) | 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 | \ No newline at end of file | 889 | \ No newline at end of file |