Commit 377a87dd66f6120b32bc14a0af0bb64a89b4cd06

Authored by lanrion
1 parent 4ab4a801
Exists in master

添加异步任务接口

README.md
... ... @@ -203,6 +203,21 @@ suite_api.auth_url(code, uri, state="suite")
203 203 group_client.auth_login.get_login_info_by_secret(auth_code, provider_secret)
204 204 ```
205 205  
  206 +## 异步任务接口
  207 +
  208 +```ruby
  209 + # 邀请成员关注
  210 + group_client.async_task.invite_user(callback, invite_info={})
  211 + # 增量更新成员
  212 + group_client.async_task.sync_user(callback, media_id)
  213 + # 全量覆盖成员
  214 + group_client.async_task.replace_user(callback, media_id)
  215 + # 全量覆盖部门
  216 + group_client.async_task.replace_party(callback, media_id)
  217 + # 获取异步任务结果
  218 + group_client.async_task.get_result(job_id)
  219 +```
  220 +
206 221 ### 应用套件的回调通知处理
207 222  
208 223 Wiki: http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AC%AC%E4%B8%89%E6%96%B9%E5%9B%9E%E8%B0%83%E5%8D%8F%E8%AE%AE
... ...
lib/qy_wechat_api/api/async_task.rb 0 → 100644
... ... @@ -0,0 +1,46 @@
  1 +module QyWechatApi
  2 + module Api
  3 + class AsyncTask < Base
  4 +
  5 + CALLBACK_KEYS = ["url", "token", "encodingaeskey"].freeze
  6 +
  7 + BATCH_METHOD = ["sync_user", "replace_user", "replace_party"].freeze
  8 +
  9 + # 邀请成员关注
  10 + def invite_user(callback, invite_info={})
  11 + check_callback(callback)
  12 + invite_info = invite_info["callback"] = callback
  13 + http_post("inviteuser", invite_info)
  14 + end
  15 +
  16 + # 增量更新成员
  17 + # 全量覆盖成员
  18 + # 全量覆盖部门
  19 + BATCH_METHOD.each do |m_name|
  20 + define_method m_name do |callback, media_id|
  21 + check_callback(callback)
  22 + payload = {media_id: media_id, callback: callback}
  23 + http_post(m_name.sub("_", ""), payload)
  24 + end
  25 + end
  26 +
  27 + # 获取异步任务结果
  28 + def get_result(job_id)
  29 + payload = {job_id: job_id}
  30 + http_post("getresult", payload)
  31 + end
  32 +
  33 + private
  34 +
  35 + def check_callback(callback)
  36 + if (callback.keys - CALLBACK_KEYS).present?
  37 + raise "callback param must include #{CALLBACK_KEYS.join(',')}"
  38 + end
  39 + end
  40 +
  41 + def base_url
  42 + "/batch"
  43 + end
  44 + end
  45 + end
  46 +end
... ...
lib/qy_wechat_api/client.rb
... ... @@ -67,6 +67,10 @@ module QyWechatApi
67 67 Api::AuthLogin.new(nil, corp_id)
68 68 end
69 69  
  70 + def async_task
  71 + Api::AsyncTask.new(get_access_token, corp_id)
  72 + end
  73 +
70 74 private
71 75  
72 76 def security_redis_key(key)
... ...