记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
cf6166d3
Commit
cf6166d3
authored
Jul 14, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
upush
parent
1f9e3da0
Changes
29
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
1105 additions
and
97 deletions
+1105
-97
UpushParam.java
...m/liquidnet/service/kylin/dto/param/admin/UpushParam.java
+1
-31
UpushSearchParam.java
...idnet/service/kylin/dto/param/admin/UpushSearchParam.java
+3
-3
create.html
...main/resources/templates/zhengzai/admin/upush/create.html
+6
-6
detail.html
...main/resources/templates/zhengzai/admin/upush/detail.html
+7
-12
upush.html
.../main/resources/templates/zhengzai/admin/upush/upush.html
+20
-14
TestLocal.java
...b/src/test/java/com.liquidnet.client.admin/TestLocal.java
+13
-0
pom.xml
...dnet-client-admin/liquidnet-client-admin-zhengzai/pom.xml
+5
-0
AdminUpushServiceImpl.java
...in/zhengzai/admin/service/impl/AdminUpushServiceImpl.java
+92
-3
AndroidNotification.java
...admin/zhengzai/kylin/utils/upush/AndroidNotification.java
+199
-0
Demo.java
...quidnet/client/admin/zhengzai/kylin/utils/upush/Demo.java
+282
-0
IOSNotification.java
...ent/admin/zhengzai/kylin/utils/upush/IOSNotification.java
+93
-0
PushClient.java
...t/client/admin/zhengzai/kylin/utils/upush/PushClient.java
+103
-0
UmengNotification.java
...t/admin/zhengzai/kylin/utils/upush/UmengNotification.java
+86
-0
AndroidBroadcast.java
.../zhengzai/kylin/utils/upush/android/AndroidBroadcast.java
+11
-0
AndroidCustomizedcast.java
...gzai/kylin/utils/upush/android/AndroidCustomizedcast.java
+22
-0
AndroidFilecast.java
...n/zhengzai/kylin/utils/upush/android/AndroidFilecast.java
+15
-0
AndroidGroupcast.java
.../zhengzai/kylin/utils/upush/android/AndroidGroupcast.java
+16
-0
AndroidUnicast.java
...in/zhengzai/kylin/utils/upush/android/AndroidUnicast.java
+16
-0
IOSBroadcast.java
...nt/admin/zhengzai/kylin/utils/upush/ios/IOSBroadcast.java
+12
-0
IOSCustomizedcast.java
...min/zhengzai/kylin/utils/upush/ios/IOSCustomizedcast.java
+22
-0
IOSFilecast.java
...ent/admin/zhengzai/kylin/utils/upush/ios/IOSFilecast.java
+15
-0
IOSGroupcast.java
...nt/admin/zhengzai/kylin/utils/upush/ios/IOSGroupcast.java
+16
-0
IOSUnicast.java
...ient/admin/zhengzai/kylin/utils/upush/ios/IOSUnicast.java
+15
-0
pom.xml
liquidnet-bus-client/liquidnet-client-admin/pom.xml
+6
-0
application-dev.yml
liquidnet-bus-config/liquidnet-config/application-dev.yml
+7
-0
application-test.yml
liquidnet-bus-config/liquidnet-config/application-test.yml
+7
-0
UpushDetailsListDao.java
.../com/liquidnet/service/kylin/dao/UpushDetailsListDao.java
+5
-18
AdminUpushMapper.xml
...s/com.liquidnet.service.kylin.mapper/AdminUpushMapper.xml
+2
-2
db_kylin_structure.sql
.../liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
+8
-8
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/param/admin/UpushParam.java
View file @
cf6166d3
...
...
@@ -24,16 +24,6 @@ public class UpushParam implements Serializable {
*/
private
Integer
pushRange
;
/**
* 推送类型 unicast broadcast
*/
private
Integer
pushType
;
/**
* 推送号码
*/
private
String
mobile
;
/**
* 推送标题
*/
...
...
@@ -50,7 +40,7 @@ public class UpushParam implements Serializable {
private
String
img
;
/**
* 跳转类型
go_app,go_channel,go_super_channel,normal_play,normal_live,ugc_play,ugc_live,ad_link,promotion,ticket,tour,goods,area
* 跳转类型
*/
private
Integer
jumpType
;
...
...
@@ -69,16 +59,6 @@ public class UpushParam implements Serializable {
*/
private
String
pushTime
;
/**
* 推送者姓名
*/
private
String
pushedName
;
/**
* 推送任务ID
*/
private
String
taskId
;
/**
* 是否发送推送消息,2不发送 1发送推送消息
*/
...
...
@@ -104,14 +84,4 @@ public class UpushParam implements Serializable {
*/
private
Integer
messageShowType
;
private
String
showContent
;
/**
* 推送者ID
*/
private
String
pushedBy
;
private
String
createdAt
;
private
String
updatedAt
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/param/admin/UpushSearchParam.java
View file @
cf6166d3
...
...
@@ -32,12 +32,12 @@ public class UpushSearchParam implements Serializable {
private
Integer
pushRange
;
/**
*
推送类型 unicast broadcast
*
用户类型
*/
private
Integer
push
Type
;
private
Integer
specify
Type
;
/**
* 跳转类型
go_app,go_channel,go_super_channel,normal_play,normal_live,ugc_play,ugc_live,ad_link,promotion,ticket,tour,goods,area
* 跳转类型
*/
private
Integer
jumpType
;
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/admin/upush/create.html
View file @
cf6166d3
...
...
@@ -9,7 +9,7 @@
<body
class=
"white-bg"
>
<div
class=
"wrapper wrapper-content animated fadeInRight ibox-content"
>
<form
class=
"form-horizontal m"
id=
"form-post-add"
>
<div
class=
"form-group"
>
<
!--<
div class="form-group">
<label class="col-sm-2 control-label">消息类型</label>
<div class="col-sm-10">
<div class="radio check-box">
...
...
@@ -23,7 +23,7 @@
</label>
</div>
</div>
</div>
</div>
-->
<div
class=
"form-group"
>
<label
class=
"col-sm-2 control-label"
>
设备类型
</label>
<div
class=
"col-sm-10"
>
...
...
@@ -70,7 +70,7 @@
</div>
</div>
</div>
<div
class=
"form-group"
>
<
!--<
div class="form-group">
<label class="col-sm-2 control-label">推送范围</label>
<div class="col-sm-10">
<div class="radio check-box">
...
...
@@ -78,13 +78,13 @@
<input type="radio" value="2" name="specifyType" checked=""> 全部用户
</label>
</div>
<
!--<
div class="radio check-box">
<div class="radio check-box">
<label>
<input type="radio" value="1" name="specifyType"> 指定手机号
</label>
</div>-->
</div>
</div>
</div>-->
<div
class=
"form-group"
>
<label
class=
"col-sm-2 control-label"
>
排版方式
</label>
<div
class=
"col-sm-10"
>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/admin/upush/detail.html
View file @
cf6166d3
...
...
@@ -3,13 +3,11 @@
<head>
<th:block
th:include=
"include :: header('推送详情')"
/>
<th:block
th:include=
"include :: select2-css"
/>
<th:block
th:include=
"include :: datetimepicker-css"
/>
<th:block
th:include=
"include :: bootstrap-fileinput-css"
/>
</head>
<body
class=
"white-bg"
>
<div
class=
"wrapper wrapper-content animated fadeInRight ibox-content"
>
<form
class=
"form-horizontal m"
id=
"form-post-add"
>
<div
class=
"form-group"
>
<
!--<
div class="form-group">
<label class="col-sm-2 control-label">消息类型</label>
<div class="col-sm-10">
<div class="radio check-box">
...
...
@@ -23,7 +21,7 @@
</label>
</div>
</div>
</div>
</div>
-->
<div
class=
"form-group"
>
<label
class=
"col-sm-2 control-label"
>
设备类型
</label>
<div
class=
"col-sm-10"
>
...
...
@@ -53,7 +51,7 @@
<input
class=
"form-control"
type=
"text"
disabled
th:value=
"${UpushDetailsListDao.jumpValue + UpushDetailsListDao.jumpContent}"
>
</div>
</div>
<div
class=
"form-group"
>
<
!--<
div class="form-group">
<label class="col-sm-2 control-label">推送范围</label>
<div class="col-sm-10">
<div class="radio check-box">
...
...
@@ -61,13 +59,13 @@
<input type="radio" value="2" name="specifyType" disabled="" th:checked="${UpushDetailsListDao.specifyType==2 ? true : false}"> 全部用户
</label>
</div>
<!--
<div class="radio check-box">
<!–
<div class="radio check-box">
<label>
<input type="radio" value="1" name="specifyType"> 指定手机号
</label>
</div>-->
</div>
</div>–>
</div>
</div>-->
<div
class=
"form-group"
>
<label
class=
"col-sm-2 control-label"
>
排版方式
</label>
<div
class=
"col-sm-10"
>
...
...
@@ -131,7 +129,7 @@
</div>
<div
class=
"col-sm-4"
>
<div
class=
"input-daterange input-group"
>
<input
name=
"pushTime"
type=
"text"
class=
"input-sm form-control"
id=
"laydate-startTime"
th:value=
"${UpushDetailsListDao.pushTime}"
placeholder=
"
yyyy-MM-dd HH:mm:ss
"
/>
<input
name=
"pushTime"
type=
"text"
class=
"input-sm form-control"
id=
"laydate-startTime"
th:value=
"${UpushDetailsListDao.pushTime}"
placeholder=
"
定时推送时间
"
/>
</div>
</div>
</div>
...
...
@@ -140,8 +138,5 @@
</div>
<th:block
th:include=
"include :: footer"
/>
<th:block
th:include=
"include :: select2-js"
/>
<th:block
th:include=
"include :: datetimepicker-js"
/>
<th:block
th:include=
"include :: bootstrap-fileinput-js"
/>
<th:block
th:include=
"include :: bootstrap-suggest-js"
/>
</body>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/admin/upush/upush.html
View file @
cf6166d3
...
...
@@ -29,14 +29,14 @@
<option
value=
"3"
>
Android
</option>
</select>
</li>
<li>
<label>
推送
类型:
</label>
<select
name=
"
push
Type"
>
<
!--<
li>
<label>
用户
类型:</label>
<select name="
specify
Type">
<option value="">全部</option>
<option
value=
"
1"
>
unicast
</option>
<option
value=
"
2"
>
broadcast
</option>
<option value="
2">全部用户
</option>
<option value="
1">指定用户
</option>
</select>
</li>
</li>
-->
<li>
<label>
是否发送通知:
</label>
<select
name=
"isPush"
>
...
...
@@ -45,14 +45,14 @@
<option
value=
"1"
>
发送推送消息
</option>
</select>
</li>
<li>
<
!--<
li>
<label>消息类型:</label>
<select name="messageType">
<option value="">全部</option>
<option value="2">系统消息</option>
<option value="1">会员消息</option>
</select>
</li>
</li>
-->
<li>
<a
class=
"btn btn-primary btn-rounded btn-sm"
onclick=
"$.table.search()"
><i
class=
"fa fa-search"
></i>
搜索
</a>
...
...
@@ -90,10 +90,6 @@
field
:
'upushId'
,
title
:
'ID'
},
{
field
:
'pushType'
,
title
:
'推送方式'
},
{
field
:
'pushTitle'
,
title
:
'推送标题'
...
...
@@ -125,7 +121,7 @@
}
}
},
{
/*
{
field: 'specifyType',
title: '用户类型',
formatter: function(value, row, index) {
...
...
@@ -136,7 +132,7 @@
return "指定手机号"
}
}
},
},
*/
{
field
:
'isPush'
,
title
:
'是否发通知'
,
...
...
@@ -176,6 +172,16 @@
field
:
'pushTime'
,
title
:
'推送时间'
},
{
field
:
''
,
title
:
'推送结果'
,
formatter
:
function
(
value
,
row
,
index
)
{
var
taskId
=
row
.
taskId
;
var
msgId
=
row
.
msgId
;
var
errorCode
=
row
.
errorCode
;
return
'taskId:'
+
taskId
+
'<br>'
+
'msgId:'
+
msgId
+
'<br>'
+
'errorCode:'
+
errorCode
;
}
},
{
title
:
'操作'
,
align
:
'center'
,
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/test/java/com.liquidnet.client.admin/TestLocal.java
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
;
import
com.liquidnet.client.admin.common.utils.security.Md5Utils
;
import
com.liquidnet.commons.lang.constant.LnsEnum
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.MD5
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo
;
...
...
@@ -12,6 +14,7 @@ import org.junit.runner.RunWith;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.core.env.Environment
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
...
@@ -19,6 +22,7 @@ import org.springframework.data.mongodb.core.query.Query;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
/**
* Test
...
...
@@ -32,6 +36,9 @@ public class TestLocal {
@Autowired
MongoConverter
mongoConverter
;
@Autowired
Environment
environment
;
@Test
public
void
updateAt
(){
KylinOrderRefunds
kylinOrderRefunds
=
new
KylinOrderRefunds
();
...
...
@@ -56,4 +63,10 @@ public class TestLocal {
String
signsign
=
MD5
.
getStrMD5
(
str
,
null
);
System
.
out
.
print
(
signsign
);
}
@Test
public
void
isXianshang
()
{
boolean
contains
=
Arrays
.
asList
(
LnsEnum
.
ENV
.
dev
.
name
(),
LnsEnum
.
ENV
.
test
.
name
()).
contains
(
environment
.
getProperty
(
CurrentUtil
.
CK_ENV_ACTIVE
));
System
.
out
.
println
(
contains
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/pom.xml
View file @
cf6166d3
...
...
@@ -65,6 +65,11 @@
<scope>
system
</scope>
<systemPath>
${project.basedir}/lib/taobao-sdk-java-auto_1600401599540-20210607.jar
</systemPath>
</dependency>
<dependency>
<groupId>
org.json
</groupId>
<artifactId>
json
</artifactId>
<version>
20090211
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/admin/service/impl/AdminUpushServiceImpl.java
View file @
cf6166d3
...
...
@@ -5,7 +5,13 @@ import com.github.pagehelper.PageHelper;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.client.admin.common.enums.UpushTargetType
;
import
com.liquidnet.client.admin.common.utils.ShiroUtils
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.AndroidNotification
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.PushClient
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.android.AndroidBroadcast
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.ios.IOSBroadcast
;
import
com.liquidnet.commons.lang.constant.LnsEnum
;
import
com.liquidnet.commons.lang.util.BeanUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.kylin.dao.UpushDetailsListDao
;
...
...
@@ -18,9 +24,11 @@ import com.liquidnet.service.kylin.service.admin.IAdminUpushService;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.env.Environment
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
...
...
@@ -37,6 +45,20 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
@Value
(
"${liquidnet.al-oss.imgUrl}"
)
private
String
imgUrl
;
@Value
(
"${liquidnet.umeng.ios.appkey}"
)
private
String
iosAppkey
;
@Value
(
"${liquidnet.umeng.ios.appMasterSecret}"
)
private
String
iosAppMasterSecret
;
@Value
(
"${liquidnet.umeng.android.appkey}"
)
private
String
androidAppkey
;
@Value
(
"${liquidnet.umeng.android.appMasterSecret}"
)
private
String
androidAppMasterSecret
;
private
PushClient
client
=
new
PushClient
();
@Autowired
Environment
environment
;
@Autowired
private
AdminUpushMapper
adminUpushMapper
;
...
...
@@ -45,17 +67,28 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
// 入数据库
String
upushId
=
IDGenerator
.
nextSnowId
();
upushParam
.
setUpushId
(
upushId
);
upushParam
.
setCreatedAt
(
DateUtil
.
getNowTime
());
String
authId
=
ShiroUtils
.
getUserId
().
toString
();
String
authName
=
ShiroUtils
.
getLoginName
();
upushParam
.
setPushedBy
(
authId
);
upushParam
.
setPushedName
(
authName
);
AdminUpush
adminUpush
=
new
AdminUpush
();
BeanUtils
.
copyProperties
(
upushParam
,
adminUpush
);
adminUpush
.
setCreatedAt
(
DateUtil
.
getNowTime
());
adminUpush
.
setPushedBy
(
authId
);
adminUpush
.
setPushedName
(
authName
);
if
(
adminUpush
.
getPushTime
().
isEmpty
())
{
adminUpush
.
setPushTime
(
null
);
}
adminUpushMapper
.
insert
(
adminUpush
);
if
(
adminUpush
.
getIsPush
()
==
1
)
{
if
(
adminUpush
.
getPushRange
()
==
1
)
{
sendAndroidBroadcast
(
adminUpush
);
sendIOSBroadcast
(
adminUpush
);
}
else
if
(
adminUpush
.
getPushRange
()
==
2
)
{
sendIOSBroadcast
(
adminUpush
);
}
else
if
(
adminUpush
.
getPushRange
()
==
3
)
{
sendAndroidBroadcast
(
adminUpush
);
}
}
return
true
;
}
catch
(
Exception
e
)
{
return
false
;
...
...
@@ -91,4 +124,60 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
return
upushDetailsListDao
;
}
public
void
sendAndroidBroadcast
(
AdminUpush
adminUpush
)
{
try
{
AndroidBroadcast
broadcast
=
new
AndroidBroadcast
(
androidAppkey
,
androidAppMasterSecret
);
broadcast
.
setTicker
(
adminUpush
.
getPushTitle
());
broadcast
.
setTitle
(
adminUpush
.
getPushTitle
());
broadcast
.
setText
(
adminUpush
.
getPushContent
());
broadcast
.
goAppAfterOpen
();
broadcast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
if
(
Arrays
.
asList
(
LnsEnum
.
ENV
.
dev
.
name
(),
LnsEnum
.
ENV
.
test
.
name
()).
contains
(
environment
.
getProperty
(
CurrentUtil
.
CK_ENV_ACTIVE
)))
{
broadcast
.
setTestMode
();
}
else
{
broadcast
.
setProductionMode
();
}
// Set customized fields
broadcast
.
setExtraField
(
"type"
,
adminUpush
.
getJumpType
().
toString
());
broadcast
.
setExtraField
(
"id"
,
adminUpush
.
getJumpValue
());
broadcast
.
setExtraField
(
"url"
,
adminUpush
.
getJumpValue
());
if
(
adminUpush
.
getSendType
()
==
1
)
{
String
pushTime
=
adminUpush
.
getPushTime
();
broadcast
.
setPredefinedKeyValue
(
"start_time"
,
pushTime
);
}
client
.
send
(
broadcast
);
}
catch
(
Exception
e
)
{
}
}
public
void
sendIOSBroadcast
(
AdminUpush
adminUpush
)
{
try
{
IOSBroadcast
broadcast
=
new
IOSBroadcast
(
iosAppkey
,
iosAppMasterSecret
);
//alert的值设置为字典
broadcast
.
setAlert
(
adminUpush
.
getPushTitle
(),
adminUpush
.
getPushTitle
(),
adminUpush
.
getPushContent
());
broadcast
.
setBadge
(
0
);
broadcast
.
setSound
(
"default"
);
if
(
Arrays
.
asList
(
LnsEnum
.
ENV
.
dev
.
name
(),
LnsEnum
.
ENV
.
test
.
name
()).
contains
(
environment
.
getProperty
(
CurrentUtil
.
CK_ENV_ACTIVE
)))
{
broadcast
.
setTestMode
();
}
else
{
broadcast
.
setProductionMode
();
}
// Set customized fields
broadcast
.
setCustomizedField
(
"type"
,
adminUpush
.
getJumpType
().
toString
());
broadcast
.
setCustomizedField
(
"id"
,
adminUpush
.
getJumpValue
());
broadcast
.
setCustomizedField
(
"url"
,
adminUpush
.
getJumpValue
());
if
(
adminUpush
.
getSendType
()
==
1
)
{
String
pushTime
=
adminUpush
.
getPushTime
();
broadcast
.
setPredefinedKeyValue
(
"start_time"
,
pushTime
);
}
client
.
send
(
broadcast
);
}
catch
(
Exception
e
)
{
}
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/AndroidNotification.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
;
import
org.json.JSONObject
;
import
java.util.Arrays
;
import
java.util.HashSet
;
public
abstract
class
AndroidNotification
extends
UmengNotification
{
// Keys can be set in the payload level
protected
static
final
HashSet
<
String
>
PAYLOAD_KEYS
=
new
HashSet
<
String
>(
Arrays
.
asList
(
new
String
[]{
"display_type"
}));
// Keys can be set in the body level
protected
static
final
HashSet
<
String
>
BODY_KEYS
=
new
HashSet
<
String
>(
Arrays
.
asList
(
new
String
[]{
"ticker"
,
"title"
,
"text"
,
"builder_id"
,
"icon"
,
"largeIcon"
,
"img"
,
"play_vibrate"
,
"play_lights"
,
"play_sound"
,
"sound"
,
"after_open"
,
"url"
,
"activity"
,
"custom"
}));
public
enum
DisplayType
{
NOTIFICATION
{
public
String
getValue
(){
return
"notification"
;}},
///通知:消息送达到用户设备后,由友盟SDK接管处理并在通知栏上显示通知内容。
MESSAGE
{
public
String
getValue
(){
return
"message"
;}};
///消息:消息送达到用户设备后,消息内容透传给应用自身进行解析处理。
public
abstract
String
getValue
();
}
public
enum
AfterOpenAction
{
go_app
,
//打开应用
go_url
,
//跳转到URL
go_activity
,
//打开特定的activity
go_custom
//用户自定义内容。
}
// Set key/value in the rootJson, for the keys can be set please see ROOT_KEYS, PAYLOAD_KEYS,
// BODY_KEYS and POLICY_KEYS.
@Override
public
boolean
setPredefinedKeyValue
(
String
key
,
Object
value
)
throws
Exception
{
if
(
ROOT_KEYS
.
contains
(
key
))
{
// This key should be in the root level
rootJson
.
put
(
key
,
value
);
}
else
if
(
PAYLOAD_KEYS
.
contains
(
key
))
{
// This key should be in the payload level
JSONObject
payloadJson
=
null
;
if
(
rootJson
.
has
(
"payload"
))
{
payloadJson
=
rootJson
.
getJSONObject
(
"payload"
);
}
else
{
payloadJson
=
new
JSONObject
();
rootJson
.
put
(
"payload"
,
payloadJson
);
}
payloadJson
.
put
(
key
,
value
);
}
else
if
(
BODY_KEYS
.
contains
(
key
))
{
// This key should be in the body level
JSONObject
bodyJson
=
null
;
JSONObject
payloadJson
=
null
;
// 'body' is under 'payload', so build a payload if it doesn't exist
if
(
rootJson
.
has
(
"payload"
))
{
payloadJson
=
rootJson
.
getJSONObject
(
"payload"
);
}
else
{
payloadJson
=
new
JSONObject
();
rootJson
.
put
(
"payload"
,
payloadJson
);
}
// Get body JSONObject, generate one if not existed
if
(
payloadJson
.
has
(
"body"
))
{
bodyJson
=
payloadJson
.
getJSONObject
(
"body"
);
}
else
{
bodyJson
=
new
JSONObject
();
payloadJson
.
put
(
"body"
,
bodyJson
);
}
bodyJson
.
put
(
key
,
value
);
}
else
if
(
POLICY_KEYS
.
contains
(
key
))
{
// This key should be in the body level
JSONObject
policyJson
=
null
;
if
(
rootJson
.
has
(
"policy"
))
{
policyJson
=
rootJson
.
getJSONObject
(
"policy"
);
}
else
{
policyJson
=
new
JSONObject
();
rootJson
.
put
(
"policy"
,
policyJson
);
}
policyJson
.
put
(
key
,
value
);
}
else
{
if
(
key
==
"payload"
||
key
==
"body"
||
key
==
"policy"
||
key
==
"extra"
)
{
throw
new
Exception
(
"You don't need to set value for "
+
key
+
" , just set values for the sub keys in it."
);
}
else
{
throw
new
Exception
(
"Unknown key: "
+
key
);
}
}
return
true
;
}
// Set extra key/value for Android notification
public
boolean
setExtraField
(
String
key
,
String
value
)
throws
Exception
{
JSONObject
payloadJson
=
null
;
JSONObject
extraJson
=
null
;
if
(
rootJson
.
has
(
"payload"
))
{
payloadJson
=
rootJson
.
getJSONObject
(
"payload"
);
}
else
{
payloadJson
=
new
JSONObject
();
rootJson
.
put
(
"payload"
,
payloadJson
);
}
if
(
payloadJson
.
has
(
"extra"
))
{
extraJson
=
payloadJson
.
getJSONObject
(
"extra"
);
}
else
{
extraJson
=
new
JSONObject
();
payloadJson
.
put
(
"extra"
,
extraJson
);
}
extraJson
.
put
(
key
,
value
);
return
true
;
}
//
public
void
setDisplayType
(
DisplayType
d
)
throws
Exception
{
setPredefinedKeyValue
(
"display_type"
,
d
.
getValue
());
}
///通知栏提示文字
public
void
setTicker
(
String
ticker
)
throws
Exception
{
setPredefinedKeyValue
(
"ticker"
,
ticker
);
}
///通知标题
public
void
setTitle
(
String
title
)
throws
Exception
{
setPredefinedKeyValue
(
"title"
,
title
);
}
///通知文字描述
public
void
setText
(
String
text
)
throws
Exception
{
setPredefinedKeyValue
(
"text"
,
text
);
}
///用于标识该通知采用的样式。使用该参数时, 必须在SDK里面实现自定义通知栏样式。
public
void
setBuilderId
(
Integer
builder_id
)
throws
Exception
{
setPredefinedKeyValue
(
"builder_id"
,
builder_id
);
}
///状态栏图标ID, R.drawable.[smallIcon],如果没有, 默认使用应用图标。
public
void
setIcon
(
String
icon
)
throws
Exception
{
setPredefinedKeyValue
(
"icon"
,
icon
);
}
///通知栏拉开后左侧图标ID
public
void
setLargeIcon
(
String
largeIcon
)
throws
Exception
{
setPredefinedKeyValue
(
"largeIcon"
,
largeIcon
);
}
///通知栏大图标的URL链接。该字段的优先级大于largeIcon。该字段要求以http或者https开头。
public
void
setImg
(
String
img
)
throws
Exception
{
setPredefinedKeyValue
(
"img"
,
img
);
}
///收到通知是否震动,默认为"true"
public
void
setPlayVibrate
(
Boolean
play_vibrate
)
throws
Exception
{
setPredefinedKeyValue
(
"play_vibrate"
,
play_vibrate
.
toString
());
}
///收到通知是否闪灯,默认为"true"
public
void
setPlayLights
(
Boolean
play_lights
)
throws
Exception
{
setPredefinedKeyValue
(
"play_lights"
,
play_lights
.
toString
());
}
///收到通知是否发出声音,默认为"true"
public
void
setPlaySound
(
Boolean
play_sound
)
throws
Exception
{
setPredefinedKeyValue
(
"play_sound"
,
play_sound
.
toString
());
}
///通知声音,R.raw.[sound]. 如果该字段为空,采用SDK默认的声音
public
void
setSound
(
String
sound
)
throws
Exception
{
setPredefinedKeyValue
(
"sound"
,
sound
);
}
///收到通知后播放指定的声音文件
public
void
setPlaySound
(
String
sound
)
throws
Exception
{
setPlaySound
(
true
);
setSound
(
sound
);
}
///点击"通知"的后续行为,默认为打开app。
public
void
goAppAfterOpen
()
throws
Exception
{
setAfterOpenAction
(
AfterOpenAction
.
go_app
);
}
public
void
goUrlAfterOpen
(
String
url
)
throws
Exception
{
setAfterOpenAction
(
AfterOpenAction
.
go_url
);
setUrl
(
url
);
}
public
void
goActivityAfterOpen
(
String
activity
)
throws
Exception
{
setAfterOpenAction
(
AfterOpenAction
.
go_activity
);
setActivity
(
activity
);
}
public
void
goCustomAfterOpen
(
String
custom
)
throws
Exception
{
setAfterOpenAction
(
AfterOpenAction
.
go_custom
);
setCustomField
(
custom
);
}
public
void
goCustomAfterOpen
(
JSONObject
custom
)
throws
Exception
{
setAfterOpenAction
(
AfterOpenAction
.
go_custom
);
setCustomField
(
custom
);
}
///点击"通知"的后续行为,默认为打开app。原始接口
public
void
setAfterOpenAction
(
AfterOpenAction
action
)
throws
Exception
{
setPredefinedKeyValue
(
"after_open"
,
action
.
toString
());
}
public
void
setUrl
(
String
url
)
throws
Exception
{
setPredefinedKeyValue
(
"url"
,
url
);
}
public
void
setActivity
(
String
activity
)
throws
Exception
{
setPredefinedKeyValue
(
"activity"
,
activity
);
}
///can be a string of json
public
void
setCustomField
(
String
custom
)
throws
Exception
{
setPredefinedKeyValue
(
"custom"
,
custom
);
}
public
void
setCustomField
(
JSONObject
custom
)
throws
Exception
{
setPredefinedKeyValue
(
"custom"
,
custom
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/Demo.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.android.*
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.ios.*
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
public
class
Demo
{
private
String
appkey
=
null
;
private
String
appMasterSecret
=
null
;
private
String
timestamp
=
null
;
private
PushClient
client
=
new
PushClient
();
public
Demo
(
String
key
,
String
secret
)
{
try
{
appkey
=
key
;
appMasterSecret
=
secret
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
System
.
exit
(
1
);
}
}
public
void
sendAndroidBroadcast
()
throws
Exception
{
AndroidBroadcast
broadcast
=
new
AndroidBroadcast
(
appkey
,
appMasterSecret
);
broadcast
.
setTicker
(
"Android broadcast ticker"
);
broadcast
.
setTitle
(
"中文的title"
);
broadcast
.
setText
(
"Android broadcast text"
);
broadcast
.
goAppAfterOpen
();
broadcast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
// TODO Set 'production_mode' to 'false' if it's a test device.
// For how to register a test device, please see the developer doc.
broadcast
.
setProductionMode
();
// Set customized fields
broadcast
.
setExtraField
(
"test"
,
"helloworld"
);
//厂商通道相关参数
broadcast
.
setChannelActivity
(
"your channel activity"
);
broadcast
.
setChannelProperties
(
"abc"
);
client
.
send
(
broadcast
);
}
public
void
sendAndroidUnicast
()
throws
Exception
{
AndroidUnicast
unicast
=
new
AndroidUnicast
(
appkey
,
appMasterSecret
);
// TODO Set your device token
unicast
.
setDeviceToken
(
"your device_token"
);
unicast
.
setTicker
(
"Android unicast ticker"
);
unicast
.
setTitle
(
"中文的title"
);
unicast
.
setText
(
"Android unicast text"
);
unicast
.
goAppAfterOpen
();
unicast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
// TODO Set 'production_mode' to 'false' if it's a test device.
// For how to register a test device, please see the developer doc.
unicast
.
setProductionMode
();
// Set customized fields
unicast
.
setExtraField
(
"test"
,
"helloworld"
);
unicast
.
setChannelActivity
(
"your channel activity"
);
unicast
.
setChannelProperties
(
"abc"
);
client
.
send
(
unicast
);
}
public
void
sendAndroidGroupcast
()
throws
Exception
{
AndroidGroupcast
groupcast
=
new
AndroidGroupcast
(
appkey
,
appMasterSecret
);
/* TODO
* Construct the filter condition:
* "where":
* {
* "and":
* [
* {"tag":"test"},
* {"tag":"Test"}
* ]
* }
*/
JSONObject
filterJson
=
new
JSONObject
();
JSONObject
whereJson
=
new
JSONObject
();
JSONArray
tagArray
=
new
JSONArray
();
JSONObject
testTag
=
new
JSONObject
();
JSONObject
TestTag
=
new
JSONObject
();
testTag
.
put
(
"tag"
,
"test"
);
TestTag
.
put
(
"tag"
,
"Test"
);
tagArray
.
put
(
testTag
);
tagArray
.
put
(
TestTag
);
whereJson
.
put
(
"and"
,
tagArray
);
filterJson
.
put
(
"where"
,
whereJson
);
groupcast
.
setFilter
(
filterJson
);
groupcast
.
setTicker
(
"Android groupcast ticker"
);
groupcast
.
setTitle
(
"中文的title"
);
groupcast
.
setText
(
"Android groupcast text"
);
groupcast
.
goAppAfterOpen
();
groupcast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
groupcast
.
setChannelActivity
(
"your channel activity"
);
// TODO Set 'production_mode' to 'false' if it's a test device.
// For how to register a test device, please see the developer doc.
groupcast
.
setProductionMode
();
//厂商通道相关参数
groupcast
.
setChannelActivity
(
"your channel activity"
);
groupcast
.
setChannelProperties
(
"abc"
);
client
.
send
(
groupcast
);
}
public
void
sendAndroidCustomizedcast
()
throws
Exception
{
AndroidCustomizedcast
customizedcast
=
new
AndroidCustomizedcast
(
appkey
,
appMasterSecret
);
// TODO Set your alias here, and use comma to split them if there are multiple alias.
// And if you have many alias, you can also upload a file containing these alias, then
// use file_id to send customized notification.
customizedcast
.
setAlias
(
"alias"
,
"alias_type"
);
customizedcast
.
setTicker
(
"Android customizedcast ticker"
);
customizedcast
.
setTitle
(
"中文的title"
);
customizedcast
.
setText
(
"Android customizedcast text"
);
customizedcast
.
goAppAfterOpen
();
customizedcast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
// TODO Set 'production_mode' to 'false' if it's a test device.
// For how to register a test device, please see the developer doc.
customizedcast
.
setProductionMode
();
//厂商通道相关参数
customizedcast
.
setChannelActivity
(
"your channel activity"
);
customizedcast
.
setChannelProperties
(
"abc"
);
client
.
send
(
customizedcast
);
}
public
void
sendAndroidCustomizedcastFile
()
throws
Exception
{
AndroidCustomizedcast
customizedcast
=
new
AndroidCustomizedcast
(
appkey
,
appMasterSecret
);
// TODO Set your alias here, and use comma to split them if there are multiple alias.
// And if you have many alias, you can also upload a file containing these alias, then
// use file_id to send customized notification.
String
fileId
=
client
.
uploadContents
(
appkey
,
appMasterSecret
,
"aa"
+
"\n"
+
"bb"
+
"\n"
+
"alias"
);
customizedcast
.
setFileId
(
fileId
,
"alias_type"
);
customizedcast
.
setTicker
(
"Android customizedcast ticker"
);
customizedcast
.
setTitle
(
"中文的title"
);
customizedcast
.
setText
(
"Android customizedcast text"
);
customizedcast
.
goAppAfterOpen
();
customizedcast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
// TODO Set 'production_mode' to 'false' if it's a test device.
// For how to register a test device, please see the developer doc.
customizedcast
.
setProductionMode
();
//厂商通道相关参数
customizedcast
.
setChannelActivity
(
"your channel activity"
);
customizedcast
.
setChannelProperties
(
"abc"
);
client
.
send
(
customizedcast
);
}
public
void
sendAndroidFilecast
()
throws
Exception
{
AndroidFilecast
filecast
=
new
AndroidFilecast
(
appkey
,
appMasterSecret
);
// TODO upload your device tokens, and use '\n' to split them if there are multiple tokens
String
fileId
=
client
.
uploadContents
(
appkey
,
appMasterSecret
,
"aa"
+
"\n"
+
"bb"
);
filecast
.
setFileId
(
fileId
);
filecast
.
setTicker
(
"Android filecast ticker"
);
filecast
.
setTitle
(
"中文的title"
);
filecast
.
setText
(
"Android filecast text"
);
filecast
.
goAppAfterOpen
();
filecast
.
setDisplayType
(
AndroidNotification
.
DisplayType
.
NOTIFICATION
);
//厂商通道相关参数
filecast
.
setChannelActivity
(
"your channel activity"
);
filecast
.
setChannelProperties
(
"abc"
);
client
.
send
(
filecast
);
}
public
void
sendIOSBroadcast
()
throws
Exception
{
IOSBroadcast
broadcast
=
new
IOSBroadcast
(
appkey
,
appMasterSecret
);
//alert值设置为字符串
//broadcast.setAlert("IOS 广播测试");
//alert的值设置为字典
broadcast
.
setAlert
(
"今日天气"
,
""
,
"今日可能下雨🌂"
);
broadcast
.
setBadge
(
0
);
broadcast
.
setSound
(
"default"
);
// TODO set 'production_mode' to 'true' if your app is under production mode
broadcast
.
setTestMode
();
// Set customized fields
broadcast
.
setCustomizedField
(
"test"
,
"helloworld"
);
client
.
send
(
broadcast
);
}
public
void
sendIOSUnicast
()
throws
Exception
{
IOSUnicast
unicast
=
new
IOSUnicast
(
appkey
,
appMasterSecret
);
// TODO Set your device token
unicast
.
setDeviceToken
(
"your device_token"
);
//alert值设置为字符串
//unicast.setAlert("IOS 单播测试");
//alert的值设置为字典
unicast
.
setAlert
(
"今日天气"
,
""
,
"今日可能下雨🌂"
);
unicast
.
setBadge
(
0
);
unicast
.
setSound
(
"default"
);
// TODO set 'production_mode' to 'true' if your app is under production mode
unicast
.
setTestMode
();
// Set customized fields
unicast
.
setCustomizedField
(
"test"
,
"helloworld"
);
client
.
send
(
unicast
);
}
public
void
sendIOSGroupcast
()
throws
Exception
{
IOSGroupcast
groupcast
=
new
IOSGroupcast
(
appkey
,
appMasterSecret
);
/* TODO
* Construct the filter condition:
* "where":
* {
* "and":
* [
* {"tag":"iostest"}
* ]
* }
*/
JSONObject
filterJson
=
new
JSONObject
();
JSONObject
whereJson
=
new
JSONObject
();
JSONArray
tagArray
=
new
JSONArray
();
JSONObject
testTag
=
new
JSONObject
();
testTag
.
put
(
"tag"
,
"iostest"
);
tagArray
.
put
(
testTag
);
whereJson
.
put
(
"and"
,
tagArray
);
filterJson
.
put
(
"where"
,
whereJson
);
System
.
out
.
println
(
filterJson
.
toString
());
// Set filter condition into rootJson
groupcast
.
setFilter
(
filterJson
);
//groupcast.setAlert("IOS 组播测试");
//alert的值设置为字典
groupcast
.
setAlert
(
"今日天气"
,
"subtitle"
,
"今日可能下雨🌂"
);
groupcast
.
setBadge
(
0
);
groupcast
.
setSound
(
"default"
);
// TODO set 'production_mode' to 'true' if your app is under production mode
groupcast
.
setTestMode
();
client
.
send
(
groupcast
);
}
public
void
sendIOSCustomizedcast
()
throws
Exception
{
IOSCustomizedcast
customizedcast
=
new
IOSCustomizedcast
(
appkey
,
appMasterSecret
);
// TODO Set your alias and alias_type here, and use comma to split them if there are multiple alias.
// And if you have many alias, you can also upload a file containing these alias, then
// use file_id to send customized notification.
customizedcast
.
setAlias
(
"alias"
,
"alias_type"
);
//customizedcast.setAlert("IOS 个性化测试");
//alert的值设置为字典
customizedcast
.
setAlert
(
"今日天气"
,
""
,
"今日可能下雨🌂"
);
customizedcast
.
setBadge
(
0
);
customizedcast
.
setSound
(
"default"
);
// TODO set 'production_mode' to 'true' if your app is under production mode
customizedcast
.
setTestMode
();
client
.
send
(
customizedcast
);
}
public
void
sendIOSFilecast
()
throws
Exception
{
IOSFilecast
filecast
=
new
IOSFilecast
(
appkey
,
appMasterSecret
);
// TODO upload your device tokens, and use '\n' to split them if there are multiple tokens
String
fileId
=
client
.
uploadContents
(
appkey
,
appMasterSecret
,
"aa"
+
"\n"
+
"bb"
);
filecast
.
setFileId
(
fileId
);
//filecast.setAlert("IOS 文件播测试");
//alert的值设置为字典
filecast
.
setAlert
(
"今日天气"
,
""
,
"今日可能下雨🌂"
);
filecast
.
setBadge
(
0
);
filecast
.
setSound
(
"default"
);
// TODO set 'production_mode' to 'true' if your app is under production mode
filecast
.
setTestMode
();
client
.
send
(
filecast
);
}
/*public static void main(String[] args) {
// TODO set your appkey and master secret here
Demo demo = new Demo("your appkey", "your master secret");
try {
demo.sendAndroidUnicast();
//demo.sendIOSUnicast();
*//* TODO these methods are all available, just fill in some fields and do the test
* demo.sendAndroidCustomizedcastFile();
* demo.sendAndroidBroadcast();
* demo.sendAndroidGroupcast();
* demo.sendAndroidCustomizedcast();
* demo.sendAndroidFilecast();
*
* demo.sendIOSBroadcast();
* demo.sendIOSUnicast();
* demo.sendIOSGroupcast();
* demo.sendIOSCustomizedcast();
* demo.sendIOSFilecast();
*//*
} catch (Exception ex) {
ex.printStackTrace();
}
}*/
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/IOSNotification.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
;
import
org.json.JSONObject
;
import
java.util.Arrays
;
import
java.util.HashSet
;
public
abstract
class
IOSNotification
extends
UmengNotification
{
// Keys can be set in the aps level
protected
static
final
HashSet
<
String
>
APS_KEYS
=
new
HashSet
<
String
>(
Arrays
.
asList
(
new
String
[]{
"alert"
,
"badge"
,
"sound"
,
"content-available"
}));
@Override
public
boolean
setPredefinedKeyValue
(
String
key
,
Object
value
)
throws
Exception
{
if
(
ROOT_KEYS
.
contains
(
key
))
{
// This key should be in the root level
rootJson
.
put
(
key
,
value
);
}
else
if
(
APS_KEYS
.
contains
(
key
))
{
// This key should be in the aps level
JSONObject
apsJson
=
null
;
JSONObject
payloadJson
=
null
;
if
(
rootJson
.
has
(
"payload"
))
{
payloadJson
=
rootJson
.
getJSONObject
(
"payload"
);
}
else
{
payloadJson
=
new
JSONObject
();
rootJson
.
put
(
"payload"
,
payloadJson
);
}
if
(
payloadJson
.
has
(
"aps"
))
{
apsJson
=
payloadJson
.
getJSONObject
(
"aps"
);
}
else
{
apsJson
=
new
JSONObject
();
payloadJson
.
put
(
"aps"
,
apsJson
);
}
apsJson
.
put
(
key
,
value
);
}
else
if
(
POLICY_KEYS
.
contains
(
key
))
{
// This key should be in the body level
JSONObject
policyJson
=
null
;
if
(
rootJson
.
has
(
"policy"
))
{
policyJson
=
rootJson
.
getJSONObject
(
"policy"
);
}
else
{
policyJson
=
new
JSONObject
();
rootJson
.
put
(
"policy"
,
policyJson
);
}
policyJson
.
put
(
key
,
value
);
}
else
{
if
(
key
==
"payload"
||
key
==
"aps"
||
key
==
"policy"
)
{
throw
new
Exception
(
"You don't need to set value for "
+
key
+
" , just set values for the sub keys in it."
);
}
else
{
throw
new
Exception
(
"Unknownd key: "
+
key
);
}
}
return
true
;
}
// Set customized key/value for IOS notification
public
boolean
setCustomizedField
(
String
key
,
String
value
)
throws
Exception
{
//rootJson.put(key, value);
JSONObject
payloadJson
=
null
;
if
(
rootJson
.
has
(
"payload"
))
{
payloadJson
=
rootJson
.
getJSONObject
(
"payload"
);
}
else
{
payloadJson
=
new
JSONObject
();
rootJson
.
put
(
"payload"
,
payloadJson
);
}
payloadJson
.
put
(
key
,
value
);
return
true
;
}
public
void
setAlert
(
String
token
)
throws
Exception
{
setPredefinedKeyValue
(
"alert"
,
token
);
}
public
void
setAlert
(
String
title
,
String
subtitle
,
String
body
)
throws
Exception
{
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"title"
,
title
);
object
.
put
(
"subtitle"
,
subtitle
);
object
.
put
(
"body"
,
body
);
setPredefinedKeyValue
(
"alert"
,
object
);
}
public
void
setBadge
(
Integer
badge
)
throws
Exception
{
setPredefinedKeyValue
(
"badge"
,
badge
);
}
public
void
setSound
(
String
sound
)
throws
Exception
{
setPredefinedKeyValue
(
"sound"
,
sound
);
}
public
void
setContentAvailable
(
Integer
contentAvailable
)
throws
Exception
{
setPredefinedKeyValue
(
"content-available"
,
contentAvailable
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/PushClient.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.json.JSONObject
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
public
class
PushClient
{
// The user agent
protected
final
String
USER_AGENT
=
"Mozilla/5.0"
;
// This object is used for sending the post request to Umeng
// protected HttpClient client = new DefaultHttpClient();
protected
CloseableHttpClient
client
=
HttpClients
.
createDefault
();
// The host
protected
static
final
String
host
=
"http://msg.umeng.com"
;
// https://msgapi.umeng.com
// The upload path
protected
static
final
String
uploadPath
=
"/upload"
;
// The post path
protected
static
final
String
postPath
=
"/api/send"
;
public
boolean
send
(
UmengNotification
msg
)
throws
Exception
{
// TODO: 2021/7/14 上线去掉
msg
.
setTestMode
();
String
timestamp
=
Integer
.
toString
((
int
)(
System
.
currentTimeMillis
()
/
1000
));
msg
.
setPredefinedKeyValue
(
"timestamp"
,
timestamp
);
String
url
=
host
+
postPath
;
String
postBody
=
msg
.
getPostBody
();
String
sign
=
DigestUtils
.
md5Hex
((
"POST"
+
url
+
postBody
+
msg
.
getAppMasterSecret
()).
getBytes
(
"utf8"
));
url
=
url
+
"?sign="
+
sign
;
HttpPost
post
=
new
HttpPost
(
url
);
post
.
setHeader
(
"User-Agent"
,
USER_AGENT
);
StringEntity
se
=
new
StringEntity
(
postBody
,
"UTF-8"
);
post
.
setEntity
(
se
);
// Send the post request and get the response
HttpResponse
response
=
client
.
execute
(
post
);
int
status
=
response
.
getStatusLine
().
getStatusCode
();
BufferedReader
rd
=
new
BufferedReader
(
new
InputStreamReader
(
response
.
getEntity
().
getContent
()));
StringBuffer
result
=
new
StringBuffer
();
String
line
=
""
;
while
((
line
=
rd
.
readLine
())
!=
null
)
{
result
.
append
(
line
);
}
System
.
out
.
println
(
result
.
toString
());
if
(
status
==
200
)
{
System
.
out
.
println
(
"Notification sent successfully."
);
}
else
{
System
.
out
.
println
(
"Failed to send the notification!"
);
}
return
true
;
}
// Upload file with device_tokens to Umeng
public
String
uploadContents
(
String
appkey
,
String
appMasterSecret
,
String
contents
)
throws
Exception
{
// Construct the json string
JSONObject
uploadJson
=
new
JSONObject
();
uploadJson
.
put
(
"appkey"
,
appkey
);
String
timestamp
=
Integer
.
toString
((
int
)(
System
.
currentTimeMillis
()
/
1000
));
uploadJson
.
put
(
"timestamp"
,
timestamp
);
uploadJson
.
put
(
"content"
,
contents
);
// Construct the request
String
url
=
host
+
uploadPath
;
String
postBody
=
uploadJson
.
toString
();
String
sign
=
DigestUtils
.
md5Hex
((
"POST"
+
url
+
postBody
+
appMasterSecret
).
getBytes
(
"utf8"
));
url
=
url
+
"?sign="
+
sign
;
HttpPost
post
=
new
HttpPost
(
url
);
post
.
setHeader
(
"User-Agent"
,
USER_AGENT
);
StringEntity
se
=
new
StringEntity
(
postBody
,
"UTF-8"
);
post
.
setEntity
(
se
);
// Send the post request and get the response
HttpResponse
response
=
client
.
execute
(
post
);
System
.
out
.
println
(
"Response Code : "
+
response
.
getStatusLine
().
getStatusCode
());
BufferedReader
rd
=
new
BufferedReader
(
new
InputStreamReader
(
response
.
getEntity
().
getContent
()));
StringBuffer
result
=
new
StringBuffer
();
String
line
=
""
;
while
((
line
=
rd
.
readLine
())
!=
null
)
{
result
.
append
(
line
);
}
System
.
out
.
println
(
result
.
toString
());
// Decode response string and get file_id from it
JSONObject
respJson
=
new
JSONObject
(
result
.
toString
());
String
ret
=
respJson
.
getString
(
"ret"
);
if
(!
ret
.
equals
(
"SUCCESS"
))
{
throw
new
Exception
(
"Failed to upload file"
);
}
JSONObject
data
=
respJson
.
getJSONObject
(
"data"
);
String
fileId
=
data
.
getString
(
"file_id"
);
// Set file_id into rootJson using setPredefinedKeyValue
return
fileId
;
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/UmengNotification.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
;
import
org.json.JSONObject
;
import
java.util.Arrays
;
import
java.util.HashSet
;
public
abstract
class
UmengNotification
{
// This JSONObject is used for constructing the whole request string.
protected
final
JSONObject
rootJson
=
new
JSONObject
();
// The app master secret
protected
String
appMasterSecret
;
// Keys can be set in the root level
protected
static
final
HashSet
<
String
>
ROOT_KEYS
=
new
HashSet
<
String
>(
Arrays
.
asList
(
new
String
[]{
"appkey"
,
"timestamp"
,
"type"
,
"device_tokens"
,
"alias"
,
"alias_type"
,
"file_id"
,
"filter"
,
"production_mode"
,
"feedback"
,
"description"
,
"thirdparty_id"
,
"mipush"
,
"mi_activity"
,
"channel_properties"
}));
// Keys can be set in the policy level
protected
static
final
HashSet
<
String
>
POLICY_KEYS
=
new
HashSet
<
String
>(
Arrays
.
asList
(
new
String
[]{
"start_time"
,
"expire_time"
,
"max_send_num"
}));
// Set predefined keys in the rootJson, for extra keys(Android) or customized keys(IOS) please
// refer to corresponding methods in the subclass.
public
abstract
boolean
setPredefinedKeyValue
(
String
key
,
Object
value
)
throws
Exception
;
public
void
setAppMasterSecret
(
String
secret
)
{
appMasterSecret
=
secret
;
}
public
String
getPostBody
(){
return
rootJson
.
toString
();
}
protected
final
String
getAppMasterSecret
(){
return
appMasterSecret
;
}
protected
void
setProductionMode
(
Boolean
prod
)
throws
Exception
{
setPredefinedKeyValue
(
"production_mode"
,
prod
.
toString
());
}
///正式模式
public
void
setProductionMode
()
throws
Exception
{
setProductionMode
(
true
);
}
///测试模式
public
void
setTestMode
()
throws
Exception
{
setProductionMode
(
false
);
}
///发送消息描述,建议填写。
public
void
setDescription
(
String
description
)
throws
Exception
{
setPredefinedKeyValue
(
"description"
,
description
);
}
///定时发送时间,若不填写表示立即发送。格式: "YYYY-MM-DD hh:mm:ss"。
public
void
setStartTime
(
String
startTime
)
throws
Exception
{
setPredefinedKeyValue
(
"start_time"
,
startTime
);
}
///消息过期时间,格式: "YYYY-MM-DD hh:mm:ss"。
public
void
setExpireTime
(
String
expireTime
)
throws
Exception
{
setPredefinedKeyValue
(
"expire_time"
,
expireTime
);
}
///发送限速,每秒发送的最大条数。
public
void
setMaxSendNum
(
Integer
num
)
throws
Exception
{
setPredefinedKeyValue
(
"max_send_num"
,
num
);
}
//厂商弹窗activity
public
void
setChannelActivity
(
String
activity
)
throws
Exception
{
setPredefinedKeyValue
(
"mipush"
,
"true"
);
setPredefinedKeyValue
(
"mi_activity"
,
activity
);
}
//厂商属性配置
public
void
setChannelProperties
(
String
xiaoMiChannelId
)
throws
Exception
{
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"xiaomi_channel_id"
,
xiaoMiChannelId
);
setPredefinedKeyValue
(
"channel_properties"
,
object
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/android/AndroidBroadcast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
android
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.AndroidNotification
;
public
class
AndroidBroadcast
extends
AndroidNotification
{
public
AndroidBroadcast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"broadcast"
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/android/AndroidCustomizedcast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
android
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.AndroidNotification
;
public
class
AndroidCustomizedcast
extends
AndroidNotification
{
public
AndroidCustomizedcast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"customizedcast"
);
}
public
void
setAlias
(
String
alias
,
String
aliasType
)
throws
Exception
{
setPredefinedKeyValue
(
"alias"
,
alias
);
setPredefinedKeyValue
(
"alias_type"
,
aliasType
);
}
public
void
setFileId
(
String
fileId
,
String
aliasType
)
throws
Exception
{
setPredefinedKeyValue
(
"file_id"
,
fileId
);
setPredefinedKeyValue
(
"alias_type"
,
aliasType
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/android/AndroidFilecast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
android
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.AndroidNotification
;
public
class
AndroidFilecast
extends
AndroidNotification
{
public
AndroidFilecast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"filecast"
);
}
public
void
setFileId
(
String
fileId
)
throws
Exception
{
setPredefinedKeyValue
(
"file_id"
,
fileId
);
}
}
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/android/AndroidGroupcast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
android
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.AndroidNotification
;
import
org.json.JSONObject
;
public
class
AndroidGroupcast
extends
AndroidNotification
{
public
AndroidGroupcast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"groupcast"
);
}
public
void
setFilter
(
JSONObject
filter
)
throws
Exception
{
setPredefinedKeyValue
(
"filter"
,
filter
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/android/AndroidUnicast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
android
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.AndroidNotification
;
public
class
AndroidUnicast
extends
AndroidNotification
{
public
AndroidUnicast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"unicast"
);
}
public
void
setDeviceToken
(
String
token
)
throws
Exception
{
setPredefinedKeyValue
(
"device_tokens"
,
token
);
}
}
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/ios/IOSBroadcast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
ios
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.IOSNotification
;
public
class
IOSBroadcast
extends
IOSNotification
{
public
IOSBroadcast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"broadcast"
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/ios/IOSCustomizedcast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
ios
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.IOSNotification
;
public
class
IOSCustomizedcast
extends
IOSNotification
{
public
IOSCustomizedcast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"customizedcast"
);
}
public
void
setAlias
(
String
alias
,
String
aliasType
)
throws
Exception
{
setPredefinedKeyValue
(
"alias"
,
alias
);
setPredefinedKeyValue
(
"alias_type"
,
aliasType
);
}
public
void
setFileId
(
String
fileId
,
String
aliasType
)
throws
Exception
{
setPredefinedKeyValue
(
"file_id"
,
fileId
);
setPredefinedKeyValue
(
"alias_type"
,
aliasType
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/ios/IOSFilecast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
ios
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.IOSNotification
;
public
class
IOSFilecast
extends
IOSNotification
{
public
IOSFilecast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"filecast"
);
}
public
void
setFileId
(
String
fileId
)
throws
Exception
{
setPredefinedKeyValue
(
"file_id"
,
fileId
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/ios/IOSGroupcast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
ios
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.IOSNotification
;
import
org.json.JSONObject
;
public
class
IOSGroupcast
extends
IOSNotification
{
public
IOSGroupcast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"groupcast"
);
}
public
void
setFilter
(
JSONObject
filter
)
throws
Exception
{
setPredefinedKeyValue
(
"filter"
,
filter
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/upush/ios/IOSUnicast.java
0 → 100644
View file @
cf6166d3
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
.
upush
.
ios
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.upush.IOSNotification
;
public
class
IOSUnicast
extends
IOSNotification
{
public
IOSUnicast
(
String
appkey
,
String
appMasterSecret
)
throws
Exception
{
setAppMasterSecret
(
appMasterSecret
);
setPredefinedKeyValue
(
"appkey"
,
appkey
);
this
.
setPredefinedKeyValue
(
"type"
,
"unicast"
);
}
public
void
setDeviceToken
(
String
token
)
throws
Exception
{
setPredefinedKeyValue
(
"device_tokens"
,
token
);
}
}
liquidnet-bus-client/liquidnet-client-admin/pom.xml
View file @
cf6166d3
...
...
@@ -240,6 +240,12 @@
<artifactId>
liquidnet-client-admin-zhengzai
</artifactId>
<version>
${ruoyi.version}
</version>
</dependency>
<dependency>
<groupId>
org.json
</groupId>
<artifactId>
json
</artifactId>
<version>
20090211
</version>
</dependency>
</dependencies>
</dependencyManagement>
...
...
liquidnet-bus-config/liquidnet-config/application-dev.yml
View file @
cf6166d3
...
...
@@ -87,6 +87,13 @@ liquidnet:
dysms
:
accessKeyId
:
LTAI5tHt7yvm97G8zxackcMK
accessKeySecret
:
xC3i5qEptJ3JIIRaYLaKvhk4gVASfl
umeng
:
ios
:
appkey
:
54fe819bfd98c546b50004f0
appMasterSecret
:
fsls9dv1vwyemqdv9lidjfppk37nmssa
android
:
appkey
:
5c6cf6cbb465f592e4000bae
appMasterSecret
:
dmsho74wlpd1hp7vrwp9bjehzwo29pza
#application-dev-end
liquidnet-bus-config/liquidnet-config/application-test.yml
View file @
cf6166d3
...
...
@@ -87,6 +87,13 @@ liquidnet:
dysms
:
accessKeyId
:
LTAI5tHt7yvm97G8zxackcMK
accessKeySecret
:
xC3i5qEptJ3JIIRaYLaKvhk4gVASfl
umeng
:
ios
:
appkey
:
54fe819bfd98c546b50004f0
appMasterSecret
:
fsls9dv1vwyemqdv9lidjfppk37nmssa
android
:
appkey
:
5c6cf6cbb465f592e4000bae
appMasterSecret
:
dmsho74wlpd1hp7vrwp9bjehzwo29pza
#application-test-end
\ No newline at end of file
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/dao/UpushDetailsListDao.java
View file @
cf6166d3
...
...
@@ -18,16 +18,6 @@ public class UpushDetailsListDao implements Serializable {
*/
private
Integer
pushRange
;
/**
* 推送类型 unicast broadcast
*/
private
Integer
pushType
;
/**
* 推送号码
*/
private
String
mobile
;
/**
* 推送标题
*/
...
...
@@ -44,7 +34,7 @@ public class UpushDetailsListDao implements Serializable {
private
String
img
;
/**
* 跳转类型
go_app,go_channel,go_super_channel,normal_play,normal_live,ugc_play,ugc_live,ad_link,promotion,ticket,tour,goods,area
* 跳转类型
*/
private
Integer
jumpType
;
private
String
jumpName
;
...
...
@@ -64,11 +54,6 @@ public class UpushDetailsListDao implements Serializable {
*/
private
String
pushTime
;
/**
* 推送任务ID
*/
private
String
taskId
;
/**
* 是否发送推送消息,2不发送 1发送推送消息
*/
...
...
@@ -94,8 +79,6 @@ public class UpushDetailsListDao implements Serializable {
*/
private
Integer
messageShowType
;
private
String
showContent
;
/**
* 推送者ID
*/
...
...
@@ -109,4 +92,8 @@ public class UpushDetailsListDao implements Serializable {
private
String
createdAt
;
private
String
updatedAt
;
private
String
errorCode
;
private
String
taskId
;
private
String
msgId
;
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/AdminUpushMapper.xml
View file @
cf6166d3
...
...
@@ -12,8 +12,8 @@
<if
test=
"pushRange != ''"
>
AND push_range=${pushRange}
</if>
<if
test=
"
push
Type != ''"
>
AND
push_type=${push
Type}
<if
test=
"
specify
Type != ''"
>
AND
specify_type=${specify
Type}
</if>
<if
test=
"jumpType != ''"
>
AND jump_type=${jumpType}
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
View file @
cf6166d3
...
...
@@ -987,25 +987,25 @@ CREATE TABLE `admin_upush`
(
`mid`
int
(
11
)
unsigned
NOT
NULL
AUTO_INCREMENT
,
`upush_id`
varchar
(
255
)
NOT
NULL
DEFAULT
0
COMMENT
'upush_id'
,
`push_range`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'推送设备all ios android'
,
`push_type`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'推送类型 unicast broadcast'
,
`mobile`
varchar
(
11
)
NOT
NULL
DEFAULT
''
COMMENT
'推送号码'
,
`push_range`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'推送设备 1all 2ios 3android'
,
`push_title`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'推送标题'
,
`push_content`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'推送内容'
,
`img`
varchar
(
500
)
NOT
NULL
DEFAULT
''
COMMENT
'封面图'
,
`jump_type`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'跳转类型
go_app,go_channel,go_super_channel,normal_play,normal_live,ugc_play,ugc_live,ad_link,promotion,ticket,tour,goods,area
'
,
`jump_type`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'跳转类型'
,
`jump_value`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'跳转值'
,
`jump_content`
varchar
(
500
)
NOT
NULL
DEFAULT
''
COMMENT
'跳转对应的值名称'
,
`push_time`
timestamp
NULL
DEFAULT
NULL
COMMENT
'推送时间'
,
`task_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'推送任务ID'
,
`is_push`
int
NOT
NULL
DEFAULT
0
COMMENT
'是否发送推送消息,2不发送 1发送推送消息'
,
`send_type`
int
NOT
NULL
DEFAULT
0
COMMENT
'发送类型,2立即发送 1定时发送'
,
`message_type`
int
NOT
NULL
DEFAULT
0
COMMENT
'消息类型,2系统消息 1会员消息
'
,
`specify_type`
int
NOT
NULL
DEFAULT
0
COMMENT
'用户类型,2全部用户 1指定手机号
'
,
`message_type`
int
NOT
NULL
DEFAULT
2
COMMENT
'消息类型,2系统消息 1会员消息 会员不做了 默认2
'
,
`specify_type`
int
NOT
NULL
DEFAULT
2
COMMENT
'用户类型,2全部用户 1指定手机号 指定手机不做了默认2
'
,
`message_show_type`
int
NOT
NULL
DEFAULT
0
COMMENT
'消息展示类型,2普通文本,1图文排版'
,
`show_content`
text
,
`pushed_by`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'推送者ID'
,
`pushed_name`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'推送者姓名'
,
`task_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'任务类消息(type为broadcast、groupcast、filecast、customizedcast且file_id不为空)返回'
,
`msg_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'单播类消息(type为unicast、listcast、customizedcast且不带file_id)返回'
,
`error_code`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'错误码'
,
`error_msg`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'错误信息'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
KEY
`admin_upush_id_index`
(
`upush_id`
),
...
...
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