client.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package dingtalk
  2. import (
  3. "dashoo.cn/opms_libary/plugin/dingtalk/bridge"
  4. "dashoo.cn/opms_libary/plugin/dingtalk/calendar"
  5. "dashoo.cn/opms_libary/plugin/dingtalk/contact"
  6. "dashoo.cn/opms_libary/plugin/dingtalk/context"
  7. "dashoo.cn/opms_libary/plugin/dingtalk/jsapi"
  8. "dashoo.cn/opms_libary/plugin/dingtalk/message"
  9. "dashoo.cn/opms_libary/plugin/dingtalk/storage"
  10. "dashoo.cn/opms_libary/plugin/dingtalk/workflow"
  11. "github.com/gogf/gf/os/gcache"
  12. "sync"
  13. )
  14. var Client *ClientImpl
  15. var memCache *gcache.Cache
  16. // ClientImpl struct
  17. type ClientImpl struct {
  18. Context *context.Context
  19. }
  20. func init() {
  21. Client = NewClient()
  22. }
  23. func NewClient() *ClientImpl {
  24. var config = context.Config{
  25. CorpId: "dinga8b316209f5ee42435c2f4657eb6378f", //g.Config().GetString("dingtalk.corp-id"), //
  26. AgentId: "2384115071", // g.Config().GetString("dingtalk.agent-id"), //
  27. AppKey: "dinguytykawticadfoht", //g.Config().GetString("dingtalk.app-key"), //
  28. AppSecret: "zPlj4ZpITsUbeq2C0GrwJ78-e8knH_kIeyvznaNQacqtrSb9zbeZcOajgBKdolky", //g.Config().GetString("dingtalk.app-secret"), //
  29. AESKey: "oUjmeWea8Ow1jsdK4UHoDthy6EMQKq3RGbM2rEeTgnm", //g.Config().GetString("dingtalk.aes-key"), //
  30. Token: "WaasHsYk8V3wqwN5xRGsCmiiRDB", //g.Config().GetString("dingtalk.token"), //
  31. }
  32. return newClient(config)
  33. }
  34. func newClient(cfg context.Config) *ClientImpl {
  35. context := new(context.Context)
  36. initContext(&cfg, context)
  37. return &ClientImpl{context}
  38. }
  39. func initContext(cfg *context.Config, context *context.Context) {
  40. if cfg.Cache == nil {
  41. if memCache == nil {
  42. memCache = gcache.New()
  43. }
  44. cfg.Cache = memCache
  45. }
  46. context.Config = cfg
  47. context.SetAccessTokenLock(new(sync.RWMutex))
  48. }
  49. //GetAccessToken 获取access_token
  50. func (c *ClientImpl) GetAccessToken() (string, error) {
  51. return c.Context.GetAccessToken()
  52. }
  53. //GetJsapi 获取Jsapi
  54. func (c *ClientImpl) GetJsapi() *jsapi.Jsapi {
  55. return jsapi.NewJsapi(c.Context)
  56. }
  57. //GetContact 通讯录
  58. func (c *ClientImpl) GetContact() *contact.Contact {
  59. return contact.NewContact(c.Context)
  60. }
  61. //GetWorkflow OA审批
  62. func (c *ClientImpl) GetWorkflow() *workflow.Workflow {
  63. return workflow.NewWorkflow(c.Context)
  64. }
  65. //GetCalendar 日程
  66. func (c *ClientImpl) GetCalendar() *calendar.Calendar {
  67. return calendar.NewCalendar(c.Context)
  68. }
  69. //GetStorage 获取Jsapi
  70. func (c *ClientImpl) GetStorage() *storage.Storage {
  71. return storage.NewStorage(c.Context)
  72. }
  73. // GetDingTalkHandler 消息管理
  74. func (c *ClientImpl) GetDingTalkHandler(msg *message.SubsMessage) *bridge.DingTalkHandler {
  75. c.Context.SubsMessage = msg
  76. return bridge.NewDingTalkHandler(c.Context)
  77. }