瀏覽代碼

feat:p525 jydocs-back 兑换接口加用户锁

fuwencai 1 年之前
父節點
當前提交
d30f987285
共有 2 個文件被更改,包括 35 次插入2 次删除
  1. 31 1
      jydocs-back/public/util.go
  2. 4 1
      jydocs-back/servers/userDoc.go

+ 31 - 1
jydocs-back/public/util.go

@@ -1,6 +1,9 @@
 package public
 package public
 
 
-import "fmt"
+import (
+	"fmt"
+	"sync"
+)
 
 
 func PageNumParse(pageNum, pageSize, maxNum int64) (num, size int64, err error) {
 func PageNumParse(pageNum, pageSize, maxNum int64) (num, size int64, err error) {
 	if pageNum < 1 {
 	if pageNum < 1 {
@@ -26,3 +29,30 @@ func PageRange(num, min, max int64) int64 {
 	}
 	}
 	return num
 	return num
 }
 }
+
+var (
+	PLock *DocBuyLock
+)
+
+type DocBuyLock struct {
+	sync.Mutex
+	UserLock map[string]*sync.Mutex
+}
+
+func NewDocBuyLock() *DocBuyLock {
+	return &DocBuyLock{
+		UserLock: make(map[string]*sync.Mutex),
+	}
+}
+func init() {
+	PLock = NewDocBuyLock()
+}
+
+func GetNewDocBuyLock(str string) *sync.Mutex {
+	PLock.Lock()
+	if PLock.UserLock[str] == nil {
+		PLock.UserLock[str] = &sync.Mutex{}
+	}
+	PLock.Unlock()
+	return PLock.UserLock[str]
+}

+ 4 - 1
jydocs-back/servers/userDoc.go

@@ -88,9 +88,12 @@ func (userDoc *UserDoc) CollectRemove() {
 }
 }
 
 
 func (userDoc *UserDoc) DocBuy() {
 func (userDoc *UserDoc) DocBuy() {
-	// todo 加用户锁
+	// 加用户锁
 	userInfo := public.GetUserBaseInfo(userDoc.Session())
 	userInfo := public.GetUserBaseInfo(userDoc.Session())
 	userId := userInfo.UserId
 	userId := userInfo.UserId
+	pLock := public.GetNewDocBuyLock(fmt.Sprintf("%s", userId))
+	pLock.Lock()
+	defer pLock.Unlock()
 	rData, errMsg := func() (interface{}, error) {
 	rData, errMsg := func() (interface{}, error) {
 		docId := userDoc.GetString("docId")
 		docId := userDoc.GetString("docId")
 		phone := userDoc.GetString("phone")
 		phone := userDoc.GetString("phone")