新增对账单下载
This commit is contained in:
parent
f59b1dc120
commit
dc16e1ac4a
62
.env.example
62
.env.example
|
@ -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 = ""
|
|
@ -1,4 +1,4 @@
|
|||
/.idea
|
||||
/vendor
|
||||
/.env
|
||||
!/.env.example
|
||||
!/.env
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package console
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
func test() {
|
||||
fmt.Println("run test")
|
||||
fmt.Printf(time.Now().Format(time.DateTime))
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
13
go.mod
13
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
|
||||
|
|
33
go.sum
33
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=
|
||||
|
|
3
main.go
3
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":
|
||||
|
|
Loading…
Reference in New Issue