修复用户同步请求数据问题

This commit is contained in:
junleea 2024-12-15 17:58:29 +08:00
parent 6560a9a5c2
commit 27858d41e7
3 changed files with 33 additions and 9 deletions

View File

@ -150,3 +150,9 @@ type UserSyncResp struct {
Add []User `json:"add" form:"add"` //添加用户 Add []User `json:"add" form:"add"` //添加用户
Delete []proto.UserDelID `json:"delete" form:"delete"` //删除用户 Delete []proto.UserDelID `json:"delete" form:"delete"` //删除用户
} }
// 清空用户表
func ClearAllUsers() error {
res := DB.Exec("TRUNCATE TABLE users")
return res.Error
}

View File

@ -115,6 +115,12 @@ func UserSyncDataFromMaster() {
var is_all bool //是否全量同步 var is_all bool //是否全量同步
if all == "" || all == "1" { if all == "" || all == "1" {
is_all = true is_all = true
//清空数据表
err := dao.ClearAllUsers()
if err != nil {
fmt.Println("All ClearAllUsers error:", err)
return
}
worker.SetRedis("user_sync_all", "1") worker.SetRedis("user_sync_all", "1")
req.Types = 1 req.Types = 1
} else { } else {
@ -122,7 +128,11 @@ func UserSyncDataFromMaster() {
req.Types = 2 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 add_users := user_sync_data.Add
update_users := user_sync_data.Update update_users := user_sync_data.Update
delete_users := user_sync_data.Delete delete_users := user_sync_data.Delete
@ -173,6 +183,8 @@ func UserSyncDataFromMaster() {
confirm_req.Types = 3 confirm_req.Types = 3
confirm_req.Confirm = data confirm_req.Confirm = data
worker.SyncDataFromMasterReq2(url, confirm_req) worker.SyncDataFromMasterReq2(url, confirm_req)
} else {
} }
} }

View File

@ -130,16 +130,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 var res proto.UserSync
//从接口获取数据 //从接口获取数据
json_data, err := json.Marshal(data) json_data, err := json.Marshal(data)
if err != nil { if err != nil {
return res return res, err
} }
req, err := http.NewRequest("POST", url, bytes.NewBuffer(json_data)) req, err := http.NewRequest("POST", url, bytes.NewBuffer(json_data))
if err != nil { if err != nil {
return res return res, err
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
//传输数据 //传输数据
@ -149,23 +155,23 @@ func SyncDataFromMasterReq2(url string, data proto.SyncUserReq) proto.UserSync {
//获取数据 //获取数据
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return res return res, err
} }
defer resp.Body.Close() defer resp.Body.Close()
//解析数据 //解析数据
var m map[string]interface{} var m map[string]interface{}
err = json.NewDecoder(resp.Body).Decode(&m) err = json.NewDecoder(resp.Body).Decode(&m)
if err != nil { if err != nil {
return res return res, err
} }
if m["code"].(float64) != 0 { if m["code"].(float64) != 0 {
return res return res, err
} }
err = json.Unmarshal([]byte(m["data"].(string)), &res) err = json.Unmarshal([]byte(m["data"].(string)), &res)
if err != nil { if err != nil {
fmt.Println("SyncDataFromMasterReq2 error decode data:", err) 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)) fmt.Println("SyncDataFromMasterReq2 result add data:", len(res.Add), "update data:", len(res.Update), "delete data:", len(res.Delete))
return res return res, nil
} }