package logic import ( "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 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 { return 0 } 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 }