package dingtalk import ( "dashoo.cn/opms_libary/plugin/dingtalk/bridge" "dashoo.cn/opms_libary/plugin/dingtalk/calendar" "dashoo.cn/opms_libary/plugin/dingtalk/contact" "dashoo.cn/opms_libary/plugin/dingtalk/context" "dashoo.cn/opms_libary/plugin/dingtalk/jsapi" "dashoo.cn/opms_libary/plugin/dingtalk/message" "dashoo.cn/opms_libary/plugin/dingtalk/storage" "dashoo.cn/opms_libary/plugin/dingtalk/workflow" "github.com/gogf/gf/os/gcache" "sync" ) var Client *ClientImpl var memCache *gcache.Cache // ClientImpl struct type ClientImpl struct { Context *context.Context } func init() { Client = NewClient() } func NewClient() *ClientImpl { var config = context.Config{ CorpId: "dinga8b316209f5ee42435c2f4657eb6378f", //g.Config().GetString("dingtalk.corp-id"), // AgentId: "2384115071", // g.Config().GetString("dingtalk.agent-id"), // AppKey: "dinguytykawticadfoht", //g.Config().GetString("dingtalk.app-key"), // AppSecret: "zPlj4ZpITsUbeq2C0GrwJ78-e8knH_kIeyvznaNQacqtrSb9zbeZcOajgBKdolky", //g.Config().GetString("dingtalk.app-secret"), // AESKey: "oUjmeWea8Ow1jsdK4UHoDthy6EMQKq3RGbM2rEeTgnm", //g.Config().GetString("dingtalk.aes-key"), // Token: "WaasHsYk8V3wqwN5xRGsCmiiRDB", //g.Config().GetString("dingtalk.token"), // } return newClient(config) } func newClient(cfg context.Config) *ClientImpl { context := new(context.Context) initContext(&cfg, context) return &ClientImpl{context} } func initContext(cfg *context.Config, context *context.Context) { if cfg.Cache == nil { if memCache == nil { memCache = gcache.New() } cfg.Cache = memCache } context.Config = cfg context.SetAccessTokenLock(new(sync.RWMutex)) } //GetAccessToken 获取access_token func (c *ClientImpl) GetAccessToken() (string, error) { return c.Context.GetAccessToken() } //GetJsapi 获取Jsapi func (c *ClientImpl) GetJsapi() *jsapi.Jsapi { return jsapi.NewJsapi(c.Context) } //GetContact 通讯录 func (c *ClientImpl) GetContact() *contact.Contact { return contact.NewContact(c.Context) } //GetWorkflow OA审批 func (c *ClientImpl) GetWorkflow() *workflow.Workflow { return workflow.NewWorkflow(c.Context) } //GetCalendar 日程 func (c *ClientImpl) GetCalendar() *calendar.Calendar { return calendar.NewCalendar(c.Context) } //GetStorage 获取Jsapi func (c *ClientImpl) GetStorage() *storage.Storage { return storage.NewStorage(c.Context) } // GetDingTalkHandler 消息管理 func (c *ClientImpl) GetDingTalkHandler(msg *message.SubsMessage) *bridge.DingTalkHandler { c.Context.SubsMessage = msg return bridge.NewDingTalkHandler(c.Context) }