Merge branch 'refs/heads/feat-user-sync'

This commit is contained in:
junleea 2024-12-15 18:02:48 +08:00
commit 3238116f37
3 changed files with 38 additions and 12 deletions

View File

@ -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
}

View File

@ -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 {
}
}

View File

@ -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
}