Преглед на файлове

feat:p525 jydoc-back 兑换接口、详情页接口调整

fuwencai преди 1 година
родител
ревизия
0c76261d27
променени са 6 файла, в които са добавени 49 реда и са изтрити 45 реда
  1. 2 7
      jydocs-back/config.json
  2. 3 3
      jydocs-back/config/config.go
  3. 2 1
      jydocs-back/public/consts.go
  4. 2 2
      jydocs-back/rpc/partnerRpc.go
  5. 22 4
      jydocs-back/servers/stdDoc.go
  6. 18 28
      jydocs-back/servers/userDoc.go

+ 2 - 7
jydocs-back/config.json

@@ -18,7 +18,7 @@
     "userDoc": {
       "key": "jydocs.userlib.rpc",
       "address": [
-        "192.168.3.206:2379"
+        "127.0.0.1:2379"
       ],
       "timeout": 5000
     },
@@ -66,11 +66,6 @@
   "docMember": {
     "times": 100,
     "discount": 8,
-    "source": [
-      "pc_library_details_free",
-      "app_library_details_free",
-      "wx_library_details_free",
-      "h5_library_details_free"
-    ]
+    "freeDocLimit":10
   }
 }

+ 3 - 3
jydocs-back/config/config.go

@@ -34,9 +34,9 @@ type appConfig struct {
 		Base int64 `json:"base"` // 价格基数
 	} `json:"price"`
 	DocMember struct {
-		Times    int      `json:"times"`    // 会员免费下载次数
-		Discount int64    `json:"discount"` // 会员折扣
-		Source   []string `json:"source"`   // 留资source
+		Times        int   `json:"times"`        // 会员免费下载次数
+		Discount     int64 `json:"discount"`     // 会员折扣
+		FreeDocLimit int   `json:"freeDocLimit"` // 豆丁会员免费下载限制
 	} `json:"docMember"`
 }
 

+ 2 - 1
jydocs-back/public/consts.go

@@ -17,5 +17,6 @@ const (
 	StatusMemberFreeExhaust = 1 // 会员免费下载机会用尽
 	AppID                   = "10000"
 	PartnerState            = 1 // 豆丁
-	DdUserBuyType1          = 1 // 购买类型:1 币买文档,2 券买文档,3 月大会员,4 季大会员,5 年大会员
+	DdUserBuyType0          = 0 // 购买类型: 剑鱼文库会员超过10篇免费或者文库会员购买精品文档
+	DdUserBuyType1          = 1 // 购买类型:1 币买文档
 )

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

@@ -44,7 +44,7 @@ func PartDocDownload(docId, mgoUserId, phone string, positionId int64) (*partner
 }
 
 // PartUserBuy 购买
-func PartUserBuy(docId, mgoUserId, phone string, positionId int64) (*partner.UBVRes, error) {
+func PartUserBuy(docId, mgoUserId, phone string, positionId int64, buyType int64) (*partner.UBVRes, error) {
 	resp, err := jyParterLib.UserBuy(context.Background(), &partner.UserBuyVipRequest{
 		MgoUserId:  mgoUserId,
 		Phone:      phone,
@@ -52,7 +52,7 @@ func PartUserBuy(docId, mgoUserId, phone string, positionId int64) (*partner.UBV
 		AppId:      public.AppID,
 		State:      public.PartnerState,
 		DocId:      docId,
-		Type:       public.DdUserBuyType1,
+		Type:       buyType,
 	})
 	if err != nil || resp == nil {
 		log.Printf("%s %d  jyParterLib.PartUserBuy call error %v\n", mgoUserId, positionId, err)

+ 22 - 4
jydocs-back/servers/stdDoc.go

@@ -5,6 +5,7 @@ import (
 	"app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"app.yhyue.com/moapp/jybase/redis"
+	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"fmt"
 	"jy-docs/config"
 	"jy-docs/public"
@@ -108,12 +109,29 @@ func (stdDoc *StdDoc) Detail() {
 		//ossId清除
 		detail.OssPdfId = ""
 		detail.OssDocId = ""
-
+		downloadStatus := 0 // 1- 免费用户下载豆丁免费次数用完
+		// 如果是会员免费文档 并且不是文库会员 并且没有买过 时免费判断判断有没有超过10篇
+		if !isBuy && userId != "" {
+			mData := jy.GetBigVipUserBaseMsg(stdDoc.Session(), *config.Middleground)
+			if mData != nil && mData.Data != nil {
+				if mData.Data.Docs.Status <= 0 {
+					// 免费用户 判断豆丁免费文档下载次数
+					count, err2 := rpc.TodayCount(userId)
+					if err2 != nil {
+						return nil, err2
+					}
+					if count >= int64(config.JyDocsAppConfig.DocMember.FreeDocLimit) {
+						downloadStatus = 1
+					}
+				}
+			}
+		}
 		go rpc.DocStatistics(userId, docId, rpc.View) //统计下载次数
 		return map[string]interface{}{
-			"status":  common.If(isBuy, 1, 0),
-			"collect": common.If(IsCollect, 1, 0),
-			"detail":  detail,
+			"status":         common.If(isBuy, 1, 0),
+			"collect":        common.If(IsCollect, 1, 0),
+			"detail":         detail,
+			"downloadStatus": downloadStatus,
 		}, nil
 	}()
 	if errMsg != nil {

+ 18 - 28
jydocs-back/servers/userDoc.go

@@ -3,7 +3,6 @@ package servers
 import (
 	. "app.yhyue.com/moapp/jybase/api"
 	"app.yhyue.com/moapp/jybase/common"
-	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"encoding/json"
@@ -115,12 +114,12 @@ func (userDoc *UserDoc) DocBuy() {
 			return nil, fmt.Errorf("已兑换,请勿重复操作")
 		}
 		// 获取用户身份
-		docMember, err := getDocMemberStatus(userDoc.Session())
-		if err != nil {
-			return nil, err
+		mData := jy.GetBigVipUserBaseMsg(userDoc.Session(), *config.Middleground)
+		if mData == nil || mData.Data == nil {
+			return nil, fmt.Errorf("获取用户身份信息失败")
 		}
-		docMemberStatus := docMember["docMemberStatus"].(bool)
-		freeDownload := common.IntAll(docMember["free_download"])
+		docMemberStatus := mData.Data.Docs.Status > 0
+		freeDownload := mData.Data.Docs.FreeDownload
 		surplus, use := 0, 0 // 今日下载剩余次数,今日消耗次数
 		payWay := "剑鱼币"
 		if docInfo.ProductType == public.ProductTypeMemberFree {
@@ -130,11 +129,15 @@ func (userDoc *UserDoc) DocBuy() {
 			if err2 != nil {
 				return nil, err2
 			}
+			totalLimit := config.JyDocsAppConfig.DocMember.FreeDocLimit
+			if docMemberStatus {
+				totalLimit = config.JyDocsAppConfig.DocMember.Times
+			}
 			use = int(count)
-			surplus = config.JyDocsAppConfig.DocMember.Times - use
+			surplus = totalLimit - use
 			if surplus <= 0 {
 				surplus = 0
-				use = config.JyDocsAppConfig.DocMember.Times
+				use = totalLimit
 				return map[string]interface{}{
 					"status":  public.StatusMemberFreeExhaust,
 					"surplus": surplus,
@@ -203,17 +206,18 @@ func (userDoc *UserDoc) DocBuy() {
 		}
 		// 没有ossdocId 说明是还没有下过的 需要先获得地址
 		if docInfo.OssDocId == "" && docInfo.Source == public.SourceDd {
-			// 如果是精品 则需要先调购买接口
-			if docInfo.ProductType == public.ProductTypePremium {
-				_, err2 := rpc.PartUserBuy(docId, userInfo.MgoUserId, userInfo.Phone, userInfo.PositionId)
+			// 如果是精品文档 或者 是免费文档剑鱼文库会员超过10篇   则需要先调购买接口
+			if docInfo.ProductType == public.ProductTypePremium || use >= config.JyDocsAppConfig.DocMember.FreeDocLimit {
+				buyType := common.If(docMemberStatus, public.DdUserBuyType0, public.DdUserBuyType1).(int64)
+				_, err2 := rpc.PartUserBuy(docId, userInfo.MgoUserId, userInfo.Phone, userInfo.PositionId, buyType)
 				if err2 != nil {
 					return nil, fmt.Errorf("获取失败")
 				}
 			}
-			// 如果是免费则直接调
+			// 下载接口
 			_, err := rpc.PartDocDownload(docId, userInfo.MgoUserId, userInfo.Phone, userInfo.PositionId)
 			if err != nil {
-				return nil, fmt.Errorf("获取失败")
+				return nil, fmt.Errorf("文档获取失败")
 			}
 		}
 		//转存文库
@@ -227,7 +231,7 @@ func (userDoc *UserDoc) DocBuy() {
 					"i_doc_free_download": int(1),
 				},
 			})
-			config.Middleground.PowerCheckCenter.DelCheckRedis(public.AppID,userInfo.PositionId)
+			config.Middleground.PowerCheckCenter.DelCheckRedis(public.AppID, userInfo.PositionId)
 		}
 		//手机号采集
 		go func() {
@@ -261,17 +265,3 @@ func (userDoc *UserDoc) DocBuy() {
 	}
 	userDoc.ServeJson(NewResult(rData, errMsg))
 }
-
-func getDocMemberStatus(session *httpsession.Session) (map[string]interface{}, error) {
-	mData := jy.GetBigVipUserBaseMsg(session, *config.Middleground)
-	if mData != nil {
-		vipStatus := mData.Data.Docs.Status
-		return map[string]interface{}{
-			"docMemberStatus": vipStatus > 0,
-			"startTime":       mData.Data.Docs.StartDate,
-			"endTime":         mData.Data.Docs.EndDate,
-			"free_download":   mData.Data.Docs.FreeDownload,
-		}, nil
-	}
-	return nil, errors.New("获取文库会员状态失败")
-}