wangkaiyue 1 рік тому
батько
коміт
2858b6dd66

+ 44 - 1
go.mod

@@ -1,6 +1,6 @@
 module jybxseo
 
-go 1.15
+go 1.19
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20231026082242-8eb41c7bdda6
@@ -8,3 +8,46 @@ require (
 	github.com/gogf/gf/contrib/nosql/redis/v2 v2.5.6
 	github.com/gogf/gf/v2 v2.5.6
 )
+
+require (
+	github.com/BurntSushi/toml v1.2.0 // indirect
+	github.com/ClickHouse/clickhouse-go/v2 v2.2.0 // indirect
+	github.com/cespare/xxhash/v2 v2.2.0 // indirect
+	github.com/clbanning/mxj/v2 v2.7.0 // indirect
+	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+	github.com/fatih/color v1.15.0 // indirect
+	github.com/fsnotify/fsnotify v1.6.0 // indirect
+	github.com/go-logr/logr v1.2.4 // indirect
+	github.com/go-logr/stdr v1.2.2 // indirect
+	github.com/go-stack/stack v1.8.0 // indirect
+	github.com/golang/snappy v0.0.4 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/gorilla/websocket v1.5.0 // indirect
+	github.com/grokify/html-strip-tags-go v0.0.1 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
+	github.com/magiconair/properties v1.8.6 // indirect
+	github.com/mattn/go-colorable v0.1.13 // indirect
+	github.com/mattn/go-isatty v0.0.19 // indirect
+	github.com/mattn/go-runewidth v0.0.15 // indirect
+	github.com/olekukonko/tablewriter v0.0.5 // indirect
+	github.com/paulmach/orb v0.7.1 // indirect
+	github.com/pierrec/lz4/v4 v4.1.15 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/redis/go-redis/v9 v9.0.5 // indirect
+	github.com/rivo/uniseg v0.4.4 // indirect
+	github.com/shopspring/decimal v1.3.1 // indirect
+	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
+	github.com/xdg-go/scram v1.0.2 // indirect
+	github.com/xdg-go/stringprep v1.0.2 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
+	go.mongodb.org/mongo-driver v1.9.1 // indirect
+	go.opentelemetry.io/otel v1.14.0 // indirect
+	go.opentelemetry.io/otel/sdk v1.14.0 // indirect
+	go.opentelemetry.io/otel/trace v1.14.0 // indirect
+	golang.org/x/crypto v0.14.0 // indirect
+	golang.org/x/net v0.17.0 // indirect
+	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
+	golang.org/x/sys v0.13.0 // indirect
+	golang.org/x/text v0.13.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)

+ 1 - 30
go.sum

@@ -45,9 +45,7 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
 github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
 github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
 github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
-github.com/ClickHouse/clickhouse-go/v2 v2.0.15/go.mod h1:Z21o82zD8FFqefOQDg93c0XITlxGbTsWQuRm588Azkk=
 github.com/ClickHouse/clickhouse-go/v2 v2.2.0 h1:dj00TDKY+xwuTJdbpspCSmTLFyWzRJerTHwaBxut1C0=
 github.com/ClickHouse/clickhouse-go/v2 v2.2.0/go.mod h1:8f2XZUi7XoeU+uPIytSi1cvx8fmJxi7vIgqpvYTF1+o=
 github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
@@ -75,9 +73,7 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
 github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
 github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4=
 github.com/bsm/ginkgo/v2 v2.7.0 h1:ItPMPH90RbmZJt5GtkcNvIRuGEdwlBItdNVoyzaNQao=
-github.com/bsm/ginkgo/v2 v2.7.0/go.mod h1:AiKlXPm7ItEHNc/2+OkrNG4E0ITzojb9/xWzvQ9XZ9w=
 github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y=
-github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -228,7 +224,6 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -324,7 +319,6 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk
 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
 github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
@@ -377,9 +371,7 @@ github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKf
 github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=
 github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
 github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -439,7 +431,6 @@ github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -451,7 +442,6 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F
 github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
 github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
@@ -471,7 +461,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
 github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
 github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 github.com/zeromicro/go-zero v1.3.5/go.mod h1:wh4o794b7Ul3W0k35Pw9nc3iB4O0OpaQTMQz/PJc1bc=
@@ -520,7 +509,6 @@ golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPh
 golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
 golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -555,8 +543,6 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -596,9 +582,6 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
 golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
 golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
 golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -617,10 +600,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -681,21 +662,15 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220429233432-b5fbb4746d32/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
 golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -704,8 +679,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
 golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -760,8 +733,6 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
 golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

+ 6 - 0
internal/consts/consts.go

@@ -9,6 +9,10 @@ const (
 	AreaType        = iota + 1 //省份
 	CityType                   //城市
 	CitySpecialType            //直辖市
+
+	HotBidding = iota - 2
+	CityBidding
+	ClassBidding
 )
 
 var (
@@ -16,6 +20,8 @@ var (
 	SettingBidCacheTime = g.Cfg().MustGet(context.Background(), "listPageSetting.cacheTime").Int64()
 	BiddingListMaxTotal = g.Cfg().MustGet(context.Background(), "listPageSetting.maxBidSize", 5000).Int()
 
+	WebDomainFormat = g.Cfg("global").MustGet(context.Background(), "webDomainFormat").String()
+
 	TopTypeMap = map[string]string{
 		"招标预告":   "预告",
 		"招标公告":   "招标",

+ 5 - 6
internal/controller/area.go

@@ -31,16 +31,15 @@ func CityListHandler(areaNode *service.AreaNode, r *ghttp.Request) {
 		return
 	}
 	// 查询数据
-	query := service.NewBiddingQuery().EquipArea(cityNode)
-	rData, err := query.GetDataPageList(r.Context(), pageNum, consts.BiddingListMaxTotal, "AreaPageHandler", service.JyBxSeoAreaRoot.GetData)
+	query := service.NewBiddingQuery().EquipArea(cityNode).QueryState(consts.HotBidding)
+	rData, err := query.GetDataPageList(r.Context(), pageNum, consts.BiddingListMaxTotal, "CityListHandler", service.JyBxSeoAreaRoot.GetData)
 	if err != nil {
 		g.Log().Errorf(r.Context(), err.Error())
 		utility.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
 		return
 	}
-	utility.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "area_list.html"),
+	utility.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "area_city_list.html"),
 		g.Map{
-			"areaNode": areaNode,
 			"cityNode": cityNode,
 			"list":     rData.List,
 			//"tdk":        service.JySeoTdk.GetAreaSTypeListTdk(r.Context(), sTypeNode.Code, areaNode.Name),
@@ -59,13 +58,13 @@ func AreaClassListHandler(areaNode *service.AreaNode, r *ghttp.Request) {
 	}
 	// 查询数据
 	query := service.NewBiddingQuery().EquipArea(areaNode).EquipIndustry(classNode.Name, "")
-	rData, err := query.GetDataPageList(r.Context(), pageNum, consts.BiddingListMaxTotal, "AreaPageHandler", service.JyBxSeoAreaRoot.GetData)
+	rData, err := query.GetDataPageList(r.Context(), pageNum, consts.BiddingListMaxTotal, "AreaClassListHandler", service.JyBxSeoAreaRoot.GetData)
 	if err != nil {
 		g.Log().Errorf(r.Context(), err.Error())
 		utility.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
 		return
 	}
-	utility.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "area_list.html"),
+	utility.HtmlRender.Render(r, utility.GetCommonRenderPatch(r.Request.UserAgent(), "area_clas_list.html"),
 		g.Map{
 			"areaNode":  areaNode,
 			"classNode": classNode,

+ 12 - 13
internal/service/areaStruct.go

@@ -24,6 +24,7 @@ type (
 	AreaNode struct {
 		Name  string      `json:"name" doc:"名称"`
 		Code  string      `json:"code" doc:"代码"`
+		Href  string      `json:"href" doc:"地址"`
 		PNode *AreaNode   `json:"pNode" doc:"父节点代码"`
 		Type  int         `json:"type" doc:"1省份 2城市 3直辖市"`
 		Child []*AreaNode `json:"child" doc:"子栏目"`
@@ -47,6 +48,7 @@ func (aRoot *AreaRoot) LoadAreasFrom(ctx context.Context) {
 			Name: gconv.String(m["name"]),
 			Code: gconv.String(m["code"]),
 		}
+		root.Href = fmt.Sprintf(consts.WebDomainFormat, root.Code)
 		if gconv.Bool(m["special"]) {
 			root.Type = consts.CitySpecialType
 		} else {
@@ -59,6 +61,7 @@ func (aRoot *AreaRoot) LoadAreasFrom(ctx context.Context) {
 				Type:  consts.CityType,
 				PNode: root,
 			}
+			node.Href = fmt.Sprintf("%s/%s/", root.Href, node.Code)
 			root.Child = append(root.Child, node)
 			areaCodeMap[node.Code] = node
 			areaNameMap[node.Name] = node
@@ -103,22 +106,18 @@ func (aRoot *AreaRoot) GetData(ctx context.Context, maxTotal int, query *SeoBidd
 	}
 
 	if query.topType != "" {
-		if val, _ := consts.TopTypeMap[query.topType]; val != "" {
-			sql += " AND b.toptype=? "
-			values = append(values, val)
-		} else {
-			sql += " AND b.toptype=? "
-			values = append(values, query.topType)
-		}
-	} else if query.subType != "" && query.keys == "" {
-		sql += " AND b.subtype=? "
-		values = append(values, query.subType)
-	} else if query.topType == "" && query.subType == "" {
-		sql += " AND (b.toptype !='拟建' AND b.toptype !='采购意向') "
+		sql += " AND b.industry=? "
+		values = append(values, query.topType)
 	}
+
+	if query.status > 0 {
+		sql += " AND b.status=? "
+		values = append(values, query.status)
+	}
+
 	values = append(values, maxTotal+50)
 	queryRes, err := g.DB().Query(ctx, fmt.Sprintf(`SELECT b.bid_id
-			FROM jyseo.new_areaClass b
+			FROM jyseo.column_bidList b
 			WHERE 1=1 %s
 			ORDER BY b.publish_time DESC
 			LIMIT 0,?`, sql), values...)

+ 10 - 0
internal/service/classStruct.go

@@ -19,6 +19,7 @@ type (
 		classCodeMap map[string]*ClassNode //所有节点平铺 key:code
 		classNameMap map[string]*ClassNode //所有节点平铺 key:name
 		rootList     []*ClassNode          //根节点
+		hotClass     []*ClassNode          //热门行业
 	}
 	ClassNode struct {
 		Name  string       `json:"name" doc:"名称"`
@@ -66,6 +67,11 @@ func (cRoot *ClassRoot) LoadClassFrom(ctx context.Context) {
 		classCodeMap[root.Name] = root
 		rootArr = append(rootArr, root)
 	}
+	for _, class := range g.Cfg("global").MustGet(context.Background(), "topClass").Strings() {
+		if node := classCodeMap[class]; node != nil {
+			cRoot.hotClass = append(cRoot.hotClass, node)
+		}
+	}
 	cRoot.classTree, cRoot.classCodeMap = classTree, classCodeMap
 	cRoot.classNameMap = classNameMap
 	cRoot.rootList = rootArr
@@ -126,3 +132,7 @@ func (cRoot *ClassRoot) GetNodeByName(name string) *ClassNode {
 func (cRoot *ClassRoot) GetAllRootNodes() []*ClassNode {
 	return cRoot.rootList
 }
+
+func (cRoot *ClassRoot) GetHot() []*ClassNode {
+	return cRoot.hotClass
+}

+ 9 - 1
internal/service/queryStruct.go

@@ -14,6 +14,7 @@ import (
 
 type (
 	SeoBiddingQuery struct {
+		status   int
 		keys     string
 		area     string
 		city     string
@@ -47,6 +48,13 @@ func NewBiddingQuery() *SeoBiddingQuery {
 	return &SeoBiddingQuery{}
 }
 
+func (query *SeoBiddingQuery) QueryState(value int) *SeoBiddingQuery {
+	if value > 0 {
+		query.status = value
+	}
+	return query
+}
+
 // EquipArea 装备地区查询
 func (query *SeoBiddingQuery) EquipArea(areaNode *AreaNode) *SeoBiddingQuery {
 	if areaNode.Type == 2 {
@@ -207,7 +215,7 @@ func FillingBiddingBaseFields(ctx context.Context, res []map[string]interface{})
 			bidIdStrings = append(bidIdStrings, bidId)
 		}
 	}
-	bidRes, _ := g.DB().Query(ctx, fmt.Sprintf(`SELECT * FROM jyseo.new_bidList WHERE toptype !='拟建' AND toptype !='采购意向' AND bid_id IN ('%s')`, strings.Join(bidIdStrings, "','")))
+	bidRes, _ := g.DB().Query(ctx, fmt.Sprintf(`SELECT * FROM jyseo.new_bidList WHERE bid_id IN ('%s')`, strings.Join(bidIdStrings, "','")))
 	if bidRes.IsEmpty() {
 		return nil
 	}

+ 6 - 17
internal/tags/init.go

@@ -1,10 +1,7 @@
 package tags
 
 import (
-	"context"
-	"fmt"
 	"github.com/gogf/gf/v2/frame/g"
-	"github.com/gogf/gf/v2/util/gconv"
 	"jybxseo/internal/service"
 	"jybxseo/utility"
 )
@@ -21,13 +18,6 @@ func init() {
 	g.View().BindFunc("Msg", Msg) //配置文件字符串,用于版本号控制
 	g.View().BindFunc("Cdn", Cdn) //静态资源
 
-	g.View().BindFunc("Cdn2", func() string { //开发环境使用
-		if g.Cfg().MustGet(context.Background(), "server.isDev", false).Bool() {
-			return "/jyseo"
-		}
-		return Cdn()
-	}) //静态资源
-
 	// 工具类
 	g.View().BindFunc("ParseHtml", ParseHtml)
 	g.View().BindFunc("ParseHtmlAttr", ParseHtmlAttr)
@@ -37,11 +27,10 @@ func init() {
 	g.View().BindFunc("CardFormat", CardFormat)
 	g.View().BindFunc("EncodeId", utility.EncodeId)
 	g.View().BindFunc("Split", Split)
-	g.View().BindFunc("FormatMoney", func(val interface{}) string {
-		if fVal := gconv.Float64(val); fVal == 0 {
-			return ""
-		} else {
-			return fmt.Sprintf("%.2f", fVal)
-		}
-	})
+	g.View().BindFunc("FormatMoney", FormatMoney)
+
+	// 数据类
+	g.View().BindFunc("GetHotClass", GetHotClass)         // 获取热门行业
+	g.View().BindFunc("GetAllClass", GetAllClass)         // 获取所有行业
+	g.View().BindFunc("GetAreaLocation", GetAreaLocation) // 获取区位
 }

+ 19 - 0
internal/tags/other.go

@@ -0,0 +1,19 @@
+package tags
+
+import "jybxseo/internal/service"
+
+func GetAreaLocation() []*service.AreaLocation {
+	return service.JyBxSeoAreaRoot.GetAllLocation()
+}
+
+func GetHotClass(num int) (res []*service.ClassNode) {
+	for i, node := range service.JyBxSeoClassRoot.GetHot() {
+		if num > i {
+			res = append(res, node)
+		}
+	}
+	return
+}
+func GetAllClass() (res []*service.ClassNode) {
+	return service.JyBxSeoClassRoot.GetAllRootNodes()
+}

+ 8 - 1
internal/tags/util.go

@@ -66,9 +66,16 @@ func Split(source, flag string) (arr []string) {
 }
 
 func Highlight(desc, keyword string) string {
-	fmt.Println("cccc")
 	if desc == "" || keyword == "" {
 		return desc
 	}
 	return strings.ReplaceAll(desc, keyword, fmt.Sprintf("<i>%s</i>", keyword))
 }
+
+func FormatMoney(val interface{}) string {
+	if fVal := gconv.Float64(val); fVal == 0 {
+		return ""
+	} else {
+		return fmt.Sprintf("%.2f", fVal)
+	}
+}

+ 1 - 0
main.go

@@ -5,6 +5,7 @@ import (
 	_ "github.com/gogf/gf/contrib/nosql/redis/v2"
 	"github.com/gogf/gf/v2/os/gctx"
 	"jybxseo/internal/cmd"
+	_ "jybxseo/internal/tags"
 )
 
 func main() {

+ 5 - 0
manifest/config/config.yaml

@@ -43,4 +43,9 @@ redis:
     #address: 192.168.3.149:1712
     address: 127.0.0.1:6379
 
+listPageSetting:
+  pageSize: 20 #每页20条
+  maxBidSize: 9999999 #列表条数限制
+  cacheTime: 1800 #缓存半个小时
+
 

+ 74 - 72
manifest/config/global.yaml

@@ -1,6 +1,6 @@
 cdn: ""
 version: "1.0.2"
-topWebDomain: "myjy.cn"
+webDomainFormat: "http://%s.myjy.cn"
 
 allAreaTree:
   - name: 北京
@@ -1103,7 +1103,7 @@ allAreaTree:
         pcode: xinjiang
 
 areaLocation:
-  - name : 华北
+  - name: 华北
     values: [ "beijing","tianjin","hebei","shanxi","neimenggu" ]
   - name: 华中
     values: [ "henan","hebei","hunan" ]
@@ -1112,159 +1112,161 @@ areaLocation:
   - name: 华东
     values: [ "shanghai","jiangsu","zhejiang" ,"anhui","fujian","jiangxi" ,"shandong" ]
   - name: 华南
-    values: [ "guangdong","guangxi","hainan"]
+    values: [ "guangdong","guangxi","hainan" ]
   - name: 西南
-    values: [ "chongqing","sichuan","guizhou","yunnan","xizang"]
+    values: [ "chongqing","sichuan","guizhou","yunnan","xizang" ]
   - name: 西北
-    values: [ "shanxi","gansu","qinghai","ningxia","xinjiang"]
+    values: [ "shanxi","gansu","qinghai","ningxia","xinjiang" ]
 
 allClassTree:
   - name: 建筑工程
-    code: JZGC
+    code: jzgc
     child:
       - name: 材料设备
-        code: CLSB
+        code: clsb
       - name: 工程施工
-        code: GCSG
+        code: gcsg
       - name: 勘察设计
-        code: KCSJ
+        code: kcsj
       - name: 监理咨询
-        code: JLZX
+        code: jlzx
       - name: 机电安装
-        code: JDAZ
+        code: jdaz
   - name: 行政办公
-    code: XZBG
+    code: xzbg
     child:
       - name: 专业设备
-        code: ZYSB
+        code: zysb
       - name: 办公用品
-        code: BGYP
+        code: bgyp
       - name: 生活用品
-        code: SHYP
+        code: shyp
       - name: 通用办公设备
-        code: TYBGSB
+        code: tybgsb
       - name: 办公家具
-        code: BGJJ
+        code: bgjj
   - name: 医疗卫生
-    code: YLWS
+    code: ylws
     child:
       - name: 设备
-        code: SB
+        code: sb
       - name: 耗材
-        code: HC
+        code: hc
       - name: 药品
-        code: YP
+        code: yp
   - name: 服务采购
-    code: FWCG
+    code: fwcg
     child:
       - name: 仓储物流
-        code: CCWL
+        code: ccwl
       - name: 广告宣传印刷
-        code: GGXCYS
+        code: ggxcyx
       - name: 物业
-        code: WY
+        code: wy
       - name: 服务其他  #[其他]重复
-        code: FWQT #[QT]重复
+        code: fwqt #[QT]重复
       - name: 法律咨询
-        code: FLZX
+        code: flzx
       - name: 会计
-        code: KJ
+        code: kj
       - name: 审计
-        code: SJ
+        code: sj
       - name: 安保
-        code: AB
+        code: ab
   - name: 机械设备
-    code: JXSB
+    code: jxsb
     child:
       - name: 工程机械
-        code: GCJX
+        code: gcjx
       - name: 车辆
-        code: CL
+        code: cl
       - name: 其他机械设备
-        code: QTJXSB
+        code: qtjxsb
       - name: 机床相关
-        code: JCXG
+        code: jcxg
       - name: 机械零部件
-        code: JXLBJ
+        code: jxlbj
       - name: 矿山机械
-        code: KSJX
+        code: ksjx
   - name: 水利水电
-    code: SLSD
+    code: slsd
     child:
       - name: 水利工程
-        code: SLGC
+        code: slgc
       - name: 发电工程
-        code: FDGC
+        code: fdgc
       - name: 航运工程
-        code: HYGC
+        code: hygc
       - name: 其他工程
-        code: QTGC
+        code: qtgc
   - name: 能源化工
-    code: NYHG
+    code: nyhg
     child:
       - name: 仪器仪表
-        code: YQYB
+        code: yqyb
       - name: 原材料
-        code: YCL
+        code: ycl
       - name: 新能源
-        code: XNY
+        code: xny
       - name: 设备物资
-        code: SBWZ
+        code: sbwz
       - name: 化工产品
-        code: HGCP
+        code: hgcp
   - name: 弱电安防
-    code: RDAF
+    code: rdaf
     child:
       - name: 综合布线
-        code: ZHBX
+        code: zhbx
       - name: 智能系统
-        code: ZNXT
+        code: znxt
       - name: 智能家居
-        code: ZNJJ
+        code: znjj
   - name: 信息技术
-    code: XXJS
+    code: xxjs
     child:
       - name: 系统集成及安全
-        code: XTJCJAQ
+        code: xtjcjaq
       - name: 软件开发
-        code: RJKF
+        code: rjkf
       - name: 运维服务
-        code: YWFW
+        code: ywfw
       - name: 信息其他 #[其他]重复
-        code: XXQT  #[QT]重复
+        code: xxqt  #[QT]重复
   - name: 交通工程
-    code: JTGC
+    code: jtgc
     child:
       - name: 交通道路 #[道路]重复
-        code: JTDL   #[DL]重复
+        code: jtdl   #[DL]重复
       - name: 轨道
-        code: GD
+        code: gd
       - name: 桥梁
-        code: QL
+        code: ql
       - name: 隧道
-        code: SD
+        code: sd
       - name: 交通其他  # [其他]重复
-        code: JTQT # [QT]重复
+        code: jtqt # [QT]重复
   - name: 市政设施
-    code: SZSS
+    code: szss
     child:
       - name: 市政道路 # [道路]重复
-        code: SZDL    # [DL]重复
+        code: szdl    # [DL]重复
       - name: 绿化
-        code: LH
+        code: lh
       - name: 线路管网
-        code: XLGW
+        code: xlgw
       - name: 综合项目
-        code: ZHXM
+        code: zhxm
   - name: 农林牧渔
-    code: NLMY
+    code: nlmy
     child:
       - name: 生产物资
-        code: SCWZ
+        code: scwz
       - name: 生产设备
-        code: SCSB
+        code: scsb
       - name: 相关服务
-        code: XGFW
+        code: xgfw
+# 首页热门行业
+topClass: [ "JZGC","NYHG","FWCG","XZBG","XXJS","JXSB" ]
 
 detailNeedMosaic:
   buyerperson: true

+ 4 - 0
resource/template/error.html

@@ -0,0 +1,4 @@
+<div>
+    <h1>出错啦</h1>
+    <h2>{{.ErrMsg}}</h2>
+</div>

+ 49 - 0
resource/template/pc/area_city_list.html

@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+{{$global:=.}}
+<div style="display: none">
+    {{dump $global}}
+</div>
+当前位置:
+<a href="">监狱招标官网</a>
+<a href="{{$global.cityNode.PNode.Href}}">{{$global.cityNode.PNode.Name}}招标网</a>
+<a href="{{$global.cityNode.Href}}">{{$global.cityNode.Name}}招标网</a>
+<div style="display: flex;">
+    <div style="flex: 3">
+        <ul>
+            {{range $k,$v :=$global.list}}
+            <li>{{$k | plus 1}}. <a>{{$v.Title}}</a> <span>{{$v.PublishTime | date "Y-m-d"}}</span></li>
+            {{end}}
+            {{include "pc/components/seo-pagination.html" .}}
+        </ul>
+    </div>
+    <div style="flex: 1">
+        <div>
+            <div>{{$global.cityNode.PNode.Name}}招标网热门行业招标</div>
+            <div>
+                {{range $class :=GetAllClass}}
+                <a href="/{{$class.Code}}/">{{$class.Name}}招标</a>
+                {{end}}
+            </div>
+        </div>
+        {{if $global.cityNode.PNode.Child}}
+        <div style="padding-top: 30px">
+            <div>{{$global.cityNode.PNode.Name}}招标网相关城市招标</div>
+            <div>
+                {{range $city:=$global.cityNode.PNode.Child}}
+                <a href="{{$city.Href}}">{{$city.Name}}招标网</a>
+                {{end}}
+            </div>
+        </div>
+        {{end}}
+    </div>
+</div>
+
+
+</body>
+</html>

+ 0 - 10
resource/template/pc/area_list.html

@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-
-</body>
-</html>

+ 82 - 0
resource/template/pc/components/seo-pagination.html

@@ -0,0 +1,82 @@
+
+<style>
+.seo-pagination {
+    padding: 20px 0;
+    position: relative;
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+}
+.seo-pagination .el-pager li {
+    display: inline-block;
+    margin: 0 4px;
+    padding: 0;
+    min-width: 32px;
+    border-radius: 2px;
+    color: #1d1d1d;
+    background-color: #fff;
+    cursor: pointer;
+    border: 1px solid rgba(0, 0, 0, 0.05);
+}
+.seo-pagination .el-pager li.number {
+    margin: 0 4px;
+    padding: 0;
+    min-width: 32px;
+    border-radius: 2px;
+    color: #1d1d1d;
+    background-color: #fff;
+    cursor: pointer;
+    border: 1px solid rgba(0, 0, 0, 0.05);
+}
+.seo-pagination .el-pager li.active {
+    color: #fff;
+    background-color: #2cb7ca;
+    border-color: #2cb7ca;
+}
+.seo-pagination .el-pager li a {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 100%;
+    height: 100%;
+    color: inherit;
+    cursor: inherit;
+}
+.seo-pagination a:focus,
+.seo-pagination a:hover {
+    text-decoration: none;
+}
+.seo-pagination .prev-page.disabled,
+.seo-pagination .next-page.disabled {
+    color: #c0c4cc;
+    cursor: no-drop;
+}
+.seo-pagination .el-pagination__jump {
+    margin-left: 6px;
+    color: #686868;
+}
+.seo-pagination .el-input__inner {
+    text-align: center;
+}
+.seo-pagination .el-pagination__confirm {
+    display: inline-block;
+    font-size: 14px;
+    min-width: 32px;
+    height: 32px;
+    line-height: 30px;
+    vertical-align: top;
+    box-sizing: border-box;
+    width: 52px;
+    text-align: center;
+    color: #1d1d1d;
+    border: 1px solid #ECECEC;
+}
+
+</style>
+
+{{if .pagination.PagingHtml}}
+<div class="seo-pagination">{{ParseHtml .pagination.PagingHtml}}</div>
+{{end}}
+
+<script src='{{Cdn}}/jyseo/js/seo-pagination.js?v={{Msg "version"}}'></script>
+

+ 0 - 3
utility/db.go

@@ -3,10 +3,8 @@ package utility
 import (
 	m "app.yhyue.com/moapp/jybase/mongodb"
 	"context"
-	"fmt"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/os/gctx"
-	"jybxseo/internal/consts"
 )
 
 type (
@@ -29,7 +27,6 @@ var (
 
 func init() {
 	initCtx := gctx.New()
-	fmt.Println(consts.CityType)
 	if err := g.Cfg().MustGet(initCtx, "mongodb").Struct(&mongdbConf); err != nil {
 		panic(err)
 	}