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 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 47 func GetUserInfo(openid string) (*UserData, error) {
36 48  
37 49 //先判断用户是否存在 不存在创建新的用户
... ...
src/HttpServer/logic/logic.go
... ... @@ -7,6 +7,7 @@ import (
7 7 "common/redis"
8 8 "encoding/json"
9 9 "fmt"
  10 + "mysql"
10 11 "net/http"
11 12 "time"
12 13 )
... ... @@ -90,22 +91,60 @@ func HandlerUserlogin(w http.ResponseWriter, data string) {
90 91 }
91 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 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 148 break
110 149 }
111 150 uinfo, err := GetUserInfo(rdata.Openid)
... ...
src/HttpServer/main/main.go
... ... @@ -7,6 +7,7 @@ import (
7 7 "HttpServer/redishandler"
8 8 "common/logger"
9 9 "flag"
  10 + "mysql"
10 11 "os"
11 12 "runtime/pprof"
12 13 "time"
... ... @@ -51,11 +52,11 @@ func main() {
51 52 return
52 53 }
53 54  
54   - /*err = mysql.InitMysql()
  55 + err = mysql.InitMysql()
55 56 if err != nil {
56 57 logger.Error("err init mysql err=%v", err)
57 58 return
58   - }*/
  59 + }
59 60  
60 61 err = jsonconf.LoadJsonConf()
61 62 if err != nil {
... ...
src/mysql/dbmysql.go
... ... @@ -12,7 +12,7 @@ import (
12 12 )
13 13  
14 14 var (
15   - m_game_db *sql.DB
  15 + m_game_db *sql.DB
16 16 )
17 17  
18 18 func InitMysql() error {
... ... @@ -46,7 +46,7 @@ func ExcuteCmd(cmd string) error {
46 46 return err
47 47 }
48 48  
49   -func TestClearData(uid int) (int,error) {
  49 +func TestClearData(uid int) (int, error) {
50 50 cmd := fmt.Sprintf("select coin from b_user_ext_04 where user_id=%d", uid)
51 51  
52 52 rows, err := m_game_db.Query(cmd)
... ... @@ -55,33 +55,32 @@ func TestClearData(uid int) (int,error) {
55 55 }
56 56 if err != nil {
57 57 logger.Notic("TestClearData mysql select error:%v", err)
58   - return 0,err
  58 + return 0, err
59 59 }
60 60  
61   -
62 61 var value int
63 62 for rows.Next() {
64 63  
65 64 err = rows.Scan(&value)
66 65 if err != nil {
67 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 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 79 tablename := "b_base_data_0" + strconv.Itoa(i)
81 80 cmd := "DELETE from " + tablename + " where data_uid= " + strconv.Itoa(uuid)
82 81 err := ExcuteCmd(cmd)
83 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 84 return err
86 85 }
87 86 }
... ... @@ -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 95 tablename := "b_user_ext_0" + strconv.Itoa(i)
99 96 cmd := "SELECT user_id,lv,exp,login_time from " + tablename
100 97 rows, err := m_game_db.Query(cmd)
... ... @@ -112,7 +109,7 @@ func QueryAllData(f *os.File) error{
112 109 Ulv := 0
113 110 Exp := 0
114 111 LoginTime := 0
115   - err = rows.Scan(&Uid, &Ulv, &Exp,&LoginTime) //不scan会导致连接不释放
  112 + err = rows.Scan(&Uid, &Ulv, &Exp, &LoginTime) //不scan会导致连接不释放
116 113 if err != nil {
117 114 logger.Error("Scan failed,err:%v", err)
118 115 return err
... ... @@ -126,10 +123,10 @@ func QueryAllData(f *os.File) error{
126 123 tm := time.Unix(int64(LoginTime), 0)
127 124 //fmt.Println(tm.Format("2006-01-02 15:04:05"))
128 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 127 //logger.Info("ddt str=%v",str)
131 128 if err != nil {
132   - logger.Error("WRITETOFILEFAILED ERR=%v",err)
  129 + logger.Error("WRITETOFILEFAILED ERR=%v", err)
133 130 return err
134 131 }
135 132 //fmt.Fprintln(w, str)
... ... @@ -138,4 +135,35 @@ func QueryAllData(f *os.File) error{
138 135 }
139 136 return nil
140 137  
141   -}
142 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 +}
... ...