فهرست منبع

fix:用户全量/增量同步增加锁,避免多次执行

Roc 11 ماه پیش
والد
کامیت
f6508fa432
2فایلهای تغییر یافته به همراه19 افزوده شده و 1 حذف شده
  1. 13 1
      controller/xiangyu/user.go
  2. 6 0
      logic/xiangyu/user.go

+ 13 - 1
controller/xiangyu/user.go

@@ -4,11 +4,15 @@ import (
 	"eta/eta_bridge/controller/resp"
 	"eta/eta_bridge/logic/xiangyu"
 	"github.com/gin-gonic/gin"
+	"sync"
 )
 
 // XiangyuController 象屿指标
 type XiangyuController struct{}
 
+// 同步用户锁,防止重复同步,不管是全量还是增量,都是同一时间只能一个同步
+var lockSyncUser sync.Mutex
+
 // SyncUser
 // @Description: 全量同步用户
 // @author: Roc
@@ -16,13 +20,17 @@ type XiangyuController struct{}
 // @datetime 2024-01-22 15:51:25
 // @param c *gin.Context
 func (xc *XiangyuController) SyncUser(c *gin.Context) {
+	lockSyncUser.Lock()
+	defer func() {
+		lockSyncUser.Unlock()
+	}()
 	err := xiangyu.SyncUser()
 	if err != nil {
 		resp.FailData("同步失败", err.Error(), c)
 		return
 	}
 	resp.Ok("同步成功", c)
-	
+
 	return
 }
 
@@ -33,6 +41,10 @@ func (xc *XiangyuController) SyncUser(c *gin.Context) {
 // @datetime 2024-01-23 17:13:07
 // @param c *gin.Context
 func (xc *XiangyuController) PullUser(c *gin.Context) {
+	lockSyncUser.Lock()
+	defer func() {
+		lockSyncUser.Unlock()
+	}()
 	err := xiangyu.PullUser()
 	if err != nil {
 		resp.FailData("同步失败", err.Error(), c)

+ 6 - 0
logic/xiangyu/user.go

@@ -378,6 +378,12 @@ func handleUser(xyUserInfo xiangyu.UserData, xyUserId string, departmentMap map[
 			userInfo.OutID = xyUserId
 		}
 
+		// 工号
+		if userInfo.EmployeeId != xyUserInfo.EmployeeNo {
+			updateColList = append(updateColList, "EmployeeId")
+			userInfo.OutID = xyUserInfo.EmployeeNo
+		}
+
 		if len(updateColList) > 0 {
 			updateColList = append(updateColList, "LastUpdatedTime")
 			userInfo.LastUpdatedTime = time.Now()