diff --git a/service/wechatqy/client.go b/service/wechatqy/client.go new file mode 100644 index 00000000..7939fbd4 --- /dev/null +++ b/service/wechatqy/client.go @@ -0,0 +1,39 @@ +package wechatqy + +import ( + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" + "gorm.io/gorm" +) + +type ConfigClient struct { + Key string // key + PgsqlDb *gorm.DB // pgsql数据库 +} + +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/wechatqy/const.go b/service/wechatqy/const.go new file mode 100644 index 00000000..18e402a6 --- /dev/null +++ b/service/wechatqy/const.go @@ -0,0 +1,9 @@ +package wechatqy + +const ( + apiUrl = "https://qyapi.weixin.qq.com" +) + +const ( + logTable = "wechatqy" +) diff --git a/service/wechatqy/get.go b/service/wechatqy/get.go new file mode 100644 index 00000000..b5b9b5b1 --- /dev/null +++ b/service/wechatqy/get.go @@ -0,0 +1,5 @@ +package wechatqy + +func (c *Client) GetKey() string { + return c.config.Key +} diff --git a/service/wechatqy/params.go b/service/wechatqy/params.go deleted file mode 100644 index 08ef3dbc..00000000 --- a/service/wechatqy/params.go +++ /dev/null @@ -1,27 +0,0 @@ -package wechatqy - -// 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/wechatqy/pgsql.go b/service/wechatqy/pgsql.go index c804d438..5979c337 100644 --- a/service/wechatqy/pgsql.go +++ b/service/wechatqy/pgsql.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/wechatqy/request.go b/service/wechatqy/request.go new file mode 100644 index 00000000..bcd8fb2f --- /dev/null +++ b/service/wechatqy/request.go @@ -0,0 +1,30 @@ +package wechatqy + +import "go.dtapp.net/library/utils/gorequest" + +func (c *Client) request(url string, params map[string]interface{}) (gorequest.Response, error) { + // 创建请求 + client := c.client + + // 设置请求地址 + client.SetUri(url) + + // 设置FORM格式 + 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/wechatqy/webhook.send.go b/service/wechatqy/webhook.send.go index ec3da087..525b05b2 100644 --- a/service/wechatqy/webhook.send.go +++ b/service/wechatqy/webhook.send.go @@ -21,19 +21,19 @@ type WebhookSendResult struct { Err error // 错误 } -func NewWebhookSendResult(result WebhookSendResponse, body []byte, http gorequest.Response, err error) *WebhookSendResult { +func newWebhookSendResult(result WebhookSendResponse, body []byte, http gorequest.Response, err error) *WebhookSendResult { return &WebhookSendResult{Result: result, Body: body, Http: http, Err: err} } // WebhookSend 发送应用消息 // https://developer.work.weixin.qq.com/document/path/90372 -func (app *App) WebhookSend(notMustParams ...gorequest.Params) *WebhookSendResult { +func (c *Client) WebhookSend(notMustParams ...gorequest.Params) *WebhookSendResult { // 参数 params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := app.request(fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=%s&type=%s", app.key, "text"), params) + request, err := c.request(apiUrl+fmt.Sprintf("/cgi-bin/webhook/send?key=%s&type=%s", c.GetKey(), "text"), params) // 定义 var response WebhookSendResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewWebhookSendResult(response, request.ResponseBody, request, err) + return newWebhookSendResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatqy/wechatqy.go b/service/wechatqy/wechatqy.go deleted file mode 100644 index 218ac66a..00000000 --- a/service/wechatqy/wechatqy.go +++ /dev/null @@ -1,58 +0,0 @@ -package wechatqy - -import ( - "go.dtapp.net/library/utils/golog" - "go.dtapp.net/library/utils/gorequest" - "gorm.io/gorm" -) - -type App struct { - key string // key - pgsql *gorm.DB // pgsql数据库 - client *gorequest.App // 请求客户端 - log *golog.Api // 日志服务 - logTableName string // 日志表名 - logStatus bool // 日志状态 -} - -func NewApp(key string, pgsql *gorm.DB) *App { - app := &App{key: key} - app.client = gorequest.NewHttp() - if pgsql != nil { - app.pgsql = pgsql - app.logStatus = true - app.logTableName = "wechatqy" - 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) { - // 创建请求 - client := app.client - - // 设置请求地址 - client.SetUri(url) - - // 设置FORM格式 - 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 -}