Răsfoiți Sursa

修复媒体查询报告

kobe6258 5 luni în urmă
părinte
comite
cf6a20b159

+ 44 - 0
controllers/web_hook/htfutures_trade_controller.go

@@ -57,3 +57,47 @@ func (h *HTFuturesTradeController) InformPaymentResult() {
 		return
 	})
 }
+
+// InformRefundResult  风险测评同步接口
+// @Summary 风险测评同步接口
+// @Description 风险测评同步接口
+// @Success 200 {object} controllers.BaseResponse
+// @router /v1/payment/informRefundResult [post]
+func (h *HTFuturesTradeController) InformRefundResult() {
+	controllers.WrapWebhook(&h.WebHookController, func() (result *controllers.WrapData, err error) {
+		result = h.InitWrapData("同步风险等级")
+		ss := new(ss)
+		h.GetPostParams(ss)
+		//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
+		_ = product.CloseProduct(ss.User, ss.ID)
+
+		//htConfig := config.GetConfig(contants.HT).(*config.HTBizConfig)
+		//webhookRequest := new(WebhookRequest)
+		//h.GetPostParams(webhookRequest)
+		//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
+		//if err != nil {
+		//	err = exception.NewWithException(exception.SysError, err.Error())
+		//	logger.Error("解析私钥失败: %v", err)
+		//	h.FailedResult("解析私钥失败", result)
+		//	return
+		//}
+		//decodeData, err := authUtils.DecryptWithRSA(privateKey, webhookRequest.Data)
+		//if err != nil {
+		//	err = exception.NewWithException(exception.SysError, err.Error())
+		//	logger.Error("解密请求体失败: %v", err)
+		//	h.FailedResult("解密请求体失败", result)
+		//	return
+		//}
+		//syncCustomerRiskLevelReq := new(SyncCustomerRiskLevelReq)
+		//err = json.Unmarshal(decodeData, syncCustomerRiskLevelReq)
+		//if err != nil {
+		//	err = exception.NewWithException(exception.SyncRiskError, err.Error())
+		//	logger.Error("解析请求体失败: %v", err)
+		//	h.FailedResult("解析请求体失败", result)
+		//	return
+		//}
+		result = h.InitWrapData("支付结果应答成功")
+		h.SuccessResult("success", nil, result)
+		return
+	})
+}

+ 12 - 0
domian/merchant/user_access_service.go

@@ -18,5 +18,17 @@ func OpenProduct(templateUserId int, productOrderNo string, product MerchantProd
 	if !product.IsPermanent {
 		userAccess.EndDate = time.Now().Add(time.Duration(product.ValidDays) * 24 * time.Hour)
 	}
+	return merchant.CloseUserAccess(userAccess)
+}
+
+func CloseProduct(templateUserId int, productOrderNo string, product MerchantProductDTO) error {
+	userAccess := merchant.UserSubscriptionAccessList{
+		TemplateUserId: templateUserId,
+		ProductID:      product.Id,
+		ProductName:    product.ProductTile,
+		ProductType:    product.Type,
+		Status:         merchant.SubscribeClose,
+		ProductOrderNo: productOrderNo,
+	}
 	return merchant.InsertOrUpdateUserSubscribe(userAccess)
 }

+ 8 - 1
models/merchant/user_subscription_access_list.go

@@ -12,7 +12,7 @@ type SubscribeStatus string
 const (
 	SubscribeValid   SubscribeStatus = "valid"
 	SubscribeExpired SubscribeStatus = "expired"
-	SubscribeClose   SubscribeStatus = "close"
+	SubscribeClose   SubscribeStatus = "closed"
 )
 
 var (
@@ -84,3 +84,10 @@ func InsertOrUpdateUserSubscribe(access UserSubscriptionAccessList) (err error)
 	err = db.Clauses(OnConflictFunc).Create(&access).Error
 	return
 }
+
+func CloseUserAccess(access UserSubscriptionAccessList) (err error) {
+	db := models.Main()
+	err = db.Model(&access).Where("template_user_id=? AND product_id=?", access.TemplateUserId, access.ProductID).Update("status", SubscribeClose).Error
+	// 执行批量插入或更新操作
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -493,6 +493,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/web_hook:HTFuturesTradeController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/web_hook:HTFuturesTradeController"],
+        beego.ControllerComments{
+            Method: "InformRefundResult",
+            Router: `/v1/payment/informRefundResult`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers:WebSocketController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers:WebSocketController"],
         beego.ControllerComments{
             Method: "Connect",

+ 29 - 13
service/media/media_service.go

@@ -447,6 +447,7 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
 				productType = ""
 			}
 			product, pdErr := productService.GetProductBySourceId(media.MediaId, productType)
+			isFree := true
 			if pdErr != nil {
 				if errors.Is(pdErr, gorm.ErrRecordNotFound) {
 					media.Price = defaultProductPrice
@@ -460,6 +461,7 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
 			} else {
 				media.Price = product.Price.String()
 				media.IsFree = false
+				isFree = false
 			}
 			if isLogin {
 				subscribe, subscribeErr := userService.GetUserSubscribe(product.Id, userId)
@@ -470,31 +472,45 @@ func GetMediaPageByIds(mediaType string, pageInfo page.PageInfo, mediaIds []int,
 				}
 			}
 			media.RiskLevelStatus = RiskLevelMatch
-			pdRiskNum, parseErr := parseRiskLevel(product.RiskLevel)
-			if parseErr != nil {
-				media.RiskLevelStatus = RiskLevelUnMatch
-				return
-			}
-			rpRiskNum, parseErr := parseRiskLevel(media.RiskLevel)
-			if parseErr != nil {
-				media.RiskLevelStatus = RiskLevelUnMatch
-				return
-			}
 			mappingRiskNum, parseErr := parseRiskLevel(mappingRiskLevel)
 			if parseErr != nil {
 				media.RiskLevelStatus = RiskLevelUnMatch
 				return
 			}
-			if rpRiskNum <= pdRiskNum {
-				media.RiskLevel = product.RiskLevel
-				if mappingRiskNum < pdRiskNum {
+			if !isFree {
+				var rpRiskNum, pdRiskNum int
+				rpRiskNum, parseErr = parseRiskLevel(media.RiskLevel)
+				if parseErr != nil {
+					media.RiskLevelStatus = RiskLevelUnMatch
+					return
+				}
+				pdRiskNum, parseErr = parseRiskLevel(product.RiskLevel)
+				if parseErr != nil {
 					media.RiskLevelStatus = RiskLevelUnMatch
+					return
+				}
+				if rpRiskNum <= pdRiskNum {
+					media.RiskLevel = product.RiskLevel
+					if mappingRiskNum < pdRiskNum {
+						media.RiskLevelStatus = RiskLevelUnMatch
+					}
+				} else {
+					if mappingRiskNum < rpRiskNum {
+						media.RiskLevelStatus = RiskLevelUnMatch
+					}
 				}
 			} else {
+				var rpRiskNum int
+				rpRiskNum, parseErr = parseRiskLevel(media.RiskLevel)
+				if parseErr != nil {
+					media.RiskLevelStatus = RiskLevelUnMatch
+					return
+				}
 				if mappingRiskNum < rpRiskNum {
 					media.RiskLevelStatus = RiskLevelUnMatch
 				}
 			}
+
 		}(&list[i])
 	}
 	wg.Wait()

+ 15 - 0
service/product/product_service.go

@@ -60,6 +60,21 @@ func OpenProduct(templateUserId int, productOrderNo string) (err error) {
 	return merchantService.OpenProduct(templateUserId, productOrderNo, product)
 }
 
+// OpenProduct 开通产品
+func CloseProduct(templateUserId int, productOrderNo string) (err error) {
+	proudctOrder, err := order.GetProductOrderByUser(templateUserId, productOrderNo)
+	if err != nil {
+		logger.Error("获取产品订单信息失败:%v", err)
+		return
+	}
+	product, err := merchantService.GetMerchantProductById(proudctOrder.ProductID)
+	if err != nil {
+		logger.Error("获取产品信息失败:%v", err)
+		return
+	}
+	return merchantService.CloseProduct(templateUserId, productOrderNo, product)
+}
+
 //过期产品(套餐)
 
 //退款关闭套餐