dev stock stragety
This commit is contained in:
11
.air.toml
Normal file
11
.air.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
# .air.toml
|
||||
# 工作目录
|
||||
root = "."
|
||||
tmp_dir = "tmp"
|
||||
# 需要监控的文件类型
|
||||
[watch]
|
||||
extensions = ["go", "tpl", "html", "js"]
|
||||
# 编译输出的二进制文件路径
|
||||
[build]
|
||||
bin = "../builds/app.exe"
|
||||
cmd = "go build -o ../builds/app.exe ./cmd/main/main.go"
|
||||
@@ -5,30 +5,35 @@ import (
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/crypto/encipher"
|
||||
"git.apinb.com/bsm-sdk/core/env"
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
"git.apinb.com/bsm-sdk/core/middleware"
|
||||
"git.apinb.com/senlinai/site/internal/config"
|
||||
"git.apinb.com/senlinai/site/internal/impl"
|
||||
"git.apinb.com/senlinai/site/internal/routers"
|
||||
"git.apinb.com/senlinai/site/internal/tmpl"
|
||||
md "git.apinb.com/bsm-sdk/core/middleware"
|
||||
"git.apinb.com/senlinai/cloud/internal/config"
|
||||
"git.apinb.com/senlinai/cloud/internal/impl"
|
||||
"git.apinb.com/senlinai/cloud/internal/middleware"
|
||||
"git.apinb.com/senlinai/cloud/internal/routers"
|
||||
"git.apinb.com/senlinai/cloud/internal/tmpl"
|
||||
)
|
||||
|
||||
var (
|
||||
ServiceKey = "site"
|
||||
ServiceKey = "cloud"
|
||||
)
|
||||
|
||||
func main() {
|
||||
config.New(ServiceKey)
|
||||
impl.NewImpl()
|
||||
encipher.New(env.Runtime.JwtSecretKey)
|
||||
|
||||
// 初始化Gin引擎
|
||||
app := gin.Default()
|
||||
tmpl.New(app)
|
||||
|
||||
// 创建并加载自定义渲染器
|
||||
middleware.Mode(app)
|
||||
app.Use(middleware.Cors())
|
||||
md.Mode(app)
|
||||
app.Use(md.Cors())
|
||||
app.Use(gin.Recovery())
|
||||
app.Use(middleware.EnableCookieSession("MgtSession", env.Runtime.JwtSecretKey))
|
||||
|
||||
// 3. 注册健康检查路由
|
||||
app.HEAD("/", infra.Health)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Service: site
|
||||
Port: 8080
|
||||
Service: cloud
|
||||
Port: 80
|
||||
|
||||
Databases:
|
||||
Driver: postgres
|
||||
@@ -1,4 +1,4 @@
|
||||
Service: sites
|
||||
Service: cloud
|
||||
Port: 8080
|
||||
|
||||
# cache DB的选择请在后面直接带参数,不带会自动HASH计算选择DB库。
|
||||
@@ -1,4 +1,4 @@
|
||||
Service: sites
|
||||
Service: cloud
|
||||
Port: 8080
|
||||
|
||||
# cache DB的选择请在后面直接带参数,不带会自动HASH计算选择DB库。
|
||||
63
go.mod
63
go.mod
@@ -1,10 +1,9 @@
|
||||
module git.apinb.com/senlinai/site
|
||||
module git.apinb.com/senlinai/cloud
|
||||
|
||||
go 1.25.1
|
||||
|
||||
require (
|
||||
git.apinb.com/bsm-sdk/core v0.1.8
|
||||
github.com/gin-contrib/cors v1.7.5
|
||||
github.com/gin-gonic/gin v1.11.0
|
||||
)
|
||||
|
||||
@@ -12,8 +11,10 @@ require (
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/allegro/bigcache/v3 v3.1.0 // indirect
|
||||
github.com/boj/redistore v1.4.1 // indirect
|
||||
github.com/bytedance/gopkg v0.1.3 // indirect
|
||||
github.com/gin-contrib/cors v1.7.6 // indirect
|
||||
github.com/go-sql-driver/mysql v1.8.1 // indirect
|
||||
github.com/goccy/go-yaml v1.18.0 // indirect
|
||||
github.com/goccy/go-yaml v1.19.2 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
|
||||
github.com/gomodule/redigo v1.9.2 // indirect
|
||||
github.com/gorilla/context v1.1.2 // indirect
|
||||
@@ -24,36 +25,36 @@ require (
|
||||
github.com/jackc/pgx/v5 v5.6.0 // indirect
|
||||
github.com/jackc/puddle/v2 v2.2.2 // indirect
|
||||
github.com/quic-go/qpack v0.6.0 // indirect
|
||||
github.com/quic-go/quic-go v0.58.0 // indirect
|
||||
github.com/quic-go/quic-go v0.59.0 // indirect
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
|
||||
go.uber.org/mock v0.5.2 // indirect
|
||||
golang.org/x/mod v0.27.0 // indirect
|
||||
golang.org/x/sync v0.16.0 // indirect
|
||||
golang.org/x/tools v0.36.0 // indirect
|
||||
golang.org/x/mod v0.31.0 // indirect
|
||||
golang.org/x/sync v0.19.0 // indirect
|
||||
golang.org/x/tools v0.40.0 // indirect
|
||||
gorm.io/driver/mysql v1.6.0 // indirect
|
||||
gorm.io/driver/postgres v1.6.0 // indirect
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/bytedance/sonic v1.14.0 // indirect
|
||||
github.com/bytedance/sonic/loader v0.3.0 // indirect
|
||||
github.com/bytedance/sonic v1.15.0 // indirect
|
||||
github.com/bytedance/sonic/loader v0.5.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/cloudwego/base64x v0.1.6 // indirect
|
||||
github.com/coreos/go-semver v0.3.1 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.6.0 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.9 // indirect
|
||||
github.com/gin-contrib/sessions v1.0.4
|
||||
github.com/gabriel-vasile/mimetype v1.4.12 // indirect
|
||||
github.com/gin-contrib/sessions v1.0.4 // indirect
|
||||
github.com/gin-contrib/sse v1.1.0 // indirect
|
||||
github.com/gin-gonic/contrib v0.0.0-20250521004450-2b1292699c15
|
||||
github.com/gin-gonic/contrib v0.0.0-20250521004450-2b1292699c15 // indirect
|
||||
github.com/go-playground/locales v0.14.1 // indirect
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.27.0 // indirect
|
||||
github.com/go-playground/validator/v10 v10.30.1 // indirect
|
||||
github.com/goccy/go-json v0.10.5 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 // indirect
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jinzhu/now v1.1.5 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
@@ -65,23 +66,23 @@ require (
|
||||
github.com/oklog/ulid/v2 v2.1.1 // indirect
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
|
||||
github.com/redis/go-redis/v9 v9.8.0 // indirect
|
||||
github.com/redis/go-redis/v9 v9.17.3 // indirect
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||
github.com/ugorji/go/codec v1.3.0 // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.6.0 // indirect
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.6.0 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.6.0 // indirect
|
||||
github.com/ugorji/go/codec v1.3.1 // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.6.7 // indirect
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.6.7 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.6.7 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/arch v0.20.0 // indirect
|
||||
golang.org/x/crypto v0.41.0 // indirect
|
||||
golang.org/x/net v0.43.0 // indirect
|
||||
golang.org/x/sys v0.35.0 // indirect
|
||||
golang.org/x/text v0.28.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 // indirect
|
||||
google.golang.org/grpc v1.72.1 // indirect
|
||||
google.golang.org/protobuf v1.36.9 // indirect
|
||||
go.uber.org/zap v1.27.1 // indirect
|
||||
golang.org/x/arch v0.23.0 // indirect
|
||||
golang.org/x/crypto v0.47.0 // indirect
|
||||
golang.org/x/net v0.49.0 // indirect
|
||||
golang.org/x/sys v0.40.0 // indirect
|
||||
golang.org/x/text v0.33.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d // indirect
|
||||
google.golang.org/grpc v1.78.0 // indirect
|
||||
google.golang.org/protobuf v1.36.11 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
gorm.io/gorm v1.30.0 // indirect
|
||||
gorm.io/gorm v1.31.1
|
||||
)
|
||||
|
||||
67
go.sum
67
go.sum
@@ -12,15 +12,21 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
|
||||
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
|
||||
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
|
||||
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
|
||||
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
|
||||
github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ=
|
||||
github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4=
|
||||
github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ=
|
||||
github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA=
|
||||
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
|
||||
github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
|
||||
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
||||
github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY=
|
||||
github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
|
||||
github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA=
|
||||
github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
|
||||
github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
|
||||
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4=
|
||||
@@ -32,6 +38,8 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr
|
||||
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
|
||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo=
|
||||
github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
@@ -39,8 +47,12 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||
github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY=
|
||||
github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok=
|
||||
github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCKbn0w9jyqw=
|
||||
github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
|
||||
github.com/gin-contrib/cors v1.7.5 h1:cXC9SmofOrRg0w9PigwGlHG3ztswH6bqq4vJVXnvYMk=
|
||||
github.com/gin-contrib/cors v1.7.5/go.mod h1:4q3yi7xBEDDWKapjT2o1V7mScKDDr8k+jZ0fSquGoy0=
|
||||
github.com/gin-contrib/cors v1.7.6 h1:3gQ8GMzs1Ylpf70y8bMw4fVpycXIeX1ZemuSQIsnQQY=
|
||||
github.com/gin-contrib/cors v1.7.6/go.mod h1:Ulcl+xN4jel9t1Ry8vqph23a60FwH9xVLd+3ykmTjOk=
|
||||
github.com/gin-contrib/sessions v1.0.4 h1:ha6CNdpYiTOK/hTp05miJLbpTSNfOnFg5Jm2kbcqy8U=
|
||||
github.com/gin-contrib/sessions v1.0.4/go.mod h1:ccmkrb2z6iU2osiAHZG3x3J4suJK+OU27oqzlWOqQgs=
|
||||
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
|
||||
@@ -53,6 +65,7 @@ github.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk=
|
||||
github.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||
@@ -65,12 +78,16 @@ github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc
|
||||
github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo=
|
||||
github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4=
|
||||
github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo=
|
||||
github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w=
|
||||
github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM=
|
||||
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
||||
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
||||
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
||||
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
|
||||
github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw=
|
||||
github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
|
||||
github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=
|
||||
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
@@ -95,6 +112,8 @@ github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzq
|
||||
github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s=
|
||||
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
|
||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
|
||||
@@ -147,20 +166,27 @@ github.com/quic-go/quic-go v0.54.0 h1:6s1YB9QotYI6Ospeiguknbp2Znb/jZYjZLRXn9kMQB
|
||||
github.com/quic-go/quic-go v0.54.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY=
|
||||
github.com/quic-go/quic-go v0.58.0 h1:ggY2pvZaVdB9EyojxL1p+5mptkuHyX5MOSv4dgWF4Ug=
|
||||
github.com/quic-go/quic-go v0.58.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
||||
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
|
||||
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
||||
github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI=
|
||||
github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
|
||||
github.com/redis/go-redis/v9 v9.17.3 h1:fN29NdNrE17KttK5Ndf20buqfDZwGNgoUr9qjl1DQx4=
|
||||
github.com/redis/go-redis/v9 v9.17.3/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370=
|
||||
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
|
||||
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
|
||||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
|
||||
github.com/stretchr/objx v0.1.0/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/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||
@@ -169,26 +195,40 @@ github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65E
|
||||
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||
github.com/ugorji/go/codec v1.3.0 h1:Qd2W2sQawAfG8XSvzwhBeoGq71zXOC/Q1E9y/wUcsUA=
|
||||
github.com/ugorji/go/codec v1.3.0/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
|
||||
github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=
|
||||
github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
go.etcd.io/etcd/api/v3 v3.6.0 h1:vdbkcUBGLf1vfopoGE/uS3Nv0KPyIpUV/HM6w9yx2kM=
|
||||
go.etcd.io/etcd/api/v3 v3.6.0/go.mod h1:Wt5yZqEmxgTNJGHob7mTVBJDZNXiHPtXTcPab37iFOw=
|
||||
go.etcd.io/etcd/api/v3 v3.6.7 h1:7BNJ2gQmc3DNM+9cRkv7KkGQDayElg8x3X+tFDYS+E0=
|
||||
go.etcd.io/etcd/api/v3 v3.6.7/go.mod h1:xJ81TLj9hxrYYEDmXTeKURMeY3qEDN24hqe+q7KhbnI=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.6.0 h1:nchnPqpuxvv3UuGGHaz0DQKYi5EIW5wOYsgUNRc365k=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.6.0/go.mod h1:Jv5SFWMnGvIBn8o3OaBq/PnT0jjsX8iNokAUessNjoA=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.6.7 h1:vvzgyozz46q+TyeGBuFzVuI53/yd133CHceNb/AhBVs=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.6.7/go.mod h1:2IVulJ3FZ/czIGl9T4lMF1uxzrhRahLqe+hSgy+Kh7Q=
|
||||
go.etcd.io/etcd/client/v3 v3.6.0 h1:/yjKzD+HW5v/3DVj9tpwFxzNbu8hjcKID183ug9duWk=
|
||||
go.etcd.io/etcd/client/v3 v3.6.0/go.mod h1:Jzk/Knqe06pkOZPHXsQ0+vNDvMQrgIqJ0W8DwPdMJMg=
|
||||
go.etcd.io/etcd/client/v3 v3.6.7 h1:9WqA5RpIBtdMxAy1ukXLAdtg2pAxNqW5NUoO2wQrE6U=
|
||||
go.etcd.io/etcd/client/v3 v3.6.7/go.mod h1:2XfROY56AXnUqGsvl+6k29wrwsSbEh1lAouQB1vHpeE=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
|
||||
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
|
||||
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
|
||||
go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
|
||||
go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
|
||||
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
|
||||
go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
|
||||
go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
|
||||
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
|
||||
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
|
||||
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
|
||||
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
|
||||
@@ -199,10 +239,14 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
|
||||
go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU=
|
||||
golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk=
|
||||
golang.org/x/arch v0.20.0 h1:dx1zTU0MAE98U+TQ8BLl7XsJbgze2WnNKF/8tGp/Q6c=
|
||||
golang.org/x/arch v0.20.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk=
|
||||
golang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg=
|
||||
golang.org/x/arch v0.23.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
@@ -212,12 +256,16 @@ golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
|
||||
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
|
||||
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
|
||||
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
|
||||
golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
|
||||
golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
|
||||
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.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
|
||||
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
||||
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
||||
golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
|
||||
golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
@@ -228,11 +276,14 @@ golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
|
||||
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
|
||||
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
|
||||
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
|
||||
golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
|
||||
golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/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.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
|
||||
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@@ -241,6 +292,8 @@ golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
|
||||
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
|
||||
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
|
||||
@@ -249,6 +302,8 @@ golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
|
||||
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
|
||||
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
|
||||
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
|
||||
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
|
||||
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
@@ -257,20 +312,30 @@ golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
|
||||
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
|
||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
||||
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
||||
golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
|
||||
golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
|
||||
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=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJcto=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d h1:tUKoKfdZnSjTf5LW7xpG4c6SZ3Ozisn5eumcoTuMEN4=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d h1:xXzuihhT3gL/ntduUZwHECzAn57E8dA6l8SOtYWdD8Q=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
|
||||
google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
|
||||
google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
|
||||
google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc=
|
||||
google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U=
|
||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
|
||||
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
|
||||
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
|
||||
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
@@ -285,4 +350,6 @@ gorm.io/gorm v1.26.1 h1:ghB2gUI9FkS46luZtn6DLZ0f6ooBJ5IbVej2ENFDjRw=
|
||||
gorm.io/gorm v1.26.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
|
||||
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||
gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg=
|
||||
gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs=
|
||||
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
|
||||
|
||||
12
internal/logic/apps/home.go
Normal file
12
internal/logic/apps/home.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package apps
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
|
||||
func Home(c *gin.Context) {
|
||||
data := gin.H{
|
||||
"Title": "Welcome to " + c.Request.Host,
|
||||
"Message": "This is " + c.Request.Host + " index page.",
|
||||
}
|
||||
|
||||
c.HTML(200, "apps-home.html", data)
|
||||
}
|
||||
17
internal/logic/apps/stock.go
Normal file
17
internal/logic/apps/stock.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package apps
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
|
||||
var (
|
||||
data = gin.H{
|
||||
"Title": "重生之我在A股开超市",
|
||||
}
|
||||
)
|
||||
|
||||
func StockHome(c *gin.Context) {
|
||||
c.HTML(200, "stock-home.html", data)
|
||||
}
|
||||
|
||||
func StrategyBy(c *gin.Context) {
|
||||
c.HTML(200, "strategy-by.html", data)
|
||||
}
|
||||
8
internal/logic/auth/login.go
Normal file
8
internal/logic/auth/login.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func Login(c *gin.Context) {
|
||||
}
|
||||
29
internal/logic/auth/logout.go
Normal file
29
internal/logic/auth/logout.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// 退出登录处理
|
||||
func Logout(c *gin.Context) {
|
||||
session := sessions.Default(c)
|
||||
|
||||
// 清除会话中的token
|
||||
session.Delete("MgtSession")
|
||||
|
||||
// 设置会话立即过期
|
||||
session.Options(sessions.Options{
|
||||
MaxAge: -1, // 立即过期
|
||||
Path: "/",
|
||||
})
|
||||
|
||||
// 保存会话更改
|
||||
if err := session.Save(); err != nil {
|
||||
infra.Response.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
infra.Response.Success(c, "Logged out successfully")
|
||||
}
|
||||
14
internal/logic/auth/sign_in.go
Normal file
14
internal/logic/auth/sign_in.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func SignIn(c *gin.Context) {
|
||||
data := gin.H{
|
||||
"Title": "Welcome to " + c.Request.Host,
|
||||
"Message": "This is " + c.Request.Host + " index page.",
|
||||
}
|
||||
|
||||
c.HTML(200, "index.html", data)
|
||||
}
|
||||
45
internal/middleware/session.go
Normal file
45
internal/middleware/session.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-contrib/sessions/cookie"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var sessionID string
|
||||
|
||||
func CheckSession() gin.HandlerFunc {
|
||||
return func(ctx *gin.Context) {
|
||||
session := sessions.Default(ctx)
|
||||
|
||||
//ctx.Next()
|
||||
//return
|
||||
|
||||
token := session.Get(sessionID)
|
||||
log.Println("session:", sessionID, token)
|
||||
// 未登录时重定向到登录页
|
||||
if token == nil {
|
||||
ctx.Redirect(301, "/sign-in")
|
||||
return
|
||||
}
|
||||
|
||||
// set simple var
|
||||
ctx.Set("SESSION", token)
|
||||
// validate session:1.check cache 2.check database // TODO
|
||||
|
||||
ctx.Next()
|
||||
}
|
||||
}
|
||||
func EnableCookieSession(name, key string) gin.HandlerFunc {
|
||||
store := cookie.NewStore([]byte(name))
|
||||
store.Options(sessions.Options{
|
||||
Path: "/",
|
||||
MaxAge: 86400, // 24小时
|
||||
HttpOnly: true,
|
||||
Secure: false, // 在使用HTTPS的生产环境中设置为true
|
||||
})
|
||||
sessionID = name
|
||||
return sessions.Sessions(key, store)
|
||||
}
|
||||
@@ -4,13 +4,32 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"git.apinb.com/senlinai/site/internal/logic"
|
||||
"git.apinb.com/senlinai/cloud/internal/logic"
|
||||
"git.apinb.com/senlinai/cloud/internal/logic/apps"
|
||||
"git.apinb.com/senlinai/cloud/internal/logic/auth"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Register public 注册路由
|
||||
func RegistersPublic(engine *gin.Engine) {
|
||||
engine.GET("/", logic.Index)
|
||||
|
||||
// 匿名访问接口
|
||||
engine.GET("/sign-in", auth.SignIn) // 登录
|
||||
engine.POST("/login", auth.Login)
|
||||
engine.GET("/logout", auth.Logout) // 退出登录
|
||||
|
||||
registerCenter("apps", engine)
|
||||
}
|
||||
|
||||
func registerCenter(v1_key string, engine *gin.Engine) {
|
||||
center := engine.Group(v1_key)
|
||||
|
||||
// Session认证
|
||||
// center.Use(middleware.CheckSession())
|
||||
|
||||
center.GET("/home", apps.Home) // 首页概况
|
||||
|
||||
}
|
||||
|
||||
func RegistersAll(engine *gin.Engine) {
|
||||
|
||||
257
res/templates/apps-home.html
Normal file
257
res/templates/apps-home.html
Normal file
@@ -0,0 +1,257 @@
|
||||
{{template "components/header.html" .}}
|
||||
{{template "components/preloader.html" .}}
|
||||
<div id="main-wrapper">
|
||||
<!-- Sidebar Start -->
|
||||
{{template "components/sidebar.html" .}}
|
||||
<!-- Sidebar End -->
|
||||
<div class="page-wrapper">
|
||||
<!-- Header Start -->
|
||||
{{template "components/topbar.html" .}}
|
||||
<!-- Header End -->
|
||||
<div class="body-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-xl-3">
|
||||
<div class="card bg-primary-subtle shadow-none">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="round rounded text-bg-primary d-flex align-items-center justify-content-center">
|
||||
<i class="cc BTC text-white fs-7" title="BTC"></i>
|
||||
</div>
|
||||
<h6 class="mb-0 ms-3">BTC</h6>
|
||||
<div class="ms-auto text-primary d-flex align-items-center">
|
||||
<i class="ti ti-trending-up text-primary fs-6 me-1"></i>
|
||||
<span class="fs-2 fw-bold">+ 2.30%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between mt-4">
|
||||
<h3 class="mb-0 fw-semibold fs-7">0.1245</h3>
|
||||
<span class="fw-bold">$1,015.00</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-xl-3">
|
||||
<div class="card bg-danger-subtle shadow-none">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="round rounded text-bg-danger d-flex align-items-center justify-content-center">
|
||||
<i class="cc ETH text-white fs-7" title="ETH"></i>
|
||||
</div>
|
||||
<h6 class="mb-0 ms-3">ETH</h6>
|
||||
<div class="ms-auto text-danger d-flex align-items-center">
|
||||
<i class="ti ti-trending-up text-danger fs-6 me-1"></i>
|
||||
<span class="fs-2 fw-bold">+ 3.20%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between mt-4">
|
||||
<h3 class="mb-0 fw-semibold fs-7">0.5620</h3>
|
||||
<span class="fw-bold">$2,110.00</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-xl-3">
|
||||
<div class="card bg-success-subtle shadow-none">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="round rounded text-bg-success d-flex align-items-center justify-content-center">
|
||||
<i class="cc LTC text-white fs-7" title="LTC"></i>
|
||||
</div>
|
||||
<h6 class="mb-0 ms-3">LTC</h6>
|
||||
<div class="ms-auto text-info d-flex align-items-center">
|
||||
<i class="ti ti-trending-down text-success fs-6 me-1"></i>
|
||||
<span class="fs-2 fw-bold text-success">+ 3.20%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between mt-4">
|
||||
<h3 class="mb-0 fw-semibold fs-7">1.200</h3>
|
||||
<span class="fw-bold">$1,100.00</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-xl-3">
|
||||
<div class="card bg-warning-subtle shadow-none">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="round rounded text-bg-warning d-flex align-items-center justify-content-center">
|
||||
<i class="cc XRP text-white fs-7" title="XRP"></i>
|
||||
</div>
|
||||
<h6 class="mb-0 ms-3">XRP</h6>
|
||||
<div class="ms-auto text-info d-flex align-items-center">
|
||||
<i class="ti ti-trending-down text-warning fs-6 me-1"></i>
|
||||
<span class="fs-2 fw-bold text-warning">+ 2.20%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-between mt-4">
|
||||
<h3 class="mb-0 fw-semibold fs-7">1.150</h3>
|
||||
<span class="fw-bold">$2,150.00</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title fw-semibold">Trade History</h4>
|
||||
<p class="card-subtitle">Trade and the Age of Exploration</p>
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table table-borderless text-nowrap align-middle mb-0">
|
||||
<tbody>
|
||||
<tr class="bg-light">
|
||||
<td class="rounded-start bg-transparent">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div>
|
||||
<i class="cc BTC fs-7"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">Bitcoin</h6>
|
||||
<span class="fs-3">BTC</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="bg-transparent"> $981.1254 <i class="ti ti-chevron-down text-danger ms-1 fs-4"></i>
|
||||
</td>
|
||||
<td class="bg-transparent">
|
||||
<i class="cc ETC me-1 text-primary fs-5" title="ETC"></i> 0.23125
|
||||
</td>
|
||||
<td class="bg-transparent">$1.23560 B</td>
|
||||
<td class="bg-transparent">04 Feb 2024</td>
|
||||
<td class="text-end rounded-end bg-transparent">
|
||||
<span class="badge bg-danger">transfer</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"></td>
|
||||
</tr>
|
||||
<tr class="bg-light">
|
||||
<td class="rounded-start bg-transparent">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div>
|
||||
<i class="cc ETH fs-7"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">Ethereum</h6>
|
||||
<span class="fs-3">ETH</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="bg-transparent"> $450.1254 <i class="ti ti-chevron-down text-danger ms-1 fs-4"></i>
|
||||
</td>
|
||||
<td class="bg-transparent">
|
||||
<i class="cc ETC me-1 text-primary fs-5" title="ETC"></i> 0.45000
|
||||
</td>
|
||||
<td class="bg-transparent">$3.23560 B</td>
|
||||
<td class="bg-transparent">09 Mar 2024</td>
|
||||
<td class="text-end rounded-end bg-transparent">
|
||||
<span class="badge bg-primary">sell</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"></td>
|
||||
</tr>
|
||||
<tr class="bg-light">
|
||||
<td class="rounded-start bg-transparent">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div>
|
||||
<i class="cc LTC fs-7"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">Litecoin</h6>
|
||||
<span class="fs-3">LTC</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="bg-transparent"> $100.1254 <i class="ti ti-chevron-up text-success ms-1 fs-4"></i>
|
||||
</td>
|
||||
<td class="bg-transparent">
|
||||
<i class="cc BTC me-1 text-danger fs-5" title="BTC"></i> 0.56012
|
||||
</td>
|
||||
<td class="bg-transparent">$2.45620 B</td>
|
||||
<td class="bg-transparent">12 Dec 2024</td>
|
||||
<td class="text-end rounded-end bg-transparent">
|
||||
<span class="badge bg-success">buy</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"></td>
|
||||
</tr>
|
||||
<tr class="bg-light">
|
||||
<td class="rounded-start bg-transparent">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div>
|
||||
<i class="cc XRP fs-7"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">XRP</h6>
|
||||
<span class="fs-3">XRP</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="bg-transparent"> $450.1254 <i class="ti ti-chevron-down text-danger ms-1 fs-4"></i>
|
||||
</td>
|
||||
<td class="bg-transparent">
|
||||
<i class="cc ETC me-1 text-primary fs-5" title="ETC"></i> 0.45000
|
||||
</td>
|
||||
<td class="bg-transparent">$3.23560 B</td>
|
||||
<td class="bg-transparent">01 Aug 2024</td>
|
||||
<td class="text-end rounded-end bg-transparent">
|
||||
<span class="badge bg-danger">transfer</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
function MarketWebSocket()
|
||||
{
|
||||
if ("WebSocket" in window)
|
||||
{
|
||||
|
||||
// 打开一个 web socket
|
||||
var ws = new WebSocket("ws://market.senlin.ai:13300/ws");
|
||||
|
||||
ws.onopen = function()
|
||||
{
|
||||
// Web Socket 已连接上,使用 send() 方法发送数据
|
||||
console.log("Web Socket 已连接上");
|
||||
};
|
||||
|
||||
ws.onmessage = function (evt)
|
||||
{
|
||||
var received_msg = evt.data;
|
||||
console.log(received_msg);
|
||||
};
|
||||
|
||||
ws.onclose = function()
|
||||
{
|
||||
// 关闭 websocket
|
||||
console.log("连接已关闭");
|
||||
};
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// 浏览器不支持 WebSocket
|
||||
alert("您的浏览器不支持 WebSocket!");
|
||||
}
|
||||
}
|
||||
|
||||
MarketWebSocket();
|
||||
</script>
|
||||
|
||||
{{template "components/footer.html" .}}
|
||||
@@ -10,11 +10,8 @@
|
||||
<script src="/assets/js/theme/sidebarmenu.js"></script>
|
||||
|
||||
<!-- solar icons -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/iconify-icon@1.0.8/dist/iconify-icon.min.js"></script>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/iconify/3.1.1/iconify.min.js"></script>
|
||||
<script src="/assets/libs/owl.carousel/dist/owl.carousel.min.js"></script>
|
||||
<script src="/assets/libs/apexcharts/dist/apexcharts.min.js"></script>
|
||||
<script src="/assets/js/dashboards/dashboard.js"></script>
|
||||
|
||||
{{if .ExtraScripts}}
|
||||
{{range .ExtraScripts}}
|
||||
<script src="{{.}}"></script>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" data-bs-theme="light" data-color-theme="Blue_Theme" data-layout="vertical">
|
||||
<html lang="zh-cn" dir="ltr" data-bs-theme="light" data-color-theme="Blue_Theme" data-layout="vertical">
|
||||
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
|
||||
@@ -16,177 +16,6 @@
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="navbar-nav quick-links d-none d-lg-flex align-items-center">
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start apps Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
<li class="nav-item nav-icon-hover-bg rounded w-auto dropdown d-none d-lg-block mx-0">
|
||||
<div class="hover-dd">
|
||||
<a class="nav-link" href="javascript:void(0)">
|
||||
Apps<span class="mt-1">
|
||||
<i class="ti ti-chevron-down fs-3"></i>
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-nav dropdown-menu-animate-up py-0">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="ps-7 pt-7">
|
||||
<div class="border-bottom">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="position-relative">
|
||||
<a href="../main/app-chat.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-chat.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Chat Application
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">New messages arrived</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-invoice.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-invoice.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">Invoice App</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Get latest invoice</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-contact2.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-mobile.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Contact Application
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">2 Unsaved Contacts</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-email.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-message-box.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">Email App</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Get new emails</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="position-relative">
|
||||
<a href="../main/page-user-profile.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-cart.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
User Profile
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">learn more information</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-calendar.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-date.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Calendar App
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Get dates</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-contact.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-lifebuoy.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Contact List Table
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Add new contact</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-notes.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-application.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Notes Application
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">To-do and Daily tasks</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row align-items-center py-3">
|
||||
<div class="col-8">
|
||||
<a class="fw-semibold d-flex align-items-center lh-1" href="javascript:void(0)">
|
||||
<i class="ti ti-help fs-6 me-2"></i>Frequently Asked Questions
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="d-flex justify-content-end pe-4">
|
||||
<button class="btn btn-primary">Check</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 ms-n4">
|
||||
<div class="position-relative p-7 border-start h-100">
|
||||
<h5 class="fs-5 mb-9 fw-semibold">Quick Links</h5>
|
||||
<ul class="">
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/page-pricing.html">Pricing Page</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/authentication-login.html">Authentication
|
||||
Design</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/authentication-register.html">Register Now</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/authentication-error.html">404 Error Page</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/app-notes.html">Notes App</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/page-user-profile.html">User Application</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/page-account-settings.html">Account Settings</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- ------------------------------- -->
|
||||
<!-- end apps Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
<li class="nav-item dropdown-hover d-none d-lg-block">
|
||||
<a class="nav-link" href="../main/app-chat.html">Chat</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown-hover d-none d-lg-block">
|
||||
<a class="nav-link" href="../main/app-calendar.html">Calendar</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown-hover d-none d-lg-block">
|
||||
<a class="nav-link" href="../main/app-email.html">Email</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="d-block d-lg-none py-4">
|
||||
<a href="../main/index.html" class="text-nowrap logo-img">
|
||||
@@ -214,55 +43,6 @@
|
||||
<i class="ti ti-sun sun"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item nav-icon-hover-bg rounded-circle dropdown">
|
||||
<a class="nav-link" href="javascript:void(0)" id="drop2" aria-expanded="false">
|
||||
<img src="../assets/images/svgs/icon-flag-en.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-end dropdown-menu-animate-up" aria-labelledby="drop2">
|
||||
<div class="message-body">
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-en.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">English (UK)</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-cn.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">中国人 (Chinese)</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-fr.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">français (French)</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-sa.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">عربي (Arabic)</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- ------------------------------- -->
|
||||
<!-- end language Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start shopping cart Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
<li class="nav-item nav-icon-hover-bg rounded-circle">
|
||||
<a class="nav-link position-relative" href="javascript:void(0)" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">
|
||||
<i class="ti ti-basket"></i>
|
||||
<span class="popup-badge rounded-pill bg-danger text-white fs-2">2</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- ------------------------------- -->
|
||||
<!-- end shopping cart Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start notification Dropdown -->
|
||||
@@ -397,20 +177,8 @@
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="d-grid py-4 px-7 pt-8">
|
||||
<div class="upgrade-plan bg-primary-subtle position-relative overflow-hidden rounded-4 p-4 mb-9">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h5 class="fs-4 mb-3 fw-semibold">Unlimited Access</h5>
|
||||
<button class="btn btn-primary">Upgrade</button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="m-n4 unlimited-img">
|
||||
<img src="../assets/images/backgrounds/unlimited-bg.png" alt="modernize-img" class="w-100" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="../main/authentication-login.html" class="btn btn-outline-primary">Log Out</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -437,159 +205,6 @@
|
||||
<img src="../assets/images/logos/favicon.ico" alt="modernize-img" class="img-fluid" />
|
||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body h-n80" data-simplebar="" data-simplebar>
|
||||
<ul id="sidebarnav">
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link has-arrow" href="javascript:void(0)" aria-expanded="false">
|
||||
<span>
|
||||
<i class="ti ti-apps"></i>
|
||||
</span>
|
||||
<span class="hide-menu">Apps</span>
|
||||
</a>
|
||||
<ul aria-expanded="false" class="collapse first-level my-3">
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-chat.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-chat.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Chat Application</h6>
|
||||
<span class="fs-2 d-block text-muted">New messages arrived</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-invoice.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-invoice.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Invoice App</h6>
|
||||
<span class="fs-2 d-block text-muted">Get latest invoice</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-cotact.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-mobile.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Contact Application</h6>
|
||||
<span class="fs-2 d-block text-muted">2 Unsaved Contacts</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-email.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-message-box.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Email App</h6>
|
||||
<span class="fs-2 d-block text-muted">Get new emails</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/page-user-profile.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-cart.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">User Profile</h6>
|
||||
<span class="fs-2 d-block text-muted">learn more information</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-calendar.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-date.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Calendar App</h6>
|
||||
<span class="fs-2 d-block text-muted">Get dates</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-contact2.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-lifebuoy.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Contact List Table</h6>
|
||||
<span class="fs-2 d-block text-muted">Add new contact</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a href="../main/app-notes.html" class="d-flex align-items-center">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-application.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 bg-hover-primary">Notes Application</h6>
|
||||
<span class="fs-2 d-block text-muted">To-do and Daily tasks</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<ul class="px-8 mt-7 mb-4">
|
||||
<li class="sidebar-item mb-3">
|
||||
<h5 class="fs-5 fw-semibold">Quick Links</h5>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/page-pricing.html">Pricing Page</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/authentication-login.html">Authentication
|
||||
Design</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/authentication-register.html">Register Now</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/authentication-error.html">404 Error Page</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/app-notes.html">Notes App</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/page-user-profile.html">User Application</a>
|
||||
</li>
|
||||
<li class="sidebar-item py-2">
|
||||
<a class="fw-semibold text-dark" href="../main/page-account-settings.html">Account Settings</a>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="../main/app-chat.html" aria-expanded="false">
|
||||
<span>
|
||||
<i class="ti ti-message-dots"></i>
|
||||
</span>
|
||||
<span class="hide-menu">Chat</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="../main/app-calendar.html" aria-expanded="false">
|
||||
<span>
|
||||
<i class="ti ti-calendar"></i>
|
||||
</span>
|
||||
<span class="hide-menu">Calendar</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="sidebar-item">
|
||||
<a class="sidebar-link" href="../main/app-email.html" aria-expanded="false">
|
||||
<span>
|
||||
<i class="ti ti-mail"></i>
|
||||
</span>
|
||||
<span class="hide-menu">Email</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@@ -613,177 +228,6 @@
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="navbar-nav quick-links d-none d-xl-flex align-items-center">
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start apps Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
<li class="nav-item nav-icon-hover-bg rounded w-auto dropdown d-none d-lg-flex">
|
||||
<div class="hover-dd">
|
||||
<a class="nav-link" href="javascript:void(0)">
|
||||
Apps<span class="mt-1">
|
||||
<i class="ti ti-chevron-down fs-3"></i>
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-nav dropdown-menu-animate-up py-0">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="ps-7 pt-7">
|
||||
<div class="border-bottom">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="position-relative">
|
||||
<a href="../main/app-chat.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-chat.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Chat Application
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">New messages arrived</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-invoice.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-invoice.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">Invoice App</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Get latest invoice</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-contact2.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-mobile.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Contact Application
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">2 Unsaved Contacts</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-email.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-message-box.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">Email App</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Get new emails</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="position-relative">
|
||||
<a href="../main/page-user-profile.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-cart.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
User Profile
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">learn more information</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-calendar.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-date.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Calendar App
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Get dates</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-contact.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-lifebuoy.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Contact List Table
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">Add new contact</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="../main/app-notes.html" class="d-flex align-items-center pb-9 position-relative">
|
||||
<div class="text-bg-light rounded-1 me-3 p-6 d-flex align-items-center justify-content-center">
|
||||
<img src="../assets/images/svgs/icon-dd-application.svg" alt="modernize-img" class="img-fluid" width="24" height="24" />
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1 fw-semibold fs-3">
|
||||
Notes Application
|
||||
</h6>
|
||||
<span class="fs-2 d-block text-body-secondary">To-do and Daily tasks</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row align-items-center py-3">
|
||||
<div class="col-8">
|
||||
<a class="fw-semibold d-flex align-items-center lh-1" href="javascript:void(0)">
|
||||
<i class="ti ti-help fs-6 me-2"></i>Frequently Asked Questions
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="d-flex justify-content-end pe-4">
|
||||
<button class="btn btn-primary">Check</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 ms-n4">
|
||||
<div class="position-relative p-7 border-start h-100">
|
||||
<h5 class="fs-5 mb-9 fw-semibold">Quick Links</h5>
|
||||
<ul class="">
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/page-pricing.html">Pricing Page</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/authentication-login.html">Authentication
|
||||
Design</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/authentication-register.html">Register Now</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/authentication-error.html">404 Error Page</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/app-notes.html">Notes App</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/page-user-profile.html">User Application</a>
|
||||
</li>
|
||||
<li class="mb-3">
|
||||
<a class="fw-semibold bg-hover-primary" href="../main/page-account-settings.html">Account Settings</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- ------------------------------- -->
|
||||
<!-- end apps Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
<li class="nav-item dropdown-hover d-none d-lg-block">
|
||||
<a class="nav-link" href="../main/app-chat.html">Chat</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown-hover d-none d-lg-block">
|
||||
<a class="nav-link" href="../main/app-calendar.html">Calendar</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown-hover d-none d-lg-block">
|
||||
<a class="nav-link" href="../main/app-email.html">Email</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="d-block d-xl-none">
|
||||
<a href="../main/index.html" class="text-nowrap nav-link">
|
||||
<img src="../assets/images/logos/dark-logo.svg" width="180" alt="modernize-img" />
|
||||
@@ -796,9 +240,6 @@
|
||||
</a>
|
||||
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
|
||||
<div class="d-flex align-items-center justify-content-between px-0 px-xl-8">
|
||||
<a href="javascript:void(0)" class="nav-link round-40 p-1 ps-0 d-flex d-xl-none align-items-center justify-content-center" type="button" data-bs-toggle="offcanvas" data-bs-target="#mobilenavbar" aria-controls="offcanvasWithBothOptions">
|
||||
<i class="ti ti-align-justified fs-7"></i>
|
||||
</a>
|
||||
<ul class="navbar-nav flex-row ms-auto align-items-center justify-content-center">
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start language Dropdown -->
|
||||
@@ -811,55 +252,6 @@
|
||||
<i class="ti ti-sun sun"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item nav-icon-hover-bg rounded-circle dropdown">
|
||||
<a class="nav-link" href="javascript:void(0)" id="drop2" aria-expanded="false">
|
||||
<img src="../assets/images/svgs/icon-flag-en.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-end dropdown-menu-animate-up" aria-labelledby="drop2">
|
||||
<div class="message-body">
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-en.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">English (UK)</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-cn.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">中国人 (Chinese)</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-fr.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">français (French)</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 py-3 px-4 dropdown-item">
|
||||
<div class="position-relative">
|
||||
<img src="../assets/images/svgs/icon-flag-sa.svg" alt="modernize-img" width="20px" height="20px" class="rounded-circle object-fit-cover round-20" />
|
||||
</div>
|
||||
<p class="mb-0 fs-3">عربي (Arabic)</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- ------------------------------- -->
|
||||
<!-- end language Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start shopping cart Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
<li class="nav-item nav-icon-hover-bg rounded-circle">
|
||||
<a class="nav-link position-relative" href="javascript:void(0)" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">
|
||||
<i class="ti ti-basket"></i>
|
||||
<span class="popup-badge rounded-pill bg-danger text-white fs-2">2</span>
|
||||
</a>
|
||||
</li>
|
||||
<!-- ------------------------------- -->
|
||||
<!-- end shopping cart Dropdown -->
|
||||
<!-- ------------------------------- -->
|
||||
|
||||
<!-- ------------------------------- -->
|
||||
<!-- start notification Dropdown -->
|
||||
|
||||
@@ -17,21 +17,21 @@
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav ms-auto mb-2 gap-xl-4 gap-3 mb-lg-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link fs-4 fw-semibold text-white" href="#">图片</a>
|
||||
<a class="nav-link fs-4 text-white" href="#">图片</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link fs-4 fw-semibold text-white" href="#">视频</a>
|
||||
<a class="nav-link fs-4 text-white" href="#">视频</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link fs-4 fw-semibold text-white" href="#">新闻</a>
|
||||
<a class="nav-link fs-4 text-white" href="#">新闻</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link fs-4 fw-semibold text-white" href="#">地图</a>
|
||||
<a class="nav-link fs-4 text-white" href="#">地图</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link fs-4 text-white" href="#">登录</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="ms-3">
|
||||
<a href="#" class="btn btn-light btn-sm py-6 px-8">登录</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
1
tmp/build-errors.log
Normal file
1
tmp/build-errors.log
Normal file
@@ -0,0 +1 @@
|
||||
exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1
|
||||
Reference in New Issue
Block a user