diff --git a/dao/user.go b/dao/user.go index 5f10bbe..d7c7bf1 100644 --- a/dao/user.go +++ b/dao/user.go @@ -150,3 +150,9 @@ type UserSyncResp struct { Add []User `json:"add" form:"add"` //添加用户 Delete []proto.UserDelID `json:"delete" form:"delete"` //删除用户 } + +// 清空用户表 +func ClearAllUsers() error { + res := DB.Exec("TRUNCATE TABLE users") + return res.Error +} diff --git a/service/userService.go b/service/userService.go index b670b83..915ecc5 100644 --- a/service/userService.go +++ b/service/userService.go @@ -115,6 +115,12 @@ func UserSyncDataFromMaster() { var is_all bool //是否全量同步 if all == "" || all == "1" { is_all = true + //清空数据表 + err := dao.ClearAllUsers() + if err != nil { + fmt.Println("All ClearAllUsers error:", err) + return + } worker.SetRedis("user_sync_all", "1") req.Types = 1 } else { @@ -122,7 +128,11 @@ func UserSyncDataFromMaster() { req.Types = 2 } - user_sync_data := worker.SyncDataFromMasterReq2(url, req) + user_sync_data, err := worker.SyncDataFromMasterReq2(url, req) + if err != nil { + fmt.Println("UserSyncDataFromMaster error:", err) + return + } add_users := user_sync_data.Add update_users := user_sync_data.Update delete_users := user_sync_data.Delete @@ -173,6 +183,8 @@ func UserSyncDataFromMaster() { confirm_req.Types = 3 confirm_req.Confirm = data worker.SyncDataFromMasterReq2(url, confirm_req) + } else { + } } diff --git a/worker/req.go b/worker/req.go index 8dc93ef..28ac772 100644 --- a/worker/req.go +++ b/worker/req.go @@ -7,6 +7,7 @@ import ( "io" "io/ioutil" "net/http" + "strconv" "strings" "videoplayer/proto" ) @@ -130,16 +131,22 @@ func SyncDataFromMasterReq(url string, token string) proto.UserSync { } // 获取数据,全量及增量 -func SyncDataFromMasterReq2(url string, data proto.SyncUserReq) proto.UserSync { +func SyncDataFromMasterReq2(url string, data proto.SyncUserReq) (proto.UserSync, error) { + defer func() { + if r := recover(); r != nil { + fmt.Println("SyncDataFromMasterReq2 error:", r) + } + }() + var res proto.UserSync //从接口获取数据 json_data, err := json.Marshal(data) if err != nil { - return res + return res, err } req, err := http.NewRequest("POST", url, bytes.NewBuffer(json_data)) if err != nil { - return res + return res, err } req.Header.Set("Content-Type", "application/json") //传输数据 @@ -149,23 +156,24 @@ func SyncDataFromMasterReq2(url string, data proto.SyncUserReq) proto.UserSync { //获取数据 resp, err := client.Do(req) if err != nil { - return res + return res, err } defer resp.Body.Close() //解析数据 - var m map[string]interface{} + var m map[string]string err = json.NewDecoder(resp.Body).Decode(&m) if err != nil { - return res + return res, err } - if m["code"].(float64) != 0 { - return res + code, _ := strconv.Atoi(m["code"]) + if code != 0 { + return res, err } - err = json.Unmarshal([]byte(m["data"].(string)), &res) + err = json.Unmarshal([]byte(m["data"]), &res) if err != nil { fmt.Println("SyncDataFromMasterReq2 error decode data:", err) - return res + return res, err } fmt.Println("SyncDataFromMasterReq2 result add data:", len(res.Add), "update data:", len(res.Update), "delete data:", len(res.Delete)) - return res + return res, nil }