Kaynağa Gözat

Merge branch 'master' into feature/v1.0.42

yuelujie 1 ay önce
ebeveyn
işleme
84576558ee

+ 79 - 75
go.mod

@@ -1,27 +1,31 @@
 module jyseo
 
-go 1.19
+go 1.20
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20231026082242-8eb41c7bdda6
-	app.yhyue.com/moapp/jypkg v1.12.0
+	app.yhyue.com/moapp/jybase v0.0.0-20250403014436-53740a2395aa
+	app.yhyue.com/moapp/jypkg v1.33.6
 	github.com/PuerkitoBio/goquery v1.8.1
-	github.com/gogf/gf/contrib/drivers/clickhouse/v2 v2.5.2
-	github.com/gogf/gf/contrib/drivers/mysql/v2 v2.5.2
-	github.com/gogf/gf/contrib/nosql/redis/v2 v2.5.2
-	github.com/gogf/gf/v2 v2.5.2
+	github.com/gogf/gf/contrib/drivers/clickhouse/v2 v2.7.0
+	github.com/gogf/gf/contrib/drivers/mysql/v2 v2.7.0
+	github.com/gogf/gf/contrib/nosql/redis/v2 v2.7.0
+	github.com/gogf/gf/v2 v2.7.0
 	github.com/mozillazg/go-pinyin v0.20.0
-	go.mongodb.org/mongo-driver v1.11.6
+	go.mongodb.org/mongo-driver v1.14.0
+	jygit.jydev.jianyu360.cn/BaseService/ossClient v0.0.0-20250617080435-854a73d39d01
 )
 
 require (
 	app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d // indirect
 	app.yhyue.com/moapp/jyMarketing v0.0.2-0.20230304035551-21bb1eedf547 // indirect
-	app.yhyue.com/moapp/message v0.0.0-20221223100203-6402e389d9ae // indirect
-	bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20230214091519-89a98c01ab0e // indirect
-	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20231219095433-7e7d4aa59822 // indirect
-	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.8 // indirect
-	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.15-0.20230925060020-8e4db0f1e13e // indirect
+	app.yhyue.com/moapp/jyPoints v1.1.2-0.20231020023521-1a4b1bbf9736 // indirect
+	app.yhyue.com/moapp/message v0.0.0-20231204024949-8c7145bfc161 // indirect
+	bp.jydev.jianyu360.cn/BaseService/entManageApplication v0.0.0-20231226074509-942d80dc34eb // indirect
+	bp.jydev.jianyu360.cn/BaseService/jyMicroservices v0.0.2 // indirect
+	bp.jydev.jianyu360.cn/BaseService/powerCheckCenter v0.0.0-20241213060113-ac41966a58ec // indirect
+	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.1.3 // indirect
+	bp.jydev.jianyu360.cn/BaseService/userCenter v1.2.21 // indirect
+	filippo.io/edwards25519 v1.1.0 // indirect
 	github.com/BurntSushi/toml v1.2.0 // indirect
 	github.com/ClickHouse/clickhouse-go/v2 v2.2.0 // indirect
 	github.com/RoaringBitmap/roaring v1.5.0 // indirect
@@ -35,40 +39,39 @@ require (
 	github.com/coreos/go-systemd/v22 v22.5.0 // indirect
 	github.com/davecgh/go-spew v1.1.1 // indirect
 	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
-	github.com/emicklei/go-restful/v3 v3.9.0 // indirect
-	github.com/fatih/color v1.15.0 // indirect
-	github.com/fsnotify/fsnotify v1.6.0 // indirect
+	github.com/emicklei/go-restful/v3 v3.11.0 // indirect
+	github.com/fatih/color v1.16.0 // indirect
+	github.com/fsnotify/fsnotify v1.7.0 // indirect
 	github.com/garyburd/redigo v1.6.2 // indirect
-	github.com/go-logr/logr v1.2.4 // indirect
+	github.com/go-logr/logr v1.3.0 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
 	github.com/go-openapi/jsonpointer v0.19.6 // indirect
-	github.com/go-openapi/jsonreference v0.20.1 // indirect
-	github.com/go-openapi/swag v0.22.3 // indirect
-	github.com/go-redis/redis/v8 v8.11.5 // indirect
-	github.com/go-sql-driver/mysql v1.7.1 // indirect
+	github.com/go-openapi/jsonreference v0.20.2 // indirect
+	github.com/go-openapi/swag v0.22.4 // indirect
+	github.com/go-sql-driver/mysql v1.8.1 // indirect
 	github.com/gogo/protobuf v1.3.2 // indirect
 	github.com/golang/mock v1.6.0 // indirect
-	github.com/golang/protobuf v1.5.3 // indirect
+	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/golang/snappy v0.0.4 // indirect
 	github.com/gomodule/redigo v2.0.0+incompatible // indirect
-	github.com/google/gnostic v0.5.7-v3refs // indirect
-	github.com/google/go-cmp v0.5.9 // indirect
+	github.com/google/gnostic-models v0.6.8 // indirect
+	github.com/google/go-cmp v0.6.0 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
-	github.com/google/uuid v1.3.0 // indirect
+	github.com/google/uuid v1.6.0 // indirect
 	github.com/gorilla/websocket v1.5.0 // indirect
 	github.com/grokify/html-strip-tags-go v0.0.1 // indirect
-	github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.0 // indirect
+	github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
 	github.com/jinzhu/inflection v1.0.0 // indirect
 	github.com/jinzhu/now v1.1.1 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
-	github.com/klauspost/compress v1.15.15 // indirect
+	github.com/klauspost/compress v1.16.7 // indirect
 	github.com/magiconair/properties v1.8.7 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
-	github.com/mattn/go-isatty v0.0.19 // indirect
+	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/mattn/go-runewidth v0.0.15 // indirect
-	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
+	github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
@@ -78,72 +81,73 @@ require (
 	github.com/olekukonko/tablewriter v0.0.5 // indirect
 	github.com/olivere/elastic v6.2.37+incompatible // indirect
 	github.com/olivere/elastic/v7 v7.0.22 // indirect
-	github.com/openzipkin/zipkin-go v0.4.1 // indirect
+	github.com/openzipkin/zipkin-go v0.4.2 // indirect
 	github.com/paulmach/orb v0.7.1 // indirect
-	github.com/pelletier/go-toml/v2 v2.0.8 // indirect
+	github.com/pelletier/go-toml/v2 v2.2.0 // indirect
 	github.com/pierrec/lz4/v4 v4.1.17 // indirect
 	github.com/pkg/errors v0.9.1 // indirect
-	github.com/prometheus/client_golang v1.15.1 // indirect
-	github.com/prometheus/client_model v0.3.0 // indirect
-	github.com/prometheus/common v0.42.0 // indirect
-	github.com/prometheus/procfs v0.9.0 // indirect
-	github.com/redis/go-redis/v9 v9.0.5 // indirect
+	github.com/prometheus/client_golang v1.18.0 // indirect
+	github.com/prometheus/client_model v0.5.0 // indirect
+	github.com/prometheus/common v0.45.0 // indirect
+	github.com/prometheus/procfs v0.12.0 // indirect
+	github.com/redis/go-redis/v9 v9.4.0 // indirect
 	github.com/rivo/uniseg v0.4.4 // indirect
 	github.com/shopspring/decimal v1.3.1 // indirect
 	github.com/spaolacci/murmur3 v1.1.0 // indirect
 	github.com/tealeg/xlsx v1.0.5 // indirect
 	github.com/thinxer/go-word2vec v0.0.0-20150917053916-5c19ec7379ed // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
-	github.com/xdg-go/scram v1.1.1 // indirect
-	github.com/xdg-go/stringprep v1.0.3 // indirect
+	github.com/xdg-go/scram v1.1.2 // indirect
+	github.com/xdg-go/stringprep v1.0.4 // indirect
 	github.com/yl2chen/cidranger v1.0.2 // indirect
-	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
-	github.com/zeromicro/go-zero v1.5.3 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
+	github.com/zeromicro/go-zero v1.6.4 // indirect
 	github.com/ziutek/blas v0.0.0-20190227122918-da4ca23e90bb // indirect
-	go.etcd.io/etcd/api/v3 v3.5.9 // indirect
-	go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect
-	go.etcd.io/etcd/client/v3 v3.5.9 // indirect
-	go.opentelemetry.io/otel v1.15.1 // indirect
-	go.opentelemetry.io/otel/exporters/jaeger v1.15.1 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.1 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.15.1 // indirect
-	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.15.1 // indirect
-	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.14.0 // indirect
-	go.opentelemetry.io/otel/exporters/zipkin v1.15.1 // indirect
-	go.opentelemetry.io/otel/sdk v1.15.1 // indirect
-	go.opentelemetry.io/otel/trace v1.15.1 // indirect
-	go.opentelemetry.io/proto/otlp v0.19.0 // indirect
+	go.etcd.io/etcd/api/v3 v3.5.13 // indirect
+	go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
+	go.etcd.io/etcd/client/v3 v3.5.13 // indirect
+	go.opentelemetry.io/otel v1.19.0 // indirect
+	go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect
+	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 // indirect
+	go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 // indirect
+	go.opentelemetry.io/otel/exporters/zipkin v1.19.0 // indirect
+	go.opentelemetry.io/otel/metric v1.19.0 // indirect
+	go.opentelemetry.io/otel/sdk v1.19.0 // indirect
+	go.opentelemetry.io/otel/trace v1.19.0 // indirect
+	go.opentelemetry.io/proto/otlp v1.0.0 // indirect
 	go.uber.org/atomic v1.10.0 // indirect
-	go.uber.org/automaxprocs v1.5.2 // indirect
+	go.uber.org/automaxprocs v1.5.3 // indirect
 	go.uber.org/multierr v1.9.0 // indirect
 	go.uber.org/zap v1.24.0 // indirect
-	golang.org/x/crypto v0.11.0 // indirect
-	golang.org/x/net v0.12.0 // indirect
-	golang.org/x/oauth2 v0.7.0 // indirect
-	golang.org/x/sync v0.1.0 // indirect
-	golang.org/x/sys v0.10.0 // indirect
-	golang.org/x/term v0.10.0 // indirect
-	golang.org/x/text v0.11.0 // indirect
-	golang.org/x/time v0.3.0 // indirect
-	google.golang.org/appengine v1.6.7 // indirect
-	google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
-	google.golang.org/grpc v1.56.1 // indirect
-	google.golang.org/protobuf v1.31.0 // indirect
+	golang.org/x/crypto v0.22.0 // indirect
+	golang.org/x/net v0.24.0 // indirect
+	golang.org/x/oauth2 v0.18.0 // indirect
+	golang.org/x/sync v0.11.0 // indirect
+	golang.org/x/sys v0.19.0 // indirect
+	golang.org/x/term v0.19.0 // indirect
+	golang.org/x/text v0.22.0 // indirect
+	golang.org/x/time v0.5.0 // indirect
+	google.golang.org/appengine v1.6.8 // indirect
+	google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
+	google.golang.org/grpc v1.64.0 // indirect
+	google.golang.org/protobuf v1.36.0 // indirect
 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gorm.io/driver/mysql v1.0.5 // indirect
 	gorm.io/gorm v1.21.3 // indirect
-	jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20231017031425-45003ca9f35a // indirect
-	k8s.io/api v0.26.3 // indirect
-	k8s.io/apimachinery v0.27.0-alpha.3 // indirect
-	k8s.io/client-go v0.26.3 // indirect
-	k8s.io/klog/v2 v2.90.1 // indirect
-	k8s.io/kube-openapi v0.0.0-20230307230338-69ee2d25a840 // indirect
-	k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
+	jygit.jydev.jianyu360.cn/ApplicationCenter/publicService v0.0.0-20231023011746-38dc3b6aded8 // indirect
+	k8s.io/api v0.29.3 // indirect
+	k8s.io/apimachinery v0.29.3 // indirect
+	k8s.io/client-go v0.29.3 // indirect
+	k8s.io/klog/v2 v2.110.1 // indirect
+	k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
+	k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
 	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
-	sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
+	sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
 	sigs.k8s.io/yaml v1.3.0 // indirect
 )

Dosya farkı çok büyük olduğundan ihmal edildi
+ 869 - 47
go.sum


+ 86 - 53
internal/service/bidDetail.go

@@ -25,6 +25,8 @@ import (
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/util/gconv"
 	"go.mongodb.org/mongo-driver/bson"
+	"jygit.jydev.jianyu360.cn/BaseService/ossClient"
+	"jygit.jydev.jianyu360.cn/BaseService/ossClient/entity"
 )
 
 const (
@@ -202,76 +204,107 @@ func FindBiding(sid, content string, lent int, isWhiteIp bool) (t bool, obj map[
 			delete(obj, "href")
 			delete(obj, "competehref")
 		}
-		detailBefore := gconv.String(obj["detail"])
 		var (
 			ctx     = context.Background()
 			catOpen = g.Cfg().MustGet(ctx, "detailSub.switch", true).Bool() //非白名单截取正文内容
 			isCat   = false
+			_detail string
 		)
-		if !isWhiteIp && catOpen {
-			var (
-				maxLen   = g.Cfg().MustGet(ctx, "detailSub.maxLen", 1000).Int()
-				minLen   = g.Cfg().MustGet(ctx, "detailSub.sLen", 200).Int()
-				cat      = g.Cfg().MustGet(ctx, "detailSub.cat", 0.5).Float64()
-				ll       = len([]rune(detailBefore)) //长度大于200
-				finalLen = gconv.Int(float64(ll) * cat)
-			)
-			isCat = true
+		// 从oss获取正文
+		detailRes, err := ossClient.GetBidDetailByGrpc(g.Cfg().MustGet(ctx, "bidDetailByRpc").String(), &entity.Args{
+			BucketID:   "detail",
+			ObjectName: sid,
+		})
+		delete(obj, "detail")
+		if err != nil {
+			g.Log().Errorf(ctx, "ossClient.GetBidDetailByGrpc err: %+v", err)
+		} else {
+			detailBefore := gconv.String(detailRes.Data)
+			if !isWhiteIp && catOpen {
+				var (
+					maxLen   = g.Cfg().MustGet(ctx, "detailSub.maxLen", 1000).Int()
+					minLen   = g.Cfg().MustGet(ctx, "detailSub.sLen", 200).Int()
+					cat      = g.Cfg().MustGet(ctx, "detailSub.cat", 0.5).Float64()
+					ll       = len([]rune(detailBefore)) //长度大于200
+					finalLen = gconv.Int(float64(ll) * cat)
+				)
+				isCat = true
 
-			if finalLen < minLen {
-				if ll < minLen {
-					finalLen = ll
-					isCat = false
-				} else {
-					finalLen = minLen
+				if finalLen < minLen {
+					if ll < minLen {
+						finalLen = ll
+						isCat = false
+					} else {
+						finalLen = minLen
+					}
+				} else if finalLen > maxLen {
+					finalLen = maxLen
 				}
-			} else if finalLen > maxLen {
-				finalLen = maxLen
+
+				detailBefore = string([]rune(detailBefore)[:finalLen])
 			}
 
-			detailBefore = string([]rune(detailBefore)[:finalLen])
-		}
+			var pass_err error
+			_detail, pass_err = func() (string, error) {
+				if strings.Trim(detailBefore, " ") == "" {
+					return "", nil
+				}
+				doc, err := goquery.NewDocumentFromReader(strings.NewReader(detailBefore))
+				if err != nil {
+					return "", err
+				}
+				// 获取处理后的HTML,清理html和body
+				html, err := doc.Find("body").Html()
+				if err != nil {
+					return "", err
+				}
+				return html, nil
+			}()
 
-		_detail, pass_err := func() (string, error) {
-			if strings.Trim(detailBefore, " ") == "" {
-				return "", nil
-			}
-			doc, err := goquery.NewDocumentFromReader(strings.NewReader(detailBefore))
-			if err != nil {
-				return "", err
+			if pass_err != nil && g.Cfg().MustGet(cxt, "detailElement").Strings() != nil {
+				//detail字段 缺少标签 处理
+				var arrTags = g.Cfg().MustGet(cxt, "detailElement").Strings()
+				_detail = detailBefore
+				for _, v := range arrTags {
+					var intOpen = strings.Count(_detail, "<"+v)
+					var intClose = strings.Count(_detail, "</"+v+">")
+					if intOpen >= intClose {
+						for di := 0; di < (intOpen - intClose); di++ {
+							_detail += "</" + v + ">"
+						}
+					} else {
+						for di := 0; di < (intClose - intOpen); di++ {
+							_detail = "<" + v + ">" + _detail
+						}
+					}
+				}
 			}
-			// 获取处理后的HTML,清理html和body
-			html, err := doc.Find("body").Html()
-			if err != nil {
-				return "", err
+			//seo清除正文h1标签
+			finalDetail := removeHTMLTagUsingRegex(_detail, "h1")
+			if !isWhiteIp && isCat && len(finalDetail) > 0 {
+				finalDetail += g.Cfg().MustGet(context.Background(), "detailSub.tipMsg", "<span>登录查看全文</span>").String()
 			}
-			return html, nil
-		}()
-
-		if pass_err != nil && g.Cfg().MustGet(cxt, "detailElement").Strings() != nil {
-			//detail字段 缺少标签 处理
-			var arrTags = g.Cfg().MustGet(cxt, "detailElement").Strings()
-			_detail = detailBefore
-			for _, v := range arrTags {
-				var intOpen = strings.Count(_detail, "<"+v)
-				var intClose = strings.Count(_detail, "</"+v+">")
-				if intOpen >= intClose {
-					for di := 0; di < (intOpen - intClose); di++ {
-						_detail += "</" + v + ">"
+			//企业信用报告引流
+			if gv, gerr := g.Redis("other").Get(ctx, "ent_credit_report_keys"); gerr == nil && !gv.IsNil() {
+				if valueMap := gv.Map(); len(valueMap) > 0 {
+					var (
+						min       = -1
+						minMap    = map[int]string{}
+						nologinCw = gconv.String(valueMap["nologinCw"])
+					)
+					for _, keyWords := range strings.Split(gconv.String(valueMap["matchKeys"]), ",") {
+						if index := strings.Index(finalDetail, keyWords); index != -1 && (min == -1 || index < min) {
+							min = index
+							minMap[index] = keyWords
+						}
 					}
-				} else {
-					for di := 0; di < (intClose - intOpen); di++ {
-						_detail = "<" + v + ">" + _detail
+					if nologinCw != "" && min > -1 {
+						finalDetail = strings.Replace(finalDetail, minMap[min], fmt.Sprintf("%s<i class=\"highlight-text\">%s</i>", minMap[min], nologinCw), 1)
 					}
 				}
 			}
+			obj["detail"] = finalDetail
 		}
-		//seo清除正文h1标签
-		finalDetail := removeHTMLTagUsingRegex(_detail, "h1")
-		if !isWhiteIp && isCat && len(finalDetail) > 0 {
-			finalDetail += g.Cfg().MustGet(context.Background(), "detailSub.tipMsg", "<span>登录查看全文</span>").String()
-		}
-		obj["detail"] = finalDetail
 	}
 	return
 }

+ 2 - 0
manifest/config/config.yaml

@@ -18,6 +18,8 @@ viewer:
   defaultFile: index.html
   autoencode: true
 
+bidDetailByRpc: "172.31.31.203:1111"
+
 database:
   default:
     link: "clickhouse:jytop:pwdTopJy123@tcp(172.20.45.129:19000)/jyseo_test?dial_timeout=2000ms&max_execution_time=60"

+ 6 - 1
resource/staticres/js/common.js

@@ -142,7 +142,12 @@ function replaceKeywordWithRichText (htmlString, keyword, richChar) {
       node.parentNode.replaceChild(frag, node)
     } else if (node.nodeType === Node.ELEMENT_NODE) {
       // 如果是元素节点,递归其子节点
-      Array.from(node.childNodes).forEach(replaceText)
+      var skipClassName = ['highlight-text']
+      var skip = skipClassName.some(sk => node.className.indexOf(sk) !== -1)
+      // 跳过已经高亮的元素子节点
+      if (!skip) {
+        Array.from(node.childNodes).forEach(replaceText)
+      }
     }
   }
 

+ 2 - 2
resource/template/pc/detail.html

@@ -120,8 +120,8 @@
               {{if or (eq $bidData.toptype "采购意向") (eq $bidData.toptype "招标") (eq $bidData.toptype "预告") }}
               <div class="credit-report">
                 <div class="report-container">
-                  <div class="report-text">通过信用背书、风险预警、政策适配,赋能投标突围</div>
-                  <a href="/swordfish/page_big_pc/free/report/preview?source=bidCreditReportPreview" target="_blank" onclick="trackReportClick(event)" class="report-btn">下载投标企业信用报告</a>
+                  <div class="report-text">获取投标企业信用报告,展示投标实力</div>
+                  <a href="/swordfish/page_big_pc/free/report/preview?source=bidCreditReportPreview" target="_blank" onclick="trackReportClick(event)" class="report-btn">点击下载</a>
                 </div>
               </div>
               {{end}}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor