Explorar o código

feat:p525调整兑换及下载接口

fuwencai hai 1 ano
pai
achega
1d3251dc15

+ 2 - 1
jydocs-back/config.json

@@ -38,7 +38,8 @@
       "key": "jydocs.partnerlib.rpc",
       "address": [
         "192.168.3.206:2379"
-      ]
+      ],
+      "timeout": 5000
     }
   },
   "indexSearchTag": [

+ 5 - 0
jydocs-back/public/consts.go

@@ -19,4 +19,9 @@ const (
 	PartnerState            = 1 // 豆丁
 	DdUserBuyType0          = 0 // 购买类型: 剑鱼文库会员超过10篇免费或者文库会员购买精品文档
 	DdUserBuyType1          = 1 // 购买类型:1 币买文档
+
+	RepeatKey = "docBuy_%d" // 一秒内重复请求
+	RedisCode = "new_other"
+
+	file_upload_ing = "file_upload_ing_%s" // 文档正在上传
 )

+ 12 - 0
jydocs-back/public/util.go

@@ -1,6 +1,7 @@
 package public
 
 import (
+	"app.yhyue.com/moapp/jybase/redis"
 	"fmt"
 	"sync"
 )
@@ -56,3 +57,14 @@ func GetNewDocBuyLock(str string) *sync.Mutex {
 	PLock.Unlock()
 	return PLock.UserLock[str]
 }
+
+func RequestValidation(positionId int64) (err error) {
+	repeatKey := fmt.Sprintf(RepeatKey, positionId)
+	if ok, redisErr := redis.Exists(RedisCode, repeatKey); ok && redisErr == nil {
+		err = fmt.Errorf("请求频繁 稍后再试")
+		return
+	}
+	//方式重复性请求--1秒内 允许请求一次
+	redis.Put("other", repeatKey, "REPEAT", 1)
+	return
+}

+ 1 - 1
jydocs-back/rpc/partnerRpc.go

@@ -18,7 +18,7 @@ func init() {
 		Etcd: discov.EtcdConf{
 			Key:   config.JyDocsAppConfig.RpcServers.Partner.Key,
 			Hosts: config.JyDocsAppConfig.RpcServers.Partner.Address,
-		},
+		}, Timeout: config.JyDocsAppConfig.RpcServers.Partner.Timeout,
 	}))
 }
 

+ 3 - 0
jydocs-back/servers/stdDoc.go

@@ -191,6 +191,9 @@ func (stdDoc *StdDoc) GetDoc(sign string) {
 		}
 		fileId := detail.OssPdfId
 		if sign == "Down" {
+			if b, _ := redis.Exists(public.RedisCode, fmt.Sprintf("file_upload_ing_%s", fileId)); b {
+				return nil, fmt.Errorf("文档正在上传中,请稍后再试")
+			}
 			fileId = detail.OssDocId
 		}
 		url, err := rpc.GetFileContext(userId, fileId)

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

@@ -90,6 +90,10 @@ func (userDoc *UserDoc) CollectRemove() {
 func (userDoc *UserDoc) DocBuy() {
 	// 加用户锁
 	userInfo := public.GetUserBaseInfo(userDoc.Session())
+	if err := public.RequestValidation(userInfo.PositionId); err != nil {
+		userDoc.ServeJson(NewResult(nil, err))
+		return
+	}
 	userId := userInfo.UserId
 	pLock := public.GetNewDocBuyLock(fmt.Sprintf("%s", userId))
 	pLock.Lock()

+ 5 - 4
jydocs-back/test/p525.http

@@ -42,11 +42,11 @@ Cookie: SESSIONID=d6d16e5272466216cb3fb63c80f82cb2938a4e6c;
 
 docId=docin-3176669581
 ###
-POST http://127.0.0.1:821/jydocs/user/buy
+POST https://jybx3-webtest.jydev.jianyu360.com/jydocs/user/buy
 Content-Type: application/x-www-form-urlencoded
 Cookie: SESSIONID=751b0b54bed58be980d081413c75088de0b1b6cb;
 
-docId=docin-3176669650&phone=18439509554&payType=1
+docId=26aa403e-899e-11eb-8b3b-0050568f51e7
 
 ###
 POST https://jybx3-webtest.jydev.jianyu360.com/jydocs/user/collect/add
@@ -56,8 +56,9 @@ Cookie: SESSIONID=751b0b54bed58be980d081413c75088de0b1b6cb;
 docId=docin-3176670033
 
 ###
-POST https://jybx3-webtest.jydev.jianyu360.com/jydocs/user/list
+POST http://127.0.0.1:821/jydocs/user/list
 Content-Type: application/x-www-form-urlencoded
 Cookie: SESSIONID=d6d16e5272466216cb3fb63c80f82cb2938a4e6c;
 
-sign=1&num=1&size=10
+sign=1&num=1&size=10
+