package logic import ( "HttpServer/conf" "HttpServer/redishandler" "common/logger" "fmt" "io" "io/ioutil" "mysql" "os" "strconv" //"log" "net/http" ) //定时处理倒计时 func StartHttpTicker() { } func StartHttpServe() { startServerHttpServe() } //just for test func Testsendhttp() { } func CheckErr(err error) { if err != nil { panic(err) } } func startServerHttpServe() { defer func() { //recover() //可以打印panic的错误信息 //fmt.Println(recover()) if err := recover(); err != nil { //产生了panic异常 logger.Error("%v",err) } }() //别忘了(), 调用此匿名函数 //------------------------------------------------------------- http.HandleFunc("/catcafe/ClearData", ClearData) //情况账号的测试接口 http.HandleFunc("/catcafe/AddWhiteList", AddWhiteList) //情况账号的测试接口 http.HandleFunc("/catcafe/QueryAllAccount", QueryAllAccount) //查询所有账号的等级信息等数据 //------------------------------------------------------------- http.HandleFunc("/catcafe/login", UserLogin) //游客登录 http.HandleFunc("/catcafe/user/regeister", Regeister) //账号注册 http.HandleFunc("/catcafe/user/accountlogin", AccounLogin) //账号登录 http.HandleFunc("/catcafe/wechatlogin", Wechatlogin) //微信登录 http.HandleFunc("/catcafe/user/saveUserData", SaveUserData) //保存用户数据 http.HandleFunc("/catcafe/data/saveData", SaveData) //保存游戏自定义数据 http.HandleFunc("/catcafe/data/getData", GetData) //获取自定义数据 http.HandleFunc("/catcafe/team/textCheck", TextCheck) //敏感词检测 http.HandleFunc("/catcafe/team/createTeam", CreateTeam) //创建队伍 http.HandleFunc("/catcafe/team/updateTeamData", UpdateTeamData) //修改队伍信息 http.HandleFunc("/catcafe/team/joinTeam", JoinTeam) //主动加入队伍 http.HandleFunc("/catcafe/team/joinTeamByInvite", JoinTeamByInvite) //被邀请加入队伍 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) //根据名称搜索队伍 http.HandleFunc("/catcafe/friend/setFriendRequest", SetFriendRequest) //申请添加好友 http.HandleFunc("/catcafe/friend/getList", GetFriendList) //获取好友列表 http.HandleFunc("/catcafe/friend/getAuditList", GetAuditList) //获取待审核好友列表 http.HandleFunc("/catcafe/friend/getRecommendList", GetRecommendList) //获取推荐好友列表 http.HandleFunc("/catcafe/friend/handleFriendRequest", HandleFriendRequest) //处理好友请求 http.HandleFunc("/catcafe/friend/delFriend", DelFriend) //删除好友 http.HandleFunc("/catcafe/friend/QueryPlayerData", QueryPlayerData) //根据用户id获取用户信息 好友用 //................................................................................................................... http.HandleFunc("/catcafe/user/queryInvite", QueryInvite) //查询玩家对应邀请关系 http.HandleFunc("/catcafe/user/fetchInviteReward",FetchInviteReward) //领取邀请奖励 http.HandleFunc("/catcafe/user/enterInvite",EnterInvite) //别的玩家(新玩家)通过邀请连接进来 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) } func checkFileIsExist(filename string) bool { var exist = true if _, err := os.Stat(filename); os.IsNotExist(err) { exist = false } return exist } func QueryAllAccount(w http.ResponseWriter, r *http.Request) { /*type A struct { a int } var a *A a.a = 1*/ logger.Info("QueryAllAccount ") //先打开文件 filename := "./data.txt" var f *os.File var err1 error // var err1 error if checkFileIsExist(filename) { //如果文件存在 f, err1 = os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, os.ModeAppend) //打开文件 if err1 != nil { logger.Error("QueryAllData OpenFile failed err=%v",err1) }else { os.Remove(filename) } } f, _ = os.Create(filename) //创建文件 mysql.QueryAllData(f) fileHeader := make([]byte, 512) f.Read(fileHeader) fileStat, _ := f.Stat() w.Header().Set("Content-Disposition", "attachment; filename=" + filename) w.Header().Set("Content-Type", http.DetectContentType(fileHeader)) w.Header().Set("Content-Length", strconv.FormatInt(fileStat.Size(), 10)) f.Seek(0, 0) io.Copy(w, f) //io.Copy(f,r.Body) fmt.Fprint(w,"success") } func AddWhiteList(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() uuid := query.Get("uuid") logger.Info("ClearData , uuid:%v", uuid) if uuid == "" { fmt.Fprint(w, "uuid is nil,please check") return } //uuidnum,_ := strconv.Atoi(uuid) rkey := "CATCAFE_REDIS_CAN_RESETDATA_LIST" err := redishandler.GetRedisClient().HSet(rkey,uuid,uuid) if err!= nil { fmt.Fprint(w, "添加白名单失败,err=%v",err) }else { fmt.Fprint(w, "添加白名单成功!") } } func ClearData(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() uuid := query.Get("uuid") logger.Info("ClearData , uuid:%v", uuid) if uuid == "" { fmt.Fprint(w, "uuid is nil,please check") return } uuidnum,_ := strconv.Atoi(uuid) /*coin,err := mysql.TestClearData(uuidnum) if err != nil { logger.Error("ClearData err=%v",err) } fmt.Fprint(w, "ClearData coin=%v",coin)*/ //首先检查白名单 var wilteist []int rkey := "CATCAFE_REDIS_CAN_RESETDATA_LIST" vv,err := redishandler.GetRedisClient().HGetAllKeys(rkey) if err != nil { fmt.Fprint(w,"获取白名单失败!,请检查") } for _,val := range vv { bytestr := string(val.([]byte)) bytenum,_ := strconv.Atoi(bytestr) wilteist = append(wilteist,bytenum) } logger.Info("ClearData white list wilteist=%v",wilteist) isinwhitelist := false for _,val := range wilteist { if val == uuidnum { isinwhitelist = true break } } if !isinwhitelist { //不在白名单 fmt.Fprint(w, "你要清楚的数据不在白名单内,请联系管理员") return } err = mysql.DoClearData(uuidnum) if err != nil { fmt.Fprint(w, "清除数据失败了,错误码%v",err) } //下面清楚redis rediskey := "cat:cafe:data:where:data_uid:" + uuid exist,_ := redishandler.GetRedisClient().Exists(rediskey) if exist { //存在,即删除 err = redishandler.GetRedisClient().Delete(rediskey) if err != nil { fmt.Fprint(w, "清除数据失败了,错误码%v",err) } } fmt.Fprint(w, "清除数据成功了,恭喜!uuid=%v",uuid) //将id从白名单删除 redishandler.GetRedisClient().HDel(rkey,uuid) //HandleRegeister(w,s) } func EnterInvite(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("EnterInvite , body:%v,uuid=%v", s) HandleEnterInvite(w,s) } func FetchInviteReward(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("FetchInviteReward , body:%v,uuid=%v", s) HandleFetchInviteReward(w,s) } func QueryInvite(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("QueryInvite , body:%v,uuid=%v", s) HandleQueryInvite(w,s) } func Regeister(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("Regeister , body:%v,uuid=%v", s) HandleRegeister(w,s) } func AccounLogin(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("AccounLogin , body:%v,uuid=%v", s) HandleAccounLogin(w,s) } func Wechatlogin(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("Wechatlogin , body:%v,uuid=%v", s) HandleWechatlogin(w,s) } func QueryPlayerData(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("QueryPlayerData , body:%v,uuid=%v", s) HandleQueryPlayerData(w,s) } func DelFriend(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("DelFriend , body:%v,uuid=%v", s) HandleDelFriend(w,s) } func HandleFriendRequest(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("HandleFriendRequest , body:%v,uuid=%v", s) HandleHandleFriendRequest(w,s) } func GetRecommendList(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("GetRecommendList , body:%v,uuid=%v", s) HandleGetRecommendList(w,s) } func GetAuditList(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("GetAuditList , body:%v,uuid=%v", s) HandleGetAuditList(w,s) } func GetFriendList(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("GetFriendList , body:%v,uuid=%v", s) HandleGetFriendList(w,s) } func SetFriendRequest(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("SetFriendRequest , body:%v,uuid=%v", s) HandleSetFriendRequest(w,s) } 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) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("AddTeamBuff , body:%v,uuid=%v", s) HandleAddTeamBuff(w,s) } func UpdateTeamBuild(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("UpdateTeamBuild , body:%v,uuid=%v", s) HandleUpdateTeamBuild(w,s) } func QuitTeam(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("QuitTeam , body:%v,uuid=%v", s) HandleQuitTeam(w,s) } func JoinTeamByInvite(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("JoinTeamByInvite , body:%v,uuid=%v", s) HandleJoinTeamByInvite(w,s) } func JoinTeam(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("JoinTeam , body:%v,uuid=%v", s) HandleJoinTeam(w,s) } func UpdateTeamData(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("UpdateTeamData , body:%v,uuid=%v", s) HandleUpdateTeamData(w,s) } func CreateTeam(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("CreateTeam , body:%v,uuid=%v", s) HandleCreateTeam(w,s) } func TextCheck(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("TextCheck , body:%v,uuid=%v", s) HandleTextCheck(w,s) } func SaveUserData(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("saveUserData , body:%v,uuid=%v", s) HandleSaveUserData(w,s) } func SaveData(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("saveData , body:%v,uuid=%v", s) HandlesaveData(w,s) } func GetData(w http.ResponseWriter, r *http.Request) { result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("UserLogin , body:%v,uuid=%v", s) HandlegetData(w,s) } func UserLogin(w http.ResponseWriter, r *http.Request) { //logger.Info("%%%%%%%%%%%%%%%%path=%v", *r.URL) //for k, v := range r.Header { // logger.Info("*********************key=%v,value=%v", k, v) //} //w.Header().Add("Access-Control-Allow-Headers", "") //w.Header().Set("Access-Control-Allow-Headers", "Authorization, Content-Length, X-CSRF-Token, Token,session,X_Requested_With,Accept, Origin, Host, Connection, Accept-Encoding, Accept-Language,DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Pragma") /*Uuid := 0 if len(r.Header) > 0 { Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) } if Uuid == 0 { return }*/ result, _ := ioutil.ReadAll(r.Body) r.Body.Close() s := string(result) logger.Info("UserLogin , body:%v,uuid=%v", s) HandleUserLogin(w,s) }