Commit 6cee936c by zmj

测试服务,修改问题

parent 2aef6dc1
...@@ -15,15 +15,22 @@ class PushsController < ApplicationController ...@@ -15,15 +15,22 @@ class PushsController < ApplicationController
end end
end end
# app_name 应用名称
# user_device_ids 设备ids
# message 推送信息的json 字符串
# igetui_opts 个推推送的额外选项
def push def push
param! :app_name, String, required: true param! :app_name, String, required: true
param! :user_device_ids, Array, required: true param! :user_device_ids, Array, required: true
param! :message, String, required: true param! :message, String, required: true
param! :igetui_opts, String
igetui_opts = JSON.parse(params[:igetui_opts]) rescue {}
message = JSON.parse(params[:message])
token = token_and_options(request).first token = token_and_options(request).first
if token == Token.token(params[:app_name]) if token == Token.token(params[:app_name])
::PushWorker.perform_async(params[:user_device_ids], JSON.parse(params[:message])) ::PushWorker.perform_async(params[:user_device_ids], message, igetui_opts)
render json: { code: 0, message: 'success'} render json: { code: 0, message: 'success', describe: '异步任务正在处理'}
else else
render json: { code: -1, message: 'token 错误/过期'} render json: { code: -1, message: 'token 错误/过期'}
end end
......
...@@ -5,24 +5,30 @@ module Push ...@@ -5,24 +5,30 @@ module Push
# transmission_content: opts, # transmission_content: opts,
# transmission_type: transmission_type # transmission_type: transmission_type
# } # }
def push(user_device_ids, message) # 调用推送服务,推送信息
Log.info("push: user_device_ids: #{user_device_ids}, message: #{message}") # user_device_ids, 用户设备信息,可以是字符串数组,也可以是字符串。
# message 要推送的具体信息
# opts 是hash类型,主要是一些其他的信息。
# 由于历史遗留问题,封装的不够好,这里主要用来处理个推的一些参数。
# 目前华为推送,小米推送不会用到这里的信息。
def push(user_device_ids, message, igetui_opts = {})
Push::Log.info("push: user_device_ids: #{user_device_ids}, message: #{message}, igetui_opts: #{igetui_opts}")
message = message.with_indifferent_access message = message.with_indifferent_access
igetui_opts = igetui_opts.with_indifferent_access
# igetui # igetui
Igetui.push(user_device_ids, message) Push::Igetui.push(user_device_ids, message, igetui_opts)
# xiaomi # xiaomi
# https://dev.mi.com/console/doc/detail?pId=1163 文档中心 # https://dev.mi.com/console/doc/detail?pId=1163 文档中心
Xiaomi.push(user_device_ids, message['transmission_content']) Push::Xiaomi.push(user_device_ids, message)
# huawei # huawei
# https://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush_agent.html?page=hmssdk_huaweipush_api_reference_agent_s1 接入文档 # https://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush_agent.html?page=hmssdk_huaweipush_api_reference_agent_s1 接入文档
Huawei.push(user_device_ids, message['transmission_content']) Push::Huawei.push(user_device_ids, message)
# etc # etc
rescue StandardError => err rescue StandardError => err
Log.error(err) Push::Log.error(err)
end end
end end
end end
...@@ -3,14 +3,15 @@ module Push ...@@ -3,14 +3,15 @@ module Push
class << self class << self
attr_accessor :config attr_accessor :config
def push(user_device_ids, template_data = {}) def push(user_device_ids, template_data = {}, opts = {})
if user_device_ids.size > 1 if user_device_ids.size > 1
push_transmission_to_list_igetui(user_device_ids, template_data) push_transmission_to_list_igetui(user_device_ids, template_data)
else else
push_transmission_to_igetui(user_device_ids, template_data) push_transmission_to_igetui(user_device_ids, template_data)
end end
rescue StandardError => err rescue StandardError => err
Push::Log.error(err) ::Push::Log.error(err)
end end
def config def config
...@@ -67,13 +68,10 @@ module Push ...@@ -67,13 +68,10 @@ module Push
end end
def perform(template_data, opts, user_device_ids) def perform(template_data, opts, user_device_ids)
Push::Log.info("template_data: #{template_data}")
Push::Log.info("opts: #{opts}")
Push::Log.info("user_device_ids: #{user_device_ids}")
opts = HashWithIndifferentAccess.new(opts) opts = HashWithIndifferentAccess.new(opts)
igetui = Igetui::Push.new(template_data, opts) igetui = Igetui::Push.new(template_data, opts)
result = igetui.push_message_to(user_device_ids) result = igetui.push_message_to(user_device_ids)
Push::Log.info("result: #{result}") ::Push::Log.info("igetui_push: \n template_data: #{template_data}\n opts: #{opts}\n user_device_ids: #{user_device_ids}\n result: #{result}")
end end
end end
end end
......
...@@ -2,8 +2,8 @@ class PushWorker ...@@ -2,8 +2,8 @@ class PushWorker
include Sidekiq::Worker include Sidekiq::Worker
sidekiq_options queue: :push sidekiq_options queue: :push
def perform(user_device_ids, message) def perform(user_device_ids, message, igetui_opts)
Push.push(user_device_ids, message) Push.push(user_device_ids, message, igetui_opts)
rescue StandardError => e rescue StandardError => e
ErrorLog.error(e) ErrorLog.error(e)
end end
......
...@@ -58,4 +58,5 @@ Rails.application.configure do ...@@ -58,4 +58,5 @@ Rails.application.configure do
# Use an evented file watcher to asynchronously detect changes in source code, # Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem. # routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker config.file_watcher = ActiveSupport::EventedFileUpdateChecker
end end
...@@ -4,6 +4,7 @@ Rails.application.routes.draw do ...@@ -4,6 +4,7 @@ Rails.application.routes.draw do
post 'api/v1/push', to: 'pushs#push' post 'api/v1/push', to: 'pushs#push'
require 'sidekiq/web' require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
Sidekiq::Web.use Rack::Auth::Basic do |username, password| Sidekiq::Web.use Rack::Auth::Basic do |username, password|
username == "sidekiqadmin" && password == "5529d99a" username == "sidekiqadmin" && password == "5529d99a"
end if Rails.env.production? end if Rails.env.production?
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment