Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
6107ffa1
Commit
6107ffa1
authored
Apr 14, 2021
by
刘鹏
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '4.1.69_log' into 4.1.69(强绑手机号)
parents
c445a1b7
a0681f68
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
1322 additions
and
586 deletions
+1322
-586
MainActivity.kt
app/src/main/java/com/ydl/component/MainActivity.kt
+7
-7
config.gradle
config.gradle
+13
-12
AudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
+55
-1
YDLavManager.kt
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
+195
-45
ConsultantAudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
+28
-4
AVChatKit.java
m-im/src/main/java/com/yidianling/avchatkit/AVChatKit.java
+5
-1
AVChatActivity.java
m-im/src/main/java/com/yidianling/avchatkit/activity/AVChatActivity.java
+57
-2
AVChatBaseUI.java
m-im/src/main/java/com/yidianling/avchatkit/common/activity/AVChatBaseUI.java
+1
-0
CustomAlertDialog.java
m-im/src/main/java/com/yidianling/avchatkit/common/dialog/CustomAlertDialog.java
+1
-0
NetworkUtil.java
m-im/src/main/java/com/yidianling/avchatkit/common/util/NetworkUtil.java
+8
-2
AVChatController.java
m-im/src/main/java/com/yidianling/avchatkit/controll/AVChatController.java
+65
-10
TeamAVChatActivity.java
m-im/src/main/java/com/yidianling/avchatkit/teamavchat/activity/TeamAVChatActivity.java
+9
-0
IMChatUtil.kt
m-im/src/main/java/com/yidianling/im/helper/IMChatUtil.kt
+8
-3
NimUIKit.java
m-im/src/main/java/com/yidianling/uikit/api/NimUIKit.java
+3
-0
YDLP2PMessageActivity.java
m-im/src/main/java/com/yidianling/uikit/business/session/activity/YDLP2PMessageActivity.java
+8
-8
YDLMessageFragment.java
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
+16
-4
LoginUtils.kt
m-user/src/main/java/com/yidianling/user/LoginUtils.kt
+19
-10
SmsLoginActivity.kt
m-user/src/main/java/com/yidianling/user/ui/SmsLoginActivity.kt
+64
-48
OneKeyLoginHelp.kt
m-user/src/main/java/com/yidianling/user/ui/login/OneKeyLoginHelp.kt
+34
-17
RegisterAndLoginActivity.kt
m-user/src/main/java/com/yidianling/user/ui/login/RegisterAndLoginActivity.kt
+1
-0
InputPassWordPresenterImpl.kt
m-user/src/main/java/com/yidianling/user/ui/login/presenter/InputPassWordPresenterImpl.kt
+84
-49
LoginPresenterImpl.kt
m-user/src/main/java/com/yidianling/user/ui/login/presenter/LoginPresenterImpl.kt
+165
-122
build.gradle
ydl-net/build.gradle
+1
-0
ApiUtil.kt
ydl-net/src/main/java/com/ydl/ydlnet/builder/api/ApiUtil.kt
+0
-29
NetApi.kt
ydl-net/src/main/java/com/ydl/ydlnet/builder/api/NetApi.kt
+0
-22
RequestLogInterceptor.java
ydl-net/src/main/java/com/ydl/ydlnet/builder/interceptor/log/RequestLogInterceptor.java
+10
-25
ApiErrorCountUtils.kt
ydl-net/src/main/java/com/ydl/ydlnet/utils/ApiErrorCountUtils.kt
+0
-59
CommonPayDialog.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/common/CommonPayDialog.kt
+92
-4
PayActivity.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/pay/PayActivity.kt
+50
-6
RxPay.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/pay/RxPay.kt
+16
-4
PayDialog.kt
ydl-pay/src/main/java/com/yidianling/ydl_pay/pay/payDialog/PayDialog.kt
+9
-0
build.gradle
ydl-platform/build.gradle
+2
-1
HttpConfig.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/HttpConfig.kt
+37
-4
ActionCountUtils.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/ActionCountUtils.kt
+51
-7
AliYunLogConfig.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/AliYunLogConfig.kt
+32
-0
AliYunRichLogsHelper.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/AliYunRichLogsHelper.kt
+80
-0
NewH5Activity.java
ydl-webview/src/main/java/com/ydl/webview/NewH5Activity.java
+96
-80
No files found.
app/src/main/java/com/ydl/component/MainActivity.kt
View file @
6107ffa1
...
...
@@ -19,24 +19,24 @@ import com.umeng.analytics.MobclickAgent
import
com.ydl.component.music.FragmentContainerActivity
import
com.ydl.component.mvp.DemoContract
import
com.ydl.component.mvp.DemoPresenter
import
com.ydl.component.route.PlatformTempCommonRouteImpl
import
com.ydl.confide.home.ConfideHomeActivity
import
com.ydl.media.audio.PlayService
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import
com.ydl.ydlcommon.router.YdlCommonRouterManager
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.fm.api.service.IFMService
import
com.yidianling.tests.home.NewTestHomeActivity
import
com.yidianling.user.StatusUtils
import
com.yidianling.user.ui.collect.CollectSexAndBirthActivity
import
com.yidianling.user.ui.login.OneKeyLoginHelp
import
com.yidianling.user.widget.SecretDescriptionDialog
import
com.yidianling.user.widget.SecretDialog
import
com.yidianling.user.widget.SecretDialog.OnSecretDialogListener
import
kotlinx.android.synthetic.main.activity_main.*
import
com.ydl.component.route.PlatformTempCommonRouteImpl
import
com.ydl.confide.home.ConfideHomeActivity
import
com.ydl.ydlcommon.router.YdlCommonRouterManager
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.user.StatusUtils
import
com.yidianling.user.ui.login.OneKeyLoginHelp
/**
...
...
config.gradle
View file @
6107ffa1
...
...
@@ -5,12 +5,12 @@ ext {
ydlPublishVersion
=
[
// -------------- 业务模块 --------------
//第三步 若干
"m-confide"
:
"0.0.49.0
2
"
,
"m-confide"
:
"0.0.49.0
6
"
,
"m-consultant"
:
"0.0.59.69"
,
"m-fm"
:
"0.0.30.01"
,
"m-user"
:
"0.0.61.29"
,
"m-home"
:
"0.0.22.59"
,
"m-im"
:
"0.0.18.4
1
"
,
"m-im"
:
"0.0.18.4
8
"
,
"m-dynamic"
:
"0.0.7.19"
,
"m-article"
:
"0.0.0.6"
,
...
...
@@ -33,18 +33,18 @@ ext {
//-------------- 功能组件 --------------
//第一步
"ydl-platform"
:
"0.0.
39.98
"
,
"ydl-platform"
:
"0.0.
40.00
"
,
//第二步 若干
"ydl-webview"
:
"0.0.38.
36
"
,
"ydl-webview"
:
"0.0.38.
41
"
,
"ydl-media"
:
"0.0.21.6"
,
"ydl-pay"
:
"0.0.18.1
3
"
,
"ydl-pay"
:
"0.0.18.1
8
"
,
"m-audioim"
:
"0.0.49.29.36"
,
"ydl-flutter-base"
:
"0.0.14.23"
,
//以下 几乎不会动
"router"
:
"0.0.1"
,
"ydl-net"
:
"0.0.3.
7
"
,
"ydl-net"
:
"0.0.3.
9
"
,
"ydl-utils"
:
"0.0.3.1"
,
]
ydl_app
=
[
...
...
@@ -88,12 +88,12 @@ ext {
// -------------- 业务模块 --------------
//第三步 若干
"m-confide"
:
"0.0.49.0
2
"
,
"m-confide"
:
"0.0.49.0
6
"
,
"m-consultant"
:
"0.0.59.69"
,
"m-fm"
:
"0.0.30.01"
,
"m-user"
:
"0.0.61.29"
,
"m-home"
:
"0.0.22.59"
,
"m-im"
:
"0.0.18.4
0
"
,
"m-im"
:
"0.0.18.4
8
"
,
"m-dynamic"
:
"0.0.7.19"
,
"m-article"
:
"0.0.0.6"
,
...
...
@@ -115,18 +115,18 @@ ext {
//-------------- 功能组件 --------------
//第一步
"ydl-platform"
:
"0.0.
39.98
"
,
"ydl-platform"
:
"0.0.
40.00
"
,
//第二步 若干
"ydl-webview"
:
"0.0.38.
36
"
,
"ydl-webview"
:
"0.0.38.
41
"
,
"ydl-media"
:
"0.0.21.6"
,
"ydl-pay"
:
"0.0.18.1
1
"
,
"ydl-pay"
:
"0.0.18.1
8
"
,
"m-audioim"
:
"0.0.49.29.36"
,
"ydl-flutter-base"
:
"0.0.14.23"
,
//以下 几乎不会动
"router"
:
"0.0.1"
,
"ydl-net"
:
"0.0.3.
7
"
,
"ydl-net"
:
"0.0.3.
9
"
,
"ydl-utils"
:
"0.0.3.1"
,
]
...
...
@@ -199,6 +199,7 @@ ext {
"androideventbus"
:
"org.simple:androideventbus:1.0.5.1"
,
"otto"
:
"com.squareup:otto:1.3.8"
,
"gson"
:
"com.google.code.gson:gson:2.8.5"
,
"aliyun"
:
"com.aliyun.openservices:aliyun-log-android-sdk:2.5.13"
,
"javax.annotation"
:
"javax.annotation:jsr250-api:1.0"
,
"arouter"
:
"com.alibaba:arouter-api:1.4.1"
,
"progressmanager"
:
"me.jessyan:progressmanager:1.5.0"
,
...
...
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
View file @
6107ffa1
...
...
@@ -50,6 +50,8 @@ import com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.utils.Utils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.common.tools.ToastUtil
...
...
@@ -212,6 +214,8 @@ class AudioHomeActivity :
uploadException
(
"mRtcEventHandler-onWarning:warnCode--%${warn}"
,
callback
=
null
)
LogUtil
.
e
(
"[agora]发生警告回调$warn"
)
writeAgoraLog
(
"声网警告回调($warn)"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网警告回调($warn)"
)
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
//105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的
...
...
@@ -240,6 +244,8 @@ class AudioHomeActivity :
super
.
onError
(
err
)
uploadException
(
"mRtcEventHandler-onError:errorCode--%${err}"
,
callback
=
null
)
writeAgoraLog
(
"声网错误回调errorCode--%${err}"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网错误回调errorCode--%${err}"
)
//3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
//10:API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误
...
...
@@ -283,11 +289,16 @@ class AudioHomeActivity :
override
fun
onApiCallExecuted
(
error
:
Int
,
api
:
String
?,
result
:
String
?)
{
super
.
onApiCallExecuted
(
error
,
api
,
result
)
// LogUtil.e("[agora]$api 已执行回调 $result")
//注销原因,产生大量无效数据,会被频繁调用
// AliYunRichLogsHelper.getInstance()
// .sendLog(AliYunLogConfig.AGORA, "$api 已执行回调 $result")
}
override
fun
onJoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 用户声网加入频道成功:channel=$channel"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"$uid 用户声网加入频道成功:channel=$channel"
)
//更新ui
// onJoinChannelSuccess()
...
...
@@ -303,6 +314,8 @@ class AudioHomeActivity :
override
fun
onRejoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onRejoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 用户声网重新加入频道成功:channel=$channel"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"$uid 用户声网重新加入频道成功:channel=$channel"
)
runOnUiThread
{
//自己加入频道成功
if
(!
isConnectSuccess
)
{
...
...
@@ -316,6 +329,8 @@ class AudioHomeActivity :
override
fun
onRtcStats
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
super
.
onRtcStats
(
stats
)
writeAgoraLog
(
"声网onRtcStats:users:${stats?.users}"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网onRtcStats:users:${stats?.users}"
)
// 不需要移动端做离开房间逻辑,服务端会判断进行踢人逻辑
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
// if (isConnectSuccess && null != stats?.users && stats.users == 1) {
...
...
@@ -332,6 +347,8 @@ class AudioHomeActivity :
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if
(
reason
==
3
)
{
writeAgoraLog
(
"通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})"
)
// com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断")
//通话结束或挂断时,上传日志文件
uploadLog
()
...
...
@@ -343,6 +360,8 @@ class AudioHomeActivity :
override
fun
onLeaveChannel
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
super
.
onLeaveChannel
(
stats
)
LogUtil
.
e
(
"[agora]离开频道回调"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"离开频道回调"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
}
...
...
@@ -351,12 +370,16 @@ class AudioHomeActivity :
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserJoined
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户/主播加入频道回调"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"远端用户/主播加入频道回调"
)
}
override
fun
onUserOffline
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserOffline
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户$uid 离开频道回调"
)
writeAgoraLog
(
"接通后通话结束:对方已挂断"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"接通后通话结束:对方已挂断"
)
//通话结束或挂断时,上传日志文件
uploadLog
()
showToast
(
"专家已挂断"
)
...
...
@@ -430,6 +453,8 @@ class AudioHomeActivity :
//页面传递数据初始化
initIntentData
()
writeAgoraLog
(
"通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
RTM
,
"通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}"
)
if
(
YDLavManager
.
sdkStatus
!=
Constants
.
CONNECTION_STATE_CONNECTED
)
{
//再次登录声网,确保声网登录状态
reLoginRTM
()
...
...
@@ -486,6 +511,8 @@ class AudioHomeActivity :
commentUrl
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_COMMENT_URL
)
dialStatus
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_DIALSTATUS
)
writeAgoraLog
(
"专家的通话状态dialStatus:$dialStatus"
,
false
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"专家的通话状态dialStatus:$dialStatus"
)
isShowAXB
=
intent
.
getBooleanExtra
(
IntentConstants
.
INTENT_ISSHOWAXB
,
true
)
val
logBean
=
AgoraLogInfoBean
(
...
...
@@ -500,7 +527,8 @@ class AudioHomeActivity :
)
val
content
=
Gson
().
toJson
(
logBean
)
writeAgoraLog
(
"主叫方发送的邀请通话消息内容:$content"
,
true
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"主叫方发送的邀请通话消息内容:$content"
)
localRemainTime
=
remainTime
?.
toInt
()
handler
=
Handler
()
vibrator
=
getSystemService
(
Service
.
VIBRATOR_SERVICE
)
as
Vibrator
?
...
...
@@ -508,6 +536,8 @@ class AudioHomeActivity :
private
fun
reLoginRTM
()
{
writeAgoraLog
(
"RMT状态:${YDLavManager.sdkStatus},重新登录RMT"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
RTM
,
"RMT状态:${YDLavManager.sdkStatus},重新登录RMTt"
)
val
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
YDLavManager
.
instances
.
login
(
uid
)
{
_isSuccess
,
_msg
->
// writeAgoraLog("拨打电话界面打开RTM重新登录,uid=${uid}")
...
...
@@ -518,6 +548,8 @@ class AudioHomeActivity :
private
fun
initView
()
{
writeAgoraLog
(
"用户拨打电话界面开启"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"用户拨打电话界面开启"
)
tv_change_route
.
isEnabled
=
false
//水波纹view初始化
wave_view
.
setDuration
(
6000
)
...
...
@@ -563,6 +595,8 @@ class AudioHomeActivity :
}
if
(
isConnectSuccess
)
{
writeAgoraLog
(
"已接通:主叫主动挂断"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"已接通:主叫主动挂断"
)
updateExpertStatus
(
false
,
1
)
leaveChannel
()
uploadLog
()
...
...
@@ -611,6 +645,8 @@ class AudioHomeActivity :
when
{
permission
.
granted
->
{
writeAgoraLog
(
"请求音频权限通过"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"请求音频权限通过"
)
init
()
}
permission
.
shouldShowRequestPermissionRationale
->
{
...
...
@@ -620,6 +656,8 @@ class AudioHomeActivity :
// 拒绝权限操作发送给服务端
uploadException
(
"AudioNotAuth"
,
"zhu"
,
YDLavManager
.
AUDIO_NO_AUTH_ERROR_CODE
,
null
)
writeAgoraLog
(
"拒绝请求音频权限"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"拒绝请求音频权限"
)
uploadLog
()
ToastHelper
.
show
(
getString
(
R
.
string
.
audioim_need_storage_permission_hint
))
...
...
@@ -682,6 +720,8 @@ class AudioHomeActivity :
//关闭音乐
stopPlaying
()
writeAgoraLog
(
"未接通挂断:50s等待倒计时结束挂断"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"未接通挂断:50s等待倒计时结束挂断"
)
//提示切换传统线路
//发送消息通知专家用户已挂断
YDLavManager
.
instances
.
cancelCall
(
...
...
@@ -690,6 +730,8 @@ class AudioHomeActivity :
sendDoctocrMsg
!!
)
{
msg
,
code
->
writeAgoraLog
(
"未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断"
)
}
//通话结束或挂断时,上传日志文件
uploadLog
()
...
...
@@ -725,6 +767,8 @@ class AudioHomeActivity :
*/
fun
joinChannel
()
{
writeAgoraLog
(
"对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId"
)
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
token
!!
,
channelId
!!
,
...
...
@@ -740,6 +784,8 @@ class AudioHomeActivity :
*/
private
fun
userCloseCalling
()
{
writeAgoraLog
(
"未接听时:主叫(用户)主动挂断,取消呼叫"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"未接听时:主叫(用户)主动挂断,取消呼叫"
)
LogUtil
.
e
(
"未接听挂断"
)
//发送消息通知专家用户已挂断
YDLavManager
.
instances
.
cancelCall
(
...
...
@@ -748,6 +794,8 @@ class AudioHomeActivity :
sendDoctocrMsg
!!
)
{
msg
,
code
->
writeAgoraLog
(
"未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断"
)
}
//通话结束或挂断时,上传日志文件
uploadLog
()
...
...
@@ -793,6 +841,8 @@ class AudioHomeActivity :
val
dialog
=
AxbConfirmDialog
(
mContext
,
type
,
object
:
AxbConfirmDialog
.
OnClickEnsureListener
{
override
fun
onClickEnsure
()
{
writeAgoraLog
(
"主叫点击切换AXB按钮"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"主叫点击切换AXB按钮"
)
switchAXB
()
}
...
...
@@ -815,6 +865,8 @@ class AudioHomeActivity :
uploadException
(
""
,
"zhu"
,
"108"
,
object
:
YDLavManager
.
UploadExceptionCallback
{
override
fun
onSuccess
()
{
writeAgoraLog
(
"离开房间成功,主叫切换AXB之后"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"离开房间成功,主叫切换AXB之后"
)
mPresenter
.
getAXBPhone
(
ConnectCommand
(
listenId
!!
,
"1"
))
}
...
...
@@ -848,6 +900,8 @@ class AudioHomeActivity :
sendDoctocrMsg
!!
)
{
msg
,
code
->
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断"
)
}
leaveChannel
()
}
...
...
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
View file @
6107ffa1
...
...
@@ -22,13 +22,12 @@ import com.ydl.ydl_av.messge_service.callback.LoginCallback
import
com.ydl.ydl_av.messge_service.request.LoginParam
import
com.ydl.ydl_av.messge_service.response.CallLocalResponse
import
com.ydl.ydl_av.messge_service.response.CallRemoteResponse
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.ActivityManager
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.yidianling.common.tools.RxSPTool
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack
import
com.yidianling.im.api.bean.IMSendCustomNotificationResultCallBack
...
...
@@ -93,6 +92,10 @@ class YDLavManager {
override
fun
onCallRecivedByPeer
(
response
:
CallLocalResponse
?)
{
//返回给主叫:被叫已收到呼叫邀请
LogUtil
.
e
(
"[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
...
...
@@ -106,7 +109,10 @@ class YDLavManager {
override
fun
onCallAccepted
(
response
:
CallLocalResponse
?,
msg
:
String
?)
{
//返回给主叫
LogUtil
.
e
(
"[agora]${response?.calleeId}已接收呼叫邀请"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"${response?.calleeId}已接收呼叫邀请"
)
//加入声网频道时机修改:主叫收到被叫接受邀请的回调后再加入声网频道
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
...
...
@@ -119,7 +125,10 @@ class YDLavManager {
override
fun
onCallRefused
(
response
:
CallLocalResponse
?,
msg
:
String
?)
{
//返回给主叫
LogUtil
.
e
(
"[agora]${response?.calleeId}已拒绝呼叫邀请"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"${response?.calleeId}已拒绝呼叫邀请"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
...
...
@@ -137,6 +146,10 @@ class YDLavManager {
override
fun
onCallCanceled
(
response
:
CallLocalResponse
?)
{
//返回给主叫
LogUtil
.
e
(
"[agora]主叫已取消呼叫邀请"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"主叫已取消呼叫邀请"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
...
...
@@ -149,6 +162,10 @@ class YDLavManager {
override
fun
onCallFailure
(
response
:
CallLocalResponse
?,
errorCode
:
Int
)
{
//返回给主叫
LogUtil
.
e
(
"[agora]呼叫${response?.calleeId}用户失败:${response?.response}"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"呼叫${response?.calleeId}用户失败:${response?.response}"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
when
(
errorCode
)
{
...
...
@@ -160,26 +177,13 @@ class YDLavManager {
}
}
}
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_INVITATION_EXPIRE
->
{
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
/*
* 和IOS保持一致,当呼叫邀请为3的时候不处理
* */
/* if (act is AudioHomeActivity) {
act.runOnUiThread {
sendCustomNotification(response?.calleeId!!, response?.ChannelId!!, "5")
callEndStatusUpdate(response.ChannelId!!, 2, "被叫超时未接听")
act.uploadExceptionStatus("对方未接听", 3)
// //通话结束或挂断时,上传日志文件
// act.uploadLog()
// act.leaveChannel()
}
}*/
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_INVITATION_EXPIRE
->
{
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
}
}
//呼叫失败日志输出
if
(
act
is
AudioHomeActivity
){
act
.
runOnUiThread
{
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
writeAgoraLog
(
"发送通话邀请失败:${errorCode}"
)
LogHelper
.
getInstance
().
uploadLog
(
false
)
}
...
...
@@ -189,17 +193,29 @@ class YDLavManager {
override
fun
onRemoteInvitationReceived
(
response
:
CallRemoteResponse
?)
{
//返回给被叫
LogUtil
.
e
(
"[agora]收到来自${response?.callerId}的呼叫邀请"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"收到来自${response?.callerId}的呼叫邀请"
)
receivedCall
(
response
?.
content
,
"来自RTM"
)
}
override
fun
onRemoteInvitationAccepted
(
response
:
CallRemoteResponse
?)
{
//返回给被叫
LogUtil
.
e
(
"[agora]接受来自${response?.callerId}的呼叫成功"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"接受来自${response?.callerId}的呼叫成功"
)
}
override
fun
onRemoteInvitationRefused
(
response
:
CallRemoteResponse
?)
{
//返回给被叫
LogUtil
.
e
(
"[agora]已拒绝来自${response?.callerId}的呼叫"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"已拒绝来自${response?.callerId}的呼叫"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
ConsultantAudioHomeActivity
)
{
act
.
uploadExceptionStatus
(
"已拒绝"
,
2
)
...
...
@@ -210,7 +226,14 @@ class YDLavManager {
callEndStatusUpdate
(
response
?.
ChannelId
!!
,
1
,
"主叫取消呼叫"
)
//返回给被叫
LogUtil
.
e
(
"[agora]主叫${response?.callerId}已取消呼叫邀请"
)
writeAgoraLog
(
"呼叫邀请被取消:主叫(专家)主动取消-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"主叫${response?.callerId}已取消呼叫邀请"
)
writeAgoraLog
(
"呼叫邀请被取消:主叫(专家)主动取消-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
ConsultantAudioHomeActivity
)
{
...
...
@@ -224,13 +247,26 @@ class YDLavManager {
//返回给被叫
LogUtil
.
e
(
"[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}"
)
if
(
errorCode
==
RtmStatusCode
.
RemoteInvitationError
.
REMOTE_INVITATION_ERR_INVITATION_EXPIRE
)
{
//呼叫邀请过期
writeAgoraLog
(
"呼叫邀请被取消:用户未接听-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"呼叫邀请被取消:用户未接听"
)
writeAgoraLog
(
"呼叫邀请被取消:用户未接听-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
ConsultantAudioHomeActivity
)
{
act
.
uploadExceptionStatus
(
"未接听"
,
3
)
}
}
else
{
writeAgoraLog
(
"呼叫邀请被取消:错误原因(${errorCode})-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
)
writeAgoraLog
(
"呼叫邀请被取消:错误原因(${errorCode})"
,
FILE_NAME
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"呼叫邀请被取消:错误原因(${errorCode})"
)
}
callEndStatusUpdate
(
response
?.
ChannelId
!!
,
2
,
"超时未接听导致的取消呼叫"
)
//关闭页面
...
...
@@ -239,11 +275,29 @@ class YDLavManager {
override
fun
onOtherMsg
(
error
:
String
?)
{
LogUtil
.
e
(
"[agora]其它消息:${error}"
)
if
(
error
.
equals
(
"呼叫发送成功"
)){
writeAgoraLog
(
"声网发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
}
else
{
writeAgoraLog
(
"声网发送通话邀请失败${error}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
if
(
error
.
equals
(
"呼叫发送成功"
))
{
writeAgoraLog
(
"声网发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网发送通话邀请成功"
)
}
else
{
writeAgoraLog
(
"声网发送通话邀请失败${error}-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", "
confide
.
log
", true
)
LogHelper
.
getInstance
().
uploadLog
(
false
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网发送通话邀请失败${error}"
)
}
}
})
...
...
@@ -255,6 +309,8 @@ class YDLavManager {
toUid
:
String
,
content
:
String
)
{
// LogUtil.e("[agora]收到云信的通知消息:$content")
// val agoraInvitationBean = Gson().fromJson(content, AgoraInvitationBean::class.java)
...
...
@@ -354,15 +410,31 @@ class YDLavManager {
override
fun
onException
(
throwable
:
Throwable
)
{
// writeAgoraLog("云信发送通话邀请异常${throwable.message}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true)
// LogHelper.getInstance().uploadLog(false)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"云信发送通话邀请异常${throwable.message}"
)
}
override
fun
onFailed
(
code
:
Int
)
{
// writeAgoraLog("云信发送通话邀请失败${code}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true)
// LogHelper.getInstance().uploadLog(false)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"云信发送通话邀请失败${code}"
)
}
override
fun
onSuccess
()
{
writeAgoraLog
(
"云信发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
writeAgoraLog
(
"云信发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"云信发送通话邀请成功"
)
}
})
},
300
)
...
...
@@ -379,6 +451,7 @@ class YDLavManager {
if
(
TextUtils
.
isEmpty
(
userId
)
||
userId
?:
"0"
<=
"0"
)
{
//如果uid为空或小于等于0 ,则不进行登录,因为uid为0也会登录成功,会导致后面uid正确时无法登录
LogUtil
.
e
(
"[agora]login-uid:$userId"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"uid为空或小于等于0 ,则不进行登录 login-uid:$userId"
)
return
}
isOnlineRtm
=
true
...
...
@@ -394,22 +467,50 @@ class YDLavManager {
override
fun
onSuccess
()
{
//登陆成功,发起呼叫
LogUtil
.
e
(
"[agora]实时消息登录成功"
)
writeAgoraLog
(
"声网rtm登录成功,uid:$userId-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网rtm登录成功,uid:$userId"
)
writeAgoraLog
(
"声网rtm登录成功,uid:$userId-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", "
confide
.
log
", true
)
event
(
true
,
""
)
}
override
fun
onFailure
(
msg
:
String
?)
{
LogUtil
.
e
(
"[agora]实时消息登录失败:$msg"
)
writeAgoraLog
(
"声网rtm登录失败:$msg-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
writeAgoraLog
(
"声网rtm登录失败:$msg-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", "
confide
.
log
", true
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网rtm登录失败:$msg"
)
event
(
false
,
msg
)
}
})
}
else
{
LogUtil
.
e
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
LogHelper
.
getInstance
().
writeLogSync
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
LogHelper
.
getInstance
()
.
writeLogSync
(
"声网token获取失败uid:"
+
userId
+
" error:"
+
it
.
msg
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网token获取失败uid"
+
userId
+
" error:"
+
it
.
msg
)
}
},
{
LogUtil
.
e
(
"声网token获取异常uid:"
+
userId
+
" error:"
+
it
.
message
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网token获取异常uid:"
+
userId
+
" error:"
+
it
.
message
)
})
}
...
...
@@ -428,7 +529,16 @@ class YDLavManager {
Observable
.
timer
(
1000
,
TimeUnit
.
MILLISECONDS
).
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
()).
subscribe
{
LogUtil
.
e
(
"[agora]启动通话界面"
)
writeAgoraLog
(
"收到主叫方通话邀请($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
,
false
)
writeAgoraLog
(
"收到主叫方通话邀请($from)-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", FILE_NAME, false
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"收到主叫方通话邀请($from)"
)
LogHelper
.
getInstance
().
uploadLog
(
false
)
//邀请加入频道消息,跳转通话界面
ARouter
.
getInstance
().
build
(
"/av/ConsultantAudioHomeActivity"
)
...
...
@@ -436,12 +546,29 @@ class YDLavManager {
}
}
else
{
LogUtil
.
d
(
"[agora]收到声网邀请,但界面实例已存在"
)
writeAgoraLog
(
"收到主叫方通话邀请,但界面实例已存在($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
,
false
)
writeAgoraLog
(
"收到主叫方通话邀请,但界面实例已存在($from)-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", FILE_NAME, false
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"收到主叫方通话邀请,但界面实例已存在($from)"
)
LogHelper
.
getInstance
().
uploadLog
(
false
)
}
}
else
{
LogUtil
.
d
(
"[agora]收到声网邀请,但response==null"
)
writeAgoraLog
(
"收到主叫方通话邀请,但response==null($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
FILE_NAME
,
false
)
writeAgoraLog
(
"收到主叫方通话邀请,但response==null($from)-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", FILE_NAME, false
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"收到主叫方通话邀请,但response==null($from)"
)
LogHelper
.
getInstance
().
uploadLog
(
false
)
}
}
...
...
@@ -472,19 +599,25 @@ class YDLavManager {
* 退出登录
* @param
*/
private
fun
logout
(
isReLogin
:
Boolean
)
{
private
fun
logout
(
isReLogin
:
Boolean
)
{
EventBus
.
getDefault
().
unregister
(
this
)
YDLRTMClient
.
instances
.
logout
(
object
:
LoginCallback
{
override
fun
onSuccess
()
{
//退出登陆成功
LogUtil
.
d
(
"[agora]实时消息退出成功"
)
if
(
isReLogin
){
login
(
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"实时消息退出成功"
)
if
(
isReLogin
)
{
login
(
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
)
}
}
override
fun
onFailure
(
msg
:
String
?)
{
LogUtil
.
d
(
"[agora]实时消息退出失败:$msg"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"实时消息退出失败:$msg"
)
}
})
}
...
...
@@ -492,7 +625,7 @@ class YDLavManager {
/**
* 退出登录默认不重新登录
*/
fun
logout
(){
fun
logout
()
{
logout
(
false
)
}
...
...
@@ -510,6 +643,8 @@ class YDLavManager {
callback
?.
onSuccess
()
},
{
LogUtil
.
e
(
"agora"
,
"声网上传异常与错误日志接口调用失败:"
+
it
.
message
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网上传异常与错误日志接口调用失败: + ${it.message}"
)
})
}
...
...
@@ -529,6 +664,9 @@ class YDLavManager {
.
subscribe
({
},
{
LogUtil
.
d
(
"callEndStatusUpdate error: ${it.message}"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"callEndStatusUpdate error: ${it.message}"
)
})
}
...
...
@@ -538,6 +676,8 @@ class YDLavManager {
private
val
listener
=
object
:
InitListener
{
override
fun
onTokenExpired
()
{
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"onTokenExpired"
)
LogUtil
.
e
(
"[agora]onTokenExpired"
)
instances
.
login
(
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
...
...
@@ -546,22 +686,32 @@ class YDLavManager {
override
fun
onMessageReceived
(
message
:
RTMMesssage
,
userId
:
Int
)
{
LogUtil
.
i
(
"[agora]onMessageReceived:${message.text} -->uid:$userId"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"onMessageReceived:${message.text} -->uid:$userId"
)
}
override
fun
onConnectionStateChanged
(
state
:
Int
,
reason
:
Int
)
{
sdkStatus
=
state
writeAgoraLog
(
"声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
writeAgoraLog
(
"声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}"
,
"confide.log"
,
true
)
LogUtil
.
i
(
"[agora]onConnectionStateChanged:state:${state} -->reason:$reason"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网rtm登录状态:${state}"
)
/*
* 当reason=CONNECTION_CHANGE_REASON_REMOTE_LOGIN的时候,是远端用户以相同UID登录RTM
* 如果正在通话中,则不进行退出操作
* */
if
(
reason
==
CONNECTION_CHANGE_REASON_REMOTE_LOGIN
){
if
(!
activityIsExists
(
ConsultantAudioHomeActivity
::
class
.
java
)&&!
activityIsExists
(
AudioHomeActivity
::
class
.
java
)){
if
(
reason
==
CONNECTION_CHANGE_REASON_REMOTE_LOGIN
)
{
if
(!
activityIsExists
(
ConsultantAudioHomeActivity
::
class
.
java
)
&&
!
activityIsExists
(
AudioHomeActivity
::
class
.
java
)
)
{
isOnlineRtm
=
false
logout
()
}
else
{
}
else
{
logout
(
true
)
}
}
...
...
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
View file @
6107ffa1
...
...
@@ -47,6 +47,8 @@ import com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.utils.Utils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.user.api.service.IUserService
...
...
@@ -137,7 +139,7 @@ class ConsultantAudioHomeActivity :
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 加入频道回调"
)
writeAgoraLog
(
"被叫(用户)加入声网($channel)频道成功"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"被叫(用户)加入声网($channel)频道成功"
)
runOnUiThread
{
// 加入频道后再通知用户已接受
// YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId)
...
...
@@ -165,6 +167,9 @@ class ConsultantAudioHomeActivity :
super
.
onRejoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 重新加入频道回调"
)
writeAgoraLog
(
"被叫(用户)重新加入声网频道($channel)成功"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"被叫(用户)重新加入声网频道($channel)成功"
)
runOnUiThread
{
if
(!
isConnectSuccess
)
{
tv_toast
.
visibility
=
View
.
VISIBLE
...
...
@@ -182,6 +187,8 @@ class ConsultantAudioHomeActivity :
super
.
onUserJoined
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户加入频道回调"
)
writeAgoraLog
(
"主叫(专家)加入声网频道成功"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"主叫(专家)加入声网频道成功"
)
//另一方加入频道成功
runOnUiThread
{
isConnectSuccess
=
true
...
...
@@ -223,6 +230,8 @@ class ConsultantAudioHomeActivity :
override
fun
onLeaveChannel
(
stats
:
IRtcEngineEventHandler
.
RtcStats
?)
{
super
.
onLeaveChannel
(
stats
)
LogUtil
.
e
(
"[agora]自己离开频道回调"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"自己离开频道回调"
)
//通知php 通话已结束
close
(
RESULT_ANSWERED_CODE
,
""
)
}
...
...
@@ -249,6 +258,8 @@ class ConsultantAudioHomeActivity :
)
showToast
(
"对方已挂断"
)
writeAgoraLog
(
"通话接通后挂断:主叫(专家)离开频道"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"通话接通后挂断:主叫(专家)离开频道"
)
if
(
null
!=
totalDisposable
)
{
totalDisposable
!!
.
dispose
()
}
...
...
@@ -265,6 +276,8 @@ class ConsultantAudioHomeActivity :
}
LogUtil
.
e
(
"[agora]发生警告回调=$warn"
)
writeAgoraLog
(
"声网警告回调码:($warn)"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网警告回调码:($warn)"
)
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
//105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的
...
...
@@ -290,6 +303,7 @@ class ConsultantAudioHomeActivity :
uploadException
(
"mRtcEventHandler-onError:errorCode--%${err}"
)
LogUtil
.
e
(
"[agora] 发生错误回调 =$err"
)
writeAgoraLog
(
"声网错误回调errorCode--%${err}"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"声网错误回调errorCode--%${err}"
)
//3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
...
...
@@ -510,6 +524,8 @@ class ConsultantAudioHomeActivity :
override
fun
channelTokenResponse
(
token
:
String
?,
needJoinChannel
:
Boolean
)
{
if
(
TextUtils
.
isEmpty
(
token
))
{
LogUtil
.
e
(
"[agora]token not null"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"token isEmpty "
)
showToast
(
"通话频道不存在"
)
finish
()
return
...
...
@@ -583,6 +599,8 @@ class ConsultantAudioHomeActivity :
val
account
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
()
if
(!
TextUtils
.
isEmpty
(
mAudioMessageBean
?.
channelId
))
{
LogUtil
.
e
(
"[agora] joinChannel:$account"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"joinChannel:$account"
)
voiceManage
?.
getVoiceApi
()
?.
joinChannel
(
channelToken
?:
""
,
mAudioMessageBean
!!
.
channelId
!!
,
"Extra Optional Data"
,
account
...
...
@@ -807,6 +825,9 @@ class ConsultantAudioHomeActivity :
fun
close
(
code
:
Int
,
msg
:
String
)
{
runOnUiThread
{
LogUtil
.
e
(
"[agora]close(code:$code,msg:$msg)"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"close(code:$code,msg:$msg)"
)
//上传日志文件
uploadLog
()
stopMusic
()
...
...
@@ -837,6 +858,7 @@ class ConsultantAudioHomeActivity :
}
ActivityManager
.
getInstance
().
removeStack
(
activity
=
this
)
LogUtil
.
e
(
"[agora]页面移除"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"页面移除"
)
finish
()
}
}
...
...
@@ -945,9 +967,11 @@ class ConsultantAudioHomeActivity :
Observable
.
create
<
Any
>
{
try
{
AudioLogUtils
.
writeAgoraLog
(
"$content-------Time:${AudioLogUtils.format.format(
Calendar
.
getInstance
().
time
)}
", "
consult
.
log
"
"$content-------Time:${
AudioLogUtils
.
format
.
format
(
Calendar
.
getInstance
().
time
)
}
", "
consult
.
log
"
)
}
catch
(
e
:
Exception
)
{
}
...
...
m-im/src/main/java/com/yidianling/avchatkit/AVChatKit.java
View file @
6107ffa1
...
...
@@ -10,6 +10,8 @@ import com.netease.nimlib.sdk.avchat.AVChatManager;
import
com.netease.nimlib.sdk.avchat.constant.AVChatControlCommand
;
import
com.netease.nimlib.sdk.avchat.model.AVChatData
;
import
com.ydl.ydlcommon.base.BaseActivityMgr
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.avchatkit.activity.AVChatActivity
;
import
com.yidianling.avchatkit.common.log.ILogUtil
;
import
com.yidianling.avchatkit.common.log.LogUtil
;
...
...
@@ -149,6 +151,8 @@ public class AVChatKit {
*/
public
static
void
outgoingCall
(
Context
context
,
String
account
,
String
displayName
,
int
callType
,
int
source
)
{
AVChatActivity
.
outgoingCall
(
context
,
account
,
displayName
,
callType
,
source
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"outgoingCall 发起音视频通话呼叫"
);
}
/**
...
...
@@ -162,7 +166,7 @@ public class AVChatKit {
*/
public
static
void
outgoingTeamCall
(
Context
context
,
boolean
receivedCall
,
String
teamId
,
String
roomId
,
ArrayList
<
String
>
accounts
,
String
teamName
)
{
TeamAVChatActivity
.
startActivity
(
context
,
receivedCall
,
teamId
,
roomId
,
accounts
,
teamName
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"outgoingTeamCall 发起群组音视频通话呼叫"
);
}
/**
...
...
m-im/src/main/java/com/yidianling/avchatkit/activity/AVChatActivity.java
View file @
6107ffa1
...
...
@@ -26,6 +26,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatData;
import
com.netease.nimlib.sdk.avchat.model.AVChatOnlineAckEvent
;
import
com.netease.nimlib.sdk.avchat.model.AVChatVideoFrame
;
import
com.tbruyelle.rxpermissions2.RxPermissions
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.avchatkit.AVChatKit
;
import
com.yidianling.avchatkit.AVChatProfile
;
import
com.yidianling.avchatkit.common.activity.AVChatBaseUI
;
...
...
@@ -325,6 +327,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
ToastUtil
.
toastShort
(
AVChatActivity
.
this
,
msg
);
}
else
{
ToastUtil
.
toastShort
(
AVChatActivity
.
this
,
"录制已结束."
);
}
if
(
state
==
AVChatType
.
AUDIO
.
getValue
())
{
avChatAudioUI
.
resetRecordTip
();
...
...
@@ -345,12 +348,17 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override
public
void
onJoinedChannel
(
int
code
,
String
audioFile
,
String
videoFile
,
int
i
)
{
LogUtil
.
d
(
TAG
,
"audioFile -> "
+
audioFile
+
" videoFile -> "
+
videoFile
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"audioFile -> "
+
audioFile
+
" videoFile -> "
+
videoFile
);
handleWithConnectServerResult
(
code
);
}
@Override
public
void
onUserJoined
(
String
account
)
{
LogUtil
.
d
(
TAG
,
"onUserJoin -> "
+
account
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onUserJoin -> "
+
account
);
if
(
state
==
AVChatType
.
VIDEO
.
getValue
())
{
avChatVideoUI
.
initLargeSurfaceView
(
account
);
}
...
...
@@ -359,6 +367,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override
public
void
onUserLeave
(
String
account
,
int
event
)
{
LogUtil
.
d
(
TAG
,
"onUserLeave -> "
+
account
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onUserLeave -> "
+
account
);
manualHangUp
(
AVChatExitCode
.
HANGUP
);
finish
();
}
...
...
@@ -366,11 +377,14 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override
public
void
onCallEstablished
()
{
LogUtil
.
d
(
TAG
,
"onCallEstablished"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onCallEstablished"
);
//移除超时监听
AVChatTimeoutObserver
.
getInstance
().
observeTimeoutNotification
(
timeoutObserver
,
false
,
mIsInComingCall
);
if
(
avChatController
.
getTimeBase
()
==
0
)
if
(
avChatController
.
getTimeBase
()
==
0
)
{
avChatController
.
setTimeBase
(
SystemClock
.
elapsedRealtime
());
}
if
(
state
==
AVChatType
.
AUDIO
.
getValue
())
{
avChatAudioUI
.
showAudioInitLayout
();
}
else
{
...
...
@@ -400,6 +414,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
public
void
onEvent
(
AVChatCommonEvent
avChatHangUpInfo
)
{
avChatData
=
avChatController
.
getAvChatData
();
if
(
avChatData
!=
null
&&
avChatData
.
getChatId
()
==
avChatHangUpInfo
.
getChatId
())
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"callHangupObserver 通话过程中,收到对方挂断电话"
);
hangUpByOther
(
AVChatExitCode
.
HANGUP
);
cancelCallingNotifier
();
// 如果是incoming call主叫方挂断,那么通知栏有通知
...
...
@@ -418,10 +435,16 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
AVChatData
info
=
avChatController
.
getAvChatData
();
if
(
info
!=
null
&&
info
.
getChatId
()
==
ackInfo
.
getChatId
())
{
if
(
ackInfo
.
getEvent
()
==
AVChatEventType
.
CALLEE_ACK_BUSY
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"callAckObserver 呼叫时,被叫方正在忙"
);
hangUpByOther
(
AVChatExitCode
.
PEER_BUSY
);
}
else
if
(
ackInfo
.
getEvent
()
==
AVChatEventType
.
CALLEE_ACK_REJECT
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"callAckObserver 呼叫时,被叫方拒绝通话"
);
hangUpByOther
(
AVChatExitCode
.
REJECT
);
}
else
if
(
ackInfo
.
getEvent
()
==
AVChatEventType
.
CALLEE_ACK_AGREE
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"callAckObserver 呼叫时,被叫方同意通话"
);
AVChatSoundPlayer
.
instance
().
stop
();
avChatController
.
isCallEstablish
.
set
(
true
);
}
...
...
@@ -436,6 +459,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
// 来电超时,自己未接听
if
(
mIsInComingCall
)
{
activeMissCallNotifier
();
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"timeoutObserver 来电超时,自己未接听"
);
}
finish
();
}
...
...
@@ -456,27 +481,39 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
}
switch
(
notification
.
getControlCommand
())
{
case
AVChatControlCommand
.
SWITCH_AUDIO_TO_VIDEO
:
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleCallControl 音频切换到视频"
);
incomingAudioToVideo
();
break
;
case
AVChatControlCommand
.
SWITCH_AUDIO_TO_VIDEO_AGREE
:
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleCallControl 同意从音频切换到视频"
);
// 对方同意切成视频啦
state
=
AVChatType
.
VIDEO
.
getValue
();
avChatVideoUI
.
onAudioToVideoAgree
(
notification
.
getAccount
());
break
;
case
AVChatControlCommand
.
SWITCH_AUDIO_TO_VIDEO_REJECT
:
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleCallControl 拒绝从音频切换到视频"
);
rejectAudioToVideo
();
ToastUtil
.
toastShort
(
AVChatActivity
.
this
,
R
.
string
.
im_avchat_switch_video_reject
);
break
;
case
AVChatControlCommand
.
SWITCH_VIDEO_TO_AUDIO
:
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleCallControl 视频切换到音频"
);
onVideoToAudio
();
break
;
case
AVChatControlCommand
.
NOTIFY_VIDEO_OFF
:
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleCallControl 通知对方自己关闭了视频"
);
// 收到对方关闭画面通知
if
(
state
==
AVChatType
.
VIDEO
.
getValue
())
{
avChatVideoUI
.
peerVideoOff
();
}
break
;
case
AVChatControlCommand
.
NOTIFY_VIDEO_ON
:
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleCallControl 通知对方自己打开了视频"
);
// 收到对方打开画面通知
if
(
state
==
AVChatType
.
VIDEO
.
getValue
())
{
avChatVideoUI
.
peerVideoOn
();
...
...
@@ -496,14 +533,24 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
protected
void
handleWithConnectServerResult
(
int
auth_result
)
{
LogUtil
.
i
(
TAG
,
"result code->"
+
auth_result
);
if
(
auth_result
==
200
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleWithConnectServerResult onConnectServer success"
);
LogUtil
.
d
(
TAG
,
"onConnectServer success"
);
}
else
if
(
auth_result
==
101
)
{
// 连接超时
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleWithConnectServerResult 连接超时 101"
);
avChatController
.
showQuitToast
(
AVChatExitCode
.
PEER_NO_RESPONSE
);
}
else
if
(
auth_result
==
401
)
{
// 验证失败
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleWithConnectServerResult 验证失败 401"
);
avChatController
.
showQuitToast
(
AVChatExitCode
.
CONFIG_ERROR
);
}
else
if
(
auth_result
==
417
)
{
// 无效的channelId
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleWithConnectServerResult 无效的channelId 417"
);
avChatController
.
showQuitToast
(
AVChatExitCode
.
INVALIDE_CHANNELID
);
}
else
{
// 连接服务器错误,直接退出
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"handleWithConnectServerResult 连接服务器错误"
+
auth_result
);
avChatController
.
showQuitToast
(
AVChatExitCode
.
CONFIG_ERROR
);
}
}
...
...
@@ -545,6 +592,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
if
(
client
!=
null
)
{
String
option
=
ackInfo
.
getEvent
()
==
AVChatEventType
.
CALLEE_ONLINE_CLIENT_ACK_AGREE
?
"接听!"
:
"拒绝!"
;
ToastUtil
.
toastShort
(
AVChatActivity
.
this
,
"通话已在"
+
client
+
"端被"
+
option
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onlineAckObserver 通话已在"
+
client
+
"端被"
+
option
);
}
finish
();
}
...
...
@@ -607,6 +656,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override
public
void
onReceiveAudioToVideoAgree
()
{
// 同意切换为视频
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onReceiveAudioToVideoAgree 同意切换为视频"
);
state
=
AVChatType
.
VIDEO
.
getValue
();
audioRoot
.
setVisibility
(
View
.
GONE
);
videoRoot
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -663,12 +714,16 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
// 主动挂断
private
void
manualHangUp
(
int
exitCode
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"manualHangUp 主动挂断"
);
releaseVideo
();
avChatController
.
hangUp
(
exitCode
);
}
// 被对方挂断
private
void
hangUpByOther
(
int
exitCode
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"hangUpByOther 被对方挂断 exitCode:"
+
exitCode
);
if
(
exitCode
==
AVChatExitCode
.
PEER_BUSY
)
{
avChatController
.
hangUp
(
AVChatExitCode
.
HANGUP
);
finish
();
...
...
m-im/src/main/java/com/yidianling/avchatkit/common/activity/AVChatBaseUI.java
View file @
6107ffa1
...
...
@@ -35,6 +35,7 @@ public abstract class AVChatBaseUI extends AppCompatActivity {
super
.
onStart
();
}
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
...
...
m-im/src/main/java/com/yidianling/avchatkit/common/dialog/CustomAlertDialog.java
View file @
6107ffa1
...
...
@@ -157,6 +157,7 @@ public class CustomAlertDialog extends AlertDialog {
}
}
@Override
public
void
setTitle
(
int
resId
)
{
this
.
title
=
context
.
getString
(
resId
);
isTitleVisible
=
TextUtils
.
isEmpty
(
title
)
?
false
:
true
;
...
...
m-im/src/main/java/com/yidianling/avchatkit/common/util/NetworkUtil.java
View file @
6107ffa1
...
...
@@ -11,6 +11,8 @@ import android.os.Build;
import
android.telephony.TelephonyManager
;
import
android.text.TextUtils
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.avchatkit.common.log.LogUtil
;
public
class
NetworkUtil
{
...
...
@@ -79,8 +81,9 @@ public class NetworkUtil {
NetworkInfo
networkInfo
=
getActiveNetworkInfo
(
context
);
if
(
networkInfo
==
null
)
{
return
-
1
;
}
else
}
else
{
return
networkInfo
.
getType
();
}
}
...
...
@@ -145,7 +148,7 @@ public class NetworkUtil {
}
}
curNetworkType
=
type
;
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
NETSTATUS
,
"网络类型:"
+
type
);
return
type
;
}
...
...
@@ -271,8 +274,11 @@ public class NetworkUtil {
NetworkInfo
ni
=
cm
.
getActiveNetworkInfo
();
if
(
ni
!=
null
)
{
if
(
ni
.
getType
()
==
ConnectivityManager
.
TYPE_WIFI
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
NETSTATUS
,
"网络类型:TYPE_WIFI"
);
return
true
;
}
else
{
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
NETSTATUS
,
"网络类型:非WIFI环境"
);
return
false
;
}
}
else
{
...
...
m-im/src/main/java/com/yidianling/avchatkit/controll/AVChatController.java
View file @
6107ffa1
...
...
@@ -15,6 +15,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatNotifyOption;
import
com.netease.nimlib.sdk.avchat.model.AVChatParameters
;
import
com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer
;
import
com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.avchatkit.AVChatKit
;
import
com.yidianling.avchatkit.common.log.LogUtil
;
import
com.yidianling.avchatkit.common.widgets.MultiSelectDialog
;
...
...
@@ -70,8 +72,11 @@ public class AVChatController {
this
.
avChatConfigs
=
new
AVChatConfigs
(
context
);
}
//恢复视频和语音发送
/**
* 恢复视频和语音发送
*/
public
void
resumeVideo
()
{
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"恢复视频和语音发送"
);
if
(
needRestoreLocalVideo
)
{
AVChatManager
.
getInstance
().
muteLocalVideo
(
false
);
needRestoreLocalVideo
=
false
;
...
...
@@ -84,9 +89,11 @@ public class AVChatController {
}
//关闭视频和语音发送.
/**
* 关闭视频和语音发送.
*/
public
void
pauseVideo
()
{
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"关闭视频和语音发送"
);
if
(!
AVChatManager
.
getInstance
().
isLocalVideoMuted
())
{
AVChatManager
.
getInstance
().
muteLocalVideo
(
true
);
needRestoreLocalVideo
=
true
;
...
...
@@ -137,8 +144,10 @@ public class AVChatController {
if
(
code
==
ResponseCode
.
RES_FORBIDDEN
)
{
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_no_permission
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onFailed 暂无权限,请开通音视频服务 code:"
+
code
);
}
else
{
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_call_failed
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onFailed 发起通话失败 code:"
+
code
);
}
closeRtc
(
avChatType
==
AVChatType
.
VIDEO
?
CallStateEnum
.
VIDEO
:
CallStateEnum
.
AUDIO
);
callback
.
onFailed
(
code
,
""
);
...
...
@@ -147,6 +156,8 @@ public class AVChatController {
@Override
public
void
onException
(
Throwable
exception
)
{
LogUtil
.
d
(
TAG
,
"avChat call onException->"
+
exception
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onException avChat call onException->"
+
exception
);
closeRtc
(
avChatType
==
AVChatType
.
VIDEO
?
CallStateEnum
.
VIDEO
:
CallStateEnum
.
AUDIO
);
callback
.
onFailed
(-
1
,
exception
.
toString
());
}
...
...
@@ -184,8 +195,12 @@ public class AVChatController {
public
void
onFailed
(
int
code
)
{
if
(
code
==
-
1
)
{
ToastUtil
.
toastShort
(
context
,
"本地音视频启动失败"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onFailed 本地音视频启动失败 code:"
+
code
);
}
else
{
ToastUtil
.
toastShort
(
context
,
"建立连接失败"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onFailed 建立连接失败 code:"
+
code
);
}
LogUtil
.
e
(
TAG
,
"accept onFailed->"
+
code
);
handleAcceptFailed
(
avChatType
==
AVChatType
.
VIDEO
?
...
...
@@ -196,6 +211,8 @@ public class AVChatController {
@Override
public
void
onException
(
Throwable
exception
)
{
LogUtil
.
d
(
TAG
,
"accept exception->"
+
exception
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onException accept exception->"
+
exception
);
handleAcceptFailed
(
avChatType
==
AVChatType
.
VIDEO
?
CallStateEnum
.
VIDEO_CONNECTING
:
CallStateEnum
.
AUDIO
);
callback
.
onFailed
(-
1
,
exception
.
toString
());
...
...
@@ -208,9 +225,13 @@ public class AVChatController {
if
(!
AVChatManager
.
getInstance
().
isLocalAudioMuted
())
{
// isMute是否处于静音状态
// 关闭音频
AVChatManager
.
getInstance
().
muteLocalAudio
(
true
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"toggleMute 关闭音频"
);
}
else
{
// 打开音频
AVChatManager
.
getInstance
().
muteLocalAudio
(
false
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"toggleMute 打开音频"
);
}
}
...
...
@@ -224,6 +245,8 @@ public class AVChatController {
@Override
public
void
onSuccess
(
Void
aVoid
)
{
LogUtil
.
d
(
TAG
,
"videoSwitchAudio onSuccess"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送视频切换为音频命令 onSuccess"
);
//关闭视频
AVChatManager
.
getInstance
().
stopVideoPreview
();
AVChatManager
.
getInstance
().
disableVideo
();
...
...
@@ -235,11 +258,15 @@ public class AVChatController {
@Override
public
void
onFailed
(
int
code
)
{
LogUtil
.
d
(
TAG
,
"videoSwitchAudio onFailed"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送视频切换为音频命令 onFailed code:"
+
code
);
}
@Override
public
void
onException
(
Throwable
exception
)
{
LogUtil
.
d
(
TAG
,
"videoSwitchAudio onException"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送视频切换为音频命令 onException exception:"
+
exception
);
}
});
}
...
...
@@ -250,17 +277,23 @@ public class AVChatController {
@Override
public
void
onSuccess
(
Void
aVoid
)
{
LogUtil
.
d
(
TAG
,
"requestSwitchToVideo onSuccess"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送音频切换为视频命令 onSuccess"
);
avSwitchListener
.
onAudioToVideo
();
}
@Override
public
void
onFailed
(
int
code
)
{
LogUtil
.
d
(
TAG
,
"requestSwitchToVideo onFailed"
+
code
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送音频切换为视频命令 onFailed:"
+
code
);
}
@Override
public
void
onException
(
Throwable
exception
)
{
LogUtil
.
d
(
TAG
,
"requestSwitchToVideo onException"
+
exception
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送音频切换为视频命令 onException:"
+
exception
);
}
});
}
...
...
@@ -271,6 +304,7 @@ public class AVChatController {
@Override
public
void
onSuccess
(
Void
aVoid
)
{
LogUtil
.
d
(
TAG
,
"receiveAudioToVideo onSuccess"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送同意从音频切换为视频的命令 onSuccess"
);
avSwitchListener
.
onReceiveAudioToVideoAgree
();
}
...
...
@@ -278,11 +312,16 @@ public class AVChatController {
@Override
public
void
onFailed
(
int
code
)
{
LogUtil
.
d
(
TAG
,
"receiveAudioToVideo onFailed"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送同意从音频切换为视频的命令 onFailed:"
+
code
);
}
@Override
public
void
onException
(
Throwable
exception
)
{
LogUtil
.
d
(
TAG
,
"receiveAudioToVideo onException"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"switchVideoToAudio 发送同意从音频切换为视频的命令 exception:"
+
exception
);
}
});
}
...
...
@@ -361,12 +400,16 @@ public class AVChatController {
}
}
// 设置扬声器是否开启
/**
* 设置扬声器是否开启
*/
public
void
toggleSpeaker
()
{
AVChatManager
.
getInstance
().
setSpeaker
(!
AVChatManager
.
getInstance
().
speakerEnabled
());
}
// 切换摄像头(主要用于前置和后置摄像头切换)
/**
* 切换摄像头(主要用于前置和后置摄像头切换)
*/
public
void
switchCamera
()
{
mVideoCapturer
.
switchCamera
();
}
...
...
@@ -403,7 +446,7 @@ public class AVChatController {
showQuitToast
(
type
);
}
/
/ 收到挂断通知,自己的处理
/
**收到挂断通知,自己的处理*/
public
void
onHangUp
(
int
exitCode
)
{
if
(
destroyRTC
)
{
return
;
...
...
@@ -415,37 +458,49 @@ public class AVChatController {
((
Activity
)
context
).
finish
();
}
/
/ 显示退出toast
/
** 显示退出toast*/
public
void
showQuitToast
(
int
code
)
{
switch
(
code
)
{
case
AVChatExitCode
.
NET_CHANGE
:
// 网络切换
case
AVChatExitCode
.
NET_ERROR
:
// 网络异常
case
AVChatExitCode
.
CONFIG_ERROR
:
// 服务器返回数据错误
// 网络切换
case
AVChatExitCode
.
NET_CHANGE
:
// 网络异常
case
AVChatExitCode
.
NET_ERROR
:
// 服务器返回数据错误
case
AVChatExitCode
.
CONFIG_ERROR
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_net_error_then_quit
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"网络异常,通话结束 网络切换4 网络异常8 服务器返回数据错误10 code:"
+
code
);
break
;
case
AVChatExitCode
.
REJECT
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_call_reject
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"被对方拒绝"
);
break
;
case
AVChatExitCode
.
PEER_HANGUP
:
case
AVChatExitCode
.
HANGUP
:
if
(
isCallEstablish
.
get
())
{
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_call_finish
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"通话结束"
);
}
break
;
case
AVChatExitCode
.
PEER_BUSY
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_peer_busy
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"对方正在通话中,请稍后再拨。"
);
break
;
case
AVChatExitCode
.
PROTOCOL_INCOMPATIBLE_PEER_LOWER
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_peer_protocol_low_version
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"对方版本过低,请提示对方升"
);
break
;
case
AVChatExitCode
.
PROTOCOL_INCOMPATIBLE_SELF_LOWER
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_local_protocol_low_version
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"版本过低,请升级后使用"
);
break
;
case
AVChatExitCode
.
INVALIDE_CHANNELID
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_invalid_channel_id
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"对方已挂断"
);
break
;
case
AVChatExitCode
.
LOCAL_CALL_BUSY
:
ToastUtil
.
toastShort
(
context
,
R
.
string
.
im_avchat_local_call_busy
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"本地通话中,无法进行通话。"
);
break
;
default
:
break
;
...
...
m-im/src/main/java/com/yidianling/avchatkit/teamavchat/activity/TeamAVChatActivity.java
View file @
6107ffa1
...
...
@@ -35,6 +35,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatParameters;
import
com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer
;
import
com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory
;
import
com.netease.nrtc.video.render.IVideoRender
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.avchatkit.AVChatKit
;
import
com.yidianling.avchatkit.TeamAVChatProfile
;
import
com.yidianling.avchatkit.common.activity.AVChatBaseUI
;
...
...
@@ -436,6 +438,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
public
void
onSuccess
(
AVChatData
data
)
{
chatId
=
data
.
getChatId
();
LogUtil
.
i
(
TAG
,
"join room success, roomId="
+
roomId
+
", chatId="
+
chatId
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"join room success, roomId="
+
roomId
+
", chatId="
+
chatId
);
}
@Override
...
...
@@ -458,13 +461,17 @@ public class TeamAVChatActivity extends AVChatBaseUI {
startLocalPreview
();
startTimerForCheckReceivedCall
();
LogUtil
.
i
(
TAG
,
"team avchat running..."
+
", roomId="
+
roomId
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"onJoinRoomSuccess 进入房间成功"
);
}
private
void
onJoinRoomFailed
(
int
code
,
Throwable
e
)
{
if
(
code
==
ResponseCode
.
RES_ENONEXIST
)
{
showToast
(
getString
(
R
.
string
.
im_t_avchat_join_fail_not_exist
));
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"startRtc 进入房间失败 房间不存在 code:"
+
code
);
}
else
{
showToast
(
"join room failed, code="
+
code
+
", e="
+
(
e
==
null
?
""
:
e
.
getMessage
()));
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"join room failed, code="
+
code
+
", e="
+
(
e
==
null
?
""
:
e
.
getMessage
()));
}
}
...
...
@@ -483,6 +490,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
updateAudioMuteButtonState
();
LogUtil
.
i
(
TAG
,
"on user joined, account="
+
account
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"on user joined, account="
+
account
);
}
public
void
onAVChatUserLeave
(
String
account
)
{
...
...
@@ -496,6 +504,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
updateAudioMuteButtonState
();
LogUtil
.
i
(
TAG
,
"on user leave, account="
+
account
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"on user leave, account="
+
account
);
}
private
void
startLocalPreview
()
{
...
...
m-im/src/main/java/com/yidianling/im/helper/IMChatUtil.kt
View file @
6107ffa1
...
...
@@ -17,6 +17,8 @@ import com.ydl.ydlcommon.ui.LoadingDialogFragment
import
com.ydl.ydlcommon.ui.LoadingDialogFragment.Companion.newInstance
import
com.ydl.ydlcommon.utils.NetworkParamsUtils
import
com.ydl.ydlcommon.utils.UserInfoCache
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.remind.HttpErrorUtils.Companion.handleError
import
com.ydl.ydlcommon.view.dialog.CommonDialog
import
com.yidianling.common.tools.LogUtil
...
...
@@ -194,6 +196,7 @@ object IMChatUtil {
isFromQingShu
:
Int
,
context
:
AppCompatActivity
)
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"startChatSession 开启聊天会话"
)
val
p2PCustomActionHandlerImpl
=
P2PCustomActionHandlerImpl
(
toUid
,
expertInfo
)
p2PCustomActionHandlerImpl
.
isFromQingShu
=
isFromQingShu
SessionHelper
.
startP2PSession
(
...
...
@@ -278,7 +281,7 @@ object IMChatUtil {
}
else
{
upLoadLog
(
"consult/get-expert"
,
resp
.
code
,
resp
.
msg
)
if
(
resp
.
code
==
ImConstants
.
HTTP_CODE_UNLOGIN
)
{
ImIn
.
loginByOneKeyLogin
(
context
,
true
)
ImIn
.
loginByOneKeyLogin
(
context
,
true
)
ToastUtil
.
toastShort
(
resp
.
msg
)
}
else
if
(
resp
.
code
==
ImConstants
.
SILENCED_CODE
)
{
//禁言
showSilencedDialog
(
context
,
resp
.
data
.
tips
,
resp
.
data
.
url
)
...
...
@@ -326,7 +329,7 @@ object IMChatUtil {
}
else
{
upLoadLog
(
"consult/get-expert"
,
resp
.
code
,
resp
.
msg
)
if
(
resp
.
code
==
ImConstants
.
HTTP_CODE_UNLOGIN
)
{
ImIn
.
loginByOneKeyLogin
(
context
,
true
)
ImIn
.
loginByOneKeyLogin
(
context
,
true
)
ToastUtil
.
toastShort
(
resp
.
msg
)
}
else
if
(
resp
.
code
==
ImConstants
.
SILENCED_CODE
)
{
//禁言
showSilencedDialog
(
context
,
resp
.
data
.
tips
,
resp
.
data
.
url
)
...
...
@@ -367,7 +370,9 @@ object IMChatUtil {
tb
.
setmMinTitleVisiable
(
View
.
GONE
)
}
else
{
//对方是用户,自己是助理
if
(
actionHandler
.
userType
==
USER_TYPE_USER
&&
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
)
if
(
actionHandler
.
userType
==
USER_TYPE_USER
&&
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
)
.
getUserInfo
()
?.
user_type
==
USER_TYPE_ASSISTANT
)
{
tb
.
setTitleTextRightIcon
(
R
.
drawable
.
user_info_icon
)
{
...
...
m-im/src/main/java/com/yidianling/uikit/api/NimUIKit.java
View file @
6107ffa1
...
...
@@ -5,6 +5,8 @@ import android.content.Context;
import
com.netease.nimlib.sdk.msg.attachment.MsgAttachment
;
import
com.netease.nimlib.sdk.msg.constant.SessionTypeEnum
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.nimbase.api.BaseNimUIKit
;
import
com.yidianling.nimbase.api.model.session.SessionCustomization
;
import
com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity
;
...
...
@@ -30,6 +32,7 @@ public class NimUIKit extends BaseNimUIKit {
*/
public
static
void
startYDLChatting
(
Context
context
,
String
id
,
SessionTypeEnum
sessionType
,
SessionCustomization
customization
,
IMMessage
anchor
,
IP2PCustomActionHandler
handler
)
{
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"startYDLChatting 打开壹点灵定制聊天窗口,开始聊天"
);
NimUIKitImpl
.
startChatting
(
context
,
id
,
sessionType
,
customization
,
anchor
,
handler
);
}
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/activity/YDLP2PMessageActivity.java
View file @
6107ffa1
...
...
@@ -4,7 +4,6 @@ import android.content.Context;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.util.DisplayMetrics
;
import
android.view.View
;
import
android.view.WindowManager
;
import
com.alibaba.fastjson.JSON
;
...
...
@@ -17,6 +16,8 @@ import com.netease.nimlib.sdk.msg.MsgServiceObserve;
import
com.netease.nimlib.sdk.msg.constant.SessionTypeEnum
;
import
com.netease.nimlib.sdk.msg.model.CustomNotification
;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack
;
...
...
@@ -82,9 +83,8 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
/**
* 切换到客服界面
*
*/
public
static
void
startChangeDoctor
(
Context
context
,
String
contactId
,
SessionCustomization
customization
,
IMMessage
anchor
,
IP2PCustomActionHandler
l
){
public
static
void
startChangeDoctor
(
Context
context
,
String
contactId
,
SessionCustomization
customization
,
IMMessage
anchor
,
IP2PCustomActionHandler
l
)
{
Intent
intent
=
new
Intent
();
intent
.
putExtra
(
Extras
.
EXTRA_ACCOUNT
,
contactId
);
intent
.
putExtra
(
Extras
.
EXTRA_CUSTOMIZATION
,
customization
);
...
...
@@ -106,7 +106,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
// 如果isChangeDoctor为true表示切换客服
if
(
isChangeDoctor
)
{
messageFragment
=
(
YDLMessageFragment
)
switchContent
(
switchServiceFragment
(
intent
));
isChangeDoctor
=
false
;
isChangeDoctor
=
false
;
}
}
...
...
@@ -137,7 +137,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
isChangeDoctor
=
true
;
String
serviceUid
=
String
.
valueOf
(
serviceBean
.
getData
().
getToUid
());
tb
.
setTitle
(
serviceBean
.
getData
().
getName
());
YDLP2PMessageActivity
.
startChangeDoctor
(
YDLP2PMessageActivity
.
this
,
serviceUid
,
SessionHelper
.
getP2pCustomization
(-
1
),
null
,
new
P2PCustomActionHandlerImpl
(
serviceUid
,
serviceBean
.
getData
().
getName
(),
serviceUid
));
YDLP2PMessageActivity
.
startChangeDoctor
(
YDLP2PMessageActivity
.
this
,
serviceUid
,
SessionHelper
.
getP2pCustomization
(-
1
),
null
,
new
P2PCustomActionHandlerImpl
(
serviceUid
,
serviceBean
.
getData
().
getName
(),
serviceUid
));
}
}
});
...
...
@@ -145,13 +145,13 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
@Override
protected
void
onDestroy
()
{
if
(
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
)
if
(
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
)
{
ActionHandlerStorage
.
getL
(
sessionId
).
clear
(
sessionId
);
}
registerObservers
(
false
);
super
.
onDestroy
();
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"退出聊天页面"
);
}
@Override
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
View file @
6107ffa1
...
...
@@ -49,6 +49,8 @@ import com.ydl.ydlcommon.utils.LogUtil;
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
;
import
com.ydl.ydlcommon.utils.YdlBuryPointUtil
;
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.ydl.ydlcommon.utils.log.LogHelper
;
import
com.ydl.ydlcommon.view.CircleImageView
;
import
com.ydl.ydlcommon.view.dialog.CommonDialog
;
...
...
@@ -754,15 +756,21 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
}
// 帮助人数
help_num
=
String
.
valueOf
(
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
doctorBriefInfoOrderNum
);
if
(
TextUtils
.
isEmpty
(
help_num
))
help_num
=
"0"
;
if
(
TextUtils
.
isEmpty
(
help_num
))
{
help_num
=
"0"
;
}
help_num_tv
.
setText
(
help_num
);
// 服务时长
server_num
=
String
.
valueOf
((
int
)
Math
.
ceil
((
double
)
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
doctorBriefInfoHelpLong
/
60.0
));
if
(
TextUtils
.
isEmpty
(
server_num
))
server_num
=
"0"
;
if
(
TextUtils
.
isEmpty
(
server_num
))
{
server_num
=
"0"
;
}
server_num_tv
.
setText
(
server_num
);
// 好评率
good_num
=
ActionHandlerStorage
.
getL
(
sessionId
).
getInfo
().
doctorBriefInfoFeedbackRateForShow
;
if
(
TextUtils
.
isEmpty
(
good_num
))
good_num
=
"0.0"
;
if
(
TextUtils
.
isEmpty
(
good_num
))
{
good_num
=
"0.0"
;
}
good_num_tv
.
setText
(
good_num
);
try
{
...
...
@@ -1176,13 +1184,14 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
}
});
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"sendMessage 该消息发送成功 sessionId:"
+
sessionId
);
}
else
{
// 替换成tip
message
=
MessageBuilder
.
createTipMessage
(
message
.
getSessionId
(),
message
.
getSessionType
());
message
.
setContent
(
"该消息无法发送"
);
message
.
setStatus
(
MsgStatusEnum
.
success
);
NIMClient
.
getService
(
MsgService
.
class
).
saveMessageToLocal
(
message
,
false
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"sendMessage 该消息无法发送 sessionId:"
+
sessionId
);
}
messageListPanel
.
onMsgSend
(
message
);
...
...
@@ -1210,9 +1219,12 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
LogHelper
.
Companion
.
getInstance
().
writeLogSync
(
"发送消息失败:已被对方拉黑"
);
ToastUtil
.
toastLong
(
getActivity
(),
"您已被对方拉黑!"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"sendFailWithBlackList 发送消息失败:已被对方拉黑 sessionId:"
+
sessionId
);
}
else
if
(
code
==
404
)
{
LogHelper
.
Companion
.
getInstance
().
writeLogSync
(
"发送消息失败:对象不见了"
);
ToastUtil
.
toastLong
(
getActivity
(),
"对象不见了!"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
YUNXIN
,
"sendFailWithBlackList 发送消息失败:对象不见了 404 sessionId:"
+
sessionId
);
}
else
{
//上传至后台
if
(!
TextUtils
.
isEmpty
(
sessionId
)
&&
ActionHandlerStorage
.
getL
(
sessionId
)
!=
null
)
{
...
...
m-user/src/main/java/com/yidianling/user/LoginUtils.kt
View file @
6107ffa1
...
...
@@ -6,6 +6,8 @@ import com.tencent.bugly.crashreport.CrashReport
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.utils.ActivityManager
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.im.api.bean.IMLoginInfo
import
com.yidianling.im.api.bean.IMRequestCallback
...
...
@@ -57,16 +59,22 @@ object LoginUtils {
val
info
=
IMLoginInfo
(
userInfo
?.
uid
?:
""
,
userInfo
?.
hxpwd
?:
""
)
val
callback
=
object
:
IMRequestCallback
<
IMLoginInfo
>
{
override
fun
onSuccess
(
t
:
IMLoginInfo
?)
{
LogUtil
.
e
(
"IM登录成功:"
+
"info.account:"
+
info
.
account
+
"info.passWord"
+
info
.
passWord
)
LogUtil
.
e
(
"IM登录成功:"
+
"info.account:"
+
info
.
account
+
"info.passWord"
+
info
.
passWord
)
UserIn
.
imSetAccount
(
userInfo
?.
uid
?:
""
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"IM登录成功"
)
}
override
fun
onFailed
(
i
:
Int
)
{
LogUtil
.
e
(
"IM登录失败:$i"
+
"info.account:"
+
info
.
account
+
"info.passWord"
+
info
.
passWord
)
LogUtil
.
e
(
"IM登录失败:$i"
+
"info.account:"
+
info
.
account
+
"info.passWord"
+
info
.
passWord
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"IM登录失败"
)
}
override
fun
onException
(
throwable
:
Throwable
?)
{
LogUtil
.
e
(
"IM登录onException:${throwable?.message}"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"IM登录onException:${throwable?.message}"
)
}
}
...
...
@@ -79,17 +87,18 @@ object LoginUtils {
fun
logout
()
{
EventBus
.
getDefault
().
post
(
UserLogoutEvent
())
UserHttpImpl
.
getInstance
().
logout
(
Logout
())
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
logoutClearLocal
()
},
{
logoutClearLocal
()
})
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
logoutClearLocal
()
},
{
logoutClearLocal
()
})
}
@JvmStatic
fun
logoutClearLocal
()
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"退出登录"
)
UserIn
.
imLogout
()
UserIn
.
closePlayer
()
UserIn
.
clearImData
()
...
...
@@ -105,7 +114,7 @@ object LoginUtils {
ActivityManager
.
finishAll
()
if
(
StatusUtils
.
isFirstLogin
&&
StatusUtils
.
isFirstStartApp
)
{
activity
.
startActivity
(
Intent
(
activity
,
CollectSexAndBirthActivity
::
class
.
java
))
}
else
{
}
else
{
UserIn
.
mainIntent
(
activity
)
}
}
else
{
//需要判断stack中是否有MainActivity
...
...
m-user/src/main/java/com/yidianling/user/ui/SmsLoginActivity.kt
View file @
6107ffa1
...
...
@@ -14,6 +14,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import
com.ydl.ydlcommon.utils.ActivityManager
import
com.ydl.ydlcommon.utils.UserInfoCache
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.im.api.bean.IMLoginInfo
import
com.yidianling.im.api.bean.IMRequestCallback
...
...
@@ -118,13 +120,13 @@ class SmsLoginActivity : BaseActivity() {
})*/
vCodeSub
=
userHttp
.
code
(
CodeParam
(
code
,
phoneNum
,
UserConstants
.
SIGNIN_ACTION
))
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
ToastHelper
.
show
(
msg
)
}
})
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
ToastHelper
.
show
(
msg
)
}
})
}
private
var
loginSub
:
Disposable
?
=
null
...
...
@@ -136,37 +138,49 @@ class SmsLoginActivity : BaseActivity() {
return
}
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_CODE_LOGIN
)
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_CODE_LOGIN
)
Log
.
e
(
"短信验证码:"
,
code
+
" - "
+
phoneNum
+
" - "
+
et_code
.
text
.
toString
());
loginSub
=
userHttp
.
login
(
LoginParam
(
code
,
phoneNum
,
null
,
2
,
et_code
.
text
.
toString
()))
.
compose
(
RxUtils
.
resultData
())
.
doOnNext
{
LoginUtils
.
saveData
(
it
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
showProgressDialog
(
""
)
}
.
doAfterTerminate
{
dismissProgressDialog
()
}
.
subscribe
(
Consumer
{
LoginUtils
.
onLogin
(
it
)
//关闭手势解锁页面与指纹解锁页面
finishFinger
()
if
(
it
.
firstLogin
==
1
)
{
StatusUtils
.
isFirstLogin
=
true
baiduActionBury
()
}
else
{
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_CODE_LOGIN
)
}
.
compose
(
RxUtils
.
resultData
())
.
doOnNext
{
LoginUtils
.
saveData
(
it
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
showProgressDialog
(
""
)
}
.
doAfterTerminate
{
dismissProgressDialog
()
}
.
subscribe
(
Consumer
{
LoginUtils
.
onLogin
(
it
)
//关闭手势解锁页面与指纹解锁页面
finishFinger
()
if
(
it
.
firstLogin
==
1
)
{
StatusUtils
.
isFirstLogin
=
true
baiduActionBury
()
}
else
{
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_CODE_LOGIN
)
}
// ActivityManager.finishActivity(LoginActivity::class.java)
// if (ActivityManager.getActivitySize() <= 1) {
// UserIn.mainIntent(this)
// }
// finish()
LoginUtils
.
loginSuccessOperate
(
this
)
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
dismissProgressDialog
()
YdlCommonOut
.
showToast
(
msg
)
}
})
LoginUtils
.
loginSuccessOperate
(
this
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"短信验证码 成功"
)
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
dismissProgressDialog
()
YdlCommonOut
.
showToast
(
msg
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"短信验证码 失败 msg:$msg "
)
}
})
}
/**
...
...
@@ -224,9 +238,11 @@ class SmsLoginActivity : BaseActivity() {
try
{
if
(
userInfo
!=
null
)
{
UserIn
.
imSetAccount
(
userInfo
.
uid
.
toString
())
UserInfoCache
.
getInstance
().
saveYDLUser
(
userInfo
.
uid
.
toString
(),
userInfo
.
nick_name
,
userInfo
.
head
)
UserInfoCache
.
getInstance
().
saveYDLUser
(
userInfo
.
uid
.
toString
(),
userInfo
.
nick_name
,
userInfo
.
head
)
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
...
...
@@ -237,21 +253,21 @@ class SmsLoginActivity : BaseActivity() {
private
fun
initTimer
()
{
timerSub
=
Observable
.
interval
(
0
,
1
,
TimeUnit
.
SECONDS
)
.
subscribeOn
(
Schedulers
.
computation
())
.
take
(
60
)
.
map
{
String
.
format
(
"重发(%d)"
,
59
-
it
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
tv_get_code
.
isEnabled
=
false
tv_get_code
.
setTextColor
(-
0
x525253
)
}
.
subscribe
({
tv_get_code
.
text
=
it
},
{},
{
tv_get_code
.
text
=
"重新发送"
tv_get_code
.
isEnabled
=
true
tv_get_code
.
setTextColor
(-
0
xb62d7f
)
})
.
subscribeOn
(
Schedulers
.
computation
())
.
take
(
60
)
.
map
{
String
.
format
(
"重发(%d)"
,
59
-
it
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
tv_get_code
.
isEnabled
=
false
tv_get_code
.
setTextColor
(-
0
x525253
)
}
.
subscribe
({
tv_get_code
.
text
=
it
},
{},
{
tv_get_code
.
text
=
"重新发送"
tv_get_code
.
isEnabled
=
true
tv_get_code
.
setTextColor
(-
0
xb62d7f
)
})
}
...
...
m-user/src/main/java/com/yidianling/user/ui/login/OneKeyLoginHelp.kt
View file @
6107ffa1
...
...
@@ -7,7 +7,6 @@ import android.content.Context
import
android.content.pm.ActivityInfo
import
android.graphics.Color
import
android.text.TextUtils
import
android.util.Log
import
android.util.TypedValue
import
android.view.Gravity
import
android.view.View
...
...
@@ -17,17 +16,19 @@ import android.widget.TextView
import
com.fm.openinstall.OpenInstall
import
com.fm.openinstall.listener.AppInstallAdapter
import
com.fm.openinstall.model.AppData
import
com.fm.openinstall.model.Error
import
com.meituan.android.walle.WalleChannelReader
import
com.mobile.auth.gatewayauth.*
import
com.mobile.auth.gatewayauth.model.TokenRet
import
com.tbruyelle.rxpermissions2.RxPermissions
import
com.ydl.webview.NewH5Activity
import
com.ydl.ydlcommon.base.BaseActivity
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.utils.JPushUtils
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.yidianling.common.tools.RxAppTool
import
com.yidianling.common.tools.RxDeviceTool
...
...
@@ -430,6 +431,8 @@ object OneKeyLoginHelp {
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
if
(
it
.
code
==
200
)
{
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"一键登录成功"
)
ToastUtil
.
toastShort
(
"登录成功"
)
saveUserData
(
it
.
data
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
...
...
@@ -463,10 +466,18 @@ object OneKeyLoginHelp {
LoginUtils
.
loginSuccessOperate
(
mActivity
)
}
}
else
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"一键登录失败 msg:${it.msg}"
)
ToastUtil
.
toastShort
(
it
.
msg
)
mPhoneNumberAuthHelper
?.
hideLoginLoading
()
}
},
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"一键登录Error msg:${it.message}"
)
ToastUtil
.
toastShort
(
it
.
message
)
mPhoneNumberAuthHelper
?.
hideLoginLoading
()
})
...
...
@@ -580,23 +591,29 @@ object OneKeyLoginHelp {
* */
@SuppressLint
(
"CheckResult"
)
fun
startLogin
(
context
:
Activity
,
isOpenDialog
:
Boolean
)
{
RxPermissions
(
context
)
.
request
(
Manifest
.
permission
.
READ_PHONE_STATE
)
.
subscribe
{
hasPermission
:
Boolean
?
->
if
(
hasPermission
==
true
&&
mIsOpenOneKeyLogin
)
{
getLoginToken
(
isOpenDialog
)
}
else
{
// 一键登录页面打开成功
if
(
mOpenPageIsSuccess
)
{
RegisterAndLoginActivity
.
start
(
context
)
try
{
RxPermissions
(
context
)
.
request
(
Manifest
.
permission
.
READ_PHONE_STATE
)
.
subscribe
{
hasPermission
:
Boolean
?
->
if
(
hasPermission
==
true
&&
mIsOpenOneKeyLogin
)
{
getLoginToken
(
isOpenDialog
)
}
else
{
RegisterAndLoginActivity
.
start
(
context
,
isFromOneKey
=
false
,
isFromGuide
=
true
)
// 一键登录页面打开成功
if
(
mOpenPageIsSuccess
)
{
RegisterAndLoginActivity
.
start
(
context
)
}
else
{
RegisterAndLoginActivity
.
start
(
context
,
isFromOneKey
=
false
,
isFromGuide
=
true
)
}
}
}
}
}
catch
(
e
:
Exception
)
{
RegisterAndLoginActivity
.
start
(
context
)
e
.
printStackTrace
()
}
}
}
m-user/src/main/java/com/yidianling/user/ui/login/RegisterAndLoginActivity.kt
View file @
6107ffa1
...
...
@@ -612,6 +612,7 @@ class RegisterAndLoginActivity : BaseMvpActivity<ILoginContract.View, ILoginCont
runOnUiThread
{
showLoading
(
false
)
}
if
(
chcekPhoneResponeBean
!=
null
&&
chcekPhoneResponeBean
?.
hasPwd
==
1
)
{
//用户码有设置密码:跳转到密登录
InputPassWordActivity
.
start
(
this
,
...
...
m-user/src/main/java/com/yidianling/user/ui/login/presenter/InputPassWordPresenterImpl.kt
View file @
6107ffa1
...
...
@@ -7,6 +7,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import
com.ydl.ydlcommon.utils.StringUtils
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.user.LoginUtils
...
...
@@ -28,7 +30,9 @@ import java.math.BigDecimal
* @Company 壹点灵
* @date 2018/12/2
*/
class
InputPassWordPresenterImpl
:
BasePresenter
<
IInputPassWordContract
.
View
,
IInputPassWordContract
.
Model
>(),
IInputPassWordContract
.
Presenter
{
class
InputPassWordPresenterImpl
:
BasePresenter
<
IInputPassWordContract
.
View
,
IInputPassWordContract
.
Model
>(),
IInputPassWordContract
.
Presenter
{
override
fun
createModel
():
IInputPassWordContract
.
Model
{
return
InputPassWordModelImpl
()
...
...
@@ -37,38 +41,51 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
/**
* 重新设置密码
*/
override
fun
resetPwd
(
newPassword
:
String
,
phone
:
String
,
msgCode
:
String
,
phoneCountryCode
:
String
)
{
override
fun
resetPwd
(
newPassword
:
String
,
phone
:
String
,
msgCode
:
String
,
phoneCountryCode
:
String
)
{
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_RESET_PWD
)
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_RESET_PWD
)
var
param
=
PhoneResetPwdParam
(
StringUtils
.
md5
(
newPassword
),
phoneCountryCode
,
msgCode
,
phone
)
var
param
=
PhoneResetPwdParam
(
StringUtils
.
md5
(
newPassword
),
phoneCountryCode
,
msgCode
,
phone
)
mModel
.
resetPwd
(
param
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
?.
data
==
null
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
?.
data
==
null
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
}
else
{
if
(
it
.
data
.
userInfo
?.
user_type
==
2
)
{
mView
.
showNormalDialog
()
}
else
{
if
(
it
.
data
.
userInfo
?.
user_type
==
2
)
{
mView
.
showNormalDialog
()
ToastUtil
.
toastShort
(
"修改密码成功"
)
saveUserData
(
it
.
data
)
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_RESET_PWD
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
// 重设密码登录已经不可能是首次登录,所以不进行百度埋点
//view.baiduActionBury()
}
else
{
ToastUtil
.
toastShort
(
"修改密码成功"
)
saveUserData
(
it
.
data
)
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_RESET_PWD
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
// 重设密码登录已经不可能是首次登录,所以不进行百度埋点
//view.baiduActionBury()
}
else
{
}
mView
.
closeActivity
()
}
mView
.
closeActivity
()
}
},
{
YdlCommonOut
.
showToast
(
it
.
message
!!
)
})
}
},
{
YdlCommonOut
.
showToast
(
it
.
message
!!
)
})
}
...
...
@@ -76,36 +93,54 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
* 手机号密码登录
*/
@SuppressLint
(
"CheckResult"
)
override
fun
userLoginByPassword
(
inputPassword
:
String
,
phone
:
String
,
phoneCountryCode
:
String
)
{
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_PWD_LOGIN
)
override
fun
userLoginByPassword
(
inputPassword
:
String
,
phone
:
String
,
phoneCountryCode
:
String
)
{
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_PWD_LOGIN
)
var
param
=
PhoneLoginPwdParam
(
StringUtils
.
md5
(
inputPassword
),
phoneCountryCode
,
phone
)
mModel
.
userLoginByPassword
(
param
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
?.
data
==
null
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
mView
.
startAnim
()
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
?.
data
==
null
)
{
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"手机号密码 登录失败 msg: ${it.msg}"
)
ToastUtil
.
toastShort
(
it
.
msg
)
mView
.
startAnim
()
}
else
{
if
(
it
.
data
.
userInfo
?.
user_type
==
2
)
{
mView
.
showNormalDialog
()
}
else
{
if
(
it
.
data
.
userInfo
?.
user_type
==
2
)
{
mView
.
showNormalDialog
()
saveUserData
(
it
.
data
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
mView
.
baiduActionBury
()
}
else
{
saveUserData
(
it
.
data
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
mView
.
baiduActionBury
()
}
else
{
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_PWD_LOGIN
)
}
mView
.
closeActivity
()
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_PWD_LOGIN
)
}
mView
.
closeActivity
()
}
},
{
YdlCommonOut
.
showToast
(
it
.
message
!!
)
})
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"手机号密码 登录成功"
)
}
},
{
YdlCommonOut
.
showToast
(
it
.
message
!!
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"手机号密码 Error msg: ${it.message}"
)
})
}
/**
...
...
m-user/src/main/java/com/yidianling/user/ui/login/presenter/LoginPresenterImpl.kt
View file @
6107ffa1
...
...
@@ -9,6 +9,8 @@ import com.ydl.ydlcommon.mvp.base.BasePresenter
import
com.ydl.ydlcommon.router.YdlCommonOut
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.user.LoginUtils
...
...
@@ -33,24 +35,25 @@ import java.math.BigDecimal
* @Company 壹点灵
* @date 2018/11/29
*/
class
LoginPresenterImpl
(
view
:
ILoginContract
.
View
)
:
BasePresenter
<
ILoginContract
.
View
,
ILoginContract
.
Model
>(),
ILoginContract
.
Presenter
{
class
LoginPresenterImpl
(
view
:
ILoginContract
.
View
)
:
BasePresenter
<
ILoginContract
.
View
,
ILoginContract
.
Model
>(),
ILoginContract
.
Presenter
{
@SuppressLint
(
"CheckResult"
)
override
fun
bindPhone
(
param
:
BindPhoneJavaParam
)
{
mModel
.
bindPhone
(
param
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
.
code
==
200
)
{
ToastUtil
.
toastShort
(
"手机号绑定成功"
)
mView
.
bindSuccess
()
}
else
{
ToastUtil
.
toastShort
(
it
.
msg
)
}
},
{
ToastUtil
.
toastShort
(
it
.
message
)
})
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
.
code
==
200
)
{
ToastUtil
.
toastShort
(
"手机号绑定成功"
)
mView
.
bindSuccess
()
}
else
{
ToastUtil
.
toastShort
(
it
.
msg
)
}
},
{
ToastUtil
.
toastShort
(
it
.
message
)
})
}
...
...
@@ -59,33 +62,51 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
*/
@SuppressLint
(
"CheckResult"
)
override
fun
autoLogin
(
bean
:
PhoneLoginAutoParam
)
{
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_DIRECT_LOGIN
)
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
UserBIConstants
.
ACTION_TYPE_DIRECT_LOGIN
)
mModel
.
autoLogin
(
bean
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
.
code
==
200
)
{
//绑定手机号
saveUserData
(
it
.
data
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
mView
.
baiduActionBury
(
it
.
data
.
uid
,
UserBIConstants
.
POSITION_ALIYUN_REGISTER_CLICK
)
}
else
{
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_DIRECT_LOGIN
)
}
mView
.
autoLoginSuccess
()
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doOnSubscribe
{
mView
.
showLoading
(
true
)
}
.
doAfterTerminate
{
mView
.
showLoading
(
false
)
}
.
subscribe
({
if
(
it
.
code
==
200
)
{
//绑定手机号
saveUserData
(
it
.
data
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
mView
.
baiduActionBury
(
it
.
data
.
uid
,
UserBIConstants
.
POSITION_ALIYUN_REGISTER_CLICK
)
}
else
{
// ToastUtil.toastShort(it.msg)
mView
.
aliAuthFailed
()
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
UserBIConstants
.
ACTION_TYPE_DIRECT_LOGIN
)
}
},
{
//走验证码、密码登录
mView
.
autoLoginSuccess
()
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"通过一键认证服务登录成功"
)
}
else
{
// ToastUtil.toastShort(it.msg)
mView
.
aliAuthFailed
()
})
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"通过一键认证服务登陆 失败 msg: ${it.msg}"
)
}
},
{
//走验证码、密码登录
mView
.
aliAuthFailed
()
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
"通过一键认证服务登陆 Error msg: ${it.message}"
)
})
}
...
...
@@ -117,15 +138,15 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
@SuppressLint
(
"CheckResult"
)
override
fun
checkAliAuth
(
param
:
CheckAliAuthParam
)
{
mModel
.
checkAliAuth
(
param
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
if
(
it
?.
data
==
null
)
{
mView
.
aliAuthFailed
()
}
},
{
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
if
(
it
?.
data
==
null
)
{
mView
.
aliAuthFailed
()
})
}
},
{
mView
.
aliAuthFailed
()
})
}
/**
...
...
@@ -136,35 +157,35 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
override
fun
checkPhoneStatus
(
phone
:
String
,
countryCode
:
String
,
isBind
:
Boolean
)
{
mView
.
showLoading
(
true
)
mModel
.
checkPhoneStatus
(
phone
,
countryCode
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
if
(
it
?.
data
==
null
||
it
?.
code
!=
200
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
if
(
it
?.
data
==
null
||
it
?.
code
!=
200
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
mView
.
showLoading
(
false
)
return
@subscribe
}
if
(
isBind
)
{
//第三方登录成功后的绑定逻辑
if
(
it
.
data
.
isRegistered
==
1
)
{
mView
.
showLoading
(
false
)
return
@subscribe
}
if
(
isBind
)
{
//第三方登录成功后的绑定逻辑
if
(
it
.
data
.
isRegistered
==
1
)
{
mView
.
showLoading
(
false
)
mView
.
showHasBindedDialog
()
}
else
{
mView
.
checkPhoneStatusSuccess
(
it
.
data
,
phone
)
}
}
else
{
//登录逻辑
if
(
it
.
data
.
isDoctor
==
1
)
{
//是专家账号
mView
.
showLoading
(
false
)
mView
.
showNormalDialog
()
}
else
{
mView
.
checkPhoneStatusSuccess
(
it
.
data
,
phone
)
}
mView
.
showHasBindedDialog
()
}
else
{
mView
.
checkPhoneStatusSuccess
(
it
.
data
,
phone
)
}
},
{
mView
.
showLoading
(
false
)
if
(
null
!=
it
&&
!
TextUtils
.
isEmpty
(
it
.
message
)){
YdlCommonOut
.
showToast
(
it
.
message
!!
)
}
else
{
//登录逻辑
if
(
it
.
data
.
isDoctor
==
1
)
{
//是专家账号
mView
.
showLoading
(
false
)
mView
.
showNormalDialog
()
}
else
{
mView
.
checkPhoneStatusSuccess
(
it
.
data
,
phone
)
}
})
}
},
{
mView
.
showLoading
(
false
)
if
(
null
!=
it
&&
!
TextUtils
.
isEmpty
(
it
.
message
))
{
YdlCommonOut
.
showToast
(
it
.
message
!!
)
}
})
}
/**
...
...
@@ -173,63 +194,85 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
@SuppressLint
(
"CheckResult"
)
override
fun
loginByThird
(
activity
:
Activity
,
media
:
SHARE_MEDIA
)
{
val
sign1
=
if
(
media
==
SHARE_MEDIA
.
QQ
)
UserBIConstants
.
ACTION_TYPE_QQ_THIRD_LOGIN
else
UserBIConstants
.
ACTION_TYPE_WX_THIRD_LOGIN
val
sign1
=
if
(
media
==
SHARE_MEDIA
.
QQ
)
UserBIConstants
.
ACTION_TYPE_QQ_THIRD_LOGIN
else
UserBIConstants
.
ACTION_TYPE_WX_THIRD_LOGIN
ActionCountUtils
.
count
(
UserBIConstants
.
POSITION_LOGIN_CLICK
,
sign1
)
UserHttpImpl
.
getInstance
()
.
umLogin
(
activity
,
media
)
.
doOnSubscribe
{
mView
.
showProgressView
()
}
.
doAfterTerminate
{
mView
.
dismissProgressView
()
.
umLogin
(
activity
,
media
)
.
doOnSubscribe
{
mView
.
showProgressView
()
}
.
doAfterTerminate
{
mView
.
dismissProgressView
()
}
.
observeOn
(
Schedulers
.
io
())
.
flatMap
{
thirdLoginParam
->
UserHttpImpl
.
getInstance
().
thirdPartJavaLogin
(
thirdLoginParam
)
}
.
doOnNext
{
LoginUtils
.
saveData
(
it
.
data
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
mView
.
dismissProgressView
()
if
(
it
?.
data
==
null
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
return
@subscribe
}
.
observeOn
(
Schedulers
.
io
())
.
flatMap
{
thirdLoginParam
->
UserHttpImpl
.
getInstance
().
thirdPartJavaLogin
(
thirdLoginParam
)
}
.
doOnNext
{
LoginUtils
.
saveData
(
it
.
data
)
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
mView
.
dismissProgressView
()
if
(
it
?.
data
==
null
)
{
ToastUtil
.
toastShort
(
it
.
msg
)
return
@subscribe
}
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
if
(
media
==
SHARE_MEDIA
.
QQ
)
{
mView
.
baiduActionBury
(
it
.
data
.
uid
,
UserBIConstants
.
POSITION_QQ_REGISTER_CLICK
)
ActionCountUtils
.
baiduCount
(
it
.
data
.
uid
,
UserBIConstants
.
APP_REGISTER_PAGE
,
UserBIConstants
.
POSITION_QQ_REGISTER_CLICK
,
""
,
""
,
25
,
OneKeyLoginHelp
.
openInstallKey
)
}
else
{
mView
.
baiduActionBury
(
it
.
data
.
uid
,
UserBIConstants
.
POSITION_WX_REGISTER_CLICK
)
ActionCountUtils
.
baiduCount
(
it
.
data
.
uid
,
UserBIConstants
.
APP_REGISTER_PAGE
,
UserBIConstants
.
POSITION_WX_REGISTER_CLICK
,
""
,
""
,
25
,
OneKeyLoginHelp
.
openInstallKey
)
}
// 用户注册成功后调用
OpenInstall
.
reportRegister
()
}
else
{
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
sign1
)
if
(
it
.
data
.
firstLogin
==
1
)
{
//第一次登录:是注册
StatusUtils
.
isFirstLogin
=
true
if
(
media
==
SHARE_MEDIA
.
QQ
)
{
mView
.
baiduActionBury
(
it
.
data
.
uid
,
UserBIConstants
.
POSITION_QQ_REGISTER_CLICK
)
ActionCountUtils
.
baiduCount
(
it
.
data
.
uid
,
UserBIConstants
.
APP_REGISTER_PAGE
,
UserBIConstants
.
POSITION_QQ_REGISTER_CLICK
,
""
,
""
,
25
,
OneKeyLoginHelp
.
openInstallKey
)
}
else
{
mView
.
baiduActionBury
(
it
.
data
.
uid
,
UserBIConstants
.
POSITION_WX_REGISTER_CLICK
)
ActionCountUtils
.
baiduCount
(
it
.
data
.
uid
,
UserBIConstants
.
APP_REGISTER_PAGE
,
UserBIConstants
.
POSITION_WX_REGISTER_CLICK
,
""
,
""
,
25
,
OneKeyLoginHelp
.
openInstallKey
)
}
// 用户注册成功后调用
OpenInstall
.
reportRegister
()
}
else
{
ActionCountUtils
.
countUid
(
UserBIConstants
.
POSITION_LOGIN_SUCCESS_CLICK
,
it
.
data
.
uid
!!
,
sign1
)
}
LoginUtils
.
onLogin
(
it
.
data
)
mView
.
thirdLoginSuccess
(
it
.
data
.
userInfo
!!
,
if
(
media
==
SHARE_MEDIA
.
QQ
)
"qq"
else
"weixin"
)
LogHelper
.
getInstance
().
writeLogSync
(
media
.
getName
()
+
"登录成功"
)
},
{
mView
.
dismissProgressView
()
YdlCommonOut
.
showToast
(
it
.
message
!!
)
})
LoginUtils
.
onLogin
(
it
.
data
)
mView
.
thirdLoginSuccess
(
it
.
data
.
userInfo
!!
,
if
(
media
==
SHARE_MEDIA
.
QQ
)
"qq"
else
"weixin"
)
LogHelper
.
getInstance
().
writeLogSync
(
media
.
getName
()
+
"登录成功"
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
media
.
getName
()
+
"登录成功"
)
},
{
mView
.
dismissProgressView
()
YdlCommonOut
.
showToast
(
it
.
message
!!
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
LOGIN
,
media
.
getName
()
+
"登录失败"
)
})
}
override
fun
createModel
():
ILoginContract
.
Model
{
...
...
ydl-net/build.gradle
View file @
6107ffa1
...
...
@@ -41,6 +41,7 @@ dependencies {
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
api
rootProject
.
ext
.
dependencies
[
"gson"
]
api
rootProject
.
ext
.
dependencies
[
"aliyun"
]
api
rootProject
.
ext
.
dependencies
[
"rxjava2"
]
api
(
rootProject
.
ext
.
dependencies
[
"rxandroid2"
])
{
exclude
module:
'rxjava'
...
...
ydl-net/src/main/java/com/ydl/ydlnet/builder/api/ApiUtil.kt
deleted
100644 → 0
View file @
c445a1b7
package
com.ydl.ydlnet.builder.api
import
com.google.gson.Gson
import
com.ydl.ydlnet.YDLHttpUtils.Companion.obtainApi
import
com.ydl.ydlnet.builder.bean.ApiErrorActionBean
import
com.ydl.ydlnet.builder.bean.BaseAPIResponse
import
io.reactivex.Observable
import
okhttp3.MediaType
import
okhttp3.RequestBody
/**
* Created by Ykai on 2021/3/15.
*/
class
ApiUtil
{
companion
object
{
/**
* 行为数据埋点统计
*/
fun
actionDataCount
(
actionDataParams
:
ApiErrorActionBean
):
Observable
<
BaseAPIResponse
<
String
>>
{
val
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json; charset=utf-8"
),
Gson
().
toJson
(
actionDataParams
)
)
return
obtainApi
(
NetApi
::
class
.
java
).
actionDataCount
(
body
)
}
}
}
\ No newline at end of file
ydl-net/src/main/java/com/ydl/ydlnet/builder/api/NetApi.kt
deleted
100644 → 0
View file @
c445a1b7
package
com.ydl.ydlnet.builder.api
import
com.ydl.ydlnet.builder.bean.BaseAPIResponse
import
io.reactivex.Observable
import
okhttp3.RequestBody
import
retrofit2.http.Body
import
retrofit2.http.Headers
import
retrofit2.http.POST
/**
* Created by Ykai on 2021/3/15.
*/
interface
NetApi
{
/**
* 行为动作埋点统计
*/
@Headers
(
"Domain-Name:JAVA_BASE_URL"
)
@POST
(
"data/bigdata/maidian/writeMaiDianData"
)
fun
actionDataCount
(
@Body
body
:
RequestBody
):
Observable
<
BaseAPIResponse
<
String
>>
}
\ No newline at end of file
ydl-net/src/main/java/com/ydl/ydlnet/builder/interceptor/log/RequestLogInterceptor.java
View file @
6107ffa1
...
...
@@ -2,7 +2,6 @@ package com.ydl.ydlnet.builder.interceptor.log;
import
android.support.annotation.Nullable
;
import
com.ydl.ydlnet.utils.ApiErrorCountUtils
;
import
com.ydl.ydlnet.utils.CharacterHandler
;
import
com.ydl.ydlnet.utils.NetLogUtils
;
import
com.ydl.ydlnet.utils.UrlEncoderUtils
;
...
...
@@ -23,13 +22,14 @@ import okhttp3.Response;
import
okhttp3.ResponseBody
;
import
okio.Buffer
;
import
okio.BufferedSource
;
/**
* Created by haorui on 2019-09-01 .
* Des: 解析框架中的网络请求和响应结果并打印
*/
public
class
RequestLogInterceptor
implements
Interceptor
{
private
DefaultFormatPrinter
mPrinter
=
new
DefaultFormatPrinter
();
private
boolean
mIsDebug
;
private
boolean
mIsDebug
;
private
RequestHandler
mRequestHandler
;
public
RequestLogInterceptor
(
boolean
isDebug
,
RequestHandler
requestHandler
)
{
...
...
@@ -48,10 +48,10 @@ public class RequestLogInterceptor implements Interceptor {
mPrinter
.
printFileRequest
(
request
);
}
if
(
mRequestHandler
!=
null
)
if
(
mRequestHandler
!=
null
)
{
request
=
mRequestHandler
.
onHttpRequestBefore
(
chain
,
request
);
long
t1
=
System
.
nanoTime
()
;
}
long
t1
=
System
.
nanoTime
()
;
Response
originalResponse
;
try
{
originalResponse
=
chain
.
proceed
(
request
);
...
...
@@ -59,7 +59,7 @@ public class RequestLogInterceptor implements Interceptor {
NetLogUtils
.
debugInfo
(
"Http Error: "
+
e
);
throw
e
;
}
long
t2
=
System
.
nanoTime
()
;
long
t2
=
System
.
nanoTime
();
ResponseBody
responseBody
=
originalResponse
.
body
();
...
...
@@ -67,12 +67,12 @@ public class RequestLogInterceptor implements Interceptor {
String
bodyString
=
null
;
if
(
responseBody
!=
null
&&
isParseable
(
responseBody
.
contentType
()))
{
bodyString
=
printResult
(
request
,
originalResponse
);
if
(
mRequestHandler
!=
null
){
if
(
mRequestHandler
!=
null
)
{
mRequestHandler
.
onHttpResultResponse
(
bodyString
,
chain
,
originalResponse
);
}
}
if
(
mIsDebug
)
{
if
(
mIsDebug
)
{
final
List
<
String
>
segmentList
=
request
.
url
().
encodedPathSegments
();
final
String
header
=
originalResponse
.
headers
().
toString
();
final
int
code
=
originalResponse
.
code
();
...
...
@@ -87,21 +87,6 @@ public class RequestLogInterceptor implements Interceptor {
mPrinter
.
printFileResponse
(
TimeUnit
.
NANOSECONDS
.
toMillis
(
t2
-
t1
),
isSuccessful
,
code
,
header
,
segmentList
,
message
,
url
);
}
}
else
{
int
code
=
originalResponse
.
code
();
// 接口返回错误的情况下,埋点告诉服务器原因
if
(
code
!=
200
){
String
params
=
""
;
Request
rq
=
originalResponse
.
request
();
if
(
rq
.
method
().
equals
(
"GET"
)){
params
=
rq
.
url
().
query
();
}
else
if
(
rq
.
method
().
equals
(
"POST"
)){
params
=
parseParams
(
rq
);
}
String
message
=
originalResponse
.
message
();
ApiErrorCountUtils
.
Companion
.
baiDuCount
(
"pardId-ydl_user_error_business"
,
"error_log"
,
params
,
message
);
}
}
return
originalResponse
;
}
...
...
@@ -109,8 +94,8 @@ public class RequestLogInterceptor implements Interceptor {
/**
* 打印响应结果
*
* @param request
{@link Request}
* @param response
{@link Response}
* @param request {@link Request}
* @param response {@link Response}
* @return 解析后的响应结果
* @throws IOException
*/
...
...
ydl-net/src/main/java/com/ydl/ydlnet/utils/ApiErrorCountUtils.kt
deleted
100644 → 0
View file @
c445a1b7
package
com.ydl.ydlnet.utils
import
android.annotation.SuppressLint
import
android.util.Log
import
com.ydl.ydlnet.builder.api.ApiUtil
import
com.ydl.ydlnet.builder.bean.ApiErrorActionBean
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
/**
* Created by Ykai on 2021/3/15.
*/
class
ApiErrorCountUtils
{
companion
object
{
private
const
val
TAG
:
String
=
"ActionCountUtils"
/**
* 接口返回错误埋点调用该方法
* @param partId pardId-ydl_user_error_business
* @param position error_log
* @param sign1 访问接口对应的参数
* @param sign2 接口返回的错误信息
*/
fun
baiDuCount
(
partId
:
String
,
position
:
String
,
sign1
:
String
,
sign2
:
String
)
{
val
actionDataParams
=
ApiErrorActionBean
.
Builder
()
actionDataParams
.
partId
=
partId
actionDataParams
.
position
=
position
actionDataParams
.
sign1
=
sign1
actionDataParams
.
sign2
=
sign2
//请求
request
(
actionDataParams
.
build
())
}
/**
* 传入ActionDataParams参数,访问接口
*/
@SuppressLint
(
"CheckResult"
)
private
fun
request
(
actionDataBean
:
ApiErrorActionBean
)
{
try
{
ApiUtil
.
actionDataCount
(
actionDataBean
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
Log
.
i
(
TAG
,
it
.
data
)
})
{
Log
.
i
(
TAG
,
it
.
toString
())
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
}
}
\ No newline at end of file
ydl-pay/src/main/java/com/yidianling/ydl_pay/common/CommonPayDialog.kt
View file @
6107ffa1
...
...
@@ -14,6 +14,8 @@ import android.widget.LinearLayout
import
com.alipay.sdk.app.PayTask
import
com.tencent.mm.opensdk.modelpay.PayReq
import
com.tencent.mm.opensdk.openapi.WXAPIFactory
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.ydl_pay.R
import
com.yidianling.ydl_pay.common.bean.*
...
...
@@ -42,6 +44,7 @@ class CommonPayDialog : Dialog {
private
lateinit
var
activity
:
Activity
private
var
viewList
=
ArrayList
<
LinearLayout
>()
private
var
couponListBean
:
AllCouponListBean
?
=
null
//选中的优惠券
private
var
selectedCouponBean
:
CommonCouponBean
?
=
null
private
var
payCouponView
:
PayCouponView
?
=
null
...
...
@@ -49,14 +52,17 @@ class CommonPayDialog : Dialog {
private
var
listener
:
OnPayResultListener
?
=
null
private
var
payMoney
:
Float
?
=
null
private
var
thankPayId
:
String
?
=
null
//加载中弹窗
private
var
dialog
:
AlertDialog
?
=
null
private
var
dialogContentView
:
View
?
=
null
/**
* 支付方式
* 1024.微信支付 1025.支付宝支付
*/
private
var
payWay
=
0
/**
* 支付的业务类型
* [TYPE_COURSE] 课程支付
...
...
@@ -72,18 +78,22 @@ class CommonPayDialog : Dialog {
* 课程业务
*/
const
val
TYPE_COURSE
=
1
/**
* 倾诉
*/
const
val
TYPE_CONFIDE
=
2
/**
* 测评
*/
const
val
TYPE_TEST
=
3
/**
* 咨询
*/
const
val
TYPE_CONSULTANT
=
4
/**
* 动态打赏
*/
...
...
@@ -157,11 +167,14 @@ class CommonPayDialog : Dialog {
PAY_WECHAT
->
{
getWeiXinPayOrderId
(
thankPayId
!!
,
if
(
useMoneyType
==
2
)
1
else
0
,
bean
.
merchantType
if
(
useMoneyType
==
2
)
1
else
0
,
bean
.
merchantType
)
}
else
->
{
getAliPayOrderId
(
thankPayId
!!
,
if
(
useMoneyType
==
2
)
1
else
0
)
getAliPayOrderId
(
thankPayId
!!
,
if
(
useMoneyType
==
2
)
1
else
0
)
}
}
}
else
{
...
...
@@ -198,6 +211,7 @@ class CommonPayDialog : Dialog {
private
fun
getOrderInfo
()
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
ToastHelper
.
show
(
activity
,
activity
.
getString
(
R
.
string
.
net_error
))
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"获取下单信息,无网络"
)
// progress.visibility = View.GONE
dismissProgressDialog
()
return
...
...
@@ -216,12 +230,18 @@ class CommonPayDialog : Dialog {
progress_layout
.
visibility
=
View
.
GONE
view_pager
.
visibility
=
View
.
VISIBLE
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"获取下单信息,成功"
)
updateDataOnView
(
it
.
data
)
}
else
{
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
PAY
,
"获取下单信息data=null msg: ${it.msg}"
)
ToastHelper
.
show
(
activity
,
it
.
msg
)
// progress.visibility = View.GONE
}
}
else
{
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
PAY
,
"获取下单信息code!=200 msg: ${it.msg}"
)
ToastHelper
.
show
(
activity
,
it
.
msg
)
// progress.visibility = View.GONE
}
...
...
@@ -229,6 +249,9 @@ class CommonPayDialog : Dialog {
dismissProgressDialog
()
// progress.visibility = View.GONE
ToastHelper
.
show
(
activity
,
e
.
message
!!
)
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
PAY
,
"获取下单信息error e:${e.message}"
)
})
}
...
...
@@ -413,6 +436,10 @@ class CommonPayDialog : Dialog {
}
bean
.
orderType
=
payBusinessType
.
toString
()
bean
.
payType
=
useMoneyType
.
toString
()
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"创建订单,支付方式payWay:$payWay---payMoney:$payMoney----useMoneyType:$useMoneyType"
)
showProgressDialog
()
HttpUtils
.
createOrder
(
bean
)
...
...
@@ -422,6 +449,10 @@ class CommonPayDialog : Dialog {
if
(
it
.
code
==
200
)
{
if
(
it
.
data
!=
null
)
{
if
(
it
.
data
.
payStatus
)
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"创建订单,支付成功"
)
dismissProgressDialog
()
ToastHelper
.
show
(
activity
,
"支付成功"
)
if
(
listener
!=
null
)
{
...
...
@@ -463,6 +494,10 @@ class CommonPayDialog : Dialog {
@SuppressLint
(
"CheckResult"
)
private
fun
getAliPayOrderId
(
payId
:
String
,
isThreePay
:
Int
)
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:无网络"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
activity
.
getString
(
R
.
string
.
net_error
))
}
...
...
@@ -474,14 +509,26 @@ class CommonPayDialog : Dialog {
.
subscribeOn
(
Schedulers
.
io
())
.
subscribe
({
if
(
it
.
data
!=
null
)
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:无网络"
)
aliPay
(
it
.
data
.
aliSign
)
}
else
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:data = null msg: ${it.msg} "
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
it
.
msg
)
}
dismissProgressDialog
()
}
},
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:error message: ${it.message} localizedMessage: ${it.localizedMessage}"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
it
.
localizedMessage
)
}
...
...
@@ -494,6 +541,10 @@ class CommonPayDialog : Dialog {
val
result
=
alipay
.
payV2
(
aliSign
,
true
)
val
payResult
=
PayResult
(
result
)
if
(
"9000"
==
payResult
.
resultStatus
)
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:支付成功"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
"支付成功"
)
listener
!!
.
onSuccesed
()
...
...
@@ -501,6 +552,10 @@ class CommonPayDialog : Dialog {
}
dismissProgressDialog
()
}
else
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:resultStatus != 9000 memo${payResult.memo} "
)
dismissProgressDialog
()
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
payResult
.
memo
)
...
...
@@ -512,27 +567,39 @@ class CommonPayDialog : Dialog {
* 微信支付
*/
@SuppressLint
(
"CheckResult"
)
private
fun
getWeiXinPayOrderId
(
payId
:
String
,
isThreePay
:
Int
,
merchantType
:
String
)
{
private
fun
getWeiXinPayOrderId
(
payId
:
String
,
isThreePay
:
Int
,
merchantType
:
String
)
{
if
(!
NetUtils
.
isConnected
(
activity
))
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付,无网络"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
activity
.
getString
(
R
.
string
.
net_error
))
}
return
}
var
bean
=
WxPayParam
(
payId
,
isThreePay
,
merchantType
)
var
bean
=
WxPayParam
(
payId
,
isThreePay
,
merchantType
)
HttpUtils
.
wxPay
(
bean
)
.
subscribeOn
(
Schedulers
.
io
())
.
subscribe
({
if
(
it
.
data
!=
null
)
{
weixinPay
(
it
.
data
.
option
)
}
else
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付data=null ${it.msg}"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
it
.
msg
)
}
dismissProgressDialog
()
}
},
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付,异常:message:${it.message}----localizedMessage:${it.localizedMessage}"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
it
.
localizedMessage
)
}
...
...
@@ -566,16 +633,28 @@ class CommonPayDialog : Dialog {
.
subscribe
({
dismissProgressDialog
()
if
(
it
.
data
!=
null
&&
it
.
code
==
0
)
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付:成功"
)
activity
.
runOnUiThread
{
listener
!!
.
onSuccesed
()
dismiss
()
}
}
else
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付:失败 msg:${it.msg}"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
it
.
msg
)
}
}
},
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付:ERROR message:${it.message} localizedMessage: ${it.localizedMessage}"
)
activity
.
runOnUiThread
{
ToastHelper
.
show
(
activity
,
it
.
localizedMessage
)
}
...
...
@@ -587,10 +666,18 @@ class CommonPayDialog : Dialog {
fun
onEvent
(
event
:
WeiXinPayStatusEvent
)
{
dismissProgressDialog
()
if
(
event
.
success
)
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付成功"
)
ToastHelper
.
show
(
activity
,
"支付成功"
)
listener
!!
.
onSuccesed
()
dismiss
()
}
else
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付:失败 msg:${event.msg}"
)
if
(!
TextUtils
.
isEmpty
(
event
.
msg
))
{
ToastHelper
.
show
(
activity
,
event
.
msg
!!
)
}
...
...
@@ -673,6 +760,7 @@ class CommonPayDialog : Dialog {
private
lateinit
var
ffrom
:
String
internal
lateinit
var
listener
:
OnPayResultListener
private
var
isTestEnvironment
=
true
/**
* 支付的业务类型[CommonPayDialog.payBusinessType]
*/
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/pay/PayActivity.kt
View file @
6107ffa1
...
...
@@ -18,6 +18,8 @@ import com.ydl.ydlcommon.data.PlatformDataManager
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.ToastUtil
...
...
@@ -65,6 +67,7 @@ class PayActivity : BaseActivity() {
*/
private
const
val
PARAMS
=
"params"
private
const
val
PARAMS_RED
=
"params_redPacket"
/**
* 支付类型
* 1.微信支付 2.支付宝支付
...
...
@@ -91,29 +94,41 @@ class PayActivity : BaseActivity() {
//订单信息数据
private
var
payParams
:
PayParams
?
=
null
//红包列表数据+支付金额
private
var
redPacketPayBean
:
RedPacketPayBean
?
=
null
//入口
private
var
inlet
=
PayParams
.
INLET_NORMAL
//红包列表弹窗
private
var
redPacketPopWindow
:
RedPacketPopWindow
?
=
null
//加载中弹窗
private
var
dialog
:
AlertDialog
?
=
null
private
var
dialogContentView
:
View
?
=
null
//红包id 默认为0
private
var
redPacketId
:
String
?
=
"0"
//使用红包金额
private
var
redPacketMoney
:
Float
=
0f
//使用红包文案
private
var
redPacketMoneyContent
:
String
=
""
//账户余额
private
var
balanceMoney
:
Float
=
0f
//支付金额
private
var
payMoney
:
Float
=
0F
//可使用余额
private
var
canBalanceMoney
=
0F
//支付类型
private
var
payType
=
PAY_ALI
//测评下单数据bean
private
var
testAddOrderBean
:
TestAddOrderBean
?
=
null
...
...
@@ -538,6 +553,7 @@ class PayActivity : BaseActivity() {
* 点击支付
*/
private
fun
onClickPay
()
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"点击支付"
)
when
(
inlet
)
{
INLET_NORMAL
->
{
//正常入口
...
...
@@ -603,6 +619,7 @@ class PayActivity : BaseActivity() {
if
(
null
==
payParams
)
{
return
}
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"进入充值, 0微信充值,其他支付宝充值:$select"
)
HttpUtils
.
recharge
(
RechargeParam
(
payParams
!!
.
needPay
.
toInt
().
toString
()))
.
subscribeOn
(
Schedulers
.
io
())
...
...
@@ -622,6 +639,8 @@ class PayActivity : BaseActivity() {
.
doOnSubscribe
{
showProgressDialog
(
""
)
}
.
doAfterTerminate
{
dismissProgressDialog
()
}
.
subscribe
(
Consumer
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付成功"
)
LogHelper
.
getInstance
().
writeLogSync
(
"支付成功"
)
ToastUtil
.
toastShort
(
"支付成功"
)
var
intent
=
Intent
()
...
...
@@ -633,6 +652,8 @@ class PayActivity : BaseActivity() {
override
fun
accept
(
msg
:
String
)
{
ToastUtil
.
toastShort
(
msg
)
LogHelper
.
getInstance
().
writeLogSync
(
"支付失败$msg"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付失败$msg"
)
}
})
...
...
@@ -644,13 +665,19 @@ class PayActivity : BaseActivity() {
when
(
inlet
)
{
INLET_NORMAL
->
{
//正常入口
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付 正常入口"
)
balancePayById
(
payParams
!!
.
payId
)
}
INLET_TEST
->
{
//测评入口
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付 测评入口"
)
balancePayById
(
testAddOrderBean
!!
.
payId
!!
)
}
else
->
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付"
)
balancePayById
(
payParams
!!
.
payId
)
}
}
...
...
@@ -673,6 +700,7 @@ class PayActivity : BaseActivity() {
.
doAfterTerminate
{
dismissProgressDialog
()
}
.
subscribe
(
Consumer
{
LogHelper
.
getInstance
().
writeLogSync
(
"支付成功"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付:支付成功"
)
ToastUtil
.
toastShort
(
"支付成功"
)
setResult
(
Activity
.
RESULT_OK
)
finish
()
...
...
@@ -680,6 +708,8 @@ class PayActivity : BaseActivity() {
override
fun
accept
(
msg
:
String
)
{
ToastUtil
.
toastShort
(
msg
)
LogHelper
.
getInstance
().
writeLogSync
(
"支付失败:$msg"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"余额支付:支付失败:$msg"
)
}
})
}
...
...
@@ -689,6 +719,7 @@ class PayActivity : BaseActivity() {
*/
@SuppressLint
(
"CheckResult"
)
private
fun
appPay
()
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付 0 其他支付宝支付 select:${select}"
)
Observable
.
just
(
select
)
.
subscribeOn
(
Schedulers
.
io
())
...
...
@@ -706,6 +737,7 @@ class PayActivity : BaseActivity() {
.
doOnSubscribe
{
showProgressDialog
(
""
)
}
.
doAfterTerminate
{
dismissProgressDialog
()
}
.
subscribe
(
Consumer
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付成功"
)
LogHelper
.
getInstance
().
writeLogSync
(
"支付成功"
)
setResult
(
Activity
.
RESULT_OK
)
finish
()
...
...
@@ -713,6 +745,8 @@ class PayActivity : BaseActivity() {
override
fun
accept
(
msg
:
String
)
{
ToastUtil
.
toastShort
(
msg
)
LogHelper
.
getInstance
().
writeLogSync
(
"支付失败:$msg"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付失败:$msg"
)
}
})
}
...
...
@@ -724,18 +758,21 @@ class PayActivity : BaseActivity() {
return
when
(
inlet
)
{
INLET_NORMAL
->
{
//正常入口
wxPayById
(
payParams
!!
.
payId
,
payParams
?.
merchantType
.
toString
())
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付:正常入口"
)
wxPayById
(
payParams
!!
.
payId
,
payParams
?.
merchantType
.
toString
())
}
INLET_TEST
->
{
//测评入口
if
(
null
!=
testAddOrderBean
&&
!
TextUtils
.
isEmpty
(
testAddOrderBean
!!
.
payId
!!
))
{
wxPayById
(
testAddOrderBean
!!
.
payId
!!
,
payParams
?.
merchantType
.
toString
())
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付:测评入口"
)
wxPayById
(
testAddOrderBean
!!
.
payId
!!
,
payParams
?.
merchantType
.
toString
())
}
else
{
null
}
}
else
->
{
wxPayById
(
payParams
!!
.
payId
,
payParams
?.
merchantType
.
toString
())
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付"
)
wxPayById
(
payParams
!!
.
payId
,
payParams
?.
merchantType
.
toString
())
}
}
}
...
...
@@ -744,8 +781,8 @@ class PayActivity : BaseActivity() {
* 微信支付
* @param payId 支付id
*/
private
fun
wxPayById
(
payId
:
String
,
merchantType
:
String
):
Observable
<
PayStatus
>
{
val
bean
=
WxPayParam
(
payId
,
1
,
merchantType
)
private
fun
wxPayById
(
payId
:
String
,
merchantType
:
String
):
Observable
<
PayStatus
>
{
val
bean
=
WxPayParam
(
payId
,
1
,
merchantType
)
return
HttpUtils
.
wxPay
(
bean
)
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
@@ -760,17 +797,23 @@ class PayActivity : BaseActivity() {
return
when
(
inlet
)
{
INLET_NORMAL
->
{
//正常入口
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:正常入口"
)
aliPayById
(
payParams
!!
.
payId
)
}
INLET_TEST
->
{
//测评入口
if
(
null
!=
testAddOrderBean
&&
!
TextUtils
.
isEmpty
(
testAddOrderBean
!!
.
payId
!!
))
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付:测评入口"
)
aliPayById
(
testAddOrderBean
!!
.
payId
!!
)
}
else
{
null
}
}
else
->
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付"
)
aliPayById
(
payParams
!!
.
payId
)
}
}
...
...
@@ -811,7 +854,8 @@ class PayActivity : BaseActivity() {
.
create
()
}
if
(
dialogContentView
==
null
)
{
dialogContentView
=
LayoutInflater
.
from
(
this
).
inflate
(
R
.
layout
.
pay_fragment_loading_dialog
,
null
)
dialogContentView
=
LayoutInflater
.
from
(
this
).
inflate
(
R
.
layout
.
pay_fragment_loading_dialog
,
null
)
dialogContentView
?.
tvMsg
?.
visibility
=
View
.
GONE
}
dialog
?.
show
()
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/pay/RxPay.kt
View file @
6107ffa1
...
...
@@ -3,14 +3,16 @@ package com.yidianling.ydl_pay.pay
import
android.app.Activity
import
android.content.Context
import
com.alipay.sdk.app.PayTask
import
com.yidianling.ydl_pay.pay.bean.PayStatus
import
com.tencent.mm.opensdk.constants.Build
import
com.tencent.mm.opensdk.modelpay.PayReq
import
com.tencent.mm.opensdk.openapi.WXAPIFactory
import
com.yidianling.ydl_pay.pay.bean.WXPayEvent
import
com.ydl.ydlcommon.data.http.CustomThrowable
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.yidianling.ydl_pay.common.bean.CommonWXPayBean
import
com.yidianling.ydl_pay.common.bean.PayResult
import
com.yidianling.ydl_pay.pay.bean.PayStatus
import
com.yidianling.ydl_pay.pay.bean.WXPayEvent
import
de.greenrobot.event.EventBus
import
io.reactivex.Emitter
import
io.reactivex.Observable
...
...
@@ -59,8 +61,18 @@ object RxPay {
val
result
=
alipay
.
payV2
(
aliSign
,
true
)
val
payResult
=
PayResult
(
result
)
when
{
"9000"
==
payResult
.
resultStatus
->
it
.
onNext
(
PayStatus
(
true
))
else
->
it
.
onError
(
CustomThrowable
(
payResult
.
memo
))
"9000"
==
payResult
.
resultStatus
->
{
it
.
onNext
(
PayStatus
(
true
))
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付成功"
)
}
else
->
{
it
.
onError
(
CustomThrowable
(
payResult
.
memo
))
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付失败 memo:${payResult.memo}"
)
}
}
it
.
onComplete
()
}
...
...
ydl-pay/src/main/java/com/yidianling/ydl_pay/pay/payDialog/PayDialog.kt
View file @
6107ffa1
...
...
@@ -9,6 +9,8 @@ import android.support.v7.app.AlertDialog
import
android.view.*
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.utils.StringUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.ydl_pay.R
...
...
@@ -160,6 +162,7 @@ class PayDialog : Dialog {
if
(
data
?.
payId
==
null
)
{
ToastHelper
.
show
(
"支付id有误,请返回重试"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付id有误,请返回重试"
)
return
}
...
...
@@ -187,9 +190,12 @@ class PayDialog : Dialog {
this
.
callBack
?.
onSuccess
()
}
LogHelper
.
getInstance
().
writeLogSync
(
"支付成功"
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付成功"
)
this
.
callBack
?.
onSuccess
()
dismiss
()
},
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付失败:${it.message}"
)
ToastHelper
.
show
(
it
.
message
?:
"支付失败"
)
LogHelper
.
getInstance
().
writeLogSync
(
"支付失败:${it.message}"
)
})
...
...
@@ -200,6 +206,7 @@ class PayDialog : Dialog {
* @param payId 支付id
*/
private
fun
wxPayById
(
payId
:
String
,
merchantType
:
String
):
Observable
<
PayStatus
>
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"微信支付"
)
val
bean
=
WxPayParam
(
payId
,
1
,
merchantType
)
return
HttpUtils
.
wxPay
(
bean
)
.
compose
(
RxUtils
.
resultData
())
...
...
@@ -212,6 +219,8 @@ class PayDialog : Dialog {
* @param payId 支付Id
*/
private
fun
aliPayById
(
payId
:
String
):
Observable
<
PayStatus
>
{
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
PAY
,
"支付宝支付"
)
var
bean
=
AliPayParam
(
payId
,
1
)
return
HttpUtils
.
getAliPayOrderId
(
bean
)
.
compose
(
RxUtils
.
resultData
())
...
...
ydl-platform/build.gradle
View file @
6107ffa1
...
...
@@ -72,10 +72,11 @@ dependencies {
testImplementation
'junit:junit:4.12'
androidTestImplementation
'com.android.support.test:runner:1.0.2'
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
//====================YDL Repository====================
// api rootProject.ext.dependencies["ydl-pushagent"]
// api rootProject.ext.dependencies["ydl-hnet"]
api
(
rootProject
.
ext
.
dependencies
[
"ydl-notracepoint"
])
{
api
(
rootProject
.
ext
.
dependencies
[
"ydl-notracepoint"
])
{
transitive
=
true
exclude
group:
'com.google.code.gson'
,
module:
'gson'
exclude
group:
'com.squareup.okhttp3'
,
module:
'okhttp3'
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/HttpConfig.kt
View file @
6107ffa1
...
...
@@ -16,9 +16,13 @@ import com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.data.http.api.ApiRequestUtil
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlnet.builder.config.OkHttpConfig
import
com.ydl.ydlnet.builder.factory.ApiFactory
import
com.ydl.ydlnet.builder.interceptor.log.RequestHandler
import
com.ydl.ydlnet.builder.interceptor.log.RequestLogInterceptor
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxAppTool
import
com.yidianling.common.tools.RxDeviceTool
...
...
@@ -118,6 +122,7 @@ class HttpConfig {
var
ENCRYPTION_APP_KEY
=
""
// 接口加密appKey
var
ENCRYPTION_APP_SECRET
=
""
// 接口加密appSecret
var
isEncryption
=
false
var
appDebug
:
Boolean
=
false
fun
getInstance
():
HttpConfig
{
return
Holder
.
INSTANCE
...
...
@@ -127,7 +132,7 @@ class HttpConfig {
fun
createOkHttp
():
OkHttpClient
{
val
globalConfig
=
BaseApp
.
instance
.
getGlobalConfig
()
val
context
=
BaseApp
.
getApp
()
val
appDebug
=
globalConfig
.
appDebug
appDebug
=
globalConfig
.
appDebug
val
appName
=
globalConfig
.
appName
//获取证书
...
...
@@ -144,7 +149,8 @@ class HttpConfig {
.
setInterceptor
(
commonParams
(),
requestHead
(
appName
),
addEncryptionHeaderParamsInterceptor
()
addEncryptionHeaderParamsInterceptor
(),
responseErrorInterceptor
()
)
.
setRequestHandler
(
getRequestHandler
())
.
setReadTimeout
(
15
)
...
...
@@ -170,7 +176,7 @@ class HttpConfig {
path
+=
it
.
request
().
url
().
encodedPath
().
substring
(
5
)
}
else
->
{
path
+
it
.
request
().
url
().
encodedPath
()
path
+
it
.
request
().
url
().
encodedPath
()
}
}
val
sign
=
EncryptionParams
.
getSign
(
path
,
timestamp
)
...
...
@@ -180,12 +186,39 @@ class HttpConfig {
.
addHeader
(
"timestamp"
,
timestamp
)
.
build
()
it
.
proceed
(
request
)
}
else
{
}
else
{
it
.
proceed
(
it
.
request
())
}
}
}
/**
* 接口返回错误日志埋点
*/
private
fun
responseErrorInterceptor
():
Interceptor
{
return
Interceptor
{
val
request
:
Request
=
it
.
request
()
val
originalResponse
:
Response
=
it
.
proceed
(
request
)
if
(!
appDebug
){
val
code
=
originalResponse
.
code
()
// 接口返回错误的情况下,埋点告诉服务器原因
if
(
code
!=
200
)
{
var
params
=
""
if
(
request
.
method
()
==
"GET"
)
{
params
=
request
.
url
().
query
().
toString
()
}
else
if
(
request
.
method
()
==
"POST"
)
{
params
=
RequestLogInterceptor
.
parseParams
(
request
)
}
val
message
=
originalResponse
.
message
()
val
api
=
request
.
url
().
encodedPath
()
ActionCountUtils
.
baiDuCount
(
"ydl_user_error_business"
,
"error_log"
,
api
,
params
,
message
)
AliYunRichLogsHelper
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
API
,
"error_log---api:$api---params:$params ---- message:$message"
)
}
}
originalResponse
}
}
private
fun
getRequestHandler
():
RequestHandler
{
return
object
:
RequestHandler
{
override
fun
onHttpResultResponse
(
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/ActionCountUtils.kt
View file @
6107ffa1
...
...
@@ -134,10 +134,10 @@ class ActionCountUtils {
actionDataParams
.
appVersion
(
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
()))
actionDataParams
.
appId
(
appId
)
actionDataParams
.
api
(
api
)
actionDataParams
.
manufacturer
(
android
.
os
.
Build
.
BRAND
.
trim
().
toUpperCase
())
actionDataParams
.
model
(
android
.
os
.
Build
.
MODEL
)
actionDataParams
.
manufacturer
(
Build
.
BRAND
.
trim
().
toUpperCase
())
actionDataParams
.
model
(
Build
.
MODEL
)
actionDataParams
.
os
(
BIConstants
.
OS
)
actionDataParams
.
osVersion
(
android
.
os
.
Build
.
VERSION
.
RELEASE
)
actionDataParams
.
osVersion
(
Build
.
VERSION
.
RELEASE
)
actionDataParams
.
wifi
(
if
(
isWifi
())
0
else
1
)
var
deviceId
=
""
/*
...
...
@@ -243,10 +243,10 @@ class ActionCountUtils {
actionDataParams
.
appVersion
(
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
()))
actionDataParams
.
appId
(
appId
)
actionDataParams
.
api
(
api
)
actionDataParams
.
manufacturer
(
android
.
os
.
Build
.
BRAND
.
trim
().
toUpperCase
())
actionDataParams
.
model
(
android
.
os
.
Build
.
MODEL
)
actionDataParams
.
manufacturer
(
Build
.
BRAND
.
trim
().
toUpperCase
())
actionDataParams
.
model
(
Build
.
MODEL
)
actionDataParams
.
os
(
BIConstants
.
OS
)
actionDataParams
.
osVersion
(
android
.
os
.
Build
.
VERSION
.
RELEASE
)
actionDataParams
.
osVersion
(
Build
.
VERSION
.
RELEASE
)
actionDataParams
.
wifi
(
if
(
isWifi
())
0
else
1
)
actionDataParams
.
screenWidth
(
RxDeviceTool
.
getScreenWidth
(
RxTool
.
getContext
()
!!
))
actionDataParams
.
screenHeight
(
RxDeviceTool
.
getScreenHeight
(
RxTool
.
getContext
()
!!
))
...
...
@@ -287,7 +287,7 @@ class ActionCountUtils {
baiduActionDataParams
.
androidId
(
DeviceTool
.
getAndroidID
())
//MD5加密的androidId
baiduActionDataParams
.
ip
(
""
)
baiduActionDataParams
.
ipv6
(
""
)
//给服务端传IPV6地址DeviceTool.getLocalIpV6()
baiduActionDataParams
.
tp
(
android
.
os
.
Build
.
MODEL
)
baiduActionDataParams
.
tp
(
Build
.
MODEL
)
baiduActionDataParams
.
network
(
DeviceTool
.
getNetworkState
(
RxTool
.
getContext
()))
baiduActionDataParams
.
convertParam
(
""
)
baiduActionDataParams
.
uid
(
uid
)
...
...
@@ -316,8 +316,52 @@ class ActionCountUtils {
}
/**
* 接口返回错误埋点调用该方法
* @param partId pardId-ydl_user_error_business
* @param position error_log
* @param sign1 访问接口对应的参数
* @param sign2 接口返回的错误信息
*/
fun
baiDuCount
(
partId
:
String
,
position
:
String
,
api
:
String
,
sign1
:
String
,
sign2
:
String
)
{
val
actionDataParams
=
ActionDataBean
.
Builder
()
actionDataParams
.
partId
=
partId
actionDataParams
.
position
=
position
actionDataParams
.
sign1
=
sign1
actionDataParams
.
sign2
=
sign2
actionDataParams
.
api
=
api
actionDataParams
.
appVersion
(
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
()))
val
deviceId
=
if
(
Build
.
VERSION
.
SDK_INT
<=
Build
.
VERSION_CODES
.
P
)
{
val
topTaskActivity
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
//获取imei
Utils
.
getIMEI
(
topTaskActivity
)
}
else
{
//android Q及以上取oaid
DeviceIDHelper
.
getInstance
().
deviceId
}
actionDataParams
.
deviceId
=
deviceId
actionDataParams
.
time
(
System
.
currentTimeMillis
())
actionDataParams
.
appId
(
appId
)
actionDataParams
.
manufacturer
(
Build
.
BRAND
.
trim
().
toUpperCase
())
actionDataParams
.
model
(
Build
.
MODEL
)
actionDataParams
.
os
(
BIConstants
.
OS
)
actionDataParams
.
osVersion
(
Build
.
VERSION
.
RELEASE
)
actionDataParams
.
wifi
(
if
(
isWifi
())
0
else
1
)
actionDataParams
.
uid
=
ModularServiceManager
.
getPlatformUserService
()
!!
.
getUser
()
?.
userId
//请求
request
(
actionDataParams
.
build
())
}
/**
* 传入ActionDataParams参数,访问接口
*/
@SuppressLint
(
"CheckResult"
)
fun
request
(
actionDataBean
:
ActionDataBean
)
{
try
{
ApiRequestUtil
.
actionDataCount
(
actionDataBean
)
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/AliYunLogConfig.kt
0 → 100644
View file @
6107ffa1
package
com.ydl.ydlcommon.utils.log
object
AliYunLogConfig
{
/**接口*/
const
val
API
=
"API"
/**声网*/
const
val
AGORA
=
"Agora"
/**登录*/
const
val
LOGIN
=
"Login"
/**WebView*/
const
val
WEB
=
"Web"
/**支付*/
const
val
PAY
=
"Pay"
/**云信*/
const
val
YUNXIN
=
"YunXin"
/**RTM*/
const
val
RTM
=
"Rtm"
/**网络状态*/
const
val
NETSTATUS
=
"NetStatus"
/**其他*/
const
val
OTHER
=
"Other"
}
\ No newline at end of file
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/AliYunRichLogsHelper.kt
0 → 100644
View file @
6107ffa1
package
com.ydl.ydlcommon.utils.log
import
com.aliyun.sls.android.producer.*
import
com.ydl.ydlcommon.base.BaseApp.Companion.getApp
import
com.ydl.ydlcommon.data.PlatformDataManager.getRam
import
com.ydl.ydlcommon.modular.ModularServiceManager.getPlatformUserService
import
com.yidianling.common.tools.RxAppTool
import
com.yidianling.common.tools.RxDeviceTool
/**
* @author liupeng
*
* 阿里云埋点,携带基本参数,方便后续排查问题定位
* */
class
AliYunRichLogsHelper
{
companion
object
{
var
mConfig
:
LogProducerConfig
?
=
null
var
mClient
:
LogProducerClient
?
=
null
fun
getInstance
():
AliYunRichLogsHelper
{
return
Holder
.
INSTANCE
}
}
constructor
()
{
val
endpoint
=
"cn-hangzhou.log.aliyuncs.com"
val
project
=
"ydl-app-log"
val
logstore
=
"ydl-app-log"
val
accesskeyid
=
"LTAI5tH6WGqWUqzo4u5GfrCS"
val
accesskeysecret
=
"uzccm79mr9d4rIsABu3xwfbdUdaeWT"
try
{
mConfig
=
LogProducerConfig
(
endpoint
,
project
,
logstore
,
accesskeyid
,
accesskeysecret
)
mClient
=
LogProducerClient
(
mConfig
)
}
catch
(
e
:
LogProducerException
)
{
e
.
printStackTrace
()
}
}
private
object
Holder
{
val
INSTANCE
=
AliYunRichLogsHelper
()
}
/**
*
* @param key AliYunLogConfig 接口、登录、声网、WebView、支付、其他
* @param value 具体的状态值
* */
fun
sendRichLog
(
key
:
String
,
value
:
String
)
{
val
log
=
Log
()
val
userInfo
=
getPlatformUserService
()
!!
.
getUser
()
log
.
putContent
(
key
,
value
)
log
.
putContent
(
"ffrom"
,
getRam
().
getChannelName
())
log
.
putContent
(
"isFromApp"
,
"1"
)
log
.
putContent
(
"osBuild"
,
RxDeviceTool
.
getBuildBrandModel
())
log
.
putContent
(
RxDeviceTool
.
getSDKVersionName
(),
RxAppTool
.
getAppVersionName
(
getApp
()))
log
.
putContent
(
"version"
,
RxAppTool
.
getAppVersionName
(
getApp
()))
if
(
null
!=
userInfo
)
{
log
.
putContent
(
"uid"
,
userInfo
.
userId
)
log
.
putContent
(
"accessToken"
,
userInfo
.
token
)
}
if
(
mClient
!=
null
)
{
val
res
:
LogProducerResult
=
mClient
!!
.
addLog
(
log
)
}
}
/**
*
* @param key AliYunLogConfig 接口、登录、声网、WebView、支付、其他
* @param value 具体的状态值
* */
fun
sendLog
(
key
:
String
,
value
:
String
)
{
val
log
=
Log
()
log
.
putContent
(
key
,
value
)
if
(
mClient
!=
null
)
{
val
res
:
LogProducerResult
=
mClient
!!
.
addLog
(
log
)
}
}
}
\ No newline at end of file
ydl-webview/src/main/java/com/ydl/webview/NewH5Activity.java
View file @
6107ffa1
...
...
@@ -48,6 +48,8 @@ import com.ydl.ydlcommon.utils.LogUtil;
import
com.ydl.ydlcommon.utils.NetWorkSpeedUtils
;
import
com.ydl.ydlcommon.utils.StatusBarUtils
;
import
com.ydl.ydlcommon.utils.URLUtils
;
import
com.ydl.ydlcommon.utils.log.AliYunLogConfig
;
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
;
import
com.ydl.ydlcommon.view.TitleBar
;
import
com.ydl.ydlcommon.view.dialog.YDLCommonDialog
;
import
com.ydl.ydlcommon.view.dialog.YDLShareDialog
;
...
...
@@ -81,24 +83,21 @@ import static android.view.View.VISIBLE;
/**
* 通用h5显示页面
* <p>
* 跳转此h5页面,请使用唯一参数 H5ParamsBaseActivity
*/
@Route
(
path
=
"/new_h5/h5"
)
public
class
NewH5Activity
extends
BaseActivity
implements
PtrHandler
{
public
static
final
String
PARAMS
=
"h5Params"
;
/**
* 路由传递过来的参数
*/
/*** 路由传递过来的参数*/
public
static
final
String
ROUTER_PARAMS
=
"routerParam"
;
/
/下单选择时间请求吗
/
***下单选择时间请求吗*/
public
static
final
int
ORDER_TIME_REQUEST_CODE
=
110
;
/
/启动类型
private
int
startType
=
0
;
//0正常模式 1从下至上打开页面
/
/右侧按钮文字
/
***启动类型 0正常模式 1从下至上打开页面*/
private
int
startType
=
0
;
/
***右侧按钮文字*/
private
String
rightText
=
""
;
protected
TitleBar
tb_title
;
...
...
@@ -107,10 +106,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
protected
ProgressWebView
wv_content
;
protected
PtrFrameLayout
store_house_ptr_frame
;
protected
SafeTipView
safeTipView
;
/
/接收参数
/
***接收参数*/
private
H5Params
h5Params
;
protected
String
purl
;
//分享到发布需要的url
/***分享到发布需要的url*/
protected
String
purl
;
protected
String
shareUrl
;
protected
String
shareTitle
;
protected
String
shareDesc
;
...
...
@@ -121,11 +120,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
protected
ValueCallback
<
Uri
>
uploadMessage
;
protected
ValueCallback
<
Uri
[]>
uploadMessageAboveL
;
private
boolean
shouldClearHistory
=
false
;
/
/要分享出去的url
/
***要分享出去的url*/
private
String
shareToUrl
;
/**
* 拍照/选择文件请求码
*/
/*** 拍照/选择文件请求码*/
protected
final
static
int
FILE_CHOOSER_RESULT_CODE
=
10000
;
protected
IJavascriptHandler
jtoJHandle
;
...
...
@@ -133,37 +130,46 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
private
LinearLayout
llWebView
;
private
long
loadStartTime
=
0
;
//加载url开始的时间
private
long
initStartTime
=
0
;
//webview初始化开始的时间
private
long
initDuration
=
0
;
//webview初始化耗时
private
long
loadDuration
=
0
;
//加载url耗时
/***加载url开始的时间*/
private
long
loadStartTime
=
0
;
/***webview初始化开始的时间*/
private
long
initStartTime
=
0
;
/***webview初始化耗时*/
private
long
initDuration
=
0
;
/***加载url耗时*/
private
long
loadDuration
=
0
;
private
NetWorkSpeedUtils
workSpeedUtils
;
private
boolean
hasLoad
=
false
;
//部分机型中webview加载完成回调方法会调用多次,增加本地标识符
//是否跳转到动态
/***部分机型中webview加载完成回调方法会调用多次,增加本地标识符*/
private
boolean
hasLoad
=
false
;
/***是否跳转到动态*/
private
boolean
isToTrend
=
false
;
private
LogoLoadingView
v_loading
;
private
boolean
isTimeOut
=
false
;
//是否超时
private
Handler
mTimeOutHandler
=
null
;
//超时处理handler
private
int
timeOutLong
=
15000
;
//超时限定时间
private
int
TIME_OUT_TYPE
=
0x1000
;
//超时消息
// 设置微信 H5 支付调用 loadDataWithBaseURL 的标记位,避免循环调用,
// 再次进入微信 H5 支付流程时记得重置此标记位状态
/***是否超时*/
private
boolean
isTimeOut
=
false
;
/***超时处理handler*/
private
Handler
mTimeOutHandler
=
null
;
/***超时限定时间*/
private
int
timeOutLong
=
15000
;
/***超时消息*/
private
int
TIME_OUT_TYPE
=
0x1000
;
/**
* 设置微信 H5 支付调用 loadDataWithBaseURL 的标记位,避免循环调用,
* 再次进入微信 H5 支付流程时记得重置此标记位状态
*/
boolean
firstVisitWXH5PayUrl
=
true
;
private
String
WX_H5_PAY_HOST
=
"http://testnewm.ydl.com"
;
/**
* 当前页面类型
*/
/*** 当前页面类型*/
private
int
selfPageType
=
-
1
;
private
int
TEST_QUESTIONS_PAGE_TYPE
=
1000001
;
//测评题页面
/***测评题页面*/
private
int
TEST_QUESTIONS_PAGE_TYPE
=
1000001
;
private
YDLCommonDialog
testQuestionsPageReturnDialog
=
null
;
private
boolean
isTitleBarCover
=
false
;
// 标题栏是否被覆盖隐藏
private
static
IWebRightClickListener
webRightClickListener
=
null
;
/*** 标题栏是否被覆盖隐藏*/
private
boolean
isTitleBarCover
=
false
;
private
static
IWebRightClickListener
webRightClickListener
=
null
;
/**
* 设置当前h5页面类型
*
...
...
@@ -202,7 +208,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
context
.
startActivity
(
intent
);
}
public
static
void
start
(
Context
context
,
H5Params
h5Params1
,
String
rightText
,
IWebRightClickListener
listener
)
{
public
static
void
start
(
Context
context
,
H5Params
h5Params1
,
String
rightText
,
IWebRightClickListener
listener
)
{
if
(
null
==
context
)
{
return
;
}
...
...
@@ -238,9 +244,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
intent
.
putExtra
(
PARAMS
,
h5Params1
);
context
.
startActivity
(
intent
);
// if (startType == 1) {
// context.overridePendingTransition(R.anim.activity_open_up, 0);
// }
}
public
static
void
startForResult
(
Activity
context
,
H5Params
h5Params1
,
int
requestCode
)
{
...
...
@@ -299,8 +302,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
* 15秒后发送一条消息通知展示无网络页面
*/
private
void
sendNetLossMessage
()
{
if
(
null
!=
mTimeOutHandler
)
if
(
null
!=
mTimeOutHandler
)
{
mTimeOutHandler
.
sendEmptyMessageDelayed
(
TIME_OUT_TYPE
,
timeOutLong
);
}
}
/**
...
...
@@ -372,6 +376,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
rightText
=
getIntent
().
getStringExtra
(
"rightText"
);
if
(
h5Params
==
null
)
{
ToastUtil
.
toastShort
(
"参数错误"
);
AliYunRichLogsHelper
.
Companion
.
getInstance
().
sendRichLog
(
AliYunLogConfig
.
WEB
,
"参数错误 Params == null"
);
finish
();
return
;
}
...
...
@@ -387,7 +392,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
tb_title
.
setOnRightTextClick
((
view
,
isActive
)
->
{
finish
();
});
}
else
if
(!
TextUtils
.
isEmpty
(
rightText
)&&
webRightClickListener
!=
null
)
{
}
else
if
(!
TextUtils
.
isEmpty
(
rightText
)
&&
webRightClickListener
!=
null
)
{
tb_title
.
setmRightText
(
rightText
);
tb_title
.
setOnRightTextClick
((
view
,
isActive
)
->
{
webRightClickListener
.
onCLick
(
view
);
...
...
@@ -438,7 +443,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if
(
null
!=
uri
&&
!
TextUtils
.
isEmpty
(
host
)
&&
host
.
contains
(
"nodeapi.ydl"
))
{
//马亮的需求,在nodeapi.ydl.com 地址后面拼上公共参数,用于判断是否为app
String
uriAppendSuffix
=
jtoJHandle
.
getUriAppendSuffix
();
resultUrl
=
WebUrlParamsUtils
.
getSuffix
(
url
,
uriAppendSuffix
);
resultUrl
=
WebUrlParamsUtils
.
getSuffix
(
url
,
uriAppendSuffix
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
@@ -479,7 +484,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
hideJavaTitleBar
();
}
}
catch
(
NumberFormatException
e
)
{
e
.
printStackTrace
();
}
}
}
...
...
@@ -616,15 +621,18 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
tb_title
.
setImage
(
getResources
().
getDrawable
(
R
.
drawable
.
web_common_back
));
WebSettings
setting
=
wv_content
.
getSettings
();
setting
.
setJavaScriptEnabled
(
true
);
//支持js
setting
.
setDefaultTextEncodingName
(
"GBK"
);
//设置字符编码
//支持js
setting
.
setJavaScriptEnabled
(
true
);
//设置字符编码
setting
.
setDefaultTextEncodingName
(
"GBK"
);
setting
.
setDomStorageEnabled
(
true
);
String
appCachePath
=
getApplicationContext
().
getCacheDir
().
getAbsolutePath
();
setting
.
setAppCachePath
(
appCachePath
);
setting
.
setAllowFileAccessFromFileURLs
(
true
);
setting
.
setAppCacheEnabled
(
true
);
setting
.
setAllowFileAccess
(
true
);
setting
.
setBlockNetworkImage
(
false
);
// 解决图片不显示
// 解决图片不显示
setting
.
setBlockNetworkImage
(
false
);
//设置自动缩放 degmi的测试题不能设置 不然界面展示有问题
if
(
h5Params
.
getUrl
().
contains
(
"l.yidianling.com"
)
||
h5Params
.
getUrl
().
contains
(
"l.ydl.com"
))
{
//l.yidianling.com 这个域名 只有云凤蝶使用 这个平台需要设置自适应 不然显示有问题
...
...
@@ -641,8 +649,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
WebModularServiceUtils
.
Companion
.
startMain
(
NewH5Activity
.
this
);
finish
();
}
else
{
}
else
{
if
(
ActivityManager
.
Companion
.
getInstance
().
getActivitys
().
size
()
==
1
)
{
WebModularServiceUtils
.
Companion
.
startMain
(
NewH5Activity
.
this
);
}
...
...
@@ -666,8 +673,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if
(
newProgress
==
100
)
{
wv_content
.
getProgressbar
().
setVisibility
(
GONE
);
}
else
{
if
(
wv_content
.
getProgressbar
().
getVisibility
()
==
GONE
)
if
(
wv_content
.
getProgressbar
().
getVisibility
()
==
GONE
)
{
wv_content
.
getProgressbar
().
setVisibility
(
VISIBLE
);
}
wv_content
.
getProgressbar
().
setProgress
(
newProgress
);
}
super
.
onProgressChanged
(
view
,
newProgress
);
...
...
@@ -682,6 +690,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
safeTipView
.
updateVisibility
();
safeTipView
.
setLocation
(
"orderList"
);
}
if
(
title
.
contains
(
"404"
)
||
title
.
contains
(
"500"
)
||
title
.
contains
(
"Error"
))
{
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
WEB
,
"页面错误 : url:"
+
view
.
getUrl
()
+
"title:"
+
title
);
}
}
// For Android < 3.0
...
...
@@ -697,12 +709,14 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
}
//For Android >= 4.1
@Override
public
void
openFileChooser
(
ValueCallback
<
Uri
>
valueCallback
,
String
acceptType
,
String
capture
)
{
uploadMessage
=
valueCallback
;
openImageChooserActivity
();
}
// For Android >= 5.0
@Override
public
boolean
onShowFileChooser
(
WebView
webView
,
ValueCallback
<
Uri
[]>
filePathCallback
,
WebChromeClient
.
FileChooserParams
fileChooserParams
)
{
uploadMessageAboveL
=
filePathCallback
;
openImageChooserActivity
();
...
...
@@ -721,15 +735,13 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
return
overridePayUrl
;
}
if
(!
TextUtils
.
isEmpty
(
url
)
&&
url
.
endsWith
(
".apk"
))
{
if
(!
TextUtils
.
isEmpty
(
url
)
&&
url
.
endsWith
(
".apk"
))
{
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
url
));
startActivity
(
intent
);
}
else
if
(!
TextUtils
.
isEmpty
(
url
)
&&
url
.
startsWith
(
"http"
))
{
loadUrl
(
setUrlHeightParams
(
url
));
}
else
{
if
(
YDLRouterManager
.
Companion
.
router
(
url
))
{
}
else
{
if
(!
YDLRouterManager
.
Companion
.
router
(
url
))
{
loadUrl
(
setUrlHeightParams
(
url
));
}
}
...
...
@@ -772,6 +784,8 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
@Override
public
void
onReceivedError
(
WebView
view
,
int
errorCode
,
String
description
,
String
failingUrl
)
{
super
.
onReceivedError
(
view
,
errorCode
,
description
,
failingUrl
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
WEB
,
"onReceivedError---- errorCode: "
+
errorCode
+
"----failingUrl:"
+
failingUrl
);
loadFailed
=
true
;
tb_title
.
setTitle
(
"加载中"
);
if
(
wv_content
!=
null
)
{
...
...
@@ -803,20 +817,16 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
return
overridePayUrl
;
}
if
(!
TextUtils
.
isEmpty
(
url
)
&&
url
.
endsWith
(
".apk"
))
{
if
(!
TextUtils
.
isEmpty
(
url
)
&&
url
.
endsWith
(
".apk"
))
{
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
url
));
startActivity
(
intent
);
}
else
if
(!
TextUtils
.
isEmpty
(
url
)
&&
url
.
startsWith
(
"http"
))
{
loadUrl
(
setUrlHeightParams
(
url
));
}
else
{
if
(
YDLRouterManager
.
Companion
.
router
(
url
))
{
}
else
{
if
(!
YDLRouterManager
.
Companion
.
router
(
url
))
{
loadUrl
(
setUrlHeightParams
(
url
));
}
}
return
true
;
}
...
...
@@ -844,8 +854,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
tb_title
.
setImageListener
(
v
->
{
if
(
wv_content
.
canGoBack
())
{
wv_content
.
goBack
();
}
else
{
}
else
{
finish
();
}
});
...
...
@@ -859,8 +868,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if
(
h5Params
.
getShowUrlTitle
())
{
WebModularServiceUtils
.
Companion
.
startMain
(
NewH5Activity
.
this
);
finish
();
}
else
{
}
else
{
if
(
ActivityManager
.
Companion
.
getInstance
().
getActivitys
().
size
()
==
1
)
{
WebModularServiceUtils
.
Companion
.
startMain
(
NewH5Activity
.
this
);
}
...
...
@@ -887,6 +895,8 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
@Override
public
void
onReceivedError
(
WebView
view
,
int
errorCode
,
String
description
,
String
failingUrl
)
{
super
.
onReceivedError
(
view
,
errorCode
,
description
,
failingUrl
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
WEB
,
"onReceivedError---- errorCode: "
+
errorCode
+
"----failingUrl:"
+
failingUrl
);
tb_title
.
setTitle
(
"加载中"
);
loadFailed
=
true
;
if
(
wv_content
!=
null
)
{
...
...
@@ -909,8 +919,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
});
}
wv_content
.
setDownloadListener
((
url
,
userAgent
,
contentDisposition
,
mimetype
,
contentLength
)
->
{
if
(
url
!=
null
&&
url
.
startsWith
(
"http://"
))
if
(
url
!=
null
&&
url
.
startsWith
(
"http://"
))
{
startActivity
(
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
url
)));
}
});
initDuration
=
System
.
currentTimeMillis
()
-
initStartTime
;
workSpeedUtils
=
new
NetWorkSpeedUtils
(
this
);
...
...
@@ -1079,7 +1090,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
return
;
}
String
resultUrl
=
h5Params
.
getSuffix
()
?
WebUrlParamsUtils
.
getSuffix
(
url
,
jtoJHandle
.
getUriAppendSuffix
())
:
url
;
String
resultUrl
=
h5Params
.
getSuffix
()
?
WebUrlParamsUtils
.
getSuffix
(
url
,
jtoJHandle
.
getUriAppendSuffix
())
:
url
;
Log
.
e
(
"AAAA"
,
resultUrl
);
wv_content
.
loadUrl
(
resultUrl
);
pointBI
(
resultUrl
);
...
...
@@ -1097,7 +1108,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
private
void
initHead
()
{
// header
final
MaterialHeader
header
=
new
MaterialHeader
(
this
);
int
[]
colors
=
new
int
[]{
getResources
().
getColor
(
R
.
color
.
platform_main_theme
)};
int
[]
colors
=
new
int
[]{
getResources
().
getColor
(
R
.
color
.
platform_main_theme
)};
header
.
setColorSchemeColors
(
colors
);
header
.
setLayoutParams
(
new
PtrFrameLayout
.
LayoutParams
(-
1
,
-
2
));
int
padding
=
(
int
)
getResources
().
getDimension
(
R
.
dimen
.
platform_default_dis_size
);
...
...
@@ -1155,8 +1166,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if
(
h5Params
.
isSplash
())
{
WebModularServiceUtils
.
Companion
.
startMain
(
NewH5Activity
.
this
);
finish
();
}
else
{
}
else
{
if
(
ActivityManager
.
Companion
.
getInstance
().
getActivitys
().
size
()
==
1
)
{
WebModularServiceUtils
.
Companion
.
startMain
(
NewH5Activity
.
this
);
}
...
...
@@ -1213,10 +1223,15 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
startActivityForResult
(
Intent
.
createChooser
(
i
,
"Image Chooser"
),
FILE_CHOOSER_RESULT_CODE
);
}
//最后在OnActivityResult中接受返回的结果
/**
* 最后在OnActivityResult中接受返回的结果
*/
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
if
(
requestCode
==
FILE_CHOOSER_RESULT_CODE
)
{
if
(
null
==
uploadMessage
&&
null
==
uploadMessageAboveL
)
return
;
if
(
null
==
uploadMessage
&&
null
==
uploadMessageAboveL
)
{
return
;
}
Uri
result
=
data
==
null
||
resultCode
!=
RESULT_OK
?
null
:
data
.
getData
();
if
(
uploadMessageAboveL
!=
null
)
{
onActivityResultAboveL
(
requestCode
,
resultCode
,
data
);
...
...
@@ -1250,8 +1265,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
@TargetApi
(
Build
.
VERSION_CODES
.
LOLLIPOP
)
private
void
onActivityResultAboveL
(
int
requestCode
,
int
resultCode
,
Intent
intent
)
{
if
(
requestCode
!=
FILE_CHOOSER_RESULT_CODE
||
uploadMessageAboveL
==
null
)
if
(
requestCode
!=
FILE_CHOOSER_RESULT_CODE
||
uploadMessageAboveL
==
null
)
{
return
;
}
Uri
[]
results
=
null
;
if
(
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
intent
!=
null
)
{
...
...
@@ -1264,8 +1280,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
results
[
i
]
=
item
.
getUri
();
}
}
if
(
dataString
!=
null
)
if
(
dataString
!=
null
)
{
results
=
new
Uri
[]{
Uri
.
parse
(
dataString
)};
}
}
}
uploadMessageAboveL
.
onReceiveValue
(
results
);
...
...
@@ -1278,8 +1295,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
/**
* 判断是否是测评题页面,如果是,则走测评题页面的返回逻辑
*/
if
(
keyCode
==
KeyEvent
.
KEYCODE_BACK
)
{
/**
* 是否是测评题目页面
...
...
@@ -1358,7 +1373,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
}
else
{
tb_title
.
setImage_right
(
getResources
().
getDrawable
(
R
.
drawable
.
web_common_notice_more_un
));
}
}
catch
(
Exception
e
)
{}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
if
(
backgroundView
.
getVisibility
()
==
View
.
VISIBLE
)
{
backgroundView
.
setVisibility
(
View
.
GONE
);
...
...
@@ -1387,19 +1404,18 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if
(
params
!=
null
&&
!
TextUtils
.
isEmpty
(
params
.
getCourse_id
()))
{
dialog
=
YDLShareDialog
.
Companion
.
style5
(
this
,
shareTitle
,
shareUrl
,
shareDesc
,
cover
);
}
else
{
if
(!
H5RouterUtils
.
INSTANCE
.
isDependByClz
(
IDynamicService
.
class
))
{
if
(!
H5RouterUtils
.
INSTANCE
.
isDependByClz
(
IDynamicService
.
class
))
{
//如果未引入动态模块的话,隐藏分享至动态按钮
dialog
=
YDLShareDialog
.
Companion
.
style4
(
this
,
shareTitle
,
shareUrl
,
shareDesc
,
cover
);
}
else
{
}
else
{
dialog
=
YDLShareDialog
.
Companion
.
style1
(
this
,
shareTitle
,
shareUrl
,
shareDesc
,
cover
,
minPath
,
minId
);
}
}
dialog
.
setCallBack
(
type
->
{
if
(
1
==
type
)
{
if
(!
WebModularServiceUtils
.
Companion
.
getUserService
().
loginByOneKeyLogin
(
NewH5Activity
.
this
,
true
))
{
if
(!
WebModularServiceUtils
.
Companion
.
getUserService
().
loginByOneKeyLogin
(
NewH5Activity
.
this
,
true
))
{
isToTrend
=
true
;
}
else
{
//分享到心事动态
...
...
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