function.go
2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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
}