Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
app_push
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ikcrm_server
app_push
Commits
6cee936c
Commit
6cee936c
authored
May 21, 2019
by
zmj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
测试服务,修改问题
parent
2aef6dc1
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
30 additions
and
17 deletions
+30
-17
app/controllers/pushs_controller.rb
+9
-2
app/services/push.rb
+13
-7
app/services/push/igetui.rb
+4
-6
app/workers/push_worker.rb
+2
-2
config/environments/development.rb
+1
-0
config/routes.rb
+1
-0
No files found.
app/controllers/pushs_controller.rb
View file @
6cee936c
...
...
@@ -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
...
...
app/services/push
/push
.rb
→
app/services/push.rb
View file @
6cee936c
...
...
@@ -5,24 +5,30 @@ module Push
# transmission_content: opts,
# 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
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
app/services/push/igetui.rb
View file @
6cee936c
...
...
@@ -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
...
...
app/workers/push_worker.rb
View file @
6cee936c
...
...
@@ -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
...
...
config/environments/development.rb
View file @
6cee936c
...
...
@@ -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
config/routes.rb
View file @
6cee936c
...
...
@@ -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?
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment