From aae83089739d4f70895f4e5a31697eb76a91f209 Mon Sep 17 00:00:00 2001 From: noreply Date: Wed, 10 Apr 2024 11:00:50 +0800 Subject: [PATCH 01/19] add pg conf --- .github/workflows/docker-alpine.yml | 28 ++++++++++ .gitignore | 3 +- Dockerfile_alpine | 23 +++++++++ docker-compose.yaml | 27 ++++++++++ env | 74 +++++++++++++++++++++++++++ src/.env.example | 15 ++++++ src/bootstrap/bootstrap.go | 12 +++-- src/go.mod | 58 +++++++++++++++++---- src/go.sum | 79 ++++++++++++----------------- src/model/dao/init.go | 7 +++ src/model/dao/mdb.go | 46 ++++------------- src/model/dao/mdb_mysql.go | 47 +++++++++++++++++ src/model/dao/mdb_postgres.go | 59 +++++++++++++++++++++ src/model/dao/mdb_table_init.go | 26 ++++++++++ src/model/mdb/base.go | 2 +- src/model/mdb/orders_mdb.go | 22 ++++---- src/model/mdb/wallet_address_mdb.go | 4 +- 17 files changed, 419 insertions(+), 113 deletions(-) create mode 100644 .github/workflows/docker-alpine.yml create mode 100644 Dockerfile_alpine create mode 100644 docker-compose.yaml create mode 100644 env create mode 100644 src/model/dao/init.go create mode 100644 src/model/dao/mdb_mysql.go create mode 100644 src/model/dao/mdb_postgres.go create mode 100644 src/model/dao/mdb_table_init.go diff --git a/.github/workflows/docker-alpine.yml b/.github/workflows/docker-alpine.yml new file mode 100644 index 0000000..247060f --- /dev/null +++ b/.github/workflows/docker-alpine.yml @@ -0,0 +1,28 @@ +name: docker-alpine-epusdt +on: + workflow_dispatch: #github页面手动触发 + push: + branches: [ "main" ] +env: + IMAGE_NAME: epusdt #这是您的镜像名 + +jobs: + push-docker-hub: + runs-on: ubuntu-latest + env: + TZ: Asia/Shanghai + steps: + - uses: actions/checkout@v3 + - name: Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build && Push + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile_alpine + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:alpine diff --git a/.gitignore b/.gitignore index 3afb6d6..88dddcc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea/ src/runtime/ src/.env -.DS_Store \ No newline at end of file +.DS_Store +.env \ No newline at end of file diff --git a/Dockerfile_alpine b/Dockerfile_alpine new file mode 100644 index 0000000..492b343 --- /dev/null +++ b/Dockerfile_alpine @@ -0,0 +1,23 @@ +FROM golang:alpine as builder + +# ENV CGO_ENABLED=1 +WORKDIR /app + +COPY ./src . +# RUN apk add --no-cache --update git build-base +RUN go mod tidy \ + && go build -ldflags "-s -w" \ + -o epusdt . + +FROM alpine:latest as runner +ENV TZ=Asia/Shanghai +RUN apk --no-cache add ca-certificates tzdata + +WORKDIR /app + +COPY --from=builder /app/static /app/static +COPY --from=builder /app/static /static +COPY --from=builder /app/epusdt . +EXPOSE 8000 + +ENTRYPOINT ["./epusdt" ,"http","start"] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..cbdfa2f --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,27 @@ +version: "3" +services: + epusdt: + image: annona/epusdt:alpine + restart: always + # build: + # context: . + # dockerfile: Dockerfile_alpine + volumes: + - ./env:/app/.env + ports: + - "8088:8000" + mydb: + image: "mariadb:10.5" + container_name: "mydb" + restart: always + environment: + - MYSQL_ROOT_PASSWORD=root_password + - MYSQL_DATABASE=db + - MYSQL_USER=db_user + - MYSQL_PASSWORD=db_password + ports: + - "3306:3306" + # networks: + # - app_myphp_fpm + volumes: + - ./data_db/database:/var/lib/mysql \ No newline at end of file diff --git a/env b/env new file mode 100644 index 0000000..4341667 --- /dev/null +++ b/env @@ -0,0 +1,74 @@ +app_name=epusdt +#下面配置你的域名,收银台会需要 +app_uri=https://dujiaoka.com +#是否开启debug,默认false +app_debug=false +#http服务监听端口 +http_listen=:8000 + +#静态资源文件目录 +static_path=/static +#缓存路径 +runtime_root_path=/runtime + +#日志配置 +log_save_path=/logs +log_max_size=32 +log_max_age=7 +max_backups=3 + +#数据库类型,默认为mysql类型,可配置项: postgres,mysql +db_type=postgres + +# postgres配置 +postgres_host=127.0.0.1 +postgres_port=3306 +postgres_user=mysql账号 +postgres_passwd=mysql密码 +postgres_database=数据库 +postgres_table_prefix= +postgres_max_idle_conns=10 +postgres_max_open_conns=100 +postgres_max_life_time=6 + +# mysql配置 +mysql_host=127.0.0.1 +mysql_port=3306 +mysql_user=mysql账号 +mysql_passwd=mysql密码 +mysql_database=数据库 +mysql_table_prefix= +mysql_max_idle_conns=10 +mysql_max_open_conns=100 +mysql_max_life_time=6 + +# redis配置 +redis_host=127.0.0.1 +redis_port=6379 +redis_passwd= +redis_db=5 +redis_pool_size=5 +redis_max_retries=3 +redis_idle_timeout=1000 + +# 消息队列配置 +queue_concurrency=10 +queue_level_critical=6 +queue_level_default=3 +queue_level_low=1 + +#机器人Apitoken +tg_bot_token= +#telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url),如果运行的本来就是境外服务器,则无需填写 +tg_proxy= +#管理员userid +tg_manage= + +#api接口认证token +api_auth_token= + +#订单过期时间(单位分钟) +order_expiration_time=10 + +#强制汇率(设置此参数后每笔交易将按照此汇率计算,例如:6.4) +forced_usdt_rate= \ No newline at end of file diff --git a/src/.env.example b/src/.env.example index ea19130..c315397 100644 --- a/src/.env.example +++ b/src/.env.example @@ -17,6 +17,20 @@ log_max_size=32 log_max_age=7 max_backups=3 +#数据库类型,默认为mysql类型,可配置项: postgres,mysql +db_type=postgres + +# postgres配置 +postgres_host=127.0.0.1 +postgres_port=3306 +postgres_user=mysql账号 +postgres_passwd=mysql密码 +postgres_database=数据库 +postgres_table_prefix= +postgres_max_idle_conns=10 +postgres_max_open_conns=100 +postgres_max_life_time=6 + # mysql配置 mysql_host=127.0.0.1 mysql_port=3306 @@ -28,6 +42,7 @@ mysql_max_idle_conns=10 mysql_max_open_conns=100 mysql_max_life_time=6 + # redis配置 redis_host=127.0.0.1 redis_port=6379 diff --git a/src/bootstrap/bootstrap.go b/src/bootstrap/bootstrap.go index 1ca8b09..2c8fae0 100644 --- a/src/bootstrap/bootstrap.go +++ b/src/bootstrap/bootstrap.go @@ -10,16 +10,18 @@ import ( "github.com/assimon/luuu/util/log" ) -//Start 服务启动 +// Start 服务启动 func Start() { // 配置加载 config.Init() // 日志加载 log.Init() - // Mysql启动 - dao.MysqlInit() - // redis启动 - dao.RedisInit() + // // Mysql启动 + // dao.MysqlInit() + // dao.MdbTableInit() + // // redis启动 + // dao.RedisInit() + dao.Init() // 队列启动 mq.Start() // telegram机器人启动 diff --git a/src/go.mod b/src/go.mod index 69a7a17..de50d12 100644 --- a/src/go.mod +++ b/src/go.mod @@ -1,34 +1,72 @@ module github.com/assimon/luuu -go 1.16 +go 1.20 require ( github.com/go-redis/redis/v8 v8.11.5 github.com/go-resty/resty/v2 v2.7.0 github.com/golang-module/carbon/v2 v2.0.1 - github.com/google/btree v1.0.0 // indirect - github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect - github.com/google/uuid v1.3.0 // indirect github.com/gookit/color v1.5.0 github.com/gookit/goutil v0.4.6 github.com/gookit/validate v1.3.1 github.com/hibiken/asynq v0.23.0 github.com/json-iterator/go v1.1.12 github.com/labstack/echo/v4 v4.6.0 - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/natefinch/lumberjack v2.0.0+incompatible github.com/robfig/cron/v3 v3.0.1 github.com/satori/go.uuid v1.2.0 github.com/shopspring/decimal v1.3.1 - github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.2.1 github.com/spf13/viper v1.9.0 go.uber.org/zap v1.17.0 - golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect + gopkg.in/telebot.v3 v3.0.0 + gorm.io/driver/mysql v1.5.1 + gorm.io/driver/postgres v1.5.2 + gorm.io/gorm v1.25.4 +) + +require ( + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/fsnotify/fsnotify v1.5.1 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/gookit/filter v1.1.2 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgx/v5 v5.3.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/labstack/gommon v0.3.0 // indirect + github.com/magiconair/properties v1.8.5 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.4.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.2.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + golang.org/x/crypto v0.8.0 // indirect + golang.org/x/net v0.9.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/ini.v1 v1.63.2 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect - gopkg.in/telebot.v3 v3.0.0 - gorm.io/driver/mysql v1.1.2 - gorm.io/gorm v1.21.15 + gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/src/go.sum b/src/go.sum index 2894213..df99e4e 100644 --- a/src/go.sum +++ b/src/go.sum @@ -55,7 +55,6 @@ github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgI github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -71,7 +70,6 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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= @@ -89,7 +87,7 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= @@ -107,9 +105,8 @@ github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -162,10 +159,8 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -182,13 +177,11 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -201,12 +194,9 @@ github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl github.com/gookit/filter v1.1.2 h1:mp6zSRaRhGuoGZNUlZR4W0/1OTwKRUI5qCXEtD02BR0= github.com/gookit/filter v1.1.2/go.mod h1:pVXLLDD+A8yH9GRztq2Cp7zwZocnuTUpbZs9Q+awAKM= github.com/gookit/goutil v0.3.12/go.mod h1:ITj7Lw0muhJNOX+QRa+j+HH0+RNoQVuTmZx5d5LE1vE= -github.com/gookit/goutil v0.4.4 h1:18xr8NKbs4LteyOHZfQ8g7JqTqZal801mAT6LERGdpE= github.com/gookit/goutil v0.4.4/go.mod h1:qlGVh0PI+WnWSjYnIocfz/7tkeogxL6+EDNP1mRe+7o= github.com/gookit/goutil v0.4.6 h1:LSATnmIyR0rV4BMj3XyaKFYtX/HbRURnPVHt6Zb5ABs= github.com/gookit/goutil v0.4.6/go.mod h1:pq1eTibwb2wN96jrci0xy7xogWzzo9CihOQJEAvz4yQ= -github.com/gookit/validate v1.2.11 h1:zUMsezhMrW3Cy8St3cQJgCKB1ZIbKOWK8e7WMSuVIRc= -github.com/gookit/validate v1.2.11/go.mod h1:wXo0Vr+AzFUCEUCbTFXgKlPfT+V/V0wPK3zLp49jQq0= github.com/gookit/validate v1.3.1 h1:YoxBxG5H+WucKjfEo8X+QvYOzED7ue3Mfpq6jtpIbYs= github.com/gookit/validate v1.3.1/go.mod h1:mzcr3U5XtAlQVAgbW0wbmDGiuefU/MNuDkXFMBNb1ko= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -240,8 +230,6 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hibiken/asynq v0.22.1 h1:t7bbiz2O4MC69qKeKp5UON7ToxynBNXT/kTP/XYq9M8= -github.com/hibiken/asynq v0.22.1/go.mod h1:K70jPVx+CAmmQrXot7Dru0D52EO7ob4BIun3ri5z1Qw= github.com/hibiken/asynq v0.23.0 h1:kmKkNFgqiXBatC8oz94Mer6uvKoGn4STlIVDV5wnKyE= github.com/hibiken/asynq v0.23.0/go.mod h1:K70jPVx+CAmmQrXot7Dru0D52EO7ob4BIun3ri5z1Qw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -249,10 +237,16 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +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-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI= -github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -264,13 +258,11 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/labstack/echo/v4 v4.6.0 h1:vsYEeeYy077cB5yMpgI+ubA7iVRZEtrzHhcvRhd27gA= github.com/labstack/echo/v4 v4.6.0/go.mod h1:RnjgMWNDB9g/HucVWhQYNQP9PvbYf6adqftqryo7s9k= github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0= @@ -320,20 +312,14 @@ github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4 github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= -github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= @@ -350,7 +336,7 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= @@ -366,7 +352,6 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= @@ -385,9 +370,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= 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.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -430,8 +415,9 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3 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= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -507,11 +493,11 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb h1:pirldcYWx7rx7kE5r+9WsOXPXK0+WH5+uZ7uPmJ44uM= golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -602,11 +588,9 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI= -golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.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/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -617,12 +601,12 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/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 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -813,14 +797,13 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -840,13 +823,15 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/mysql v1.1.2 h1:OofcyE2lga734MxwcCW9uB4mWNXMr50uaGRVwQL2B0M= -gorm.io/driver/mysql v1.1.2/go.mod h1:4P/X9vSc3WTrhTLZ259cpFd6xKNYiSSdSZngkSBGIMM= -gorm.io/gorm v1.21.12/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= -gorm.io/gorm v1.21.15 h1:gAyaDoPw0lCyrSFWhBlahbUA1U4P5RViC1uIqoB+1Rk= -gorm.io/gorm v1.21.15/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw= +gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o= +gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0= +gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8= +gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw= +gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/src/model/dao/init.go b/src/model/dao/init.go new file mode 100644 index 0000000..66c8b51 --- /dev/null +++ b/src/model/dao/init.go @@ -0,0 +1,7 @@ +package dao + +func Init() { + DBInit() + + RedisInit() +} diff --git a/src/model/dao/mdb.go b/src/model/dao/mdb.go index 4078236..0d10694 100644 --- a/src/model/dao/mdb.go +++ b/src/model/dao/mdb.go @@ -1,47 +1,21 @@ package dao import ( - "github.com/assimon/luuu/config" - "github.com/assimon/luuu/util/log" - "github.com/gookit/color" + "strings" + "github.com/spf13/viper" - "gorm.io/driver/mysql" + "gorm.io/gorm" - "gorm.io/gorm/logger" - "gorm.io/gorm/schema" - "time" ) var Mdb *gorm.DB -// MysqlInit 数据库初始化 -func MysqlInit() { - var err error - Mdb, err = gorm.Open(mysql.Open(config.MysqlDns), &gorm.Config{ - NamingStrategy: schema.NamingStrategy{ - TablePrefix: viper.GetString("mysql_table_prefix"), - SingularTable: true, - }, - Logger: logger.Default.LogMode(logger.Error), - }) - if err != nil { - panic(err) +func DBInit() { + dbType := viper.GetString("db_type") + if strings.EqualFold(dbType, "postgres") { + PostgreSQLInit() + } else { + MysqlInit() } - if config.AppDebug { - Mdb = Mdb.Debug() - } - sqlDB, err := Mdb.DB() - if err != nil { - color.Red.Printf("[store_db] mysql get DB,err=%s\n", err) - panic(err) - } - sqlDB.SetMaxIdleConns(viper.GetInt("mysql_max_idle_conns")) - sqlDB.SetMaxOpenConns(viper.GetInt("mysql_max_open_conns")) - sqlDB.SetConnMaxLifetime(time.Hour * time.Duration(viper.GetInt("mysql_max_life_time"))) - err = sqlDB.Ping() - if err != nil { - color.Red.Printf("[store_db] mysql connDB err:%s", err.Error()) - panic(err) - } - log.Sugar.Debug("[store_db] mysql connDB success") + MdbTableInit() } diff --git a/src/model/dao/mdb_mysql.go b/src/model/dao/mdb_mysql.go new file mode 100644 index 0000000..a8f8f98 --- /dev/null +++ b/src/model/dao/mdb_mysql.go @@ -0,0 +1,47 @@ +package dao + +import ( + "time" + + "github.com/assimon/luuu/config" + "github.com/assimon/luuu/util/log" + "github.com/gookit/color" + "github.com/spf13/viper" + "gorm.io/driver/mysql" + + "gorm.io/gorm" + "gorm.io/gorm/logger" + "gorm.io/gorm/schema" +) + +// MysqlInit 数据库初始化 +func MysqlInit() { + var err error + Mdb, err = gorm.Open(mysql.Open(config.MysqlDns), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + TablePrefix: viper.GetString("mysql_table_prefix"), + SingularTable: true, + }, + Logger: logger.Default.LogMode(logger.Error), + }) + if err != nil { + panic(err) + } + if config.AppDebug { + Mdb = Mdb.Debug() + } + sqlDB, err := Mdb.DB() + if err != nil { + color.Red.Printf("[store_db] mysql get DB,err=%s\n", err) + panic(err) + } + sqlDB.SetMaxIdleConns(viper.GetInt("mysql_max_idle_conns")) + sqlDB.SetMaxOpenConns(viper.GetInt("mysql_max_open_conns")) + sqlDB.SetConnMaxLifetime(time.Hour * time.Duration(viper.GetInt("mysql_max_life_time"))) + err = sqlDB.Ping() + if err != nil { + color.Red.Printf("[store_db] mysql connDB err:%s", err.Error()) + panic(err) + } + log.Sugar.Debug("[store_db] mysql connDB success") +} diff --git a/src/model/dao/mdb_postgres.go b/src/model/dao/mdb_postgres.go new file mode 100644 index 0000000..334b5a8 --- /dev/null +++ b/src/model/dao/mdb_postgres.go @@ -0,0 +1,59 @@ +package dao + +import ( + "fmt" + "time" + + "github.com/assimon/luuu/config" + "github.com/assimon/luuu/util/log" + "github.com/gookit/color" + "github.com/spf13/viper" + + "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "gorm.io/gorm/schema" +) + +// PostgreSQLInit 数据库初始化 +func PostgreSQLInit() { + var err error + user := viper.GetString("postgres_user") + pass := viper.GetString("postgres_passwd") + host := viper.GetString("postgres_host") + port := viper.GetString("postgres_port") + dbname := viper.GetString("postgres_database") + dsn := fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai", + user, pass, host, port, dbname, + ) + Mdb, err = gorm.Open(postgres.Open(dsn), + &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + TablePrefix: viper.GetString("postgres_table_prefix"), + SingularTable: true, + }, + Logger: logger.Default.LogMode(logger.Error), + }, + ) + if err != nil { + panic(err) + } + + if config.AppDebug { + Mdb = Mdb.Debug() + } + sqlDB, err := Mdb.DB() + if err != nil { + color.Red.Printf("[store_db] postgres get DB,err=%s\n", err) + panic(err) + } + sqlDB.SetMaxIdleConns(viper.GetInt("postgres_max_idle_conns")) + sqlDB.SetMaxOpenConns(viper.GetInt("postgres_max_open_conns")) + sqlDB.SetConnMaxLifetime(time.Hour * time.Duration(viper.GetInt("postgres_max_life_time"))) + err = sqlDB.Ping() + if err != nil { + color.Red.Printf("[store_db] postgres connDB err:%s", err.Error()) + panic(err) + } + log.Sugar.Debug("[store_db] postgres connDB success") +} diff --git a/src/model/dao/mdb_table_init.go b/src/model/dao/mdb_table_init.go new file mode 100644 index 0000000..1082b88 --- /dev/null +++ b/src/model/dao/mdb_table_init.go @@ -0,0 +1,26 @@ +package dao + +import ( + "sync" + + "github.com/assimon/luuu/model/mdb" + "github.com/gookit/color" +) + +var once sync.Once + +// 自动建表 +func MdbTableInit() { + once.Do(func() { + if err := Mdb.AutoMigrate(&mdb.Orders{}); err != nil { + color.Red.Printf("[store_db] AutoMigrate DB(Orders),err=%s\n", err) + // panic(err) + return + } + if err := Mdb.AutoMigrate(&mdb.WalletAddress{}); err != nil { + color.Red.Printf("[store_db] AutoMigrate DB(Orders),err=%s\n", err) + // panic(err) + return + } + }) +} diff --git a/src/model/mdb/base.go b/src/model/mdb/base.go index 00bf4e0..3158aed 100644 --- a/src/model/mdb/base.go +++ b/src/model/mdb/base.go @@ -6,7 +6,7 @@ import ( ) type BaseModel struct { - ID uint64 `gorm:"column:id;primary_key" json:"id"` + ID uint64 `gorm:"column:id;primary_key;autoIncrement" json:"id"` CreatedAt carbon.Time `gorm:"column:created_at" json:"created_at"` UpdatedAt carbon.Time `gorm:"column:updated_at" json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"deleted_at"` diff --git a/src/model/mdb/orders_mdb.go b/src/model/mdb/orders_mdb.go index 3ff0f8c..6b54047 100644 --- a/src/model/mdb/orders_mdb.go +++ b/src/model/mdb/orders_mdb.go @@ -9,17 +9,17 @@ const ( ) type Orders struct { - TradeId string `gorm:"column:trade_id" json:"trade_id"` // epusdt订单号 - OrderId string `gorm:"column:order_id" json:"order_id"` // 客户交易id - BlockTransactionId string `gorm:"column:block_transaction_id" json:"block_transaction_id"` // 区块id - Amount float64 `gorm:"column:amount" json:"amount"` // 订单金额,保留4位小数 - ActualAmount float64 `gorm:"column:actual_amount" json:"actual_amount"` // 订单实际需要支付的金额,保留4位小数 - Token string `gorm:"column:token" json:"token"` // 所属钱包地址 - Status int `gorm:"column:status" json:"status"` // 1:等待支付,2:支付成功,3:已过期 - NotifyUrl string `gorm:"column:notify_url" json:"notify_url"` // 异步回调地址 - RedirectUrl string `gorm:"column:redirect_url" json:"redirect_url"` // 同步回调地址 - CallbackNum int `gorm:"column:callback_num" json:"callback_num"` // 回调次数 - CallBackConfirm int `gorm:"column:callback_confirm" json:"callback_confirm"` // 回调是否已确认 1是 2否 + TradeId string `gorm:"column:trade_id" json:"trade_id"` // epusdt订单号 + OrderId string `gorm:"column:order_id" json:"order_id"` // 客户交易id + BlockTransactionId string `gorm:"index:orders_block_transaction_id_index;column:block_transaction_id" json:"block_transaction_id"` // 区块id + Amount float64 `gorm:"column:amount" json:"amount"` // 订单金额,保留4位小数 + ActualAmount float64 `gorm:"column:actual_amount" json:"actual_amount"` // 订单实际需要支付的金额,保留4位小数 + Token string `gorm:"column:token" json:"token"` // 所属钱包地址 + Status int `gorm:"column:status;default:1" json:"status"` // 1:等待支付,2:支付成功,3:已过期 + NotifyUrl string `gorm:"column:notify_url" json:"notify_url"` // 异步回调地址 + RedirectUrl string `gorm:"column:redirect_url" json:"redirect_url"` // 同步回调地址 + CallbackNum int `gorm:"column:callback_num;default:0" json:"callback_num"` // 回调次数 + CallBackConfirm int `gorm:"column:callback_confirm;default:2" json:"callback_confirm"` // 回调是否已确认 1是 2否 BaseModel } diff --git a/src/model/mdb/wallet_address_mdb.go b/src/model/mdb/wallet_address_mdb.go index e67a8ee..d12d767 100644 --- a/src/model/mdb/wallet_address_mdb.go +++ b/src/model/mdb/wallet_address_mdb.go @@ -7,8 +7,8 @@ const ( // WalletAddress 钱包表 type WalletAddress struct { - Token string `gorm:"column:token" json:"token"` // 钱包token - Status int64 `gorm:"column:status" json:"status"` // 1:启用 2:禁用 + Token string `gorm:"index:wallet_address_token_index;column:token" json:"token"` // 钱包token + Status int64 `gorm:"column:status;default:1" json:"status"` // 1:启用 2:禁用 BaseModel } From 9031240e2a092f2fed6f09c46bc1c7952b4ee240 Mon Sep 17 00:00:00 2001 From: noreply Date: Wed, 10 Apr 2024 11:06:49 +0800 Subject: [PATCH 02/19] del env --- env | 74 ------------------------------------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 env diff --git a/env b/env deleted file mode 100644 index 4341667..0000000 --- a/env +++ /dev/null @@ -1,74 +0,0 @@ -app_name=epusdt -#下面配置你的域名,收银台会需要 -app_uri=https://dujiaoka.com -#是否开启debug,默认false -app_debug=false -#http服务监听端口 -http_listen=:8000 - -#静态资源文件目录 -static_path=/static -#缓存路径 -runtime_root_path=/runtime - -#日志配置 -log_save_path=/logs -log_max_size=32 -log_max_age=7 -max_backups=3 - -#数据库类型,默认为mysql类型,可配置项: postgres,mysql -db_type=postgres - -# postgres配置 -postgres_host=127.0.0.1 -postgres_port=3306 -postgres_user=mysql账号 -postgres_passwd=mysql密码 -postgres_database=数据库 -postgres_table_prefix= -postgres_max_idle_conns=10 -postgres_max_open_conns=100 -postgres_max_life_time=6 - -# mysql配置 -mysql_host=127.0.0.1 -mysql_port=3306 -mysql_user=mysql账号 -mysql_passwd=mysql密码 -mysql_database=数据库 -mysql_table_prefix= -mysql_max_idle_conns=10 -mysql_max_open_conns=100 -mysql_max_life_time=6 - -# redis配置 -redis_host=127.0.0.1 -redis_port=6379 -redis_passwd= -redis_db=5 -redis_pool_size=5 -redis_max_retries=3 -redis_idle_timeout=1000 - -# 消息队列配置 -queue_concurrency=10 -queue_level_critical=6 -queue_level_default=3 -queue_level_low=1 - -#机器人Apitoken -tg_bot_token= -#telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url),如果运行的本来就是境外服务器,则无需填写 -tg_proxy= -#管理员userid -tg_manage= - -#api接口认证token -api_auth_token= - -#订单过期时间(单位分钟) -order_expiration_time=10 - -#强制汇率(设置此参数后每笔交易将按照此汇率计算,例如:6.4) -forced_usdt_rate= \ No newline at end of file From d3ed2c927e123dbfcd0fc899e5faaca5adf4e091 Mon Sep 17 00:00:00 2001 From: noreply Date: Tue, 16 Apr 2024 20:32:04 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E5=A4=B1=E8=B4=A5=E6=9C=80=E5=A4=A7=E9=87=8D?= =?UTF-8?q?=E8=AF=95=E6=AC=A1=E6=95=B0=20=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/.env.example | 3 ++- src/model/service/task_service.go | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/.env.example b/src/.env.example index c315397..99ad350 100644 --- a/src/.env.example +++ b/src/.env.example @@ -70,6 +70,7 @@ api_auth_token= #订单过期时间(单位分钟) order_expiration_time=10 - +#订单回调失败最大重试次数 +order_notice_max_retry=0 #强制汇率(设置此参数后每笔交易将按照此汇率计算,例如:6.4) forced_usdt_rate= \ No newline at end of file diff --git a/src/model/service/task_service.go b/src/model/service/task_service.go index 086dba3..67b0c82 100644 --- a/src/model/service/task_service.go +++ b/src/model/service/task_service.go @@ -2,6 +2,9 @@ package service import ( "fmt" + "net/http" + "sync" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/request" "github.com/assimon/luuu/mq" @@ -14,8 +17,6 @@ import ( "github.com/gookit/goutil/stdutil" "github.com/hibiken/asynq" "github.com/shopspring/decimal" - "net/http" - "sync" ) const UsdtTrc20ApiUri = "https://apilist.tronscanapi.com/api/transfer/trc20" @@ -135,7 +136,10 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) { } // 回调队列 orderCallbackQueue, _ := handle.NewOrderCallbackQueue(order) - mq.MClient.Enqueue(orderCallbackQueue, asynq.MaxRetry(5)) + orderCallbackQueue, _ := handle.NewOrderCallbackQueue(order) + orderNoticeMaxRetry := viper.GetInt("order_notice_max_retry") + mq.MClient.Enqueue(orderCallbackQueue, asynq.MaxRetry(orderNoticeMaxRetry)) + // mq.MClient.Enqueue(orderCallbackQueue, asynq.MaxRetry(5)) // 发送机器人消息 msgTpl := ` 📢📢有新的交易支付成功! From ed0a7f7d0703e97d0362797a6f5d1e20ead8840d Mon Sep 17 00:00:00 2001 From: noreply Date: Tue, 16 Apr 2024 23:55:11 +0800 Subject: [PATCH 04/19] debug --- src/model/service/task_service.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/model/service/task_service.go b/src/model/service/task_service.go index 67b0c82..30bb432 100644 --- a/src/model/service/task_service.go +++ b/src/model/service/task_service.go @@ -5,6 +5,8 @@ import ( "net/http" "sync" + "github.com/spf13/viper" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/request" "github.com/assimon/luuu/mq" @@ -136,7 +138,6 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) { } // 回调队列 orderCallbackQueue, _ := handle.NewOrderCallbackQueue(order) - orderCallbackQueue, _ := handle.NewOrderCallbackQueue(order) orderNoticeMaxRetry := viper.GetInt("order_notice_max_retry") mq.MClient.Enqueue(orderCallbackQueue, asynq.MaxRetry(orderNoticeMaxRetry)) // mq.MClient.Enqueue(orderCallbackQueue, asynq.MaxRetry(5)) From 136af2676a32097c41d55a7a0643ba489cca7b10 Mon Sep 17 00:00:00 2001 From: noreply Date: Wed, 17 Apr 2024 11:24:12 +0800 Subject: [PATCH 05/19] README --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 14c4d5a..3866df7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ +# 分支说明 + +此为自动打包docker版本 +## 新增 +支持postgres数据库 +设置`订单回调失败自动重试次数` + +## 使用方法 +配置好`.env`文件后,使用 `docker-compose up -d` 启动镜像 + + ## Epusdt (Easy Payment Usdt)

From 2cb9ed43934d418af8117d232b3d5cee28cbe0b7 Mon Sep 17 00:00:00 2001 From: noreply Date: Wed, 17 Apr 2024 11:30:54 +0800 Subject: [PATCH 06/19] README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3866df7..5e81dc9 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ 此为自动打包docker版本 ## 新增 -支持postgres数据库 -设置`订单回调失败自动重试次数` +支持postgres数据库 +支持设置`订单回调失败自动重试次数` ## 使用方法 配置好`.env`文件后,使用 `docker-compose up -d` 启动镜像 From 3d02b41dbac80ee86544d832bb0d35cb8ef725e4 Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 29 Jul 2024 10:07:22 +0800 Subject: [PATCH 07/19] add sqlite --- .github/workflows/docker-alpine.yml | 2 +- Dockerfile_alpine => Dockerfile | 5 ++- src/.env.example | 6 +++- src/go.mod | 4 ++- src/go.sum | 6 ++++ src/model/dao/mdb.go | 2 ++ src/model/dao/mdb_sqlite.go | 48 +++++++++++++++++++++++++++++ 7 files changed, 67 insertions(+), 6 deletions(-) rename Dockerfile_alpine => Dockerfile (85%) create mode 100644 src/model/dao/mdb_sqlite.go diff --git a/.github/workflows/docker-alpine.yml b/.github/workflows/docker-alpine.yml index 247060f..13fa017 100644 --- a/.github/workflows/docker-alpine.yml +++ b/.github/workflows/docker-alpine.yml @@ -22,7 +22,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . - file: ./Dockerfile_alpine + file: ./Dockerfile push: true tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:alpine diff --git a/Dockerfile_alpine b/Dockerfile similarity index 85% rename from Dockerfile_alpine rename to Dockerfile index 492b343..4bcbccf 100644 --- a/Dockerfile_alpine +++ b/Dockerfile @@ -1,10 +1,10 @@ FROM golang:alpine as builder -# ENV CGO_ENABLED=1 +RUN apk add --no-cache --update git build-base +ENV CGO_ENABLED=1 WORKDIR /app COPY ./src . -# RUN apk add --no-cache --update git build-base RUN go mod tidy \ && go build -ldflags "-s -w" \ -o epusdt . @@ -14,7 +14,6 @@ ENV TZ=Asia/Shanghai RUN apk --no-cache add ca-certificates tzdata WORKDIR /app - COPY --from=builder /app/static /app/static COPY --from=builder /app/static /static COPY --from=builder /app/epusdt . diff --git a/src/.env.example b/src/.env.example index 99ad350..50f1c57 100644 --- a/src/.env.example +++ b/src/.env.example @@ -17,9 +17,13 @@ log_max_size=32 log_max_age=7 max_backups=3 -#数据库类型,默认为mysql类型,可配置项: postgres,mysql +#数据库类型,默认为mysql类型,可配置项: postgres,mysql,sqlite db_type=postgres +# sqlite配置 +sqlite_database_filename= +sqlite_table_prefix= + # postgres配置 postgres_host=127.0.0.1 postgres_port=3306 diff --git a/src/go.mod b/src/go.mod index de50d12..a5fee51 100644 --- a/src/go.mod +++ b/src/go.mod @@ -22,7 +22,7 @@ require ( gopkg.in/telebot.v3 v3.0.0 gorm.io/driver/mysql v1.5.1 gorm.io/driver/postgres v1.5.2 - gorm.io/gorm v1.25.4 + gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde ) require ( @@ -45,6 +45,7 @@ require ( github.com/magiconair/properties v1.8.5 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -69,4 +70,5 @@ require ( gopkg.in/ini.v1 v1.63.2 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + gorm.io/driver/sqlite v1.5.6 // indirect ) diff --git a/src/go.sum b/src/go.sum index df99e4e..7fa3747 100644 --- a/src/go.sum +++ b/src/go.sum @@ -286,6 +286,8 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -829,9 +831,13 @@ gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw= gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o= gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0= gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8= +gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= +gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw= gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde h1:9DShaph9qhkIYw7QF91I/ynrr4cOO2PZra2PFD7Mfeg= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/src/model/dao/mdb.go b/src/model/dao/mdb.go index 0d10694..99887c1 100644 --- a/src/model/dao/mdb.go +++ b/src/model/dao/mdb.go @@ -14,6 +14,8 @@ func DBInit() { dbType := viper.GetString("db_type") if strings.EqualFold(dbType, "postgres") { PostgreSQLInit() + } else if strings.EqualFold(dbType, "sqlite") { + SqliteInit() } else { MysqlInit() } diff --git a/src/model/dao/mdb_sqlite.go b/src/model/dao/mdb_sqlite.go new file mode 100644 index 0000000..6168327 --- /dev/null +++ b/src/model/dao/mdb_sqlite.go @@ -0,0 +1,48 @@ +package dao + +import ( + "github.com/assimon/luuu/config" + "github.com/assimon/luuu/util/log" + "github.com/gookit/color" + "github.com/spf13/viper" + "gorm.io/driver/sqlite" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "gorm.io/gorm/schema" +) + +// SqliteInit 数据库初始化 +func SqliteInit() { + var err error + dbname := viper.GetString("sqlite_database_filename") + if len(dbname) == 0 { + dbname = ".db" + } + Mdb, err = gorm.Open(sqlite.Open(dbname), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + TablePrefix: viper.GetString("sqlite_table_prefix"), + SingularTable: true, + }, + Logger: logger.Default.LogMode(logger.Error), + }) + if err != nil { + panic(err) + } + if config.AppDebug { + Mdb = Mdb.Debug() + } + sqlDB, err := Mdb.DB() + if err != nil { + color.Red.Printf("[store_db] sqlite get DB,err=%s\n", err) + panic(err) + } + // sqlDB.SetMaxIdleConns(viper.GetInt("sqlite_max_idle_conns")) + // sqlDB.SetMaxOpenConns(viper.GetInt("sqlite_max_open_conns")) + // sqlDB.SetConnMaxLifetime(time.Hour * time.Duration(viper.GetInt("sqlite_max_life_time"))) + err = sqlDB.Ping() + if err != nil { + color.Red.Printf("[store_db] sqlite connDB err:%s", err.Error()) + panic(err) + } + log.Sugar.Debug("[store_db] sqlite connDB success") +} From e386591e0c379d9333b3d971e4dc3cd73db64a25 Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 29 Jul 2024 10:25:07 +0800 Subject: [PATCH 08/19] debug --- docker-compose.yaml | 19 +++---------------- src/.env.example | 2 +- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index cbdfa2f..dcb06d4 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,23 +5,10 @@ services: restart: always # build: # context: . - # dockerfile: Dockerfile_alpine + # dockerfile: Dockerfile volumes: - ./env:/app/.env ports: - "8088:8000" - mydb: - image: "mariadb:10.5" - container_name: "mydb" - restart: always - environment: - - MYSQL_ROOT_PASSWORD=root_password - - MYSQL_DATABASE=db - - MYSQL_USER=db_user - - MYSQL_PASSWORD=db_password - ports: - - "3306:3306" - # networks: - # - app_myphp_fpm - volumes: - - ./data_db/database:/var/lib/mysql \ No newline at end of file + #volumes: + # - ./data_db/conf:/app/conf/ \ No newline at end of file diff --git a/src/.env.example b/src/.env.example index 50f1c57..2748862 100644 --- a/src/.env.example +++ b/src/.env.example @@ -18,7 +18,7 @@ log_max_age=7 max_backups=3 #数据库类型,默认为mysql类型,可配置项: postgres,mysql,sqlite -db_type=postgres +db_type=sqlite # sqlite配置 sqlite_database_filename= From ab443fd80868dabdd2d49e84c41559853d0e87ce Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 29 Jul 2024 10:27:58 +0800 Subject: [PATCH 09/19] debug --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5e81dc9..293b767 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # 分支说明 此为自动打包docker版本 + ## 新增 -支持postgres数据库 -支持设置`订单回调失败自动重试次数` +1. 支持postgres/sqlite数据库 +2. 支持设置`订单回调失败自动重试次数` ## 使用方法 配置好`.env`文件后,使用 `docker-compose up -d` 启动镜像 From c09886f6da69a048e721a9ab07eac8feaa90d9b5 Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 29 Jul 2024 12:25:13 +0800 Subject: [PATCH 10/19] debug --- docker-compose.yaml | 4 +--- src/model/dao/mdb_sqlite.go | 11 +++++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index dcb06d4..62e45f7 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -9,6 +9,4 @@ services: volumes: - ./env:/app/.env ports: - - "8088:8000" - #volumes: - # - ./data_db/conf:/app/conf/ \ No newline at end of file + - "8088:8000" \ No newline at end of file diff --git a/src/model/dao/mdb_sqlite.go b/src/model/dao/mdb_sqlite.go index 6168327..09767dd 100644 --- a/src/model/dao/mdb_sqlite.go +++ b/src/model/dao/mdb_sqlite.go @@ -1,6 +1,8 @@ package dao import ( + "path/filepath" + "github.com/assimon/luuu/config" "github.com/assimon/luuu/util/log" "github.com/gookit/color" @@ -14,11 +16,12 @@ import ( // SqliteInit 数据库初始化 func SqliteInit() { var err error - dbname := viper.GetString("sqlite_database_filename") - if len(dbname) == 0 { - dbname = ".db" + dbFilename := ".db" + if dbfile := viper.GetString("sqlite_database_filename"); len(dbfile) > 0 { + dbFilename = filepath.Base(dbfile) } - Mdb, err = gorm.Open(sqlite.Open(dbname), &gorm.Config{ + color.Green.Printf("[store_db] sqlite filename: %s\n", dbFilename) + Mdb, err = gorm.Open(sqlite.Open(dbFilename), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ TablePrefix: viper.GetString("sqlite_table_prefix"), SingularTable: true, From b697409ec04adb71e4b029cb93297bc3fb044190 Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 14 Oct 2024 20:12:34 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5=E6=8C=82=E8=B5=B7?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91=E4=B8=BA10s=E5=90=8E=E9=87=8D?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/dao/mdb_postgres.go | 17 +++++++++++++---- src/model/dao/rdb.go | 8 ++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/model/dao/mdb_postgres.go b/src/model/dao/mdb_postgres.go index 334b5a8..fbac9ee 100644 --- a/src/model/dao/mdb_postgres.go +++ b/src/model/dao/mdb_postgres.go @@ -8,7 +8,6 @@ import ( "github.com/assimon/luuu/util/log" "github.com/gookit/color" "github.com/spf13/viper" - "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" @@ -36,7 +35,11 @@ func PostgreSQLInit() { }, ) if err != nil { - panic(err) + color.Red.Printf("[store_db] postgres open DB,err=%s\n", err) + // panic(err) + time.Sleep(10 * time.Second) + PostgreSQLInit() + return } if config.AppDebug { @@ -45,7 +48,10 @@ func PostgreSQLInit() { sqlDB, err := Mdb.DB() if err != nil { color.Red.Printf("[store_db] postgres get DB,err=%s\n", err) - panic(err) + // panic(err) + time.Sleep(10 * time.Second) + PostgreSQLInit() + return } sqlDB.SetMaxIdleConns(viper.GetInt("postgres_max_idle_conns")) sqlDB.SetMaxOpenConns(viper.GetInt("postgres_max_open_conns")) @@ -53,7 +59,10 @@ func PostgreSQLInit() { err = sqlDB.Ping() if err != nil { color.Red.Printf("[store_db] postgres connDB err:%s", err.Error()) - panic(err) + // panic(err) + time.Sleep(10 * time.Second) + PostgreSQLInit() + return } log.Sugar.Debug("[store_db] postgres connDB success") } diff --git a/src/model/dao/rdb.go b/src/model/dao/rdb.go index f979286..a1e990f 100644 --- a/src/model/dao/rdb.go +++ b/src/model/dao/rdb.go @@ -3,11 +3,12 @@ package dao import ( "context" "fmt" + "time" + "github.com/assimon/luuu/util/log" "github.com/go-redis/redis/v8" "github.com/gookit/color" "github.com/spf13/viper" - "time" ) var Rdb *redis.Client @@ -34,7 +35,10 @@ func RedisInit() { log.Sugar.Debug("[store_redis] Nil reply returned by Rdb when key does not exist.") } else if err != nil { color.Red.Printf("[store_redis] redis connRdb err,err=%s", err) - panic(err) + // panic(err) + time.Sleep(10 * time.Second) + RedisInit() + return } else { log.Sugar.Debug("[store_redis] redis connRdb success,suc=%s", pong) } From 392c922130bc3d64dfb3e29d5abe083b7cb389cf Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 14 Oct 2024 20:14:10 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5=E6=8C=82=E8=B5=B7?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91=E4=B8=BA10s=E5=90=8E=E9=87=8D?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/dao/mdb_mysql.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/model/dao/mdb_mysql.go b/src/model/dao/mdb_mysql.go index a8f8f98..bfcf63f 100644 --- a/src/model/dao/mdb_mysql.go +++ b/src/model/dao/mdb_mysql.go @@ -25,7 +25,11 @@ func MysqlInit() { Logger: logger.Default.LogMode(logger.Error), }) if err != nil { - panic(err) + color.Red.Printf("[store_db] mysql open DB,err=%s\n", err) + // panic(err) + time.Sleep(10 * time.Second) + MysqlInit() + return } if config.AppDebug { Mdb = Mdb.Debug() @@ -33,7 +37,10 @@ func MysqlInit() { sqlDB, err := Mdb.DB() if err != nil { color.Red.Printf("[store_db] mysql get DB,err=%s\n", err) - panic(err) + // panic(err) + time.Sleep(10 * time.Second) + MysqlInit() + return } sqlDB.SetMaxIdleConns(viper.GetInt("mysql_max_idle_conns")) sqlDB.SetMaxOpenConns(viper.GetInt("mysql_max_open_conns")) @@ -41,7 +48,10 @@ func MysqlInit() { err = sqlDB.Ping() if err != nil { color.Red.Printf("[store_db] mysql connDB err:%s", err.Error()) - panic(err) + // panic(err) + time.Sleep(10 * time.Second) + MysqlInit() + return } log.Sugar.Debug("[store_db] mysql connDB success") } From 67206df6a7cdc8dc98a78be79f1c22021b5b9e13 Mon Sep 17 00:00:00 2001 From: noreply Date: Mon, 14 Oct 2024 21:20:46 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E4=B8=BA=E6=8A=A5=E9=94=99?= =?UTF-8?q?=EF=BC=8C=E7=84=B6=E5=90=8E=E9=80=80=E5=87=BA=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 4 ++-- src/model/dao/init.go | 14 +++++++++++--- src/model/dao/mdb.go | 17 ++++++++++++----- src/model/dao/mdb_mysql.go | 11 +++++------ src/model/dao/mdb_postgres.go | 15 +++++---------- src/model/dao/mdb_sqlite.go | 15 +++++++++++---- src/model/dao/rdb.go | 9 +++++---- 7 files changed, 51 insertions(+), 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4bcbccf..dd0c758 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:alpine as builder +FROM golang:alpine AS builder RUN apk add --no-cache --update git build-base ENV CGO_ENABLED=1 @@ -9,7 +9,7 @@ RUN go mod tidy \ && go build -ldflags "-s -w" \ -o epusdt . -FROM alpine:latest as runner +FROM alpine:latest AS runner ENV TZ=Asia/Shanghai RUN apk --no-cache add ca-certificates tzdata diff --git a/src/model/dao/init.go b/src/model/dao/init.go index 66c8b51..920b6cb 100644 --- a/src/model/dao/init.go +++ b/src/model/dao/init.go @@ -1,7 +1,15 @@ package dao -func Init() { - DBInit() +import ( + "log" +) - RedisInit() +func Init() { + if err := DBInit(); err != nil { + log.Fatalf("DBInit err: %v", err) + } + + if err := RedisInit(); err != nil { + log.Fatalf("RedisInit err: %v", err) + } } diff --git a/src/model/dao/mdb.go b/src/model/dao/mdb.go index 99887c1..f345ac6 100644 --- a/src/model/dao/mdb.go +++ b/src/model/dao/mdb.go @@ -4,20 +4,27 @@ import ( "strings" "github.com/spf13/viper" - "gorm.io/gorm" ) var Mdb *gorm.DB -func DBInit() { +func DBInit() error { dbType := viper.GetString("db_type") if strings.EqualFold(dbType, "postgres") { - PostgreSQLInit() + if err := PostgreSQLInit(); err != nil { + return err + } } else if strings.EqualFold(dbType, "sqlite") { - SqliteInit() + if err := SqliteInit(); err != nil { + return err + } } else { - MysqlInit() + if err := MysqlInit(); err != nil { + return err + } } + MdbTableInit() + return nil } diff --git a/src/model/dao/mdb_mysql.go b/src/model/dao/mdb_mysql.go index bfcf63f..3e27f37 100644 --- a/src/model/dao/mdb_mysql.go +++ b/src/model/dao/mdb_mysql.go @@ -15,7 +15,7 @@ import ( ) // MysqlInit 数据库初始化 -func MysqlInit() { +func MysqlInit() error { var err error Mdb, err = gorm.Open(mysql.Open(config.MysqlDns), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ @@ -27,9 +27,7 @@ func MysqlInit() { if err != nil { color.Red.Printf("[store_db] mysql open DB,err=%s\n", err) // panic(err) - time.Sleep(10 * time.Second) - MysqlInit() - return + return err } if config.AppDebug { Mdb = Mdb.Debug() @@ -40,7 +38,7 @@ func MysqlInit() { // panic(err) time.Sleep(10 * time.Second) MysqlInit() - return + return err } sqlDB.SetMaxIdleConns(viper.GetInt("mysql_max_idle_conns")) sqlDB.SetMaxOpenConns(viper.GetInt("mysql_max_open_conns")) @@ -51,7 +49,8 @@ func MysqlInit() { // panic(err) time.Sleep(10 * time.Second) MysqlInit() - return + return err } log.Sugar.Debug("[store_db] mysql connDB success") + return nil } diff --git a/src/model/dao/mdb_postgres.go b/src/model/dao/mdb_postgres.go index fbac9ee..d14c65a 100644 --- a/src/model/dao/mdb_postgres.go +++ b/src/model/dao/mdb_postgres.go @@ -15,7 +15,7 @@ import ( ) // PostgreSQLInit 数据库初始化 -func PostgreSQLInit() { +func PostgreSQLInit() error { var err error user := viper.GetString("postgres_user") pass := viper.GetString("postgres_passwd") @@ -37,9 +37,7 @@ func PostgreSQLInit() { if err != nil { color.Red.Printf("[store_db] postgres open DB,err=%s\n", err) // panic(err) - time.Sleep(10 * time.Second) - PostgreSQLInit() - return + return err } if config.AppDebug { @@ -49,9 +47,7 @@ func PostgreSQLInit() { if err != nil { color.Red.Printf("[store_db] postgres get DB,err=%s\n", err) // panic(err) - time.Sleep(10 * time.Second) - PostgreSQLInit() - return + return err } sqlDB.SetMaxIdleConns(viper.GetInt("postgres_max_idle_conns")) sqlDB.SetMaxOpenConns(viper.GetInt("postgres_max_open_conns")) @@ -60,9 +56,8 @@ func PostgreSQLInit() { if err != nil { color.Red.Printf("[store_db] postgres connDB err:%s", err.Error()) // panic(err) - time.Sleep(10 * time.Second) - PostgreSQLInit() - return + return err } log.Sugar.Debug("[store_db] postgres connDB success") + return nil } diff --git a/src/model/dao/mdb_sqlite.go b/src/model/dao/mdb_sqlite.go index 09767dd..7806187 100644 --- a/src/model/dao/mdb_sqlite.go +++ b/src/model/dao/mdb_sqlite.go @@ -7,6 +7,8 @@ import ( "github.com/assimon/luuu/util/log" "github.com/gookit/color" "github.com/spf13/viper" + + // "github.com/glebarez/sqlite" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" @@ -14,7 +16,7 @@ import ( ) // SqliteInit 数据库初始化 -func SqliteInit() { +func SqliteInit() error { var err error dbFilename := ".db" if dbfile := viper.GetString("sqlite_database_filename"); len(dbfile) > 0 { @@ -29,7 +31,9 @@ func SqliteInit() { Logger: logger.Default.LogMode(logger.Error), }) if err != nil { - panic(err) + color.Red.Printf("[store_db] sqlite open DB,err=%s\n", err) + // panic(err) + return err } if config.AppDebug { Mdb = Mdb.Debug() @@ -37,7 +41,8 @@ func SqliteInit() { sqlDB, err := Mdb.DB() if err != nil { color.Red.Printf("[store_db] sqlite get DB,err=%s\n", err) - panic(err) + // panic(err) + return err } // sqlDB.SetMaxIdleConns(viper.GetInt("sqlite_max_idle_conns")) // sqlDB.SetMaxOpenConns(viper.GetInt("sqlite_max_open_conns")) @@ -45,7 +50,9 @@ func SqliteInit() { err = sqlDB.Ping() if err != nil { color.Red.Printf("[store_db] sqlite connDB err:%s", err.Error()) - panic(err) + // panic(err) + return err } log.Sugar.Debug("[store_db] sqlite connDB success") + return nil } diff --git a/src/model/dao/rdb.go b/src/model/dao/rdb.go index a1e990f..0bda4c5 100644 --- a/src/model/dao/rdb.go +++ b/src/model/dao/rdb.go @@ -13,7 +13,7 @@ import ( var Rdb *redis.Client -func RedisInit() { +func RedisInit() error { options := redis.Options{ Addr: fmt.Sprintf( "%s:%s", @@ -36,10 +36,11 @@ func RedisInit() { } else if err != nil { color.Red.Printf("[store_redis] redis connRdb err,err=%s", err) // panic(err) - time.Sleep(10 * time.Second) - RedisInit() - return + // time.Sleep(10 * time.Second) + // RedisInit() + return err } else { log.Sugar.Debug("[store_redis] redis connRdb success,suc=%s", pong) } + return nil } From 84fc330ce1df5f81e3e54da0315b99e8e49565a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdev=E2=80=9D?= Date: Thu, 13 Feb 2025 23:21:47 +0800 Subject: [PATCH 14/19] remove port --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index dd0c758..5aa72cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,6 +17,5 @@ WORKDIR /app COPY --from=builder /app/static /app/static COPY --from=builder /app/static /static COPY --from=builder /app/epusdt . -EXPOSE 8000 ENTRYPOINT ["./epusdt" ,"http","start"] From 9b08e49ba1848f4b508eb47db2d52bbcfa39b73c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdev=E2=80=9D?= Date: Mon, 7 Apr 2025 09:25:22 +0800 Subject: [PATCH 15/19] debug --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 5aa72cf..493e365 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,5 +17,6 @@ WORKDIR /app COPY --from=builder /app/static /app/static COPY --from=builder /app/static /static COPY --from=builder /app/epusdt . +VOLUME /app/conf ENTRYPOINT ["./epusdt" ,"http","start"] From 1ab580ea1329c065df47d0ec5a62bf6a63b71e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdev=E2=80=9D?= Date: Mon, 7 Apr 2025 09:31:04 +0800 Subject: [PATCH 16/19] debug --- src/model/dao/mdb_sqlite.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/model/dao/mdb_sqlite.go b/src/model/dao/mdb_sqlite.go index 7806187..de0e227 100644 --- a/src/model/dao/mdb_sqlite.go +++ b/src/model/dao/mdb_sqlite.go @@ -18,7 +18,7 @@ import ( // SqliteInit 数据库初始化 func SqliteInit() error { var err error - dbFilename := ".db" + dbFilename := "./conf/.db" if dbfile := viper.GetString("sqlite_database_filename"); len(dbfile) > 0 { dbFilename = filepath.Base(dbfile) } From 011d602ffec32c4cb02880b0eaf90089e2514cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdev=E2=80=9D?= Date: Wed, 23 Jul 2025 12:39:17 +0800 Subject: [PATCH 17/19] bot poller time.second ,synchronous true --- src/telegram/telegram.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/telegram/telegram.go b/src/telegram/telegram.go index 9f793f4..b29bf63 100644 --- a/src/telegram/telegram.go +++ b/src/telegram/telegram.go @@ -14,8 +14,9 @@ var bots *tb.Bot func BotStart() { var err error botSetting := tb.Settings{ - Token: config.TgBotToken, - Poller: &tb.LongPoller{Timeout: 10 * time.Second}, + Token: config.TgBotToken, + Poller: &tb.LongPoller{Timeout: 50 * time.Second}, + Synchronous: true, } if config.TgProxy != "" { botSetting.URL = config.TgProxy From 61d3cc819e24bad4531338572e52fbe555122d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cdev=E2=80=9D?= Date: Sat, 22 Nov 2025 17:07:25 +0800 Subject: [PATCH 18/19] debug --- src/go.mod | 1 + src/go.sum | 20 ++++++++++++++++++++ src/telegram/handle.go | 10 ++++++++-- src/telegram/utils.go | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/telegram/utils.go diff --git a/src/go.mod b/src/go.mod index a5fee51..6aafe22 100644 --- a/src/go.mod +++ b/src/go.mod @@ -26,6 +26,7 @@ require ( ) require ( + github.com/btcsuite/btcutil v1.0.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect diff --git a/src/go.sum b/src/go.sum index 7fa3747..5032c16 100644 --- a/src/go.sum +++ b/src/go.sum @@ -47,6 +47,7 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -54,6 +55,16 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -70,6 +81,7 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -243,10 +255,12 @@ github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/ github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -256,6 +270,7 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -315,9 +330,11 @@ github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6Yf github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= @@ -408,6 +425,7 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -415,6 +433,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -817,6 +836,7 @@ gopkg.in/telebot.v3 v3.0.0 h1:UgHIiE/RdjoDi6nf4xACM7PU3TqiPVV9vvTydCEnrTo= gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/src/telegram/handle.go b/src/telegram/handle.go index 418f864..8b4a3ef 100644 --- a/src/telegram/handle.go +++ b/src/telegram/handle.go @@ -2,6 +2,7 @@ package telegram import ( "fmt" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" "github.com/gookit/goutil/mathutil" @@ -16,11 +17,16 @@ const ( func OnTextMessageHandle(c tb.Context) error { if c.Message().ReplyTo.Text == ReplayAddWallet { defer bots.Delete(c.Message().ReplyTo) - _, err := data.AddWalletAddress(c.Message().Text) + msgText := c.Message().Text + if !isValidTronAddress(msgText) { + _ = c.Send(fmt.Sprintf("钱包[%s]添加失败: 非Tron地址!", msgText)) + return nil + } + _, err := data.AddWalletAddress(msgText) if err != nil { return c.Send(err.Error()) } - c.Send(fmt.Sprintf("钱包[%s]添加成功!", c.Message().Text)) + _ = c.Send(fmt.Sprintf("钱包[%s]添加成功!", msgText)) return WalletList(c) } return nil diff --git a/src/telegram/utils.go b/src/telegram/utils.go new file mode 100644 index 0000000..3773144 --- /dev/null +++ b/src/telegram/utils.go @@ -0,0 +1,34 @@ +package telegram + +import ( + "crypto/sha256" + + "github.com/btcsuite/btcutil/base58" +) + +// isValidTronAddress 校验 Tron Base58Check 地址是否合法 +func isValidTronAddress(addr string) bool { + // 基本过滤 + if len(addr) < 26 || len(addr) > 35 || addr[0] != 'T' { + return false + } + + decoded := base58.Decode(addr) + if len(decoded) != 25 { + return false + } + + // TRON 主网地址必须以 0x41 开头 + if decoded[0] != 0x41 { + return false + } + + // Base58Check 校验 + payload := decoded[:21] // 前 21 字节 + checksum := decoded[21:] // 后 4 字节 + + hash := sha256.Sum256(payload) + hash2 := sha256.Sum256(hash[:]) + + return string(checksum) == string(hash2[:4]) +} From 14435ba426b2b7c74d8dfa9b95ec64c178c5f1c5 Mon Sep 17 00:00:00 2001 From: dev Date: Sun, 25 Jan 2026 13:03:31 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0carbon=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/go.mod | 18 +++++++-------- src/go.sum | 36 +++++++++++++++++++++++++----- src/model/mdb/base.go | 2 +- src/model/service/order_service.go | 2 +- src/model/service/pay_service.go | 3 ++- src/model/service/task_service.go | 8 +++---- 6 files changed, 48 insertions(+), 21 deletions(-) diff --git a/src/go.mod b/src/go.mod index 6aafe22..77ea0d8 100644 --- a/src/go.mod +++ b/src/go.mod @@ -3,9 +3,10 @@ module github.com/assimon/luuu go 1.20 require ( + github.com/btcsuite/btcutil v1.0.2 + github.com/dromara/carbon/v2 v2.6.15 github.com/go-redis/redis/v8 v8.11.5 - github.com/go-resty/resty/v2 v2.7.0 - github.com/golang-module/carbon/v2 v2.0.1 + github.com/go-resty/resty/v2 v2.11.0 github.com/gookit/color v1.5.0 github.com/gookit/goutil v0.4.6 github.com/gookit/validate v1.3.1 @@ -22,11 +23,11 @@ require ( gopkg.in/telebot.v3 v3.0.0 gorm.io/driver/mysql v1.5.1 gorm.io/driver/postgres v1.5.2 + gorm.io/driver/sqlite v1.5.6 gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde ) require ( - github.com/btcsuite/btcutil v1.0.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect @@ -62,14 +63,13 @@ require ( github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.8.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect - golang.org/x/text v0.9.0 // indirect - golang.org/x/time v0.0.0-20220922220347-f3bd1da661af // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + golang.org/x/time v0.3.0 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/ini.v1 v1.63.2 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gorm.io/driver/sqlite v1.5.6 // indirect ) diff --git a/src/go.sum b/src/go.sum index 5032c16..e7ef699 100644 --- a/src/go.sum +++ b/src/go.sum @@ -87,6 +87,8 @@ 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= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dromara/carbon/v2 v2.6.15 h1:3HuC3XcWczIHUTbg/f0CSVydtKEdM+P0GM1sdsbwXmI= +github.com/dromara/carbon/v2 v2.6.15/go.mod h1:NGo3reeV5vhWCYWcSqbJRZm46MEwyfYI5EJRdVFoLJo= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -117,6 +119,8 @@ github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= +github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= @@ -124,8 +128,6 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-module/carbon/v2 v2.0.1 h1:lck7WgSNVvUIRbwE+MJG3qyrT+Vrcz1tp6TkZ91gFgE= -github.com/golang-module/carbon/v2 v2.0.1/go.mod h1:NF5unWf838+pyRY0o+qZdIwBMkFf7w0hmLIguLiEpzU= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -391,7 +393,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 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.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= @@ -406,6 +408,7 @@ 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= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= @@ -437,8 +440,10 @@ golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/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.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +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= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -474,6 +479,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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= @@ -517,8 +524,13 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +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.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +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= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -546,6 +558,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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/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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -610,10 +624,19 @@ golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/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.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.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/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-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= @@ -623,14 +646,17 @@ golang.org/x/text v0.3.4/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 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +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= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -688,6 +714,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/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= @@ -854,8 +882,6 @@ gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBp gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE= gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= -gorm.io/gorm v1.25.4 h1:iyNd8fNAe8W9dvtlgeRI5zSVZPsq3OpcTu37cYcpCmw= -gorm.io/gorm v1.25.4/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde h1:9DShaph9qhkIYw7QF91I/ynrr4cOO2PZra2PFD7Mfeg= gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/src/model/mdb/base.go b/src/model/mdb/base.go index 3158aed..0de7992 100644 --- a/src/model/mdb/base.go +++ b/src/model/mdb/base.go @@ -1,7 +1,7 @@ package mdb import ( - "github.com/golang-module/carbon/v2" + "github.com/dromara/carbon/v2" "gorm.io/gorm" ) diff --git a/src/model/service/order_service.go b/src/model/service/order_service.go index 397a92b..3528533 100644 --- a/src/model/service/order_service.go +++ b/src/model/service/order_service.go @@ -12,7 +12,7 @@ import ( "github.com/assimon/luuu/mq/handle" "github.com/assimon/luuu/util/constant" "github.com/assimon/luuu/util/math" - "github.com/golang-module/carbon/v2" + "github.com/dromara/carbon/v2" "github.com/hibiken/asynq" "github.com/shopspring/decimal" "math/rand" diff --git a/src/model/service/pay_service.go b/src/model/service/pay_service.go index 93ccfa5..902220f 100644 --- a/src/model/service/pay_service.go +++ b/src/model/service/pay_service.go @@ -2,6 +2,7 @@ package service import ( "errors" + "github.com/assimon/luuu/config" "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" @@ -21,7 +22,7 @@ func GetCheckoutCounterByTradeId(tradeId string) (*response.CheckoutCounterRespo TradeId: orderInfo.TradeId, ActualAmount: orderInfo.ActualAmount, Token: orderInfo.Token, - ExpirationTime: orderInfo.CreatedAt.AddMinutes(config.GetOrderExpirationTime()).TimestampWithMillisecond(), + ExpirationTime: orderInfo.CreatedAt.AddMinutes(config.GetOrderExpirationTime()).TimestampMilli(), RedirectUrl: orderInfo.RedirectUrl, } return resp, nil diff --git a/src/model/service/task_service.go b/src/model/service/task_service.go index 30bb432..2cbf3cb 100644 --- a/src/model/service/task_service.go +++ b/src/model/service/task_service.go @@ -15,7 +15,7 @@ import ( "github.com/assimon/luuu/util/http_client" "github.com/assimon/luuu/util/json" "github.com/assimon/luuu/util/log" - "github.com/golang-module/carbon/v2" + "github.com/dromara/carbon/v2" "github.com/gookit/goutil/stdutil" "github.com/hibiken/asynq" "github.com/shopspring/decimal" @@ -72,8 +72,8 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) { } }() client := http_client.GetHttpClient() - startTime := carbon.Now().AddHours(-24).TimestampWithMillisecond() - endTime := carbon.Now().TimestampWithMillisecond() + startTime := carbon.Now().AddHours(-24).TimestampMilli() + endTime := carbon.Now().TimestampMilli() resp, err := client.R().SetQueryParams(map[string]string{ "sort": "-timestamp", "limit": "50", @@ -121,7 +121,7 @@ func Trc20CallBack(token string, wg *sync.WaitGroup) { panic(err) } // 区块的确认时间必须在订单创建时间之后 - createTime := order.CreatedAt.TimestampWithMillisecond() + createTime := order.CreatedAt.TimestampMilli() if transfer.BlockTimestamp < createTime { panic("Orders cannot actually be matched") }