Commit 6cee936c by zmj

测试服务,修改问题

parent 2aef6dc1
......@@ -15,15 +15,22 @@ class PushsController < ApplicationController
end
end
# app_name 应用名称
# user_device_ids 设备ids
# message 推送信息的json 字符串
# igetui_opts 个推推送的额外选项
def push
param! :app_name, String, required: true
param! :user_device_ids, Array, 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
if token == Token.token(params[:app_name])
::PushWorker.perform_async(params[:user_device_ids], JSON.parse(params[:message]))
render json: { code: 0, message: 'success'}
::PushWorker.perform_async(params[:user_device_ids], message, igetui_opts)
render json: { code: 0, message: 'success', describe: '异步任务正在处理'}
else
render json: { code: -1, message: 'token 错误/过期'}
end
......
......@@ -2,27 +2,33 @@ module Push
class << self
# transmission_content 是真正的推送信息
# {
# transmission_content: opts,
# transmission_type: transmission_type
# }
def push(user_device_ids, message)
Log.info("push: user_device_ids: #{user_device_ids}, message: #{message}")
# transmission_content: opts,
# transmission_type: transmission_type
# }
# 调用推送服务,推送信息
# 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
igetui_opts = igetui_opts.with_indifferent_access
# igetui
Igetui.push(user_device_ids, message)
Push::Igetui.push(user_device_ids, message, igetui_opts)
# xiaomi
# 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
# 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
rescue StandardError => err
Log.error(err)
Push::Log.error(err)
end
end
end
......@@ -3,14 +3,15 @@ module Push
class << self
attr_accessor :config
def push(user_device_ids, template_data = {})
def push(user_device_ids, template_data = {}, opts = {})
if user_device_ids.size > 1
push_transmission_to_list_igetui(user_device_ids, template_data)
else
push_transmission_to_igetui(user_device_ids, template_data)
end
rescue StandardError => err
Push::Log.error(err)
::Push::Log.error(err)
end
def config
......@@ -67,13 +68,10 @@ module Push
end
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)
igetui = Igetui::Push.new(template_data, opts)
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
......
......@@ -2,8 +2,8 @@ class PushWorker
include Sidekiq::Worker
sidekiq_options queue: :push
def perform(user_device_ids, message)
Push.push(user_device_ids, message)
def perform(user_device_ids, message, igetui_opts)
Push.push(user_device_ids, message, igetui_opts)
rescue StandardError => e
ErrorLog.error(e)
end
......
......@@ -58,4 +58,5 @@ Rails.application.configure do
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
end
......@@ -4,6 +4,7 @@ Rails.application.routes.draw do
post 'api/v1/push', to: 'pushs#push'
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
Sidekiq::Web.use Rack::Auth::Basic do |username, password|
username == "sidekiqadmin" && password == "5529d99a"
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