package logic import ( "HttpServer/jsonconf" "HttpServer/redishandler" "common/redis" "encoding/json" "net/http" "strconv" "time" ) 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 InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) error{ var initdata UserData initdata.Lv = 1 initdata.Exp = 0 initdata.Userid = uuid initdata.ContinueLoginDay = 1 initdata.GetFromGuanCnt = 0 initdata.GuanGold = 0 initdata.LastLoginTime = int(time.Now().Unix()) initdata.RealGold = 0 initdata.WatchAddsTime =WATCH_ADD_DAY_LIMIT 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.Leftads = initdata.WatchAddsTime resp.Data.Walletgold = initdata.RealGold err := SaveUserInfo(&initdata) return err } //计算当日可提取次数 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()) 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() + 86399 { //超过一天了 u.ContinueLoginDay = 1 }else { u.ContinueLoginDay ++ } } if isdiffday { //跨天了 u.WatchAddsTime = WATCH_ADD_DAY_LIMIT //todo 重置任务相关的数据 u.GetFromGuanCnt = 0 } u.LastLoginTime = int(nowtime.Unix()) SaveUserInfo(u) } func GetUserData(uuid int, 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() resp.Data.Walletgold = data.RealGold resp.Data.Leftads = data.WatchAddsTime resp.Data.Guangold = data.GuanGold return nil } //获取提现记录 func GetWithDrawList(uuid int) (*WithDrawList,error) { var list *WithDrawList list = nil 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 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{ 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 AddCoinToSdk(uuid int,goldnum int,gameid string,channel string,atype int) (int,error) { //暂时先不对接 接口调通遗憾对接后台 return 0,nil } func GetCashFromSDK(uuid int,goldnum int,gameid ,channel,openid,nickname,headurl string) (int,error) { //先不接 return 0,nil }