From dc16e1ac4aac01eed95422c1743e7ab19e58ecac Mon Sep 17 00:00:00 2001 From: "qiyunfanbo126.com" <815699> Date: Wed, 21 Aug 2024 14:30:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=B9=E8=B4=A6=E5=8D=95?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 62 ------------------ .gitignore | 2 +- app/console/command.go | 12 ++++ app/console/test.go | 7 ++- app/http/entities/front/Youchu.go | 29 +++++++++ app/third/youchu/youchu_api.go | 101 ++++++++++++++++++++++++++++++ app/utils/util.go | 7 +++ config/config.go | 1 + go.mod | 13 ++-- go.sum | 33 +++++----- main.go | 3 + 11 files changed, 181 insertions(+), 89 deletions(-) delete mode 100644 .env.example diff --git a/.env.example b/.env.example deleted file mode 100644 index 8b93b8c..0000000 --- a/.env.example +++ /dev/null @@ -1,62 +0,0 @@ -# toml配置文件 -# Wiki:https://github.com/toml-lang/toml -ServiceName = "snow" -Debug = true -Env = "local" # local-本地 develop-开发 beta-预发布 production-线上 -PrometheusCollectEnable = true -SkyWalkingOapServer = "127.0.0.1:11800" - -[Log] -Handler = "file" -Dir = "./logs" -Level = "info" - -[Db] -Driver = "mysql" - -[Db.Option] -MaxConns = 128 -MaxIdle = 32 -IdleTimeout = 180 # second -Charset = "utf8mb4" -ConnectTimeout = 3 # second - -[Db.Master] -Host = "127.0.0.1" -Port = 3306 -User = "root" -Password = "123456" -DBName = "test" - -[[Db.Slaves]] # 支持多个从库 -Host = "127.0.0.1" -Port = 3306 -User = "root" -Password = "123456" -DBName = "test" - -[Api] -Host = "0.0.0.0" -Port = 8080 - -[Cache] -Driver = "redis" - -[Redis.Master] -Host = "127.0.0.1" -Port = 6379 -#Password = "" -#DB = 0 - -#[Redis.Option] -#MaxIdle = 64 -#MaxConns = 256 -#IdleTimeout = 180 # second -#ConnectTimeout = 1 -#ReadTimeout = 1 -#WriteTimeout = 1 - -[AliMns] -Url = "" -AccessKeyId = "" -AccessKeySecret = "" diff --git a/.gitignore b/.gitignore index c7dbf37..cd89b8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ /.idea /vendor /.env -!/.env.example +!/.env diff --git a/app/console/command.go b/app/console/command.go index ae94f39..2fa1e0c 100644 --- a/app/console/command.go +++ b/app/console/command.go @@ -2,7 +2,10 @@ package console import ( "github.com/qit-team/snow-core/command" + "qteam/app/constants/errorcode" "qteam/app/models/ordersmodel" + "qteam/app/third/youchu" + "qteam/config" "strconv" "strings" "time" @@ -39,3 +42,12 @@ func ClearUnpayOrder() { } } + +func DownLoadAccountBill() { + client := youchu.NewYouChuClient(config.GetConf().YouChu) + code, rs := client.AccountBillQuery() + if code == errorcode.Success { + fileId := rs.FileId + client.AccountBillDownload(fileId) + } +} diff --git a/app/console/test.go b/app/console/test.go index 1319e62..ac44c31 100644 --- a/app/console/test.go +++ b/app/console/test.go @@ -1,7 +1,10 @@ package console -import "fmt" +import ( + "fmt" + "time" +) func test() { - fmt.Println("run test") + fmt.Printf(time.Now().Format(time.DateTime)) } diff --git a/app/http/entities/front/Youchu.go b/app/http/entities/front/Youchu.go index 479e6c6..6303cb3 100644 --- a/app/http/entities/front/Youchu.go +++ b/app/http/entities/front/Youchu.go @@ -100,6 +100,35 @@ type RefundRequestBody struct { ReqTransTime string `json:"reqTransTime"` Data RefundRequestData `json:"data"` } +type AccountBillDownloadRequest struct { + Head YouChuRequestHeader `json:"head"` + Body AccountBillDownloadBody `json:"body"` +} + +type AccountBillDownloadBody struct { + FileIntfcName string `json:"fileIntfcName"` + Sm4Key string `json:"sm4Key"` + FileId string `json:"fileId"` +} + +type AccountBillDownloadResponse struct { + FileContent string `json:"fileContent"` +} + +type AccountBillRequest struct { + Head YouChuRequestHeader `json:"head"` + Body AccountBillBody `json:"body"` +} + +type AccountBillBody struct { + AccountingDate string `json:"accountingDate"` + FileIntfcName string `json:"fileIntfcName"` +} + +type AccountBillResponse struct { + RespCode string `json:"respCode"` + FileId string `json:"fileId"` +} type RefundRequestData struct { TxnCode string `json:"txnCode"` //固定值 1004 diff --git a/app/third/youchu/youchu_api.go b/app/third/youchu/youchu_api.go index f1261d8..61197e9 100644 --- a/app/third/youchu/youchu_api.go +++ b/app/third/youchu/youchu_api.go @@ -1,8 +1,10 @@ package youchu import ( + "encoding/base64" "encoding/json" "fmt" + "io/ioutil" "qteam/app/constants/errorcode" "qteam/app/http/entities/front" "qteam/app/models/ordersmodel" @@ -158,6 +160,105 @@ func (this *YouChuClient) OrderRefund(order ordersmodel.Orders) (code int, respo return errorcode.Success, response } +// 查询对账单 +func (this *YouChuClient) AccountBillQuery() (code int, response front.AccountBillResponse) { + var now = time.Now().Format("20060102150405") + var BusiMainId = now + utils.RandomNumber(10) + request := front.AccountBillRequest{ + Head: front.YouChuRequestHeader{ + PartnerTxSriNo: BusiMainId, + AccessType: "API", + ReqTime: now, + Reserve: "", + Method: "ufile.query.commonQuery", + Version: "1", + MerchantId: config.GetConf().YouChu.MerchantId, + AppID: config.GetConf().YouChu.AppID, + }, + Body: front.AccountBillBody{ + now, + config.GetConf().YouChu.MerchantId, + }, + } + url := this.cfg.OrderHost + config.GetConf().YouChu.MerchantId + ".htm?partnerTxSriNo=" + request.Head.PartnerTxSriNo + requestData := EncryptRequest(request) + bytes, err := json.Marshal(requestData) + if err != nil { + return errorcode.SystemError, response + } + post, err := this.doPost(url, request.Head.PartnerTxSriNo, "ufile.query.commonQuery", bytes) + utils.Log(nil, "ufile.query", string(post)) + if err != nil { + fmt.Println(err, "****************") + return errorcode.YouChuOrderRefundFail, response + } + responseData := DecryptResponse(string(post), false) + utils.Log(nil, "OrderQuery", responseData) + err = json.Unmarshal([]byte(responseData), &response) + if err != nil { + return errorcode.SystemError, front.AccountBillResponse{} + } + return errorcode.Success, response +} + +// 下载对账单 +func (this *YouChuClient) AccountBillDownload(fileId string) (code int, response front.AccountBillDownloadResponse) { + var now = time.Now().Format("20060102150405") + var BusiMainId = now + utils.RandomNumber(10) + request := front.AccountBillDownloadRequest{ + Head: front.YouChuRequestHeader{ + PartnerTxSriNo: BusiMainId, + AccessType: "API", + ReqTime: now, + Reserve: "", + Method: "ufile.query.commonQuery", + Version: "1", + MerchantId: config.GetConf().YouChu.MerchantId, + AppID: config.GetConf().YouChu.AppID, + }, + Body: front.AccountBillDownloadBody{ + config.GetConf().YouChu.MerchantId, + config.GetConf().SmFourKey, + fileId, + }, + } + url := this.cfg.OrderHost + config.GetConf().YouChu.MerchantId + ".htm?partnerTxSriNo=" + request.Head.PartnerTxSriNo + requestData := EncryptRequest(request) + bytes, err := json.Marshal(requestData) + if err != nil { + return errorcode.SystemError, response + } + post, err := this.doPost(url, request.Head.PartnerTxSriNo, "ufile.query.commonQuery", bytes) + utils.Log(nil, "ufile.query", string(post)) + if err != nil { + fmt.Println(err, "****************") + return errorcode.YouChuOrderRefundFail, response + } + responseData := DecryptResponse(string(post), false) + utils.Log(nil, "OrderQuery", responseData) + err = json.Unmarshal([]byte(responseData), &response) + if err != nil { + return errorcode.SystemError, front.AccountBillDownloadResponse{} + } else { + //存入文件 + bt, err := base64.StdEncoding.DecodeString(response.FileContent) + if err == nil { + rs, err := utils.Sm4Decrpt(bt) + if err == nil { + err = ioutil.WriteFile("./bills/"+time.Now().Format(time.DateOnly)+"output.csv", rs, 0644) + if err != nil { + + } + } + + } else { + return errorcode.SystemError, front.AccountBillDownloadResponse{} + } + + } + return errorcode.Success, response +} + func EncryptRequest(request interface{}) (RequestData front.YouChuRequest) { input, _ := json.Marshal(request) MerchantId := config.GetConf().YouChu.MerchantId diff --git a/app/utils/util.go b/app/utils/util.go index 43223de..622047e 100644 --- a/app/utils/util.go +++ b/app/utils/util.go @@ -8,6 +8,7 @@ import ( "crypto/sha512" "encoding/hex" "fmt" + "github.com/ZZMarquis/gm/sm4" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gin-gonic/gin" "github.com/golang-jwt/jwt/v4" @@ -468,3 +469,9 @@ func RandomNumber(n int) (result string) { } return result } + +func Sm4Decrpt(data []byte) ([]byte, error) { + var iv = "UISwD9fW6cFh9SNS" + data, err := sm4.CBCDecrypt([]byte(config.GetConf().SmFourKey), []byte(iv), data) + return data, err +} diff --git a/config/config.go b/config/config.go index a23dc47..bd004fb 100644 --- a/config/config.go +++ b/config/config.go @@ -38,6 +38,7 @@ type Config struct { AliOss AliOss `toml:"AliOss"` YouChu YouChuConfig `toml:"YouChu"` YouChuCallBack YouChuCallBack `toml:"YouChuCallBack"` + SmFourKey string `toml:"SmFourKey"` } type YouChuConfig struct { diff --git a/go.mod b/go.mod index 54ac5f6..ddade26 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,6 @@ require ( github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect - github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.6 // indirect @@ -105,13 +104,13 @@ require ( go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.21.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.1.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect gopkg.in/ini.v1 v1.66.2 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect diff --git a/go.sum b/go.sum index 8d5be76..876fa75 100644 --- a/go.sum +++ b/go.sum @@ -178,7 +178,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 h1:6VSn3hB5U5GeA6kQw4TwWIWbOhtvR2hmbBJnTOtqTWc= github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6/go.mod h1:YxOVT5+yHzKvwhsiSIWmbAYM3Dr9AEEbER2dVayfBkg= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.3 h1:etUaeesHhEORpZMp18zoOhepboiWnFtXrBZxszWUn4k= @@ -303,8 +302,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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= @@ -805,8 +804,8 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= 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= @@ -843,8 +842,8 @@ 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.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= @@ -897,8 +896,8 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= 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= @@ -923,8 +922,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.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -999,8 +998,8 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= @@ -1012,8 +1011,8 @@ 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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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= @@ -1083,8 +1082,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/main.go b/main.go index 508e4ac..b5b559d 100644 --- a/main.go +++ b/main.go @@ -92,6 +92,7 @@ func handleCmd(opts *config.Options) { } func startServer(opts *config.Options) (err error) { + //加载配置 conf, err := config.Load(opts.ConfFile) if err != nil { @@ -110,6 +111,8 @@ func startServer(opts *config.Options) (err error) { // 设置时区(例如,用于处理时间) time.Local = shanghaiTimeZone // 这会改变默认的本地时区 pidFile := opts.GenPidFile() + console.DownLoadAccountBill() + //console.ClearUnpayOrder() //根据启动命令行参数,决定启动哪种服务模式 switch opts.App { case "api":