Skip to content

Commit 25b5fad

Browse files
author
Matrix-X
committed
update
1 parent 88fd83d commit 25b5fad

File tree

9 files changed

+246
-0
lines changed

9 files changed

+246
-0
lines changed

src/work/application.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"github.com/ArtisanCloud/power-wechat/src/work/corpgroup"
1111
"github.com/ArtisanCloud/power-wechat/src/work/department"
1212
"github.com/ArtisanCloud/power-wechat/src/work/externalContact"
13+
"github.com/ArtisanCloud/power-wechat/src/work/groupRobot"
14+
"github.com/ArtisanCloud/power-wechat/src/work/invoice"
1315
"github.com/ArtisanCloud/power-wechat/src/work/media"
1416
"github.com/ArtisanCloud/power-wechat/src/work/menu"
1517
"github.com/ArtisanCloud/power-wechat/src/work/message"
@@ -63,6 +65,11 @@ type Work struct {
6365
MsgAudit *msgaudit.Client
6466

6567
CorpGroup *corpgroup.Client
68+
69+
Invoice *invoice.Client
70+
71+
GroupRobot *groupRobot.Client
72+
GroupRobotMessenger *groupRobot.Messager
6673
}
6774

6875
func NewWork(config *object.HashMap, r *http.Request) (*Work, error) {
@@ -145,6 +152,11 @@ func NewWork(config *object.HashMap, r *http.Request) (*Work, error) {
145152
//-------------- corp group --------------
146153
app.CorpGroup = corpgroup.RegisterProvider(app)
147154

155+
//-------------- invoice --------------
156+
app.Invoice = invoice.RegisterProvider(app)
157+
158+
app.GroupRobot, app.GroupRobotMessenger = groupRobot.RegisterProvider(app)
159+
148160
return app, err
149161
}
150162

@@ -218,6 +230,13 @@ func (app *Work) GetComponent(name string) interface{} {
218230
return app.MsgAudit
219231
case "CorpGroup":
220232
return app.CorpGroup
233+
case "Invoice":
234+
return app.Invoice
235+
236+
case "GroupRobot":
237+
return app.GroupRobot
238+
case "GroupRobotMessenger":
239+
return app.GroupRobotMessenger
221240

222241
default:
223242
return nil

src/work/groupRobot/client.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package groupRobot
2+
3+
import (
4+
"github.com/ArtisanCloud/go-libs/object"
5+
"github.com/ArtisanCloud/power-wechat/src/kernel"
6+
"github.com/ArtisanCloud/power-wechat/src/work/groupRobot/response"
7+
)
8+
9+
type Client struct {
10+
*kernel.BaseClient
11+
}
12+
13+
func NewClient(app kernel.ApplicationInterface) *Client {
14+
return &Client{
15+
kernel.NewBaseClient(&app, nil),
16+
}
17+
}
18+
19+
func (comp *Client) Message(message interface{}) (*Messager, error) {
20+
return NewMessager(comp).Message(message)
21+
}
22+
23+
// https://open.work.weixin.qq.com/api/doc/90000/90136/91770#%E6%96%87%E6%9C%AC%E7%B1%BB%E5%9E%8B
24+
func (comp *Client) Send(key string, message *object.HashMap) (*response.ResponseGroupRobotSend, error) {
25+
26+
result := &response.ResponseGroupRobotSend{}
27+
28+
comp.Token = nil
29+
30+
_, err := comp.HttpPostJson("cgi-bin/webhook/send", message, &object.StringMap{
31+
"key": key,
32+
}, nil, result)
33+
34+
return result, err
35+
}

src/work/groupRobot/messager.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package groupRobot
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
"github.com/ArtisanCloud/power-wechat/src/kernel/messages"
7+
)
8+
9+
type Messager struct {
10+
*Client
11+
message *messages.Message
12+
GroupKey string
13+
}
14+
15+
func NewMessager(client *Client) *Messager {
16+
return &Messager{
17+
Client: client,
18+
}
19+
}
20+
21+
func (comp *Messager) Message(message interface{}) (*Messager, error) {
22+
23+
switch message.(type) {
24+
case string:
25+
message = messages.NewText(message.(string))
26+
case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
27+
message = messages.NewText(fmt.Sprintf("%d", message))
28+
case float32, float64, complex64, complex128:
29+
message = messages.NewText(fmt.Sprintf("%f", message))
30+
case messages.Message:
31+
obj := message.(messages.Message)
32+
comp.message = &obj
33+
case *messages.Message:
34+
comp.message = message.(*messages.Message)
35+
default:
36+
return nil, errors.New(" Invalid message. ")
37+
}
38+
39+
return comp, nil
40+
}
41+
42+
func (comp *Messager) ToGroup(groupKey string) *Messager {
43+
comp.GroupKey = groupKey
44+
45+
return comp
46+
}

src/work/groupRobot/provider.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package groupRobot
2+
3+
import (
4+
"github.com/ArtisanCloud/power-wechat/src/kernel"
5+
)
6+
7+
func RegisterProvider(app kernel.ApplicationInterface) (*Client, *Messager) {
8+
9+
10+
client := NewClient(app)
11+
12+
messager := NewMessager(client)
13+
14+
return client, messager
15+
16+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package response
2+
3+
import (
4+
"github.com/ArtisanCloud/power-wechat/src/kernel/response"
5+
)
6+
7+
type ResponseGroupRobotSend struct {
8+
*response.ResponseWork
9+
10+
Type string `json:"type"`
11+
MediaID string `json:"media_id"`
12+
CreatedAt string `json:"created_at"`
13+
14+
}

src/work/invoice/client.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package invoice
2+
3+
import (
4+
"github.com/ArtisanCloud/go-libs/object"
5+
"github.com/ArtisanCloud/power-wechat/src/kernel"
6+
response2 "github.com/ArtisanCloud/power-wechat/src/kernel/response"
7+
"github.com/ArtisanCloud/power-wechat/src/work/invoice/response"
8+
)
9+
10+
type Client struct {
11+
*kernel.BaseClient
12+
}
13+
14+
// https://open.work.weixin.qq.com/api/doc/90000/90135/90284
15+
func (comp *Client) Get(cardID string, encryptCode string) (*response.ResponseInvoiceGetInfo, error) {
16+
17+
result := &response.ResponseInvoiceGetInfo{}
18+
19+
data := &object.HashMap{
20+
"card_id": cardID,
21+
"encrypt_code": encryptCode,
22+
}
23+
_, err := comp.HttpPostJson("cgi-bin/card/invoice/reimburse/getinvoiceinfo", data, nil, nil, result)
24+
25+
return result, err
26+
}
27+
28+
// https://open.work.weixin.qq.com/api/doc/90000/90135/90287
29+
func (comp *Client) Select(invoices *object.HashMap) (*response.ResponseInvoiceGetInfoBatch, error) {
30+
31+
result := &response.ResponseInvoiceGetInfoBatch{}
32+
33+
data := &object.HashMap{
34+
"item_list": invoices,
35+
}
36+
_, err := comp.HttpPostJson("cgi-bin/card/invoice/reimburse/getinvoiceinfobatch", data, nil, nil, result)
37+
38+
return result, err
39+
}
40+
41+
// https://open.work.weixin.qq.com/api/doc/90000/90135/90285
42+
func (comp *Client) Update(cardId string, encryptCode string, status string) (*response2.ResponseWork, error) {
43+
44+
result := &response2.ResponseWork{}
45+
46+
data := &object.HashMap{
47+
"card_id": cardId,
48+
"encrypt_code": encryptCode,
49+
"reimburse_status": status,
50+
}
51+
_, err := comp.HttpPostJson("cgi-bin/card/invoice/reimburse/updateinvoicestatus", data, nil, nil, result)
52+
53+
return result, err
54+
}
55+
56+
// https://open.work.weixin.qq.com/api/doc/90000/90135/90286
57+
func (comp *Client) BatchUpdate(invoices *object.HashMap, openid string, status string) (*response2.ResponseWork, error) {
58+
59+
result := &response2.ResponseWork{}
60+
61+
data := &object.HashMap{
62+
"openid": invoices,
63+
"reimburse_status": openid,
64+
"invoice_list": status,
65+
}
66+
_, err := comp.HttpPostJson("cgi-bin/card/invoice/reimburse/updatestatusbatch", data, nil, nil, result)
67+
68+
return result, err
69+
}

src/work/invoice/provider.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package invoice
2+
3+
import (
4+
"github.com/ArtisanCloud/power-wechat/src/kernel"
5+
)
6+
7+
func RegisterProvider(app kernel.ApplicationInterface) *Client {
8+
9+
return &Client{
10+
kernel.NewBaseClient(&app, nil),
11+
}
12+
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package response
2+
3+
import (
4+
"github.com/ArtisanCloud/go-libs/object"
5+
"github.com/ArtisanCloud/power-wechat/src/kernel/response"
6+
)
7+
8+
type ResponseInvoiceGetInfo struct {
9+
*response.ResponseWork
10+
11+
CardID string `json:"card_id"`
12+
BeginTime string `json:"begin_time"`
13+
EndTime string `json:"end_time"`
14+
Openid string `json:"openid"`
15+
Type string `json:"type"`
16+
Payee string `json:"payee"`
17+
Detail string `json:"detail"`
18+
UserInfo *object.HashMap `json:"user_info"`
19+
20+
}
21+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package response
2+
3+
import (
4+
"github.com/ArtisanCloud/go-libs/object"
5+
"github.com/ArtisanCloud/power-wechat/src/kernel/response"
6+
)
7+
8+
type ResponseInvoiceGetInfoBatch struct {
9+
*response.ResponseWork
10+
11+
ItemList []*object.HashMap `json:"item_list"`
12+
}
13+

0 commit comments

Comments
 (0)