diff --git a/src/HttpServer/jsonconf/jsonconf.go b/src/HttpServer/jsonconf/jsonconf.go index c2b4da6..9a7b986 100644 --- a/src/HttpServer/jsonconf/jsonconf.go +++ b/src/HttpServer/jsonconf/jsonconf.go @@ -11,101 +11,61 @@ var ( g_jsonconf = new(GameConfig) ) -type AchieveDesc struct { - Id int `json:"id"` - Task string `json:"task"` - Num int `json:"num"` - Reward []int `json:"reward"` - TaskType int `json:"type"` -} - -type LevelDesc struct { - Id int `json:"id"` - Level int `json:"level"` - Exp int `json:"exp"` - Cash int `json:"cash"` - Extracash int `json:"extracash"` -} - -type MoneyBoxLevelDesc struct { - Id int `json:"id"` - Level int `json:"level"` - Min int `json:"min"` - Max int `json:"max"` -} - -type MoneyBoxTimesDesc struct { - Id int `json:"id"` - Times int `json:"times"` - Login int `json:"login"` - Score int `json:"score"` -} - -type WithDrawDesc struct { - Id int `json:"id"` - Money float32 `json:"money"` - Coin int `json:"coin"` - Task int `json:"task"` - Level int `json:"level"` - Isnew int `json:"new"` -} - -type SignRewardDetail struct { +type SignConfig struct { Id int `json:"id"` Num int `json:"num"` } -type SignReward struct { - Reward1 []SignRewardDetail `json:"reward1"` - Reward2 []SignRewardDetail `json:"reward2"` +type GoldGunsConfig struct { + Level int `json:"level"` + Speed int `json:"speed"` } -type SignConfigDesc struct { - Rule int `json:"rule"` - Round int `json:"round"` - Reward SignReward `json:"reward"` +type GoldChestConfig struct { + Boxid int `json:"boxid"` + Score int `json:"score"` + Reward int `json:"reward"` } type GameConfig struct { - AchieventConfig []AchieveDesc - TaskConfig []AchieveDesc - LevelConfig []LevelDesc - MoneyBoxConfig []MoneyBoxLevelDesc - MoneyBoxTimeConfig []MoneyBoxTimesDesc - WithDrawConfig []WithDrawDesc - SignConfig SignConfigDesc + SignCfg []SignConfig + GunConfig []GoldGunsConfig + BoxConfig []GoldChestConfig } func GetJsonConf() *GameConfig { return g_jsonconf } -func GetSignConfig(round, daynum int) *SignRewardDetail { - if round+1 > g_jsonconf.SignConfig.Round { - //取reward2 - if daynum > len(g_jsonconf.SignConfig.Reward.Reward2) { - logger.Error("GetSignConfig failed") - return nil +func GetSignConfig(daynum int) *SignConfig { + var rt *SignConfig + for _, val := range g_jsonconf.SignCfg { + if val.Id == daynum { + rt = &val + break } + } + return rt +} - return &g_jsonconf.SignConfig.Reward.Reward2[daynum-1] +func GetGoldGunsConfig(level int) *GoldGunsConfig { - } else { - //取reward1 - if daynum > len(g_jsonconf.SignConfig.Reward.Reward1) { - logger.Error("GetSignConfig failed") - return nil + var rt *GoldGunsConfig + for _, val := range g_jsonconf.GunConfig { + if val.Level == level { + rt = &val + break } - - return &g_jsonconf.SignConfig.Reward.Reward1[daynum-1] } + + return rt } -func GetMoneyBoxCfg(lv int) *MoneyBoxLevelDesc { - rt := new(MoneyBoxLevelDesc) - rt = nil - for _, val := range g_jsonconf.MoneyBoxConfig { - if val.Level == lv { +func GetGoldChestConfig(boxid int) *GoldChestConfig { + + var rt *GoldChestConfig + for _, val := range g_jsonconf.BoxConfig { + if val.Boxid == boxid { rt = &val break } @@ -125,79 +85,27 @@ func file_get_contents(path string) ([]byte, error) { func LoadJsonConf() error { //pconf := &GameConfig{} //加载第一个配置 - path := "../jsonconf/AchievementConfig.json" + path := "../jsonconf/GoldChestConfig.json" content, err := file_get_contents(path) if err != nil { logger.Info("loadJsonConf failed1,err=%v", err) return err } - err = json.Unmarshal([]byte(content), &g_jsonconf.AchieventConfig) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - path = "../jsonconf/DailyTask.json" - content, err = file_get_contents(path) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - err = json.Unmarshal([]byte(content), &g_jsonconf.TaskConfig) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - path = "../jsonconf/LevelConfig.json" - content, err = file_get_contents(path) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - err = json.Unmarshal([]byte(content), &g_jsonconf.LevelConfig) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - path = "../jsonconf/MoneyboxLevel.json" - content, err = file_get_contents(path) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - err = json.Unmarshal([]byte(content), &g_jsonconf.MoneyBoxConfig) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - path = "../jsonconf/MoneyboxTimes.json" - content, err = file_get_contents(path) - if err != nil { - logger.Info("loadJsonConf failed1,err=%v", err) - return err - } - - err = json.Unmarshal([]byte(content), &g_jsonconf.MoneyBoxTimeConfig) + err = json.Unmarshal([]byte(content), &g_jsonconf.BoxConfig) if err != nil { logger.Info("loadJsonConf failed1,err=%v", err) return err } - path = "../jsonconf/WithdrawConfig.json" + path = "../jsonconf/GoldGunsConfig.json" content, err = file_get_contents(path) if err != nil { logger.Info("loadJsonConf failed1,err=%v", err) return err } - err = json.Unmarshal([]byte(content), &g_jsonconf.WithDrawConfig) + err = json.Unmarshal([]byte(content), &g_jsonconf.GunConfig) if err != nil { logger.Info("loadJsonConf failed1,err=%v", err) return err @@ -210,7 +118,7 @@ func LoadJsonConf() error { return err } - err = json.Unmarshal([]byte(content), &g_jsonconf.SignConfig) + err = json.Unmarshal([]byte(content), &g_jsonconf.SignCfg) if err != nil { logger.Info("loadJsonConf failed1,err=%v", err) return err diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index 35f78bb..4c79103 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -1,55 +1 @@ package logic - -//任务成就类型枚举 协议上报用 -const ( - TASKTYPE_PASSLEVEL = 1 //表示通过x关卡 - TASKTYPE_GETREDBAG = 2 //领取x次红包 - TASKTYPE_WATCHADS = 3 //3表示观看x次广告 - TASKTYPE_KILLSTAR = 4 //4表示消除x颗星星 - TASKTYPE_USEITEM = 5 //5表示使用x次道具 -) - -//任务类型 对应表 -const ( - DAILY_TASKTYPE_LOGIN = 1 //1 每日登录 - DAILY_TASKTYPE_GETGUANCNT = 2 //提取存钱罐 - DAILY_TASKTYPE_PASSLEVEL = 3 //近日通过关 - DAILY_TASKTYPE_USEITEM = 4 //使用道具数 - DAILY_TASKTYPE_GETREDBAG = 5 //领取红包次数 - DAILY_TASKTYPE_GETGUANGOLD = 6 //收取金币x枚 - DAILY_TASKTYPE_ONLINEMIN = 7 //在线分钟数 -) - -//成就类型 对应表 -const ( - ACHIEVETYPE_WATCHADDS = 1 //累计观看广告次数 - ACHIEVETYPE_USERLV = 2 //人物等级 - ACHIEVETYPE_KILLSTAR = 3 //累计消除星星数 - ACHIEVETYPE_GETGUANCNT = 4 //累计存钱罐提取 - ACHIEVETYPE_USEITEMCNT = 5 //累计道具使用 - -) - -//奖励类型枚举 -const ( - REWARDTYPE_STAR = 1 //星星 - REWARDTYPE_CHUI = 2 - REWARDTYPE_SHUA = 3 - REWARDTYPE_SWAP = 4 - REWARDTYPE_ELIMITE = 5 - REWARDTYPE_EXP = 6 - REWARDTYPE_GOLD = 7 -) - -const ( - //XIAOXINGXING_SERVERKEY = "33e0c3238c108a36d87025544c6a2d2f" - //XIAOXINGXING_SERVERKEYTEST = "e2cd22102143cdcd9c181f962d031685" - XIAOXINGXING_SERVERKEYTEST = "33e0c3238c108a36d87025544c6a2d2f" - XIAOXINGXING_SDKURL = "https://testapi-gamesdk.d3games.com/" - XIAOXINGXING_SDKURLOFFICAL = "https://api.gamesdk.hmjoy.cn/" -) - -const ( - WATCH_ADD_DAY_LIMIT = 50 //当天获取红包次数限制 - FREE_REDBAG_NUM = 3 //玩家免费红包次数 -) diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index a842271..4c79103 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -1,374 +1 @@ package logic - -type UserLoginReq struct { - Fromid int `json:"fromid"` - Sharetype int `json:"sharetype"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type UserLoginData struct { - Walletgold int `json:"walletgold"` - Leftredbagcnt int `json:"leftredbagcnt"` - Guangold int `json:"guangold"` - Userlv int `json:"userlv"` - Userexp int `json:"userexp"` -} - -type UserLoginResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data UserLoginData `json:"data"` -} - -type GetuserdataReq struct { - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type GetuserdataData struct { - Walletgold int `json:"walletgold"` - Leftredbagcnt int `json:"leftredbagcnt"` - Guangold int `json:"guangold"` - Userlv int `json:"userlv"` - Userexp int `json:"userexp"` - Leftfreeredbag int `json:"leftfreeredbag"` -} - -type GetuserdataResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetuserdataData `json:"data"` -} - -type WatchadsData struct { - Leftads int `json:"leftads"` -} - -type WatchadsResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data WatchadsData `json:"data"` -} - -type QueryguaninfoData struct { - Leftcnt int `json:"leftcnt"` - Totalcnt int `json:"totalcnt"` - Guangold int `json:"guangold"` - Minget int `json:"minget"` - Maxget int `json:"maxget"` - Loginday int `json:"loginday"` - Totalfetchcnt int `json:"totalfetchcnt"` -} - -type QueryguaninfoResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data QueryguaninfoData `json:"data"` -} - -type GetguangoldReq struct { - Goldnum int `json:"goldnum"` -} - -type GetguangoldData struct { - Guangold int `json:"guangold"` -} - -type GetguangoldResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetguangoldData `json:"data"` -} - -type DrawguangoldReq struct { - Goldnum int `json:"goldnum"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type DrawguangoldData struct { - Guangold int `json:"guangold"` - Wallgold int `json:"wallgold"` - Totalfetchcnt int `json:"totalfetchcnt"` -} - -type DrawguangoldResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data DrawguangoldData `json:"data"` -} - -type QuerdrawinfoResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data WithDrawInfo `json:"data"` -} - -type GetcashReq struct { - Gameid string `json:"gameid"` - Channel string `json:"channel"` - Money float32 `json:"money"` - Openid string `json:"openid"` - Nickname string `json:"nickname"` - Headurl string `json:"headurl"` - Ver string `json:"ver"` -} - -type GetcashData struct { - Walletgold int `json:"walletgold"` -} -type GetcashResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetcashData `json:"data"` -} - -type GetcashrecordReq struct { - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type GetcashrecordResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data WithDrawList `json:"data"` -} - -type OnlinentfResp struct { - Code int `json:"code"` - Message string `json:"message"` -} - -type UpdatetaskReq struct { - Tasktype int `json:"tasktype"` - Value int `json:"value"` -} - -type UpdatetaskResp struct { - Code int `json:"code"` - Message string `json:"message"` -} - -type QuerytaskinfoReq struct { - Tasktype int `json:"tasktype"` -} - -type QuerytaskinfoResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data TaskList `json:"data"` -} - -type GettaskrewardReq struct { - Tasktype int `json:"tasktype"` - Taskid int `json:"taskid"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type GettaskrewardData struct { - Lv int `json:"lv"` - Costtime int `json:"costtime"` - Rewardstar int `json:"rewardstar"` - Chuiitem int `json:"chuiitem"` - Shuaitem int `json:"shuaitem"` - Swapitem int `json:"swapitem"` - Eliminitem int `json:"eliminitem"` - Goldnum int `json:"goldnum"` -} -type GettaskrewardResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GettaskrewardData `json:"data"` -} - -type GetnewlevelrewardReq struct { - Rewardtype int `json:"rewardtype"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type GetnewlevelrewardData struct { - Goldnum int `json:"goldnum"` -} -type GetnewlevelrewardResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetnewlevelrewardData `json:"data"` -} - -type QuerysigndataData struct { - Signround int `json:"signround"` - Continuessign int `json:"continuessign"` - IssignToday int `json:"issignToday"` -} - -type QuerysigndataResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data QuerysigndataData `json:"data"` -} - -type UsersignReq struct { - Gameid string `json:"gameid"` - Channel string `json:"channel"` -} - -type UsersignData struct { - Goldnum int `json:"goldnum"` -} -type UsersignResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data UsersignData `json:"data"` -} - -//********************************************************************************************************** - -type TaskListDesc struct { - Taskid int `json:"taskid"` - Taskstatus int `json:"taskstatus"` - Taskprogress int `json:"taskprogress"` -} - -type TaskList struct { - Taskdata []TaskListDesc `json:"taskdata"` -} - -//其中提取次数和当日登陆在userdata中记录 -type TaskInfo struct { - OnlineMin int //在线分钟数 - PassLevel int //通过关卡数 - UseItemCnt int //使用道具次数 - GetRedbagCnt int //领取红包次数 - GetGuanGold int //收集金币数 -} - -// -type AchieveMentInfo struct { - WatchAdsCnt int //观看广告数 - KillStar int //消除星星数 - SumGetGuan int //存钱罐累计提取 - SumUseItemCnt int //使用道具次数累计 -} - -type WithDrawList struct { - Withdata []WithDrawRecord `json:"withdata"` -} - -//提现记录结构 -type WithDrawRecord struct { - Coin int `json:"coin"` - Create_time int `json:"create_time"` - Money int `json:"money"` - No string `json:"no"` - Status int `json:"status"` - Statusmsg string `json:"statusmsg"` - Typ int `json:"typ"` -} - -type WithDrawInfo struct { - Cashdata []WithDrawDesc `json:"cashdata"` -} - -type WithDrawDesc struct { - Cid int `json:"cid"` - Cnum float32 `json:"cnum"` - Isnew int `json:"isnew"` - Limitlv int `json:"limitlv"` - Preisfind int `json:"preisfind"` -} - -//玩家数据 -type UserData struct { - Userid int //玩家id - Lv int //玩家当前等级 - LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 - Exp int //玩家当前经验值 - GuanGold int //玩家存钱罐中金币数量 - RealGold int //玩家实际金币数量(可用于提现的) - WatchAddsTime int //当天剩余红包次数 初始化50次 - LastLoginTime int //上次登陆时间 - ContinueLoginDay int //连续登录天数 - GetFromGuanCnt int //当天从存钱款提取金币次数 - SignRound int //签到轮数 - SignSum int //累计签到天数 - IsSignToday int //今日是否已经签到 1是 0否 - LeftFreeRB int //剩余免费红包次数 - UpLvCostTime int //上一个等级升级时间 - UpLvCostTimeSec int //上一个等级升级的时间点时刻 - WithDraw WithDrawInfo //提现记录信息 - Task TaskInfo //玩家任务完成相关信息 - Achieve AchieveMentInfo //玩家成就完成相关数据 -} - -//---------------------------------------------------------------------------------------------------------------------- - -type TixianDesc struct { - Sign string `json:"sign"` - Sign_type string `json:"sign_type"` - Time_stamp string `json:"time_stamp"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` - Uid int `json:"uid"` - Typ int `json:"typ"` - Money int `json:"money"` - Openid string `json:"openid"` - Nickname string `json:"nickname"` - Headurl string `json:"headurl"` - Editcoin int `json:"editcoin"` - Ver string `json:"ver"` -} - -type AddCoinDesc struct { - Sign string `json:"sign"` - Sign_type string `json:"sign_type"` - Time_stamp string `json:"time_stamp"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` - Uid int `json:"uid"` - Coin int `json:"coin"` - Typ int `json:"typ"` -} - -type AddCoinResultData struct { - Mycoin int `json:"mycoin"` -} - -type AddCoinResp struct { - Code string `json:"code"` - Msg string `json:"msg"` - Data AddCoinResultData `json:"data"` -} - -type GetCoinDesc struct { - Sign string `json:"sign"` - Sign_type string `json:"sign_type"` - Time_stamp string `json:"time_stamp"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` - Uid int `json:"uid"` -} - -type GetCashResp struct { - Code string `json:"code"` - Msg string `json:"msg"` -} - -type GetCashListDesc struct { - Sign string `json:"sign"` - Sign_type string `json:"sign_type"` - Time_stamp string `json:"time_stamp"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` - Uid int `json:"uid"` - Start int `json:"start"` - Number int `json:"number"` -} - -type GetCashListResp struct { - Code string `json:"code"` - Msg string `json:"msg"` - Data []WithDrawRecord `json:"data"` -} diff --git a/src/HttpServer/logic/errordef.go b/src/HttpServer/logic/errordef.go index df34bda..b16f802 100644 --- a/src/HttpServer/logic/errordef.go +++ b/src/HttpServer/logic/errordef.go @@ -1,25 +1,6 @@ package logic const ( - ERROR_OK = 0 //没有错误 - ERROR_SRV_ERROR = 1 //服务器错误 - ERROR_JSONUNMASH_ERROR = 2 //json解析错误 - ERROR_WATCHADS_ZEOR = 3 //看视频次数已经耗尽 - ERROR_GETCONFIG_FAILED = 4 //获取配置失败 - ERROR_GUANGOLD_NOTENOUGH = 5 //存钱罐金币不足 - ERROR_DRAWGUAN_FAILED = 6 //从存钱罐提取金币不满足限制 - ERROR_DRAWGOLD_FAILED = 7 //从存钱罐提取金币失败了 - ERROR_GETCASH_FAILED = 8 //从后台提现失败了 - ERROR_GETCASH_GOLDNOTENOUGH_FAILED = 9 //提现金币不足 - ERROR_ADDWITHDRAW_LISTFAILED = 10 //添加提现记录失败 - ERROR_WITHDRAWLVLIMIT = 11 //提现等级不够 - ERROR_WITHDRAWONLYONE = 12 //新人专享只能提取一次 - ERROR_PRENOTFINISH = 13 //前置档位未提现 - ERROR_TASKCANNOTGET = 14 //当前任务未完成或已领取 - ERROR_TASKID_WRONG = 15 //当前任务id错误 - ERROR_TASKPRE_NOTGET = 16 //前置任务还未领取 - ERROR_LVREWARDALREADYGET = 17 //当前等级奖励已经领取过了 - ERROR_SINGALREADYTODAY = 18 //今日已经签过到啦 - ERROR_SINGDATAFAILED = 19 //签到数据异常 - ERROR_GUANCNTNOTENOUGH = 20 //存钱罐次数不足 + ERROR_OK = 0 //没有错误 + ) diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 45e6996..f6d0f09 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -1,1149 +1,9 @@ package logic -import ( - "HttpServer/jsonconf" - "HttpServer/redishandler" - "bytes" - "common/logger" - "common/redis" - "crypto/md5" - "encoding/hex" - "encoding/json" - "errors" - "io/ioutil" - "net/http" - "sort" - "strconv" - "time" -) - -func (v *TaskList) Len() int { - return len(v.Taskdata) -} - -func (v *TaskList) Swap(i, j int) { - v.Taskdata[i], v.Taskdata[j] = v.Taskdata[j], v.Taskdata[i] -} - -func (v *TaskList) Less(i, j int) bool { - return v.Taskdata[i].Taskstatus > v.Taskdata[j].Taskstatus -} +import "net/http" func SetHeader(w http.ResponseWriter) { w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 w.Header().Set("Content-Type", "application/json") w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") } - -func SaveUserInfo(data *UserData) error { - - savestr, err := json.Marshal(data) - if err != nil { - return err - } - - err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, strconv.Itoa(data.Userid), string(savestr)) - - return err -} - -func GetUserInfo(uuid int) (*UserData, error) { - - data, err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY, strconv.Itoa(uuid)) - if err != nil { - return nil, err - } - var tmp UserData - err = json.Unmarshal([]byte(data), &tmp) - if err != nil { - return nil, err - } - - return &tmp, nil -} - -func GetUserLvConfig(lv int) *jsonconf.LevelDesc { - for _, val := range jsonconf.GetJsonConf().LevelConfig { - if lv == val.Level { - return &val - } - } - return nil -} - -func GetTaskConfig(taskid int) *jsonconf.AchieveDesc { - for _, val := range jsonconf.GetJsonConf().TaskConfig { - if val.Id == taskid { - return &val - } - } - return nil -} - -func GetAchieveConfig(taskid int) *jsonconf.AchieveDesc { - for _, val := range jsonconf.GetJsonConf().AchieventConfig { - if val.Id == taskid { - return &val - } - } - return nil -} - -func (uinfo *UserData) CalcTaskList(list *TaskList) { - - for k, val := range list.Taskdata { - //未完成的才做判断 - if val.Taskstatus != 1 { - continue - } - cfg := GetTaskConfig(val.Taskid) - if cfg == nil { - logger.Error("CalcTaskList GetTaskConfig failed id=%v", val.Taskid) - continue - } - - if cfg.TaskType == DAILY_TASKTYPE_LOGIN { - nowloginday := time.Now().Day() - lasttime := time.Unix(int64(uinfo.LastLoginTime), 0) - lastloginday := lasttime.Day() - - if nowloginday == lastloginday && val.Taskstatus == 1 { - list.Taskdata[k].Taskprogress = 1 - list.Taskdata[k].Taskstatus = 2 - } - } else if cfg.TaskType == DAILY_TASKTYPE_GETGUANCNT { - list.Taskdata[k].Taskprogress = uinfo.GetFromGuanCnt - //当日提取存钱罐次数 - if uinfo.GetFromGuanCnt >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - } else if cfg.TaskType == DAILY_TASKTYPE_PASSLEVEL { - list.Taskdata[k].Taskprogress = uinfo.Task.PassLevel - if uinfo.Task.PassLevel >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - } else if cfg.TaskType == DAILY_TASKTYPE_USEITEM { - list.Taskdata[k].Taskprogress = uinfo.Task.UseItemCnt - if uinfo.Task.UseItemCnt >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - } else if cfg.TaskType == DAILY_TASKTYPE_GETREDBAG { - list.Taskdata[k].Taskprogress = uinfo.Task.GetRedbagCnt - if uinfo.Task.GetRedbagCnt >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - } else if cfg.TaskType == DAILY_TASKTYPE_GETGUANGOLD { - list.Taskdata[k].Taskprogress = uinfo.Task.GetGuanGold - if uinfo.Task.GetGuanGold >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - } else if cfg.TaskType == DAILY_TASKTYPE_ONLINEMIN { - list.Taskdata[k].Taskprogress = uinfo.Task.OnlineMin - if uinfo.Task.OnlineMin >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - } - - } - - //需要保存到redis - SaveTaskInfo(uinfo.Userid, 1, list) - - //排序 - sort.Sort(list) -} - -func (uinfo *UserData) CalcAchieveProgress(ttype int) int { - rtval := 0 - switch ttype { - case ACHIEVETYPE_WATCHADDS: - rtval = uinfo.Achieve.WatchAdsCnt - case ACHIEVETYPE_USERLV: - rtval = uinfo.Lv - case ACHIEVETYPE_KILLSTAR: - rtval = uinfo.Achieve.KillStar - case ACHIEVETYPE_GETGUANCNT: - rtval = uinfo.Achieve.SumGetGuan - case ACHIEVETYPE_USEITEMCNT: - rtval = uinfo.Achieve.SumUseItemCnt - default: - logger.Error("CalcAchieveProgress type wrong ttype=%v", ttype) - } - - return rtval -} - -//成就返回的是新的成就列表 -func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList { - newlist := new(TaskList) - curtype := -1 //记录当前类型 - - //第一遍首先将所有进度设置为正确的状态 - for k, val := range list.Taskdata { - cfg := GetAchieveConfig(val.Taskid) - if cfg == nil { - logger.Error("CalcAchieveList GetTaskConfig failed id=%v", val.Taskid) - continue - } - - list.Taskdata[k].Taskprogress = uinfo.CalcAchieveProgress(cfg.TaskType) - if val.Taskstatus == 1 { - switch cfg.TaskType { - case ACHIEVETYPE_WATCHADDS: - if uinfo.Achieve.WatchAdsCnt >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - case ACHIEVETYPE_USERLV: - if uinfo.Lv >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - case ACHIEVETYPE_KILLSTAR: - if uinfo.Achieve.KillStar >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - case ACHIEVETYPE_GETGUANCNT: - if uinfo.Achieve.SumGetGuan >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - case ACHIEVETYPE_USEITEMCNT: - if uinfo.Achieve.SumUseItemCnt >= cfg.Num { - list.Taskdata[k].Taskstatus = 2 - } - default: - logger.Error("CalcAchieveProgress type wrong ttype=%v", cfg.TaskType) - } - } - - } - - for k, val := range list.Taskdata { - - cfg := GetAchieveConfig(val.Taskid) - if cfg == nil { - logger.Error("CalcAchieveList GetTaskConfig failed id=%v", val.Taskid) - continue - } - - if val.Taskstatus == 2 { - //未领取已完成 只需要加入第一种 - if curtype == cfg.TaskType { - continue - } else { - //将类型加入返回列表 - newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) - curtype = cfg.TaskType - } - } else if val.Taskstatus == 1 { - //未完成 返回第一个 - if curtype == cfg.TaskType { - continue - } else { - //将类型加入返回列表 - newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) - curtype = cfg.TaskType - } - } else { - //已领取 需要判断一下是否最后一项 - if k != len(list.Taskdata)-1 { - //不是最后一条数据 - nextcfg := GetAchieveConfig(list.Taskdata[k+1].Taskid) - if nextcfg != nil { - if nextcfg.TaskType != cfg.TaskType { - //下面一天不是此类型了 - newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) - curtype = cfg.TaskType - } - } - - } else { - //最后一条 加入 - newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) - curtype = cfg.TaskType - } - } - - } - - //保存旧的列表 - SaveTaskInfo(uinfo.Userid, 2, list) - - //将返回的列表排序 - sort.Sort(newlist) - logger.Info("CalcAchieveList alist=%v", newlist) - return newlist -} - -func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { - savestr, err := json.Marshal(list) - if err != nil { - logger.Error("SaveTaskInfo err =%v", err) - return err - } - - if tasktype == 1 { - err = redishandler.GetRedisClient().HSet(redis.USER_TASKINFO_LIST, strconv.Itoa(uuid), string(savestr)) - } else if tasktype == 2 { - err = redishandler.GetRedisClient().HSet(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid), string(savestr)) - //logger.Info("SaveTaskInfo savestr=%v", string(savestr)) - } else { - logger.Error("tasktype invalid") - return errors.New("tasktype invalid") - } - return err -} - -func GetTaskInfo(uuid, tasktype int) (*TaskList, error) { - var data string - var err error - if tasktype == 1 { - data, err = redishandler.GetRedisClient().HGet(redis.USER_TASKINFO_LIST, strconv.Itoa(uuid)) - } else if tasktype == 2 { - data, err = redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid)) - } else { - logger.Error("tasktype invalid") - return nil, errors.New("tasktype invalid") - } - - if err != nil { - return nil, err - } - - var list TaskList - err = json.Unmarshal([]byte(data), &list) - if err != nil { - logger.Error("GetTaskInfo err=%v", err) - return nil, err - } - - return &list, err -} - -//处理领取任务 -func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *GettaskrewardResp, list *TaskList) error { - isfind := false - index := -1 - var taskdesc *TaskListDesc - for k, val := range list.Taskdata { - if val.Taskid == req.Taskid { - isfind = true - index = k - taskdesc = &val - break - } - } - - logger.Info("HandleGetTaskReward index=%v taskdesc=%v", index, taskdesc) - if isfind && taskdesc != nil && index != -1 { - if taskdesc.Taskstatus != 2 { - //状态不是可领取状态 无法领取 - resp.Code = ERROR_TASKCANNOTGET - resp.Message = "当前任务未完成或已领取" - return errors.New("当前任务未完成或已领取") - } - - //状态对的情况 如果是成就下需要判断前置条件是否被 - if req.Tasktype == 2 && index > 0 { - precfg := GetAchieveConfig(list.Taskdata[index-1].Taskid) - nowcfg := GetAchieveConfig(taskdesc.Taskid) - logger.Info("HandleGetTaskRewardGetTaskConfig precfg=%v nowcfg=%v", precfg, nowcfg) - if precfg != nil && nowcfg != nil && precfg.TaskType == nowcfg.TaskType && list.Taskdata[index-1].Taskstatus != 0 { - resp.Code = ERROR_TASKPRE_NOTGET - resp.Message = "前置任务还未领取" - return errors.New("当前任务未完成或已领取") - } - } - } else { - resp.Code = ERROR_TASKID_WRONG - resp.Message = "当前任务id错误" - return errors.New("当前任务id错误") - } - - var cfg *jsonconf.AchieveDesc - if req.Tasktype == 2 { - cfg = GetAchieveConfig(taskdesc.Taskid) - if cfg == nil || len(cfg.Reward) < 2 { - resp.Code = ERROR_SRV_ERROR - resp.Message = "网络错误" - return errors.New("获取配置失败") - } - } else { - cfg = GetTaskConfig(taskdesc.Taskid) - if cfg == nil || len(cfg.Reward) < 2 { - resp.Code = ERROR_SRV_ERROR - resp.Message = "网络错误" - return errors.New("获取配置失败") - } - } - - //将状态置位已领取 - list.Taskdata[index].Taskstatus = 0 - //发奖励 - sub := len(cfg.Reward) / 2 - for i := 0; i < sub; i++ { - rtype := cfg.Reward[i*2] - rnum := cfg.Reward[i*2+1] - r1, r2, r3, r4, r5, r6, r7 := uinfo.RewardUser(rtype, rnum, req.Gameid, req.Channel) - if resp.Data.Lv != r1 { - resp.Data.Lv = r1 - resp.Data.Costtime = uinfo.UpLvCostTime / 3600 - } - resp.Data.Rewardstar += r2 - resp.Data.Chuiitem += r3 - resp.Data.Shuaitem += r4 - resp.Data.Swapitem += r5 - resp.Data.Eliminitem += r6 - resp.Data.Goldnum = r7 - } - - return nil -} - -func (uinfo *UserData) RewardUser(rtype int, num int, gameid string, channel string) (int, int, int, int, int, int, int) { - logger.Info("RewardUser rtype=%v,num=%v", rtype, num) - switch rtype { - case REWARDTYPE_STAR: - return 0, num, 0, 0, 0, 0, 0 - case REWARDTYPE_CHUI: - return 0, 0, num, 0, 0, 0, 0 - case REWARDTYPE_SHUA: - return 0, 0, 0, num, 0, 0, 0 - case REWARDTYPE_SWAP: - return 0, 0, 0, 0, num, 0, 0 - case REWARDTYPE_ELIMITE: - return 0, 0, 0, 0, 0, num, 0 - case REWARDTYPE_EXP: - isup := uinfo.AddUserExp(num) - if isup { - return uinfo.Lv, 0, 0, 0, 0, 0, 0 - } else { - return 0, 0, 0, 0, 0, 0, 0 - } - case REWARDTYPE_GOLD: - goldnum, err := AddCoinToSdk(uinfo.Userid, num, gameid, channel, 100) - if err != nil { - logger.Error("RewardUser failer err=%v", err) - } - uinfo.RealGold = goldnum - //uinfo.RealGold += num - return 0, 0, 0, 0, 0, 0, uinfo.RealGold - default: - return 0, 0, 0, 0, 0, 0, 0 - } - return 0, 0, 0, 0, 0, 0, 0 -} - -func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error { - - var initdata UserData - initdata.Lv = 1 - initdata.LvRewardGet = 1 - initdata.Exp = 0 - initdata.Userid = uuid - initdata.ContinueLoginDay = 1 - initdata.GetFromGuanCnt = 0 - initdata.GuanGold = 0 - initdata.LastLoginTime = int(time.Now().Unix()) - goldnum, _ := GetCoinFromSdk(uuid, data.Gameid, data.Channel) - initdata.RealGold = goldnum - initdata.WatchAddsTime = WATCH_ADD_DAY_LIMIT - initdata.LeftFreeRB = FREE_REDBAG_NUM - initdata.UpLvCostTime = 0 - initdata.UpLvCostTimeSec = int(time.Now().Unix()) - - for _, val := range jsonconf.GetJsonConf().WithDrawConfig { - var tmp WithDrawDesc - tmp.Cid = val.Id - tmp.Cnum = val.Money - if val.Isnew == 1 { - tmp.Isnew = 1 - } else { - tmp.Isnew = 2 - } - tmp.Limitlv = val.Level - if val.Id == 1 { - tmp.Preisfind = 1 - } else { - tmp.Preisfind = 0 - } - initdata.WithDraw.Cashdata = append(initdata.WithDraw.Cashdata, tmp) - } - - resp.Data.Guangold = initdata.GuanGold - resp.Data.Leftredbagcnt = initdata.WatchAddsTime - resp.Data.Walletgold = initdata.RealGold - resp.Data.Userlv = initdata.Lv - - err := SaveUserInfo(&initdata) - if err != nil { - logger.Error("InitUserInfo err=%v", err) - return err - } - - //初始化一下玩家的任务与成就数据数据 - err = InitTaskAndAchievement(uuid) - - return err -} - -func (t *TaskList) IsInTaskList(id int) bool { - for _, val := range t.Taskdata { - if val.Taskid == id { - return true - } - } - return false -} - -func InitTaskAndAchievement(uuid int) error { - //先初始化任务 - tlist, err := GetTaskInfo(uuid, 1) - if tlist == nil { - tasklist := new(TaskList) - for _, val := range jsonconf.GetJsonConf().TaskConfig { - var tmp TaskListDesc - tmp.Taskstatus = 1 - tmp.Taskid = val.Id - tmp.Taskprogress = 0 - tasklist.Taskdata = append(tasklist.Taskdata, tmp) - } - - err := SaveTaskInfo(uuid, 1, tasklist) - if err != nil { - logger.Error("InitTaskAndAchievement err=%v", err) - //return err - } - } else { - for _, val := range jsonconf.GetJsonConf().TaskConfig { - if !tlist.IsInTaskList(val.Id) { - var tmp TaskListDesc - tmp.Taskstatus = 1 - tmp.Taskid = val.Id - tmp.Taskprogress = 0 - tlist.Taskdata = append(tlist.Taskdata, tmp) - } - } - - for k, _ := range tlist.Taskdata { - tlist.Taskdata[k].Taskprogress = 0 - tlist.Taskdata[k].Taskstatus = 1 - - } - - err := SaveTaskInfo(uuid, 1, tlist) - if err != nil { - logger.Error("InitTaskAndAchievement err=%v", err) - //return err - } - } - - //成就 - alist, err := GetTaskInfo(uuid, 2) - if alist == nil { - achievelist := new(TaskList) - for _, val := range jsonconf.GetJsonConf().AchieventConfig { - var tmp TaskListDesc - tmp.Taskstatus = 1 - tmp.Taskid = val.Id - tmp.Taskprogress = 0 - achievelist.Taskdata = append(achievelist.Taskdata, tmp) - } - - err = SaveTaskInfo(uuid, 2, achievelist) - if err != nil { - logger.Error("InitTaskAndAchievement err=%v", err) - return err - } - } else { - for _, val := range jsonconf.GetJsonConf().AchieventConfig { - if !alist.IsInTaskList(val.Id) { - var tmp TaskListDesc - tmp.Taskstatus = 1 - tmp.Taskid = val.Id - tmp.Taskprogress = 0 - alist.Taskdata = append(alist.Taskdata, tmp) - } - } - - err = SaveTaskInfo(uuid, 2, alist) - if err != nil { - logger.Error("InitTaskAndAchievement err=%v", err) - return err - } - } - - return nil -} - -//计算当日可提取次数 -func (u *UserData) CalcTotalCnt() int { - maxtime := 0 - usertime := 0 - for _, val := range jsonconf.GetJsonConf().MoneyBoxTimeConfig { - if maxtime < val.Times { - maxtime = val.Times - } - if val.Login == u.ContinueLoginDay { - usertime = val.Times - } - } - - if usertime == 0 { - usertime = maxtime - } - return usertime -} - -func (u *UserData) HandlePassDay() { - isdiffday := false - nowtime := time.Now() - lasttime := time.Unix(int64(u.LastLoginTime), 0) - nowdaynum := time.Now().Day() - lastdaynum := time.Unix(int64(u.LastLoginTime), 0).Day() - nowtimestamp := time.Date(nowtime.Year(), nowtime.Month(), nowtime.Day(), 0, 0, 0, 0, nowtime.Location()) - lasttimestamp := time.Date(lasttime.Year(), lasttime.Month(), lasttime.Day(), 0, 0, 0, 0, lasttime.Location()) - - logger.Info("HandlePassDay lasttime=%v,lasttimestamp=%v", lasttime, lasttimestamp) - if nowdaynum == lastdaynum { - //同一天 - if int64(u.LastLoginTime)-time.Now().Unix() > 86400 { - //已经过了很多天了 - //u.LastLoginTime = int(time.Now().Unix()) - u.ContinueLoginDay = 1 - isdiffday = true - } else { - //t同一天 不做处理 - } - } else { - //不是同一天了 - isdiffday = true - if nowtimestamp.Unix() != lasttimestamp.Unix()+86400 { - //超过一天了 - u.ContinueLoginDay = 1 - } else { - u.ContinueLoginDay++ - } - logger.Info("HandlePassDay now=%v,last=%v", nowtimestamp.Unix(), lasttimestamp.Unix()) - } - - if isdiffday { - //跨天了 - u.WatchAddsTime = WATCH_ADD_DAY_LIMIT - //todo 重置任务相关的数据 - u.GetFromGuanCnt = 0 - - u.Task.GetGuanGold = 0 - u.Task.GetRedbagCnt = 0 - u.Task.OnlineMin = 0 - u.Task.PassLevel = 0 - u.Task.UseItemCnt = 0 - - //任务也需要处理 - /*tasklist, err := GetTaskInfo(u.Userid, 1) - if err == nil { - for k, _ := range tasklist.Taskdata { - tasklist.Taskdata[k].Taskstatus = 1 - tasklist.Taskdata[k].Taskprogress = 0 - } - } else { - logger.Error("HandlePassDay GetTaskInfo failer err=%v", err) - }*/ - /*tasklist := new(TaskList) - for _, val := range jsonconf.GetJsonConf().TaskConfig { - var tmp TaskListDesc - tmp.Taskstatus = 1 - tmp.Taskid = val.Id - tmp.Taskprogress = 0 - tasklist.Taskdata = append(tasklist.Taskdata, tmp) - } - - err := SaveTaskInfo(u.Userid, 1, tasklist) - if err != nil { - logger.Error("InitTaskAndAchievement err=%v", err) - }*/ - err := InitTaskAndAchievement(u.Userid) - if err != nil { - logger.Error("InitTaskAndAchievement err=%v", err) - } - - //签到数据处理 - u.IsSignToday = 0 - if u.SignSum >= 7 { - //进入新的一轮 - u.SignSum = 0 - u.SignRound++ - } - } - - u.LastLoginTime = int(nowtime.Unix()) - - SaveUserInfo(u) -} - -func GetUserData(uuid int, req *UserLoginReq, resp *UserLoginResp) error { - data, err := GetUserInfo(uuid) - if err != nil || data == nil { - resp.Code = ERROR_SRV_ERROR - resp.Message = "ERROR_SRV_ERROR" - return err - } - - //此处要处理一下跨天逻辑 - data.HandlePassDay() - - //此处处理一下从sdk拉取钱包金币数量 - gold, err := GetCoinFromSdk(uuid, req.Gameid, req.Channel) - if err == nil { - data.RealGold = gold - } else { - logger.Error("GetCoinFromSdk err=%v", err) - } - - //处理一下领取等级奖励金币 - if data.LvRewardGet == 1 { - cfg := GetUserLvConfig(data.Lv) - if cfg != nil { - gold, err := AddCoinToSdk(uuid, cfg.Cash, req.Gameid, req.Channel, 100) - if err != nil { - data.RealGold = gold - } else { - logger.Error("GetCoinFromSdk err=%v", err) - } - } - data.LvRewardGet = 2 - - } - - SaveUserInfo(data) - - resp.Data.Walletgold = data.RealGold - resp.Data.Leftredbagcnt = data.WatchAddsTime - resp.Data.Guangold = data.GuanGold - resp.Data.Userlv = data.Lv - resp.Data.Userexp = data.Exp - - return nil -} - -//获取提现记录 -func GetWithDrawList(uuid int) (*WithDrawList, error) { - var list *WithDrawList - list = new(WithDrawList) - liststr, err := redishandler.GetRedisClient().HGet(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid)) - if err != nil { - return nil, err - } - err = json.Unmarshal([]byte(liststr), list) - if err != nil { - return nil, err - } - return list, nil -} - -func (uinfo *UserData) GetWithDrawData(money float32) (int, *WithDrawDesc) { - //处理提现状态 - for k, val := range uinfo.WithDraw.Cashdata { - if val.Cnum == money { - return k, &val - } - } - return -1, nil -} - -//添加提现记录 -func AddWithDrawList(uuid int, data *WithDrawRecord) error { - exist, err := redishandler.GetRedisClient().HExists(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid)) - if err != nil { - return err - } - if !exist { - //添加新的记录 - var tmp WithDrawList - tmp.Withdata = append(tmp.Withdata, *data) - - savestr, err := json.Marshal(&tmp) - if err != nil { - return err - } - err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid), string(savestr)) - return err - } - - /*liststr,err := redishandler.GetRedisClient().HGet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid)) - if err != nil { - return err - } - - var list WithDrawList - err = json.Unmarshal([]byte(liststr),&list) - if err != nil { - return err - }*/ - - list, err := GetWithDrawList(uuid) - if err != nil || list == nil { - logger.Error("AddWithDrawList err=%v", err) - return err - } - list.Withdata = append(list.Withdata, *data) - savestr, err := json.Marshal(list) - if err != nil { - return err - } - err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid), string(savestr)) - return err - -} - -//返回是否升级 -func (uinfo *UserData) AddUserExp(num int) bool { - totalexp := num - isup := false - for { - lvcfg := GetUserLvConfig(uinfo.Lv) - if lvcfg == nil { - logger.Error("AddUserExp fail lv=%v", uinfo.Lv) - break - } - //判断下是否满级了 - nexcfg := GetUserLvConfig(uinfo.Lv + 1) - if nexcfg == nil { - //已经满级了 - uinfo.Exp += totalexp - break - } - - //计算一下当前升级需要剩下的 - - needexp := lvcfg.Exp - uinfo.Exp - if totalexp < needexp { - //不够升级的 - uinfo.Exp += totalexp - break - } else { - //够升级的 升一级 - uinfo.Lv++ - uinfo.LvRewardGet = 1 //当前等级奖励置位可以领取 - isup = true - totalexp -= needexp - uinfo.Exp = 0 - continue - } - } - - if isup { - uinfo.UpLvCostTime = int(time.Now().Unix()) - uinfo.UpLvCostTimeSec - if uinfo.UpLvCostTime < 0 { - uinfo.UpLvCostTime = 0 - } - uinfo.UpLvCostTimeSec = int(time.Now().Unix()) - } - - return isup -} - -func GettotalParam(paramlist []string) string { - //排序 - sort.Strings(paramlist) - - //拼接 - sumparam := "" - for _, val := range paramlist { - sumparam += val - } - - return sumparam -} - -func GetHashValue(signsum string) string { - /*h := sha1.New() - h.Write([]byte(signsum)) - bs := h.Sum(nil) - sign := hex.EncodeToString(bs)*/ - ctx := md5.New() - ctx.Write([]byte(signsum)) - return hex.EncodeToString(ctx.Sum(nil)) -} - -func DoHttpPost(bys []byte, apistr string) (string, error) { - body := bytes.NewBuffer(bys) - url1 := XIAOXINGXING_SDKURLOFFICAL + apistr //"api/server/addcoin" - - res, err := http.Post(url1, "application/json;charset=utf-8", body) - if err != nil { - logger.Error("DoHttpPost failed err=%v", err) - return "", err - } - result, _ := ioutil.ReadAll(res.Body) - defer res.Body.Close() - - return string(result), nil -} - -func GetCoinFromSdk(uuid int, gameid string, channel string) (int, error) { - var paramlist []string - var params GetCoinDesc - params.Sign_type = "md5" - params.Gameid = gameid - params.Channel = channel - params.Uid = uuid - params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) - signtypestr := "sign_type=" + params.Sign_type - timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) - paramgameid := "gameid=" + gameid - pchannel := "channel=" + channel - puid := "uid=" + strconv.Itoa(uuid) - paramlist = append(paramlist, signtypestr) - paramlist = append(paramlist, timestampstr) - paramlist = append(paramlist, paramgameid) - paramlist = append(paramlist, pchannel) - paramlist = append(paramlist, puid) - - sumparam := GettotalParam(paramlist) - //加serverkey - signsum := sumparam + XIAOXINGXING_SERVERKEYTEST - - //进行hash - sign := GetHashValue(signsum) - params.Sign = sign - logger.Info("GetCoinFromSdk sumparam is:%v,sign is:", signsum, sign) - - bys, err := json.Marshal(¶ms) - if err != nil { - logger.Error("GetCoinFromSdk failed=%v", err) - return 0, err - } - res, err := DoHttpPost(bys, "api/server/getcoin") - if err != nil { - logger.Error("GetCoinFromSdk failed=%v", err) - return 0, err - } - - logger.Info("GetCoinFromSdk res=%v", res) - - var resp AddCoinResp - err = json.Unmarshal([]byte(res), &resp) - if err != nil { - logger.Error("GetCoinFromSdk failed=%v", err) - return 0, err - } - - if resp.Code != "0" { - logger.Error("GetCoinFromSdk failed=%v", resp.Msg) - return 0, err - } - - return resp.Data.Mycoin, nil -} - -func AddCoinToSdk(uuid int, goldnum int, gameid string, channel string, atype int) (int, error) { - var paramlist []string - sign_type := "sign_type=md5" - paramlist = append(paramlist, sign_type) - time_stamp := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) - paramlist = append(paramlist, time_stamp) - paramgameid := "gameid=" + gameid - paramlist = append(paramlist, paramgameid) - pchannel := "channel=" + channel - paramlist = append(paramlist, pchannel) - puid := "uid=" + strconv.Itoa(uuid) - paramlist = append(paramlist, puid) - pcoin := "coin=" + strconv.Itoa(goldnum) - paramlist = append(paramlist, pcoin) - ptyp := "typ=" + strconv.Itoa(atype) - paramlist = append(paramlist, ptyp) - - sumparam := GettotalParam(paramlist) - //加serverkey - signsum := sumparam + XIAOXINGXING_SERVERKEYTEST - logger.Info("AddCoinToSdk sumparam=%v", signsum) - - //进行hash - sign := GetHashValue(signsum) - - var req AddCoinDesc - req.Channel = channel - req.Gameid = gameid - req.Coin = goldnum - req.Sign = sign - req.Sign_type = "md5" - req.Time_stamp = strconv.Itoa(int(time.Now().Unix())) - req.Typ = atype - req.Uid = uuid - - bys, err := json.Marshal(&req) - if err != nil { - logger.Error("AddCoinToSdk failed=%v", err) - return 0, err - } - res, err := DoHttpPost(bys, "api/server/addcoin") - if err != nil { - logger.Error("AddCoinToSdk failed=%v", err) - return 0, err - } - - logger.Info("AddCoinToSdk res=%v", res) - var resp AddCoinResp - err = json.Unmarshal([]byte(res), &resp) - if err != nil { - logger.Error("AddCoinToSdk failed=%v", err) - return 0, err - } - - if resp.Code != "0" { - logger.Error("AddCoinToSdk failed=%v", resp.Msg) - return 0, err - } - return resp.Data.Mycoin, nil -} - -func GetCashFromSDK(uuid int, goldnum int, gameid, channel, openid, nickname, headurl, ver string) (int, error) { - if goldnum == 0 || uuid == 0 || gameid == "" || channel == "" || openid == "" || nickname == "" || headurl == "" || ver == "" { - logger.Error("GetCashFromSDK param empty") - return 0, errors.New("param empty") - } - var paramlist []string - var params TixianDesc - params.Sign_type = "md5" - params.Gameid = gameid - params.Channel = channel - params.Uid = uuid - params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) - params.Headurl = headurl - params.Money = goldnum - params.Openid = openid - params.Nickname = nickname - params.Typ = 6 - params.Ver = ver - params.Editcoin = 1 - signtypestr := "sign_type=" + params.Sign_type - timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) - paramgameid := "gameid=" + gameid - pchannel := "channel=" + channel - puid := "uid=" + strconv.Itoa(uuid) - phead := "headurl=" + headurl - pnickname := "nickname=" + nickname - popenid := "openid=" + openid - pmoney := "money=" + strconv.Itoa(goldnum) - ptype := "typ=" + "6" //微信 - ped := "editcoin=1" - //pver := "ver=" + params.Ver - paramlist = append(paramlist, signtypestr) - paramlist = append(paramlist, timestampstr) - paramlist = append(paramlist, paramgameid) - paramlist = append(paramlist, pchannel) - paramlist = append(paramlist, puid) - paramlist = append(paramlist, phead) - paramlist = append(paramlist, pnickname) - paramlist = append(paramlist, popenid) - paramlist = append(paramlist, pmoney) - paramlist = append(paramlist, ptype) - paramlist = append(paramlist, ped) - //paramlist = append(paramlist, pver) - - sumparam := GettotalParam(paramlist) - //加serverkey - signsum := sumparam + XIAOXINGXING_SERVERKEYTEST - - //进行hash - sign := GetHashValue(signsum) - params.Sign = sign - - bys, err := json.Marshal(¶ms) - if err != nil { - logger.Error("GetCashFromSDK failed=%v", err) - return 0, err - } - res, err := DoHttpPost(bys, "api/server/tixian") - logger.Info("GetCashFromSDK sumparam is:%v,sign is:%v", signsum, sign) - logger.Info("GetCashFromSDK sumparam param=%v", string(bys)) - if err != nil { - logger.Error("GetCashFromSDK failed=%v", err) - return 0, err - } - - logger.Info("GetCashFromSDK res=%v", res) - - var resp GetCashResp - err = json.Unmarshal([]byte(res), &resp) - if err != nil { - logger.Error("GetCashFromSDK failed=%v", err) - return 0, err - } - - if resp.Code != "0" { - logger.Error("GetCashFromSDK failed=%v", resp.Msg) - return 0, errors.New(resp.Msg) - } - - //拉取一下新的金币值 - newnum, err := GetCoinFromSdk(uuid, gameid, channel) - if err != nil { - logger.Error("GetCashFromSDK failed=%v", err) - return 0, err - } - return newnum, nil -} - -func GetCashList(uuid int, gameid string, channel string, start int, number int) (*[]WithDrawRecord, error) { - var paramlist []string - var params GetCashListDesc - params.Sign_type = "md5" - params.Gameid = gameid - params.Channel = channel - params.Uid = uuid - params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) - params.Start = start - params.Number = number - signtypestr := "sign_type=" + params.Sign_type - timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) - paramgameid := "gameid=" + gameid - pchannel := "channel=" + channel - puid := "uid=" + strconv.Itoa(uuid) - pstart := "start=" + strconv.Itoa(start) - pnumber := "number=" + strconv.Itoa(number) - paramlist = append(paramlist, signtypestr) - paramlist = append(paramlist, timestampstr) - paramlist = append(paramlist, paramgameid) - paramlist = append(paramlist, pchannel) - paramlist = append(paramlist, puid) - if start != 0 { - paramlist = append(paramlist, pstart) - } - - paramlist = append(paramlist, pnumber) - - sumparam := GettotalParam(paramlist) - //加serverkey - signsum := sumparam + XIAOXINGXING_SERVERKEYTEST - logger.Info("GetCashList sumparam=%v", signsum) - - //进行hash - sign := GetHashValue(signsum) - params.Sign = sign - - bys, err := json.Marshal(¶ms) - if err != nil { - logger.Error("GetCashList failed=%v", err) - return nil, err - } - res, err := DoHttpPost(bys, "api/server/tixian/lst") - if err != nil { - logger.Error("GetCashList failed=%v", err) - return nil, err - } - - logger.Info("GetCashList res=%v", res) - - var resp GetCashListResp - err = json.Unmarshal([]byte(res), &resp) - if err != nil { - logger.Error("GetCoinFromSdk failed=%v", err) - return nil, err - } - - if resp.Code != "0" { - logger.Error("GetCoinFromSdk failed=%v", resp.Msg) - return nil, err - } - return &resp.Data, nil -} diff --git a/src/HttpServer/logic/httpserver.go b/src/HttpServer/logic/httpserver.go index c923b47..d7bf9d6 100644 --- a/src/HttpServer/logic/httpserver.go +++ b/src/HttpServer/logic/httpserver.go @@ -5,7 +5,6 @@ import ( "HttpServer/redishandler" "common/logger" "common/redis" - "encoding/json" "fmt" "io/ioutil" "strconv" @@ -44,22 +43,6 @@ func startServerHttpServe() { http.HandleFunc("/eliminatestar/test", Testapi) //测试接口 http.HandleFunc("/eliminatestar/clear", ClearData) //清除账号 //---------------------------------------------------------------------------------------- - http.HandleFunc("/eliminatestar/login", UserLogin) //登录 - http.HandleFunc("/eliminatestar/getuserdata", Getuserdata) //获取玩家数据 - http.HandleFunc("/eliminatestar/watchads", Watchads) //观看激励视频 - http.HandleFunc("/eliminatestar/queryguaninfo", Queryguaninfo) //获取存钱罐数据 - http.HandleFunc("/eliminatestar/getguangold", Getguangold) //获取金币到存钱罐 - http.HandleFunc("/eliminatestar/drawguangold", Drawguangold) //提取存钱罐的金币到个人钱包 - http.HandleFunc("/eliminatestar/querdrawinfo", Querdrawinfo) //获取提现档位信息接口 - http.HandleFunc("/eliminatestar/getcash", Getcash) //提现 - http.HandleFunc("/eliminatestar/getcashrecord", Getcashrecord) //提现记录列表 - http.HandleFunc("/eliminatestar/onlinentf", Onlinentf) //在线通知 - http.HandleFunc("/eliminatestar/updatetaskandachieve", Updatetaskandachieve) //上报任务事件进度 - http.HandleFunc("/eliminatestar/querytaskinfo", Querytaskinfo) //拉取任务或者成就列表 - http.HandleFunc("/eliminatestar/gettaskreward", Gettaskreward) //领取任务或者成就奖励 - http.HandleFunc("/eliminatestar/getnewlevelreward", Getnewlevelreward) //领取任务或者成就奖励 - http.HandleFunc("/eliminatestar/querysigndata", Querysigndata) //获取签到数据 - http.HandleFunc("/eliminatestar/usersign", Usersign) //玩家签到 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) CheckErr(err) @@ -91,124 +74,12 @@ func ClearData(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "success!") } -func Usersign(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Usersign , body:%v,uuid=%v", s, Uuid) - - HandlerUsersign(w, s, Uuid) -} - -func Querysigndata(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Querysigndata , body:%v,uuid=%v", s, Uuid) - - HandlerQuerysigndata(w, s, Uuid) -} - func Testapi(w http.ResponseWriter, r *http.Request) { - SetHeader(w) - type TesaApiData struct { - Type int `json:"type"` //1金币 2经验 3存钱罐次数 - Value int `json:"value"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` - } - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Testapi , body:%v,uuid=%v", s, Uuid) - - var rdata TesaApiData - err := json.Unmarshal([]byte(s), &rdata) - - if err != nil { - logger.Info("json decode Testapi data failed:%v,for:%v", err, s) - fmt.Fprint(w, "failed") - return - } - - uinfo, err := GetUserInfo(Uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - fmt.Fprint(w, "failed") - return - } - - if rdata.Type == 1 { - //金币 - uinfo.RealGold += rdata.Value - //调用sdk - gold, err := AddCoinToSdk(Uuid, rdata.Value, rdata.Gameid, rdata.Channel, 100) - if err != nil { - logger.Error("test ddt! err=%v", err) - } - uinfo.RealGold = gold - - } - if rdata.Type == 2 { - uinfo.Exp += rdata.Value - } - if rdata.Type == 3 { - uinfo.GetFromGuanCnt += rdata.Value - } - if rdata.Type == 4 { - uinfo.Lv += rdata.Value - } - if rdata.Type == 5 { - uinfo.IsSignToday = 0 - if uinfo.SignSum == 7 { - uinfo.SignSum = 0 - uinfo.SignRound++ - } - } - err = SaveUserInfo(uinfo) - if err != nil { - logger.Error("SaveUserInfo err=%v", err) - } fmt.Fprint(w, "success") } -func Getnewlevelreward(w http.ResponseWriter, r *http.Request) { +/*func Getnewlevelreward(w http.ResponseWriter, r *http.Request) { Uuid := 0 if len(r.Header) > 0 { @@ -227,282 +98,4 @@ func Getnewlevelreward(w http.ResponseWriter, r *http.Request) { logger.Info("Getnewlevelreward , body:%v,uuid=%v", s, Uuid) HandlerGetnewlevelreward(w, s, Uuid) -} - -func Gettaskreward(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Gettaskreward , body:%v,uuid=%v", s, Uuid) - - HandlerGettaskreward(w, s, Uuid) -} - -func Querytaskinfo(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Querytaskinfo , body:%v,uuid=%v", s, Uuid) - - HandlerQuerytaskinfo(w, s, Uuid) -} - -func Updatetaskandachieve(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Updatetaskandachieve , body:%v,uuid=%v", s, Uuid) - - HandlerUpdatetaskandachieve(w, s, Uuid) -} - -func Onlinentf(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Onlinentf , body:%v,uuid=%v", s, Uuid) - - HandlerOnlinentf(w, s, Uuid) -} - -func Getcashrecord(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Getcashrecord , body:%v,uuid=%v", s, Uuid) - - HandlerGetcashrecord(w, s, Uuid) -} - -func Getcash(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Getcash , body:%v,uuid=%v", s, Uuid) - - HandlerGetcash(w, s, Uuid) -} - -func Querdrawinfo(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Querdrawinfo , body:%v,uuid=%v", s, Uuid) - - HandlerQuerdrawinfo(w, s, Uuid) -} - -func Drawguangold(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Drawguangold , body:%v,uuid=%v", s, Uuid) - - HandlerDrawguangold(w, s, Uuid) -} - -func Getguangold(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Getguangold , body:%v,uuid=%v", s, Uuid) - - HandlerGetguangold(w, s, Uuid) -} - -func Queryguaninfo(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Queryguaninfo , body:%v,uuid=%v", s, Uuid) - - HandlerQueryguaninfo(w, s, Uuid) -} - -func Watchads(w http.ResponseWriter, r *http.Request) { - - //这个接口作废 - logger.Info("Watchads is not used") - SetHeader(w) - - return - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Watchads , body:%v,uuid=%v", s, Uuid) - - HandlerWatchads(w, s, Uuid) -} - -func UserLogin(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("UserLogin , body:%v,uuid=%v", s, Uuid) - - HandlerLogin(w, s, Uuid) -} - -func Getuserdata(w http.ResponseWriter, r *http.Request) { - - Uuid := 0 - if len(r.Header) > 0 { - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) - } - - if Uuid == 0 { - SetHeader(w) - //logger.Error("Uuid is nil!") - return - } - result, _ := ioutil.ReadAll(r.Body) - r.Body.Close() - - s := string(result) - logger.Info("Getuserdata , body:%v,uuid=%v", s, Uuid) - - HandlerGetuserdata(w, s, Uuid) -} +}*/ diff --git a/src/HttpServer/logic/logic.go b/src/HttpServer/logic/logic.go index f474c7a..4c79103 100644 --- a/src/HttpServer/logic/logic.go +++ b/src/HttpServer/logic/logic.go @@ -1,891 +1 @@ package logic - -import ( - "HttpServer/jsonconf" - "HttpServer/redishandler" - "common/logger" - "common/redis" - "encoding/json" - "fmt" - "net/http" - "strconv" -) - -func HandlerQueryguaninfo(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp QueryguaninfoResp - resp.Code = 0 - for { - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - uinfo.HandlePassDay() - - //获取存钱罐等级配置 - mcfg := jsonconf.GetMoneyBoxCfg(uinfo.Lv) - if mcfg == nil { - logger.Error("GetMoneyBoxCfg failed uinfo.Lv=%v", uinfo.Lv) - logger.Error("GetMoneyBoxCfg failed cfg=%v", jsonconf.GetJsonConf().MoneyBoxConfig) - resp.Message = "存钱罐金币不足" - resp.Code = ERROR_GETCONFIG_FAILED - break - } - - resp.Data.Guangold = uinfo.GuanGold - resp.Data.Loginday = uinfo.ContinueLoginDay - resp.Data.Totalcnt = uinfo.CalcTotalCnt() - resp.Data.Leftcnt = resp.Data.Totalcnt - uinfo.GetFromGuanCnt - resp.Data.Maxget = mcfg.Max - resp.Data.Minget = mcfg.Min - resp.Data.Totalfetchcnt = uinfo.Achieve.SumGetGuan - resp.Code = ERROR_OK - break - - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) -} - -func HandlerWatchads(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp WatchadsResp - resp.Code = 0 - - for { - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - if uinfo.WatchAddsTime == 0 { - logger.Error("WatchAddsTime zero") - resp.Message = "看视频次数已经耗尽" - resp.Code = ERROR_WATCHADS_ZEOR - break - } - - uinfo.WatchAddsTime-- - err = SaveUserInfo(uinfo) - if err != nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - resp.Code = ERROR_OK - break - - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) -} - -func HandlerGetcash(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp GetcashResp - resp.Code = 0 - var rdata GetcashReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - //临时处理一下 - if rdata.Ver == "" { - rdata.Ver = "2.0.0" - } - - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - drawnum := int(rdata.Money * 100) - //需要判断一下金币是否足够 - if drawnum*100 > uinfo.RealGold { - logger.Error("gold nor enough failed err=%v", err) - resp.Message = "提现金币不足" - resp.Code = ERROR_GETCASH_GOLDNOTENOUGH_FAILED - break - } - - index, info := uinfo.GetWithDrawData(rdata.Money) - if index == -1 || info == nil { - logger.Error("AddWithDrawList failed err=%v", err) - resp.Message = "网络错误" - resp.Code = ERROR_SRV_ERROR - break - } - - if uinfo.Lv < info.Limitlv { - logger.Error("AddWithDrawList failed err=%v", err) - resp.Message = "完成日常任务可以提升人物等级哦~" - resp.Code = ERROR_WITHDRAWLVLIMIT - break - } - - if info.Isnew == 0 { - logger.Error("AddWithDrawList failed err=%v", err) - resp.Message = "新人专享只能提取一次" - resp.Code = ERROR_WITHDRAWONLYONE - break - } - - if info.Preisfind == 0 { - logger.Error("HandlerGetcash Preisfind err=%v", err) - resp.Message = "请先完成前一档提现" - resp.Code = ERROR_PRENOTFINISH - break - } - - //判断一下前置条件的下一档 - if index == len(uinfo.WithDraw.Cashdata)-1 { - //最后一档了不用处理 - } else { - if index < len(uinfo.WithDraw.Cashdata)-1 { - uinfo.WithDraw.Cashdata[index+1].Preisfind = 1 - } - } - - gold, err := GetCashFromSDK(uuid, drawnum, rdata.Gameid, rdata.Channel, rdata.Openid, rdata.Nickname, rdata.Headurl, rdata.Ver) - if err != nil { - logger.Error("GetCashFromSDK failed err=%v", err) - resp.Message = "从后台提现失败了" - resp.Code = ERROR_GETCASH_FAILED - break - } - - //需要保存一下提现记录 - /*data := new(WithDrawRecord) - data.Withdrawmoney = rdata.Money - data.Withdrawtime = int(time.Now().Unix()) - err = AddWithDrawList(uuid, data) - if err != nil { - logger.Error("AddWithDrawList failed err=%v", err) - resp.Message = "网络错误" - resp.Code = ERROR_SRV_ERROR - break - }*/ - - if info.Isnew == 1 { - uinfo.WithDraw.Cashdata[index].Isnew = 0 - } - - uinfo.RealGold = gold - //uinfo.RealGold -= drawnum * 100 - - resp.Data.Walletgold = uinfo.RealGold - SaveUserInfo(uinfo) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerQuerysigndata(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp QuerysigndataResp - resp.Code = 0 - - for { - - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - //此处要处理一下跨天逻辑 - uinfo.HandlePassDay() - - resp.Data.Continuessign = uinfo.SignSum - resp.Data.IssignToday = uinfo.IsSignToday - resp.Data.Signround = uinfo.SignRound - - logger.Info("HandlerQuerysigndata resp=%v", resp) - - SaveUserInfo(uinfo) - resp.Code = ERROR_OK - break - } - - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) -} - -func HandlerGetnewlevelreward(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp GetnewlevelrewardResp - resp.Code = 0 - var rdata GetnewlevelrewardReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerGetnewlevelreward data failed:%v,for:%v", err, data) - resp.Message = "网络错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - //判断是否可以领取 - if uinfo.LvRewardGet != 1 { - logger.Error("LvRewardGet failed err=%v", err) - resp.Message = "当前等级奖励已经领取过了" - resp.Code = ERROR_LVREWARDALREADYGET - break - } - - cfg := GetUserLvConfig(uinfo.Lv) - if cfg == nil { - logger.Error("GetUserLvConfig failed err=%v", err) - resp.Message = "网络错误" - resp.Code = ERROR_SRV_ERROR - break - } - - goldnum, err := AddCoinToSdk(uuid, cfg.Cash, rdata.Gameid, rdata.Channel, 100) - if err != nil { - logger.Error("AddCoinToSdk failed err=%v", err) - resp.Message = "网络错误" - resp.Code = ERROR_SRV_ERROR - break - } - uinfo.RealGold = goldnum - //uinfo.RealGold += cfg.Cash - - if rdata.Rewardtype == 2 { - goldnum, err = AddCoinToSdk(uuid, cfg.Extracash, rdata.Gameid, rdata.Channel, 100) - if err != nil { - logger.Error("AddCoinToSdk failed err=%v", err) - resp.Message = "网络错误" - resp.Code = ERROR_SRV_ERROR - break - } - uinfo.RealGold = goldnum - uinfo.RealGold += cfg.Extracash - } - - uinfo.LvRewardGet = 1 + rdata.Rewardtype - - resp.Data.Goldnum = uinfo.RealGold - //保存数据 - SaveUserInfo(uinfo) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerUsersign(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp UsersignResp - resp.Code = 0 - var rdata UsersignReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerUsersign data failed:%v,for:%v", err, data) - resp.Message = "网络错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - if uinfo.IsSignToday == 1 { - logger.Error("IsSignToday failed err=%v", err) - resp.Message = "今日已经签过到啦" - resp.Code = ERROR_SINGALREADYTODAY - break - } - - uinfo.SignSum++ - if uinfo.SignSum > 7 { - uinfo.SignSum = 7 - logger.Error("uinfo.SignSum failed") - resp.Message = "签到数据异常" - resp.Code = ERROR_SINGDATAFAILED - break - } - - //获取配置 - cfg := jsonconf.GetSignConfig(uinfo.SignRound, uinfo.SignSum) - if cfg == nil { - uinfo.SignSum-- - logger.Error("GetSignConfig failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - //uinfo.RealGold = - goldnum, err := AddCoinToSdk(uuid, cfg.Num, rdata.Gameid, rdata.Channel, 100) - if err != nil { - uinfo.SignSum-- - logger.Error("AddCoinToSdk failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - uinfo.IsSignToday = 1 - uinfo.RealGold = goldnum - //uinfo.RealGold += cfg.Num - - resp.Data.Goldnum = uinfo.RealGold - - //保存数据 - err = SaveUserInfo(uinfo) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerGettaskreward(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp GettaskrewardResp - resp.Code = 0 - var rdata GettaskrewardReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerGettaskreward data failed:%v,for:%v", err, data) - resp.Message = "网络错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - //需要先计算出任务或者成就 - var tasklist *TaskList - //先查询一下当前的任务数据 - tasklist, err = GetTaskInfo(uuid, rdata.Tasktype) - if err != nil || tasklist == nil { - logger.Error("GetTaskInfo failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - err = uinfo.HandleGetTaskReward(&rdata, &resp, tasklist) - logger.Info("HandlerGettaskreward tasklist=%v", tasklist) - logger.Info("HandlerGettaskreward uinfo=%v", uinfo) - if err != nil { - logger.Error("HandleGetTaskReward failed err=%v", err) - resp.Message = "奖励已经领取" - resp.Code = ERROR_SRV_ERROR - break - } - - //保存数据 - err = SaveUserInfo(uinfo) - err = SaveTaskInfo(uinfo.Userid, rdata.Tasktype, tasklist) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerQuerytaskinfo(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp QuerytaskinfoResp - resp.Code = 0 - var rdata QuerytaskinfoReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerQuerytaskinfo data failed:%v,for:%v", err, data) - resp.Message = "网络错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - uinfo.HandlePassDay() - - //需要先计算出任务或者成就 - var tasklist *TaskList - //先查询一下当前的任务数据 - tasklist, err = GetTaskInfo(uuid, rdata.Tasktype) - if err != nil || tasklist == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - if rdata.Tasktype == 1 { - uinfo.CalcTaskList(tasklist) - } else if rdata.Tasktype == 2 { - tasklist = uinfo.CalcAchieveList(tasklist) - } else { - uinfo.CalcTaskList(tasklist) - } - - if tasklist == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - resp.Data.Taskdata = append(resp.Data.Taskdata, tasklist.Taskdata...) - - resp.Code = ERROR_OK - break - } - - //回包 - logger.Info("HandlerQuerytaskinfo resp=%v", resp) - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerUpdatetaskandachieve(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp UpdatetaskResp - resp.Code = 0 - var rdata UpdatetaskReq - err := json.Unmarshal([]byte(data), &rdata) - for { - - if err != nil { - logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - switch rdata.Tasktype { - case TASKTYPE_PASSLEVEL: - uinfo.Task.PassLevel += rdata.Value - case TASKTYPE_GETREDBAG: - uinfo.Task.GetRedbagCnt += rdata.Value - if uinfo.LeftFreeRB > 0 { - uinfo.LeftFreeRB-- - } - if uinfo.WatchAddsTime > 0 { - uinfo.WatchAddsTime-- - } - case TASKTYPE_WATCHADS: - uinfo.Achieve.WatchAdsCnt += rdata.Value - case TASKTYPE_KILLSTAR: - uinfo.Achieve.KillStar += rdata.Value - case TASKTYPE_USEITEM: - uinfo.Task.UseItemCnt += rdata.Value - uinfo.Achieve.SumUseItemCnt += rdata.Value - } - logger.Info("HandlerUpdatetaskandachieve uinfo=%v rdata=%v", uinfo, rdata) - SaveUserInfo(uinfo) - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerOnlinentf(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp OnlinentfResp - resp.Code = 0 - for { - - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - uinfo.Task.OnlineMin++ - - SaveUserInfo(uinfo) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerGetcashrecord(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp GetcashrecordResp - resp.Code = 0 - var rdata GetcashrecordReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerGetcashrecord data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - // list, err := GetWithDrawList(uuid) - /*if err != nil || list == nil { - /*logger.Error("HandlerGetcashrecord failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - }*/ - list, err := GetCashList(uuid, rdata.Gameid, rdata.Channel, 0, 100) - if err != nil { - logger.Error("HandlerGetcashrecord failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - if list != nil { - resp.Data.Withdata = append(resp.Data.Withdata, *list...) - } - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerQuerdrawinfo(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp QuerdrawinfoResp - resp.Code = 0 - for { - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - //返回 - resp.Data.Cashdata = append(resp.Data.Cashdata, uinfo.WithDraw.Cashdata...) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerDrawguangold(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp DrawguangoldResp - resp.Code = 0 - var rdata DrawguangoldReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerDrawguangold data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - //首先判断一下存钱罐的金币是否足够 - if rdata.Goldnum > uinfo.GuanGold { - logger.Error("guangold not enough rdata.Goldnum=%v uinfo.GuanGold=%v", rdata.Goldnum, uinfo.GuanGold) - resp.Message = "存钱罐金币不足" - resp.Code = ERROR_GUANGOLD_NOTENOUGH - break - } - - //判断一下是否满足提取条件 - totalcnt := uinfo.CalcTotalCnt() - if totalcnt <= uinfo.GetFromGuanCnt { - logger.Error("guancnt not enough ") - resp.Message = "存钱罐次数不足" - resp.Code = ERROR_GUANCNTNOTENOUGH - break - } - - // - mcfg := jsonconf.GetMoneyBoxCfg(uinfo.Lv) - if mcfg == nil { - logger.Error("GetMoneyBoxCfg failed err=%v", err) - resp.Message = "获取配置失败" - resp.Code = ERROR_GETCONFIG_FAILED - break - } - - if rdata.Goldnum < mcfg.Min || rdata.Goldnum > mcfg.Max { - logger.Error("GetMoneyBoxCfg failed err=%v", err) - resp.Message = "从存钱罐提取金币不满足限制" - resp.Code = ERROR_DRAWGUAN_FAILED - break - } - - //todo 此处需要调佣SDK接口通知金币变化 - goldnum, err := AddCoinToSdk(uuid, rdata.Goldnum, rdata.Gameid, rdata.Channel, 100) - if err != nil { - logger.Error("Drawgold failed err=%v", err) - resp.Message = "从存钱罐提取金币失败了" - resp.Code = ERROR_DRAWGOLD_FAILED - break - } - - uinfo.GetFromGuanCnt++ - uinfo.Achieve.SumGetGuan++ - uinfo.GuanGold = uinfo.GuanGold - rdata.Goldnum - uinfo.RealGold = goldnum - //uinfo.RealGold += rdata.Goldnum - - resp.Data.Guangold = uinfo.GuanGold - resp.Data.Wallgold = uinfo.RealGold - resp.Data.Totalfetchcnt = uinfo.Achieve.SumGetGuan - - SaveUserInfo(uinfo) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerGetguangold(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp GetguangoldResp - resp.Code = 0 - var rdata GetguangoldReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerGetguangold data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - - uinfo, err := GetUserInfo(uuid) - if err != nil || uinfo == nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - mcfg := jsonconf.GetMoneyBoxCfg(uinfo.Lv) - if mcfg == nil { - logger.Error("GetMoneyBoxCfg failed err=%v", err) - resp.Message = "获取配置失败" - resp.Code = ERROR_GETCONFIG_FAILED - break - } - - uinfo.GuanGold += rdata.Goldnum - if uinfo.GuanGold >= mcfg.Max { - uinfo.GuanGold = mcfg.Max - } - - resp.Data.Guangold = uinfo.GuanGold - //uinfo.Task.GetGuanGold += rdata.Goldnum - uinfo.Task.GetGuanGold++ - - SaveUserInfo(uinfo) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - -} - -func HandlerGetuserdata(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp GetuserdataResp - resp.Code = 0 - var rdata GetuserdataReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerGetuserdata data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - - data, err := GetUserInfo(uuid) - if err != nil || data == nil { - resp.Code = ERROR_SRV_ERROR - resp.Message = "ERROR_SRV_ERROR" - break - } - - //此处处理一下从sdk拉取钱包金币数量 - gold, err := GetCoinFromSdk(uuid, rdata.Gameid, rdata.Channel) - if err == nil { - data.RealGold = gold - } else { - logger.Error("GetCoinFromSdk failed err=%v", err) - } - - resp.Data.Walletgold = data.RealGold - resp.Data.Guangold = data.GuanGold - resp.Data.Leftredbagcnt = data.WatchAddsTime - resp.Data.Userexp = data.Exp - resp.Data.Userlv = data.Lv - resp.Data.Leftfreeredbag = data.LeftFreeRB - SaveUserInfo(data) - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - - logger.Info("###HandlerLogin###rdata:%v", string(respstr)) -} - -func HandlerLogin(w http.ResponseWriter, data string, uuid int) { - SetHeader(w) - var resp UserLoginResp - resp.Code = 0 - var rdata UserLoginReq - err := json.Unmarshal([]byte(data), &rdata) - for { - if err != nil { - logger.Info("json decode HandlerLogin data failed:%v,for:%v", err, data) - resp.Message = "json解析错误" - resp.Code = ERROR_JSONUNMASH_ERROR - break - } - - //先判断一下是否是新用户 - isexist, err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, strconv.Itoa(uuid)) - if err != nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - if !isexist { - //不存在 - //属于新登录的玩家数据 - err = InitUserInfo(&rdata, &resp, uuid) - } else { - //已经登陆过了 需要获取玩家数据 - err = GetUserData(uuid, &rdata, &resp) - } - - if err != nil { - logger.Error("redis failed err=%v", err) - resp.Message = "服务器错误" - resp.Code = ERROR_SRV_ERROR - break - } - - resp.Code = ERROR_OK - break - } - - //回包 - respstr, _ := json.Marshal(&resp) - fmt.Fprint(w, string(respstr)) - - logger.Info("###HandlerLogin###rdata:%v", string(respstr)) -} -- libgit2 0.21.0