From dbf9f53dbe9d995834ea19da11c1b2aa52e873e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Sun, 19 Jun 2022 15:16:38 +0800 Subject: [PATCH] - update jd - update kashangwl --- service/jd/request.go | 2 +- service/kashangwl/api.buy.go | 10 +-- service/kashangwl/api.customer.go | 8 +-- service/kashangwl/api.order.go | 12 ++-- service/kashangwl/api.outer-order.go | 12 ++-- service/kashangwl/api.product.go | 10 +-- .../kashangwl/api.product.recharge-params.go | 10 +-- service/kashangwl/app.go | 69 ------------------- service/kashangwl/client.go | 41 +++++++++++ service/kashangwl/const.go | 9 +++ service/kashangwl/get.go | 9 +++ service/kashangwl/{pgsql.go => log.go} | 4 +- service/kashangwl/params.go | 27 -------- service/kashangwl/request.go | 41 +++++++++++ service/kashangwl/sign.go | 8 +-- 15 files changed, 138 insertions(+), 134 deletions(-) delete mode 100644 service/kashangwl/app.go create mode 100644 service/kashangwl/client.go create mode 100644 service/kashangwl/const.go create mode 100644 service/kashangwl/get.go rename service/kashangwl/{pgsql.go => log.go} (93%) delete mode 100644 service/kashangwl/params.go create mode 100644 service/kashangwl/request.go diff --git a/service/jd/request.go b/service/jd/request.go index dc372fa0..cc71ccb4 100644 --- a/service/jd/request.go +++ b/service/jd/request.go @@ -6,7 +6,7 @@ import ( ) // 请求接口 -func (c *Client) request(params map[string]interface{}) (resp gorequest.Response, err error) { +func (c *Client) request(params map[string]interface{}) (gorequest.Response, error) { // 签名 c.Sign(params) diff --git a/service/kashangwl/api.buy.go b/service/kashangwl/api.buy.go index 5f43e6bb..f771ec07 100644 --- a/service/kashangwl/api.buy.go +++ b/service/kashangwl/api.buy.go @@ -32,19 +32,19 @@ type ApiBuyResult struct { Err error // 错误 } -func NewApiBuyResult(result ApiBuyResponse, body []byte, http gorequest.Response, err error) *ApiBuyResult { +func newApiBuyResult(result ApiBuyResponse, body []byte, http gorequest.Response, err error) *ApiBuyResult { return &ApiBuyResult{Result: result, Body: body, Http: http, Err: err} } // ApiBuy 购买商品 // http://doc.cqmeihu.cn/sales/buy.html -func (app *App) ApiBuy(notMustParams ...Params) *ApiBuyResult { +func (c *Client) ApiBuy(notMustParams ...gorequest.Params) *ApiBuyResult { // 参数 - params := app.NewParamsWith(notMustParams...) + params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := app.request("http://www.kashangwl.com/api/buy", params) + request, err := c.request(apiUrl+"/api/buy", params) // 定义 var response ApiBuyResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewApiBuyResult(response, request.ResponseBody, request, err) + return newApiBuyResult(response, request.ResponseBody, request, err) } diff --git a/service/kashangwl/api.customer.go b/service/kashangwl/api.customer.go index 094aafbc..c2394120 100644 --- a/service/kashangwl/api.customer.go +++ b/service/kashangwl/api.customer.go @@ -22,17 +22,17 @@ type ApiCustomerResult struct { Err error // 错误 } -func NewApiCustomerResult(result ApiCustomerResponse, body []byte, http gorequest.Response, err error) *ApiCustomerResult { +func newApiCustomerResult(result ApiCustomerResponse, body []byte, http gorequest.Response, err error) *ApiCustomerResult { return &ApiCustomerResult{Result: result, Body: body, Http: http, Err: err} } // ApiCustomer 获取商家信息 // http://doc.cqmeihu.cn/sales/merchant-info.html -func (app *App) ApiCustomer() *ApiCustomerResult { +func (c *Client) ApiCustomer() *ApiCustomerResult { // 请求 - request, err := app.request("http://www.kashangwl.com/api/customer", map[string]interface{}{}) + request, err := c.request(apiUrl+"/api/customer", map[string]interface{}{}) // 定义 var response ApiCustomerResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewApiCustomerResult(response, request.ResponseBody, request, err) + return newApiCustomerResult(response, request.ResponseBody, request, err) } diff --git a/service/kashangwl/api.order.go b/service/kashangwl/api.order.go index b7617c5b..3c66b7de 100644 --- a/service/kashangwl/api.order.go +++ b/service/kashangwl/api.order.go @@ -45,22 +45,22 @@ type ApiOrderResult struct { Err error // 错误 } -func NewApiOrderResult(result ApiOrderResponse, body []byte, http gorequest.Response, err error) *ApiOrderResult { +func newApiOrderResult(result ApiOrderResponse, body []byte, http gorequest.Response, err error) *ApiOrderResult { return &ApiOrderResult{Result: result, Body: body, Http: http, Err: err} } // ApiOrder 获取单个订单信息。 // 仅能获取自己购买的订单。 // http://doc.cqmeihu.cn/sales/order-info.html -func (app App) ApiOrder(orderId string) *ApiOrderResult { +func (c *Client) ApiOrder(orderId string) *ApiOrderResult { // 参数 - param := NewParams() + param := gorequest.NewParams() param.Set("order_id", orderId) - params := app.NewParamsWith(param) + params := gorequest.NewParamsWith(param) // 请求 - request, err := app.request("http://www.kashangwl.com/api/order", params) + request, err := c.request(apiUrl+"/api/order", params) // 定义 var response ApiOrderResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewApiOrderResult(response, request.ResponseBody, request, err) + return newApiOrderResult(response, request.ResponseBody, request, err) } diff --git a/service/kashangwl/api.outer-order.go b/service/kashangwl/api.outer-order.go index 323bc779..7a78cd28 100644 --- a/service/kashangwl/api.outer-order.go +++ b/service/kashangwl/api.outer-order.go @@ -45,22 +45,22 @@ type ApiOuterOrderResult struct { Err error // 错误 } -func NewApiOuterOrderResult(result ApiOuterOrderResponse, body []byte, http gorequest.Response, err error) *ApiOuterOrderResult { +func newApiOuterOrderResult(result ApiOuterOrderResponse, body []byte, http gorequest.Response, err error) *ApiOuterOrderResult { return &ApiOuterOrderResult{Result: result, Body: body, Http: http, Err: err} } // ApiOuterOrder 使用外部订单号获取单个订单信息 // 仅能获取自己购买的订单 // http://doc.cqmeihu.cn/sales/outer-order-info.html -func (app App) ApiOuterOrder(orderId string) *ApiOuterOrderResult { +func (c *Client) ApiOuterOrder(orderId string) *ApiOuterOrderResult { // 参数 - param := NewParams() + param := gorequest.NewParams() param.Set("outer_order_id", orderId) - params := app.NewParamsWith(param) + params := gorequest.NewParamsWith(param) // 请求 - request, err := app.request("http://www.kashangwl.com/api/outer-order", params) + request, err := c.request(apiUrl+"/api/outer-order", params) // 定义 var response ApiOuterOrderResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewApiOuterOrderResult(response, request.ResponseBody, request, err) + return newApiOuterOrderResult(response, request.ResponseBody, request, err) } diff --git a/service/kashangwl/api.product.go b/service/kashangwl/api.product.go index eec53a44..af087af5 100644 --- a/service/kashangwl/api.product.go +++ b/service/kashangwl/api.product.go @@ -30,20 +30,20 @@ type ApiProductResult struct { Err error // 错误 } -func NewApiProductResult(result ApiProductResponse, body []byte, http gorequest.Response, err error) *ApiProductResult { +func newApiProductResult(result ApiProductResponse, body []byte, http gorequest.Response, err error) *ApiProductResult { return &ApiProductResult{Result: result, Body: body, Http: http, Err: err} } // ApiProduct 获取单个商品信息 // http://doc.cqmeihu.cn/sales/product-info.html -func (app App) ApiProduct(productId int64) *ApiProductResult { +func (c *Client) ApiProduct(productId int64) *ApiProductResult { // 参数 - params := NewParams() + params := gorequest.NewParams() params.Set("product_id", productId) // 请求 - request, err := app.request("http://www.kashangwl.com/api/product", params) + request, err := c.request(apiUrl+"/api/product", params) // 定义 var response ApiProductResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewApiProductResult(response, request.ResponseBody, request, err) + return newApiProductResult(response, request.ResponseBody, request, err) } diff --git a/service/kashangwl/api.product.recharge-params.go b/service/kashangwl/api.product.recharge-params.go index c5eeb011..468bf17b 100644 --- a/service/kashangwl/api.product.recharge-params.go +++ b/service/kashangwl/api.product.recharge-params.go @@ -25,20 +25,20 @@ type ApiProductRechargeParamsResult struct { Err error // 错误 } -func NewApiProductRechargeParamsResult(result ApiProductRechargeParamsResponse, body []byte, http gorequest.Response, err error) *ApiProductRechargeParamsResult { +func newApiProductRechargeParamsResult(result ApiProductRechargeParamsResponse, body []byte, http gorequest.Response, err error) *ApiProductRechargeParamsResult { return &ApiProductRechargeParamsResult{Result: result, Body: body, Http: http, Err: err} } // ApiProductRechargeParams 接口说明 // 获取商品的充值参数(仅支持充值类商品) // http://doc.cqmeihu.cn/sales/ProductParams.html -func (app App) ApiProductRechargeParams(notMustParams ...Params) *ApiProductRechargeParamsResult { +func (c *Client) ApiProductRechargeParams(notMustParams ...gorequest.Params) *ApiProductRechargeParamsResult { // 参数 - params := app.NewParamsWith(notMustParams...) + params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := app.request("http://www.kashangwl.com/api/product/recharge-params", params) + request, err := c.request(apiUrl+"/api/product/recharge-params", params) // 定义 var response ApiProductRechargeParamsResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewApiProductRechargeParamsResult(response, request.ResponseBody, request, err) + return newApiProductRechargeParamsResult(response, request.ResponseBody, request, err) } diff --git a/service/kashangwl/app.go b/service/kashangwl/app.go deleted file mode 100644 index a6e62c38..00000000 --- a/service/kashangwl/app.go +++ /dev/null @@ -1,69 +0,0 @@ -package kashangwl - -import ( - "go.dtapp.net/library/utils/golog" - "go.dtapp.net/library/utils/gorequest" - "gorm.io/gorm" - "time" -) - -// App 卡商网服务 -type App struct { - customerId int // 商家编号 - customerKey string // 商家密钥 - pgsql *gorm.DB // pgsql数据库 - client *gorequest.App // 请求客户端 - log *golog.Api // 日志服务 - logTableName string // 日志表名 - logStatus bool // 日志状态 -} - -func NewApp(customerId int, customerKey string, pgsql *gorm.DB) *App { - app := &App{customerId: customerId, customerKey: customerKey} - app.client = gorequest.NewHttp() - if pgsql != nil { - app.pgsql = pgsql - app.logStatus = true - app.logTableName = "kashangwl" - app.log = golog.NewApi(&golog.ApiConfig{ - Db: pgsql, - TableName: app.logTableName, - }) - } - return app -} - -func (app *App) request(url string, params map[string]interface{}) (resp gorequest.Response, err error) { - - // 公共参数 - params["timestamp"] = time.Now().UnixNano() / 1e6 - params["customer_id"] = app.customerId - - // 签名参数 - params["sign"] = app.getSign(app.customerKey, params) - - // 创建请求 - client := app.client - - // 设置请求地址 - client.SetUri(url) - - // 设置格式 - client.SetContentTypeJson() - - // 设置参数 - client.SetParams(params) - - // 发起请求 - request, err := client.Post() - if err != nil { - return gorequest.Response{}, err - } - - // 日志 - if app.logStatus == true { - go app.postgresqlLog(request) - } - - return request, err -} diff --git a/service/kashangwl/client.go b/service/kashangwl/client.go new file mode 100644 index 00000000..8db158c4 --- /dev/null +++ b/service/kashangwl/client.go @@ -0,0 +1,41 @@ +package kashangwl + +import ( + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" + "gorm.io/gorm" +) + +type ConfigClient struct { + CustomerId int // 商家编号 + CustomerKey string // 商家密钥 + PgsqlDb *gorm.DB // pgsql数据库 +} + +// Client 卡商网服务 +type Client struct { + client *gorequest.App // 请求客户端 + log *golog.ApiClient // 日志服务 + logStatus bool // 日志状态 + config *ConfigClient // 配置 +} + +func NewClient(config *ConfigClient) (*Client, error) { + + var err error + c := &Client{config: config} + + c.client = gorequest.NewHttp() + if c.config.PgsqlDb != nil { + c.logStatus = true + c.log, err = golog.NewApiClient(&golog.ConfigApiClient{ + Db: c.config.PgsqlDb, + TableName: logTable, + }) + if err != nil { + return nil, err + } + } + + return c, nil +} diff --git a/service/kashangwl/const.go b/service/kashangwl/const.go new file mode 100644 index 00000000..008fff6b --- /dev/null +++ b/service/kashangwl/const.go @@ -0,0 +1,9 @@ +package kashangwl + +const ( + apiUrl = "http://www.kashangwl.com" +) + +const ( + logTable = "kashangwl" +) diff --git a/service/kashangwl/get.go b/service/kashangwl/get.go new file mode 100644 index 00000000..0577b3d3 --- /dev/null +++ b/service/kashangwl/get.go @@ -0,0 +1,9 @@ +package kashangwl + +func (c *Client) GetCustomerId() int { + return c.config.CustomerId +} + +func (c *Client) GetCustomerKey() string { + return c.config.CustomerKey +} diff --git a/service/kashangwl/pgsql.go b/service/kashangwl/log.go similarity index 93% rename from service/kashangwl/pgsql.go rename to service/kashangwl/log.go index b0f1a24a..527d978d 100644 --- a/service/kashangwl/pgsql.go +++ b/service/kashangwl/log.go @@ -8,8 +8,8 @@ import ( ) // 记录日志 -func (app *App) postgresqlLog(request gorequest.Response) { - app.log.Record(golog.ApiPostgresqlLog{ +func (c *Client) postgresqlLog(request gorequest.Response) { + c.log.Record(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/kashangwl/params.go b/service/kashangwl/params.go deleted file mode 100644 index 13b54712..00000000 --- a/service/kashangwl/params.go +++ /dev/null @@ -1,27 +0,0 @@ -package kashangwl - -// Params 请求参数 -type Params map[string]interface{} - -func NewParams() Params { - p := make(Params) - return p -} - -func (app *App) NewParamsWith(params ...Params) Params { - p := make(Params) - for _, v := range params { - p.SetParams(v) - } - return p -} - -func (p Params) Set(key string, value interface{}) { - p[key] = value -} - -func (p Params) SetParams(params Params) { - for key, value := range params { - p[key] = value - } -} diff --git a/service/kashangwl/request.go b/service/kashangwl/request.go new file mode 100644 index 00000000..b6474a26 --- /dev/null +++ b/service/kashangwl/request.go @@ -0,0 +1,41 @@ +package kashangwl + +import ( + "go.dtapp.net/library/utils/gorequest" + "time" +) + +func (c *Client) request(url string, params map[string]interface{}) (gorequest.Response, error) { + + // 公共参数 + params["timestamp"] = time.Now().UnixNano() / 1e6 + params["customer_id"] = c.GetCustomerId() + + // 签名参数 + params["sign"] = c.getSign(c.GetCustomerKey(), params) + + // 创建请求 + client := c.client + + // 设置请求地址 + client.SetUri(url) + + // 设置格式 + client.SetContentTypeJson() + + // 设置参数 + client.SetParams(params) + + // 发起请求 + request, err := client.Post() + if err != nil { + return gorequest.Response{}, err + } + + // 日志 + if c.logStatus == true { + go c.postgresqlLog(request) + } + + return request, err +} diff --git a/service/kashangwl/sign.go b/service/kashangwl/sign.go index 3d43f7c1..1afc2b78 100644 --- a/service/kashangwl/sign.go +++ b/service/kashangwl/sign.go @@ -14,7 +14,7 @@ import ( ) // md5(key + 参数1名称 + 参数1值 + 参数2名称 + 参数2值...) 加密源串应为{key}customer_id1192442order_id827669582783timestamp1626845767 -func (app *App) getSign(customerKey string, params map[string]interface{}) string { +func (c *Client) getSign(customerKey string, params map[string]interface{}) string { // 参数按照参数名的字典升序排列 var keys []string for k := range params { @@ -34,17 +34,17 @@ func (app *App) getSign(customerKey string, params map[string]interface{}) strin } // 获取请求数据 -func (app *App) getRequestData(params map[string]interface{}) string { +func (c *Client) getRequestData(params map[string]interface{}) string { // 公共参数 args := url.Values{} // 请求参数 for key, val := range params { - args.Set(key, app.getString(val)) + args.Set(key, c.getString(val)) } return args.Encode() } -func (app *App) getString(i interface{}) string { +func (c *Client) getString(i interface{}) string { switch v := i.(type) { case string: return v