game_sync/common/responseresult.go

129 lines
3.5 KiB
Go

package common
import (
"encoding/json"
"fmt"
"net/http"
"strings"
"mongo.games.com/goserver/core/admin"
"mongo.games.com/goserver/core/logger"
)
const (
ResponseTag_Ok int = iota //0
ResponseTag_ParamError //1
ResponseTag_NoFindService //2
ResponseTag_NoFindUser //3
ResponseTag_DataMarshalError //4
ResponseTag_TransactYield //5
ResponseTag_Unsupport //6
ResponseTag_NoFindRoom //7
ResponseTag_NoData //8
ResponseTag_NoFindClub //9
ResponseTag_ClubHadCreated //10
ResponseTag_SrcCardCntNotEnough //11
ResponseTag_SrcPlayerNotExist //12
ResponseTag_DestPlayerNotExist //13
ResponseTag_TransferCardFailed //14
ResponseTag_OpFailed //15
ResponseTag_InviterNotExist //16
ResponseTag_HadSetInviter //17
ResponseTag_CreateNewPlayerFailed //18
ResponseTag_ClubAdminCountReachLimit //19
ResponseTag_OnlyBeClubMember //20
ResponseTag_FetchNiceIdFail //21
ResponseTag_MoneyNotEnough //22
ResponseTag_TransferMoneyFailed //23
ResponseTag_SrcMoneyCntNotEnough //24
ResponseTag_CoinNotEnough //25
ResponseTag_CoinInUse //26
ResponseTag_RMBNotEnough //27
ResponseTag_AgentNotExist //28
)
type HttpResult struct {
Tag int
Msg interface{}
}
func ResponseMsg(req *http.Request, res http.ResponseWriter, tag int, msg interface{}) bool {
result := &HttpResult{
Tag: tag,
Msg: msg,
}
data, err := json.Marshal(&result)
if err != nil {
logger.Logger.Info(req.RemoteAddr, " Marshal error:", err)
return false
}
fmt.Println(string(data[:]))
dataLen := len(data)
res.Header().Set("Content-Length", fmt.Sprintf("%v", dataLen))
res.Header().Set("Access-Control-Allow-Origin", "*")
res.WriteHeader(http.StatusOK)
pos := 0
for pos < dataLen {
writeLen, err := res.Write(data[pos:])
if err != nil {
logger.Logger.Info(req.RemoteAddr, " SendData error:", err)
return false
}
pos += writeLen
}
return true
}
func responseMsg2(req *http.Request, res http.ResponseWriter, params map[string]interface{}) bool {
data, err := json.Marshal(params)
if err != nil {
logger.Logger.Info(req.RemoteAddr, " Marshal error:", err)
return false
}
fmt.Println(string(data[:]))
dataLen := len(data)
res.Header().Set("Content-Length", fmt.Sprintf("%v", dataLen))
res.Header().Set("Access-Control-Allow-Origin", "*")
res.WriteHeader(http.StatusOK)
pos := 0
for pos < dataLen {
writeLen, err := res.Write(data[pos:])
if err != nil {
logger.Logger.Info(req.RemoteAddr, " SendData error:", err)
return false
}
pos += writeLen
}
return true
}
func RequestCheck(req *http.Request, whitelist []string) bool {
strs := strings.Split(req.RemoteAddr, ":")
if len(strs) != 2 {
return false
}
if len(admin.Config.WhiteHttpAddr) > 0 {
for _, value := range admin.Config.WhiteHttpAddr {
if value == strs[0] {
return true
}
}
}
if len(whitelist) > 0 {
for _, value := range whitelist {
if value == strs[0] {
return true
}
}
}
//都没设置也让过
return len(whitelist) == 0 && len(admin.Config.WhiteHttpAddr) == 0
}