client.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package dingtalk
  2. import (
  3. "dashoo.cn/opms_libary/plugin/dingtalk/context"
  4. "dashoo.cn/opms_libary/plugin/dingtalk/workflow"
  5. "github.com/gogf/gf/os/gcache"
  6. "sync"
  7. )
  8. var Client *ClientImpl
  9. var memCache *gcache.Cache
  10. // ClientImpl struct
  11. type ClientImpl struct {
  12. Context *context.Context
  13. }
  14. func init() {
  15. Client = NewClient()
  16. }
  17. func NewClient() *ClientImpl {
  18. var config = context.Config{
  19. //微信公众平台,需要填写的信息
  20. AppKey: "dinguytykawticadfoht", //g.Config().GetString("dingtalk.app-key"), //"your app id",
  21. AppSecret: "zPlj4ZpITsUbeq2C0GrwJ78-e8knH_kIeyvznaNQacqtrSb9zbeZcOajgBKdolky", //g.Config().GetString("dingtalk.app-secret"), //"your app secret",
  22. }
  23. return newClient(config)
  24. }
  25. func newClient(cfg context.Config) *ClientImpl {
  26. context := new(context.Context)
  27. initContext(&cfg, context)
  28. return &ClientImpl{context}
  29. }
  30. func initContext(cfg *context.Config, context *context.Context) {
  31. if cfg.Cache == nil {
  32. if memCache == nil {
  33. memCache = gcache.New()
  34. }
  35. cfg.Cache = memCache
  36. }
  37. context.Config = cfg
  38. context.SetAccessTokenLock(new(sync.RWMutex))
  39. }
  40. //GetAccessToken 获取access_token
  41. func (c *ClientImpl) GetAccessToken() (string, error) {
  42. return c.Context.GetAccessToken()
  43. }
  44. //GetWorkflow OA审批
  45. func (c *ClientImpl) GetWorkflow() *workflow.Workflow {
  46. return workflow.NewWorkflow(c.Context)
  47. }