diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index 166136c..48d7936 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -2,51 +2,49 @@ 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次道具 + 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 //在线分钟数 + 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 //累计道具使用 + 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_STAR = 1 //星星 + REWARDTYPE_CHUI = 2 + REWARDTYPE_SHUA = 3 + REWARDTYPE_SWAP = 4 REWARDTYPE_ELIMITE = 5 - REWARDTYPE_EXP = 6 - REWARDTYPE_GOLD = 7 + REWARDTYPE_EXP = 6 + REWARDTYPE_GOLD = 7 ) -var ( - WETCHATAPPID="wx572a2a5ec4538f33" - WETCHATSERCRT = "b31e2e7406af88fe7395cd178bdb64fc" +const ( + XIAOXINGXING_SERVERKEY = "33e0c3238c108a36d87025544c6a2d2f" ) const ( - WATCH_ADD_DAY_LIMIT = 9 //当天观看视频次数限制 -) \ No newline at end of file + WATCH_ADD_DAY_LIMIT = 9 //当天观看视频次数限制 +) diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index b10dc7f..c3fc360 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -1,210 +1,199 @@ package logic type UserLoginReq struct { - Fromid int `json:"fromid"` - Sharetype int `json:"sharetype"` - Gameid string `json:"gameid"` - Channel string `json:"channel"` + Fromid int `json:"fromid"` + Sharetype int `json:"sharetype"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` } type UserLoginData struct { - Walletgold int `json:"walletgold"` - Leftads int `json:"leftads"` - Guangold int `json:"guangold"` - Userlv int `json:"userlv"` - Userexp int `json:"userexp"` + Walletgold int `json:"walletgold"` + Leftads int `json:"leftads"` + 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"` - + Code int `json:"code"` + Message string `json:"message"` + Data UserLoginData `json:"data"` } type GetuserdataReq struct { - Gameid string `json:"gameid"` + Gameid string `json:"gameid"` Channel string `json:"channel"` } type GetuserdataData struct { - Walletgold int `json:"walletgold"` - Leftads int `json:"leftads"` - Guangold int `json:"guangold"` - Userlv int `json:"userlv"` - Userexp int `json:"userexp"` + Walletgold int `json:"walletgold"` + Leftads int `json:"leftads"` + Guangold int `json:"guangold"` + Userlv int `json:"userlv"` + Userexp int `json:"userexp"` } type GetuserdataResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetuserdataData `json:"data"` - + Code int `json:"code"` + Message string `json:"message"` + Data GetuserdataData `json:"data"` } - type WatchadsData struct { - Leftads int `json:"leftads"` + Leftads int `json:"leftads"` } type WatchadsResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data WatchadsData `json:"data"` - + 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"` + Leftcnt int `json:"leftcnt"` + Totalcnt int `json:"totalcnt"` + Guangold int `json:"guangold"` + Minget int `json:"minget"` + Maxget int `json:"maxget"` + Loginday int `json:"loginday"` } type QueryguaninfoResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data QueryguaninfoData `json:"data"` + Code int `json:"code"` + Message string `json:"message"` + Data QueryguaninfoData `json:"data"` } - type GetguangoldReq struct { - Goldnum int `json:"goldnum"` + Goldnum int `json:"goldnum"` } type GetguangoldData struct { - Guangold int `json:"guangold"` + Guangold int `json:"guangold"` } type GetguangoldResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetguangoldData `json:"data"` + 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"` + Goldnum int `json:"goldnum"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` } -type DrawguangoldData struct { - Guangold int `json:"guangold"` - Wallgold int `json:"wallgold"` +type DrawguangoldData struct { + Guangold int `json:"guangold"` + Wallgold int `json:"wallgold"` } type DrawguangoldResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data DrawguangoldData `json:"data"` + 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"` + Code int `json:"code"` + Message string `json:"message"` + Data WithDrawInfo `json:"data"` } type GetcashReq struct { - Gameid string `json:"gameid"` - Channel string `json:"channel"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` Money float32 `json:"money"` - Openid string `json:"openid"` - Nickname string `json:"nickname"` - Headurl string `json:"headurl"` + Openid string `json:"openid"` + Nickname string `json:"nickname"` + Headurl string `json:"headurl"` } type GetcashData struct { - Walletgold int `json:"walletgold"` + Walletgold int `json:"walletgold"` } type GetcashResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetcashData `json:"data"` + Code int `json:"code"` + Message string `json:"message"` + Data GetcashData `json:"data"` } type GetcashrecordResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data WithDrawList `json:"data"` + Code int `json:"code"` + Message string `json:"message"` + Data WithDrawList `json:"data"` } type OnlinentfResp struct { - Code int `json:"code"` - Message string `json:"message"` + Code int `json:"code"` + Message string `json:"message"` } type UpdatetaskReq struct { - Tasktype int `json:"tasktype"` + Tasktype int `json:"tasktype"` Value int `json:"value"` } type UpdatetaskResp struct { - Code int `json:"code"` - Message string `json:"message"` + Code int `json:"code"` + Message string `json:"message"` } - type QuerytaskinfoReq struct { - Tasktype int `json:"tasktype"` + Tasktype int `json:"tasktype"` } type QuerytaskinfoResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data TaskList `json:"data"` + 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"` + Tasktype int `json:"tasktype"` + Taskid int `json:"taskid"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` } type GettaskrewardData struct { - Lv int `json:"lv"` - Rewardstar int `json:"rewardstar"` - Chuiitem int `json:"chuiitem"` - Shuaitem int `json:"shuaitem"` - Swapitem int `json:"swapitem"` - Eliminitem int `json:"eliminitem"` + Lv int `json:"lv"` + 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"` + Code int `json:"code"` + Message string `json:"message"` + Data GettaskrewardData `json:"data"` } - - type GetnewlevelrewardReq struct { - Rewardtype int `json:"rewardtype"` - Gameid string `json:"gameid"` + Rewardtype int `json:"rewardtype"` + Gameid string `json:"gameid"` Channel string `json:"channel"` } type GetnewlevelrewardData struct { - Goldnum int `json:"goldnum"` + Goldnum int `json:"goldnum"` } type GetnewlevelrewardResp struct { - Code int `json:"code"` - Message string `json:"message"` - Data GetnewlevelrewardData `json:"data"` + Code int `json:"code"` + Message string `json:"message"` + Data GetnewlevelrewardData `json:"data"` } - //********************************************************************************************************** type TaskListDesc struct { - Taskid int `json:"taskid"` - Taskstatus int `json:"taskstatus"` - Taskprogress int `json:"taskprogress"` + Taskid int `json:"taskid"` + Taskstatus int `json:"taskstatus"` + Taskprogress int `json:"taskprogress"` } type TaskList struct { @@ -213,58 +202,67 @@ type TaskList struct { //其中提取次数和当日登陆在userdata中记录 type TaskInfo struct { - OnlineMin int //在线分钟数 - PassLevel int //通过关卡数 - UseItemCnt int //使用道具次数 - GetRedbagCnt int //领取红包次数 - GetGuanGold int //收集金币数 + OnlineMin int //在线分钟数 + PassLevel int //通过关卡数 + UseItemCnt int //使用道具次数 + GetRedbagCnt int //领取红包次数 + GetGuanGold int //收集金币数 } // type AchieveMentInfo struct { - WatchAdsCnt int //观看广告数 - KillStar int //消除星星数 - SumGetGuan int //存钱罐累计提取 - SumUseItemCnt int //使用道具次数累计 + WatchAdsCnt int //观看广告数 + KillStar int //消除星星数 + SumGetGuan int //存钱罐累计提取 + SumUseItemCnt int //使用道具次数累计 } - type WithDrawList struct { Withdata []WithDrawRecord `json:"withdata"` } //提现记录结构 type WithDrawRecord struct { - Withdrawtime int `json:"wichdrawtime"` - Withdrawmoney float32 `json:"withdrawmoney"` + Withdrawtime int `json:"wichdrawtime"` + Withdrawmoney float32 `json:"withdrawmoney"` } type WithDrawInfo struct { - Cashdata []WithDrawDesc `json:"cashdata"` + 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"` + 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 //当天观看激励视频次数 - LastLoginTime int //上次登陆时间 - ContinueLoginDay int //连续登录天数 - GetFromGuanCnt int //当天从存钱款提取金币次数 - WithDraw WithDrawInfo //提现记录信息 - Task TaskInfo //玩家任务完成相关信息 - Achieve AchieveMentInfo //玩家成就完成相关数据 + Userid int //玩家id + Lv int //玩家当前等级 + LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 + Exp int //玩家当前经验值 + GuanGold int //玩家存钱罐中金币数量 + RealGold int //玩家实际金币数量(可用于提现的) + WatchAddsTime int //当天观看激励视频次数 + LastLoginTime int //上次登陆时间 + ContinueLoginDay int //连续登录天数 + GetFromGuanCnt int //当天从存钱款提取金币次数 + WithDraw WithDrawInfo //提现记录信息 + Task TaskInfo //玩家任务完成相关信息 + Achieve AchieveMentInfo //玩家成就完成相关数据 +} + +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"` } - diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index 4fde411..4e448c0 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -5,6 +5,8 @@ import ( "HttpServer/redishandler" "common/logger" "common/redis" + "crypto/sha1" + "encoding/hex" "encoding/json" "errors" "net/http" @@ -25,7 +27,6 @@ func (v *TaskList) Less(i, j int) bool { return v.Taskdata[i].Taskstatus > v.Taskdata[j].Taskstatus } - func SetHeader(w http.ResponseWriter) { w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 w.Header().Set("Content-Type", "application/json") @@ -34,33 +35,33 @@ func SetHeader(w http.ResponseWriter) { func SaveUserInfo(data *UserData) error { - savestr,err := json.Marshal(data) + savestr, err := json.Marshal(data) if err != nil { return err } - err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY,strconv.Itoa(data.Userid),string(savestr)) + err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, strconv.Itoa(data.Userid), string(savestr)) return err } -func GetUserInfo(uuid int) (*UserData,error) { +func GetUserInfo(uuid int) (*UserData, error) { - data,err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY,strconv.Itoa(uuid)) + data, err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY, strconv.Itoa(uuid)) if err != nil { - return nil,err + return nil, err } var tmp UserData - err = json.Unmarshal([]byte(data),&tmp) + err = json.Unmarshal([]byte(data), &tmp) if err != nil { - return nil,err + return nil, err } - return &tmp,nil + return &tmp, nil } func GetUserLvConfig(lv int) *jsonconf.LevelDesc { - for _,val := range jsonconf.GetJsonConf().LevelConfig { + for _, val := range jsonconf.GetJsonConf().LevelConfig { if lv == val.Level { return &val } @@ -69,7 +70,7 @@ func GetUserLvConfig(lv int) *jsonconf.LevelDesc { } func GetTaskConfig(taskid int) *jsonconf.AchieveDesc { - for _,val := range jsonconf.GetJsonConf().TaskConfig { + for _, val := range jsonconf.GetJsonConf().TaskConfig { if val.Id == taskid { return &val } @@ -78,7 +79,7 @@ func GetTaskConfig(taskid int) *jsonconf.AchieveDesc { } func GetAchieveConfig(taskid int) *jsonconf.AchieveDesc { - for _,val := range jsonconf.GetJsonConf().AchieventConfig { + for _, val := range jsonconf.GetJsonConf().AchieventConfig { if val.Id == taskid { return &val } @@ -88,39 +89,38 @@ func GetAchieveConfig(taskid int) *jsonconf.AchieveDesc { func (uinfo *UserData) CalcTaskList(list *TaskList) { - for k,val := range list.Taskdata { + 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) + 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{ + if nowloginday == lastloginday && val.Taskstatus == 1 { list.Taskdata[k].Taskprogress = 1 list.Taskdata[k].Taskstatus = 2 } - }else if cfg.TaskType == DAILY_TASKTYPE_GETGUANCNT { + } 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 { + } 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 { + } 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 @@ -130,12 +130,12 @@ func (uinfo *UserData) CalcTaskList(list *TaskList) { if uinfo.Task.GetRedbagCnt >= cfg.Num { list.Taskdata[k].Taskstatus = 2 } - }else if cfg.TaskType == DAILY_TASKTYPE_GETGUANGOLD { + } 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 { + } 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 @@ -145,7 +145,7 @@ func (uinfo *UserData) CalcTaskList(list *TaskList) { } //需要保存到redis - SaveTaskInfo(uinfo.Userid,1,list) + SaveTaskInfo(uinfo.Userid, 1, list) //排序 sort.Sort(list) @@ -165,26 +165,26 @@ func (uinfo *UserData) CalcAchieveProgress(ttype int) int { case ACHIEVETYPE_USEITEMCNT: rtval = uinfo.Achieve.SumUseItemCnt default: - logger.Error("CalcAchieveProgress type wrong ttype=%v",ttype) + logger.Error("CalcAchieveProgress type wrong ttype=%v", ttype) } return rtval } //成就返回的是新的成就列表 -func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList{ +func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList { newlist := new(TaskList) - curtype := -1 //记录当前类型 + curtype := -1 //记录当前类型 //第一遍首先将所有进度设置为正确的状态 - for k,val := range list.Taskdata { + for k, val := range list.Taskdata { cfg := GetAchieveConfig(val.Taskid) if cfg == nil { - logger.Error("CalcAchieveList GetTaskConfig failed id=%v",val.Taskid) + logger.Error("CalcAchieveList GetTaskConfig failed id=%v", val.Taskid) continue } - list.Taskdata[k].Taskprogress =uinfo.CalcAchieveProgress(cfg.TaskType) + list.Taskdata[k].Taskprogress = uinfo.CalcAchieveProgress(cfg.TaskType) switch cfg.TaskType { case ACHIEVETYPE_WATCHADDS: if uinfo.Achieve.WatchAdsCnt >= cfg.Num { @@ -207,16 +207,15 @@ func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList{ list.Taskdata[k].Taskstatus = 2 } default: - logger.Error("CalcAchieveProgress type wrong ttype=%v",cfg.TaskType) + logger.Error("CalcAchieveProgress type wrong ttype=%v", cfg.TaskType) } } - - for k,val := range list.Taskdata { + for k, val := range list.Taskdata { cfg := GetAchieveConfig(val.Taskid) if cfg == nil { - logger.Error("CalcAchieveList GetTaskConfig failed id=%v",val.Taskid) + logger.Error("CalcAchieveList GetTaskConfig failed id=%v", val.Taskid) continue } @@ -224,98 +223,97 @@ func (uinfo *UserData) CalcAchieveList(list *TaskList) *TaskList{ //未领取已完成 只需要加入第一种 if curtype == cfg.TaskType { continue - }else { + } else { //将类型加入返回列表 - newlist.Taskdata = append(newlist.Taskdata,list.Taskdata[k]) + newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) curtype = cfg.TaskType } - }else if val.Taskstatus == 1 { + } else if val.Taskstatus == 1 { //未完成 返回第一个 if curtype == cfg.TaskType { continue - }else { + } else { //将类型加入返回列表 - newlist.Taskdata = append(newlist.Taskdata,list.Taskdata[k]) + newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) curtype = cfg.TaskType } - }else { + } else { //已领取 需要判断一下是否最后一项 - if k!= len(list.Taskdata)-1 { + if k != len(list.Taskdata)-1 { //不是最后一条数据 nextcfg := GetAchieveConfig(list.Taskdata[k+1].Taskid) - if nextcfg!=nil { + if nextcfg != nil { if nextcfg.TaskType != cfg.TaskType { //下面一天不是此类型了 - newlist.Taskdata = append(newlist.Taskdata,list.Taskdata[k]) + newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) curtype = cfg.TaskType } } } else { //最后一条 加入 - newlist.Taskdata = append(newlist.Taskdata,list.Taskdata[k]) + newlist.Taskdata = append(newlist.Taskdata, list.Taskdata[k]) curtype = cfg.TaskType } } - } //保存旧的列表 - SaveTaskInfo(uinfo.Userid,2,list) + SaveTaskInfo(uinfo.Userid, 2, list) //将返回的列表排序 sort.Sort(newlist) - logger.Info("CalcAchieveList alist=%v",newlist) + logger.Info("CalcAchieveList alist=%v", newlist) return newlist } -func SaveTaskInfo(uuid ,tasktype int,list *TaskList) error { - savestr,err := json.Marshal(list) +func SaveTaskInfo(uuid, tasktype int, list *TaskList) error { + savestr, err := json.Marshal(list) if err != nil { - logger.Error("SaveTaskInfo err =%v",err) + 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)) - }else { + 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)) + } else { logger.Error("tasktype invalid") return errors.New("tasktype invalid") } return err } -func GetTaskInfo(uuid ,tasktype int) (*TaskList,error) { +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 { + 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") + return nil, errors.New("tasktype invalid") } var list TaskList - err = json.Unmarshal([]byte(data),&list) + err = json.Unmarshal([]byte(data), &list) if err != nil { - logger.Error("GetTaskInfo err=%v",err) - return nil,err + logger.Error("GetTaskInfo err=%v", err) + return nil, err } - return &list,err + return &list, err } //处理领取任务 -func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq,resp *GettaskrewardResp,list *TaskList) error { +func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq, resp *GettaskrewardResp, list *TaskList) error { isfind := false index := -1 var taskdesc *TaskListDesc - for k,val := range list.Taskdata { + for k, val := range list.Taskdata { if val.Taskid == req.Taskid { isfind = true index = k @@ -324,7 +322,7 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq,resp *Gettaskre } } - if isfind && taskdesc != nil && index != -1{ + if isfind && taskdesc != nil && index != -1 { if taskdesc.Taskstatus != 2 { //状态不是可领取状态 无法领取 resp.Code = ERROR_TASKCANNOTGET @@ -340,14 +338,14 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq,resp *Gettaskre return errors.New("当前任务未完成或已领取") } } - }else { + } else { resp.Code = ERROR_TASKID_WRONG resp.Message = "当前任务id错误" return errors.New("当前任务id错误") } cfg := GetTaskConfig(taskdesc.Taskid) - if cfg == nil || len (cfg.Reward) < 2{ + if cfg == nil || len(cfg.Reward) < 2 { resp.Code = ERROR_SRV_ERROR resp.Message = "网络错误" return errors.New("获取配置失败") @@ -357,10 +355,10 @@ func (uinfo *UserData) HandleGetTaskReward(req *GettaskrewardReq,resp *Gettaskre list.Taskdata[index].Taskstatus = 0 //发奖励 sub := len(cfg.Reward) / 2 - for i:=0;i 86400 { + if int64(u.LastLoginTime)-time.Now().Unix() > 86400 { //已经过了很多天了 //u.LastLoginTime = int(time.Now().Unix()) u.ContinueLoginDay = 1 isdiffday = true - }else { + } else { //t同一天 不做处理 } - }else { + } else { //不是同一天了 isdiffday = true - if nowtimestamp.Unix() > lasttimestamp.Unix() + 86399 { + if nowtimestamp.Unix() > lasttimestamp.Unix()+86399 { //超过一天了 u.ContinueLoginDay = 1 - }else { - u.ContinueLoginDay ++ + } else { + u.ContinueLoginDay++ } } @@ -551,6 +548,17 @@ func (u *UserData) HandlePassDay() { 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) + } } u.LastLoginTime = int(nowtime.Unix()) @@ -558,9 +566,9 @@ func (u *UserData) HandlePassDay() { SaveUserInfo(u) } -func GetUserData(uuid int, req *UserLoginReq,resp *UserLoginResp) error{ - data,err := GetUserInfo(uuid) - if err != nil || data == nil{ +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 @@ -570,7 +578,7 @@ func GetUserData(uuid int, req *UserLoginReq,resp *UserLoginResp) error{ data.HandlePassDay() //此处处理一下从sdk拉取钱包金币数量 - gold,err := GetCoinFromSdk(uuid,req.Gameid,req.Channel) + gold, err := GetCoinFromSdk(uuid, req.Gameid, req.Channel) if err != nil { data.RealGold = gold } @@ -579,7 +587,7 @@ func GetUserData(uuid int, req *UserLoginReq,resp *UserLoginResp) error{ if data.LvRewardGet == 1 { cfg := GetUserLvConfig(data.Lv) if cfg != nil { - gold,err := AddCoinToSdk(uuid,cfg.Cash,req.Gameid,req.Channel,100) + gold, err := AddCoinToSdk(uuid, cfg.Cash, req.Gameid, req.Channel, 100) if err != nil { data.RealGold = gold } @@ -600,46 +608,46 @@ func GetUserData(uuid int, req *UserLoginReq,resp *UserLoginResp) error{ } //获取提现记录 -func GetWithDrawList(uuid int) (*WithDrawList,error) { +func GetWithDrawList(uuid int) (*WithDrawList, error) { var list *WithDrawList list = new(WithDrawList) - liststr,err := redishandler.GetRedisClient().HGet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid)) + liststr, err := redishandler.GetRedisClient().HGet(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid)) if err != nil { - return nil,err + return nil, err } - err = json.Unmarshal([]byte(liststr),list) + err = json.Unmarshal([]byte(liststr), list) if err != nil { - return nil,err + return nil, err } - return list,nil + return list, nil } -func (uinfo *UserData)GetWithDrawData(money float32) (int,*WithDrawDesc){ +func (uinfo *UserData) GetWithDrawData(money float32) (int, *WithDrawDesc) { //处理提现状态 - for k,val := range uinfo.WithDraw.Cashdata { - if val.Cnum == money{ - return k,&val + for k, val := range uinfo.WithDraw.Cashdata { + if val.Cnum == money { + return k, &val } } - return -1,nil + return -1, nil } //添加提现记录 -func AddWithDrawList(uuid int,data *WithDrawRecord) error { - exist,err := redishandler.GetRedisClient().HExists(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid)) +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) + tmp.Withdata = append(tmp.Withdata, *data) - savestr,err := json.Marshal(&tmp) + savestr, err := json.Marshal(&tmp) if err != nil { return err } - err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST,strconv.Itoa(uuid),string(savestr)) + err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid), string(savestr)) return err } @@ -654,35 +662,33 @@ func AddWithDrawList(uuid int,data *WithDrawRecord) error { return err }*/ - list,err := GetWithDrawList(uuid) - if err != nil || list == nil{ - logger.Error("AddWithDrawList err=%v",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) + 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)) + err = redishandler.GetRedisClient().HSet(redis.USER_WITHDRAW_RECORDLIST, strconv.Itoa(uuid), string(savestr)) return err - - } //返回是否升级 -func (uinfo* UserData) AddUserExp(num int) bool { +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) + logger.Error("AddUserExp fail lv=%v", uinfo.Lv) break } //判断下是否满级了 - nexcfg := GetUserLvConfig(uinfo.Lv+1) + nexcfg := GetUserLvConfig(uinfo.Lv + 1) if nexcfg == nil { //已经满级了 uinfo.Exp += totalexp @@ -696,10 +702,10 @@ func (uinfo* UserData) AddUserExp(num int) bool { //不够升级的 uinfo.Exp += totalexp break - }else { + } else { //够升级的 升一级 - uinfo.Lv ++ - uinfo.LvRewardGet = 1 //当前等级奖励置位可以领取 + uinfo.Lv++ + uinfo.LvRewardGet = 1 //当前等级奖励置位可以领取 isup = true totalexp -= needexp uinfo.Exp = 0 @@ -710,16 +716,60 @@ func (uinfo* UserData) AddUserExp(num int) bool { return isup } -func GetCoinFromSdk(uuid int,gameid string,channel string) (int,error) { - return 0,nil +func GetCoinFromSdk(uuid int, gameid string, channel string) (int, error) { + return 0, nil } -func AddCoinToSdk(uuid int,goldnum int,gameid string,channel string,atype int) (int,error) { - //暂时先不对接 接口调通遗憾对接后台 - return 0,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) + + //排序 + sort.Strings(paramlist) + + //拼接 + sumparam := "" + for _, val := range paramlist { + sumparam += val + } + + //加serverkey + signsum := sumparam + XIAOXINGXING_SERVERKEY + logger.Info("AddCoinToSdk sumparam=%v", signsum) + + //进行hash + h := sha1.New() + h.Write([]byte(signsum)) + bs := h.Sum(nil) + sign := hex.EncodeToString(bs) + + var req AddCoinDesc + req.Channel = channel + req.Gameid = gameid + req.Coin = goldnum + req.Sign = sign + req.Sign_type = sign_type + req.Time_stamp = time_stamp + req.Typ = atype + req.Uid = uuid + + return 0, nil } -func GetCashFromSDK(uuid int,goldnum int,gameid ,channel,openid,nickname,headurl string) (int,error) { +func GetCashFromSDK(uuid int, goldnum int, gameid, channel, openid, nickname, headurl string) (int, error) { //先不接 - return 0,nil -} \ No newline at end of file + return 0, nil +} -- libgit2 0.21.0