Commit 5dd5d98d5e93e9a35f7995d014f8be444cfac84d

Authored by 李旭
1 parent 04e0d02b
Exists in master

修改Redis读取不到从MySQL读取用户信息

src/HttpServer/logic/function.go
@@ -32,6 +32,18 @@ func SaveUserInfo(data *UserData) error { @@ -32,6 +32,18 @@ func SaveUserInfo(data *UserData) error {
32 return err 32 return err
33 } 33 }
34 34
  35 +func SaveUserInfoByMysql(data UserData) error {
  36 +
  37 + savestr, err := json.Marshal(data)
  38 + if err != nil {
  39 + return err
  40 + }
  41 +
  42 + err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, data.Openid, string(savestr))
  43 +
  44 + return err
  45 +}
  46 +
35 func GetUserInfo(openid string) (*UserData, error) { 47 func GetUserInfo(openid string) (*UserData, error) {
36 48
37 //先判断用户是否存在 不存在创建新的用户 49 //先判断用户是否存在 不存在创建新的用户
src/HttpServer/logic/logic.go
@@ -7,6 +7,7 @@ import ( @@ -7,6 +7,7 @@ import (
7 "common/redis" 7 "common/redis"
8 "encoding/json" 8 "encoding/json"
9 "fmt" 9 "fmt"
  10 + "mysql"
10 "net/http" 11 "net/http"
11 "time" 12 "time"
12 ) 13 )
@@ -90,22 +91,60 @@ func HandlerUserlogin(w http.ResponseWriter, data string) { @@ -90,22 +91,60 @@ func HandlerUserlogin(w http.ResponseWriter, data string) {
90 } 91 }
91 if !isexist { 92 if !isexist {
92 //不存在 新号 93 //不存在 新号
93 - tmp := new(UserData)  
94 - err = tmp.InitUserInfo(rdata.Openid) 94 + err, Openid, LastGetTime, LeftCnt, MaxLevel, Property, TotalFetchCnt, SignRound, SingDay, IsSign, TodaySec, PassLvGold, PlayerData, RegTime, isfind := mysql.GetFromBackUp(rdata.Openid)
95 if err != nil { 95 if err != nil {
96 - logger.Info(" HandlerDosign getdata failed:%v,for:%v", err, data)  
97 - resp.RetMsg = "服务器读取数据失败"  
98 - resp.ErrNum = ERROR_SERVER_FAILED  
99 - break 96 + logger.Error("mysql failed err=%v", err)
  97 + }
  98 +
  99 + if isfind {
  100 + var tmp UserData
  101 + tmp.Openid = Openid
  102 + tmp.LastGetTime = LastGetTime
  103 + tmp.LeftCnt = LeftCnt
  104 + tmp.MaxLevel = MaxLevel
  105 + tmp.Property = Property
  106 + tmp.TotalFetchCnt = TotalFetchCnt
  107 + tmp.SignRound = SignRound
  108 + tmp.SingDay = SingDay
  109 + tmp.IsSign = IsSign
  110 + tmp.TodaySec = TodaySec
  111 + tmp.PassLvGold = PassLvGold
  112 + tmp.PlayerData = PlayerData
  113 + tmp.RegTime = RegTime
  114 + err = SaveUserInfoByMysql(tmp)
  115 + if err != nil {
  116 + logger.Info(" HandlerDosign getdata failed:%v,for:%v", err, data)
  117 + resp.RetMsg = "服务器读取数据失败"
  118 + resp.ErrNum = ERROR_SERVER_FAILED
  119 + break
  120 + }
  121 +
  122 + resp.RetData.IsNew = 1
  123 + resp.RetData.PlayerData = tmp.PlayerData
  124 + resp.RetData.Id = rdata.Openid
  125 + resp.RetData.RegisterTime = tmp.RegTime
  126 + resp.RetData.Curday = tmp.SingDay
  127 + resp.RetData.Curround = tmp.SignRound
  128 + resp.RetData.Issigntaday = tmp.IsSign
  129 + } else {
  130 + tmp := new(UserData)
  131 + err = tmp.InitUserInfo(rdata.Openid)
  132 + if err != nil {
  133 + logger.Info(" HandlerDosign getdata failed:%v,for:%v", err, data)
  134 + resp.RetMsg = "服务器读取数据失败"
  135 + resp.ErrNum = ERROR_SERVER_FAILED
  136 + break
  137 + }
  138 +
  139 + resp.RetData.IsNew = 1
  140 + resp.RetData.PlayerData = tmp.PlayerData
  141 + resp.RetData.Id = rdata.Openid
  142 + resp.RetData.RegisterTime = tmp.RegTime
  143 + resp.RetData.Curday = tmp.SingDay
  144 + resp.RetData.Curround = tmp.SignRound
  145 + resp.RetData.Issigntaday = tmp.IsSign
100 } 146 }
101 147
102 - resp.RetData.IsNew = 1  
103 - resp.RetData.PlayerData = tmp.PlayerData  
104 - resp.RetData.Id = rdata.Openid  
105 - resp.RetData.RegisterTime = tmp.RegTime  
106 - resp.RetData.Curday = tmp.SingDay  
107 - resp.RetData.Curround = tmp.SignRound  
108 - resp.RetData.Issigntaday = tmp.IsSign  
109 break 148 break
110 } 149 }
111 uinfo, err := GetUserInfo(rdata.Openid) 150 uinfo, err := GetUserInfo(rdata.Openid)
src/HttpServer/main/main.go
@@ -7,6 +7,7 @@ import ( @@ -7,6 +7,7 @@ import (
7 "HttpServer/redishandler" 7 "HttpServer/redishandler"
8 "common/logger" 8 "common/logger"
9 "flag" 9 "flag"
  10 + "mysql"
10 "os" 11 "os"
11 "runtime/pprof" 12 "runtime/pprof"
12 "time" 13 "time"
@@ -51,11 +52,11 @@ func main() { @@ -51,11 +52,11 @@ func main() {
51 return 52 return
52 } 53 }
53 54
54 - /*err = mysql.InitMysql() 55 + err = mysql.InitMysql()
55 if err != nil { 56 if err != nil {
56 logger.Error("err init mysql err=%v", err) 57 logger.Error("err init mysql err=%v", err)
57 return 58 return
58 - }*/ 59 + }
59 60
60 err = jsonconf.LoadJsonConf() 61 err = jsonconf.LoadJsonConf()
61 if err != nil { 62 if err != nil {
src/mysql/dbmysql.go
@@ -12,7 +12,7 @@ import ( @@ -12,7 +12,7 @@ import (
12 ) 12 )
13 13
14 var ( 14 var (
15 - m_game_db *sql.DB 15 + m_game_db *sql.DB
16 ) 16 )
17 17
18 func InitMysql() error { 18 func InitMysql() error {
@@ -46,7 +46,7 @@ func ExcuteCmd(cmd string) error { @@ -46,7 +46,7 @@ func ExcuteCmd(cmd string) error {
46 return err 46 return err
47 } 47 }
48 48
49 -func TestClearData(uid int) (int,error) { 49 +func TestClearData(uid int) (int, error) {
50 cmd := fmt.Sprintf("select coin from b_user_ext_04 where user_id=%d", uid) 50 cmd := fmt.Sprintf("select coin from b_user_ext_04 where user_id=%d", uid)
51 51
52 rows, err := m_game_db.Query(cmd) 52 rows, err := m_game_db.Query(cmd)
@@ -55,33 +55,32 @@ func TestClearData(uid int) (int,error) { @@ -55,33 +55,32 @@ func TestClearData(uid int) (int,error) {
55 } 55 }
56 if err != nil { 56 if err != nil {
57 logger.Notic("TestClearData mysql select error:%v", err) 57 logger.Notic("TestClearData mysql select error:%v", err)
58 - return 0,err 58 + return 0, err
59 } 59 }
60 60
61 -  
62 var value int 61 var value int
63 for rows.Next() { 62 for rows.Next() {
64 63
65 err = rows.Scan(&value) 64 err = rows.Scan(&value)
66 if err != nil { 65 if err != nil {
67 logger.Notic("TestClearData mysql handle result error:%v", err) 66 logger.Notic("TestClearData mysql handle result error:%v", err)
68 - return 0,err 67 + return 0, err
69 } 68 }
70 - logger.Info("TestClearData coin=%v",value) 69 + logger.Info("TestClearData coin=%v", value)
71 70
72 break 71 break
73 } 72 }
74 - return value,nil 73 + return value, nil
75 } 74 }
76 75
77 -func DoClearData(uuid int) error{ 76 +func DoClearData(uuid int) error {
78 //先删除十张分表的数据 77 //先删除十张分表的数据
79 - for i:=0;i<10;i++ { 78 + for i := 0; i < 10; i++ {
80 tablename := "b_base_data_0" + strconv.Itoa(i) 79 tablename := "b_base_data_0" + strconv.Itoa(i)
81 cmd := "DELETE from " + tablename + " where data_uid= " + strconv.Itoa(uuid) 80 cmd := "DELETE from " + tablename + " where data_uid= " + strconv.Itoa(uuid)
82 err := ExcuteCmd(cmd) 81 err := ExcuteCmd(cmd)
83 if err != nil { 82 if err != nil {
84 - logger.Error("DoClearData err=%v,cmd=%v",err,cmd) 83 + logger.Error("DoClearData err=%v,cmd=%v", err, cmd)
85 return err 84 return err
86 } 85 }
87 } 86 }
@@ -89,12 +88,10 @@ func DoClearData(uuid int) error{ @@ -89,12 +88,10 @@ func DoClearData(uuid int) error{
89 88
90 } 89 }
91 90
92 -  
93 -  
94 -func QueryAllData(f *os.File) error{ 91 +func QueryAllData(f *os.File) error {
95 92
96 //先查询十张分表的数据 93 //先查询十张分表的数据
97 - for i:=0;i<10;i++ { 94 + for i := 0; i < 10; i++ {
98 tablename := "b_user_ext_0" + strconv.Itoa(i) 95 tablename := "b_user_ext_0" + strconv.Itoa(i)
99 cmd := "SELECT user_id,lv,exp,login_time from " + tablename 96 cmd := "SELECT user_id,lv,exp,login_time from " + tablename
100 rows, err := m_game_db.Query(cmd) 97 rows, err := m_game_db.Query(cmd)
@@ -112,7 +109,7 @@ func QueryAllData(f *os.File) error{ @@ -112,7 +109,7 @@ func QueryAllData(f *os.File) error{
112 Ulv := 0 109 Ulv := 0
113 Exp := 0 110 Exp := 0
114 LoginTime := 0 111 LoginTime := 0
115 - err = rows.Scan(&Uid, &Ulv, &Exp,&LoginTime) //不scan会导致连接不释放 112 + err = rows.Scan(&Uid, &Ulv, &Exp, &LoginTime) //不scan会导致连接不释放
116 if err != nil { 113 if err != nil {
117 logger.Error("Scan failed,err:%v", err) 114 logger.Error("Scan failed,err:%v", err)
118 return err 115 return err
@@ -126,10 +123,10 @@ func QueryAllData(f *os.File) error{ @@ -126,10 +123,10 @@ func QueryAllData(f *os.File) error{
126 tm := time.Unix(int64(LoginTime), 0) 123 tm := time.Unix(int64(LoginTime), 0)
127 //fmt.Println(tm.Format("2006-01-02 15:04:05")) 124 //fmt.Println(tm.Format("2006-01-02 15:04:05"))
128 str := strconv.Itoa(Uid) + " " + strconv.Itoa(Ulv) + " " + strconv.Itoa(Exp) + " " + tm.Format("2006-01-02 15:04:05") + "\n" 125 str := strconv.Itoa(Uid) + " " + strconv.Itoa(Ulv) + " " + strconv.Itoa(Exp) + " " + tm.Format("2006-01-02 15:04:05") + "\n"
129 - _,err = f.WriteString(str) 126 + _, err = f.WriteString(str)
130 //logger.Info("ddt str=%v",str) 127 //logger.Info("ddt str=%v",str)
131 if err != nil { 128 if err != nil {
132 - logger.Error("WRITETOFILEFAILED ERR=%v",err) 129 + logger.Error("WRITETOFILEFAILED ERR=%v", err)
133 return err 130 return err
134 } 131 }
135 //fmt.Fprintln(w, str) 132 //fmt.Fprintln(w, str)
@@ -138,4 +135,35 @@ func QueryAllData(f *os.File) error{ @@ -138,4 +135,35 @@ func QueryAllData(f *os.File) error{
138 } 135 }
139 return nil 136 return nil
140 137
141 -}  
142 \ No newline at end of file 138 \ No newline at end of file
  139 +}
  140 +
  141 +func GetFromBackUp(openid string) (err error, Openid string, LastGetTime, LeftCnt, MaxLevel int, Property int64, TotalFetchCnt, SignRound, SingDay, IsSign, TodaySec, PassLvGold int, PlayerData string, RegTime int, isfind bool) {
  142 + isfind = false
  143 + cmd := fmt.Sprintf("select Openid,LastGetTime,LeftCnt,MaxLevel,Property,TotalFetchCnt,SignRound,SingDay,IsSign,TodaySec,PassLvGold,PlayerData,RegTime from userdata where Openid='%s' limit 1", openid)
  144 + rows, err := m_game_db.Query(cmd)
  145 + if rows != nil {
  146 + defer rows.Close()
  147 + }
  148 +
  149 + logger.Error("cmd", cmd)
  150 +
  151 + if err != nil {
  152 + logger.Notic("GetFromBackUp mysql select error:%v", err)
  153 + return
  154 + }
  155 + for rows.Next() {
  156 +
  157 + err = rows.Scan(&Openid, &LastGetTime, &LeftCnt, &MaxLevel, &Property, &TotalFetchCnt, &SignRound, &SingDay, &IsSign, &TodaySec, &PassLvGold, &PlayerData, &RegTime)
  158 + if err != nil {
  159 + logger.Notic("GetFromBackUp mysql handle result error:%v", err)
  160 + return
  161 + }
  162 +
  163 + isfind = true
  164 + logger.Info("GetFromBackUp openid=%v", openid)
  165 +
  166 + break
  167 + }
  168 +
  169 + return
  170 +}