Commit 6107ffa1 by 刘鹏

Merge branch '4.1.69_log' into 4.1.69(强绑手机号)

parents c445a1b7 a0681f68
...@@ -19,24 +19,24 @@ import com.umeng.analytics.MobclickAgent ...@@ -19,24 +19,24 @@ import com.umeng.analytics.MobclickAgent
import com.ydl.component.music.FragmentContainerActivity import com.ydl.component.music.FragmentContainerActivity
import com.ydl.component.mvp.DemoContract import com.ydl.component.mvp.DemoContract
import com.ydl.component.mvp.DemoPresenter 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.media.audio.PlayService
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.mvp.lce.BaseLceActivity 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.common.tools.ToastUtil
import com.yidianling.consultant.api.IConsultantService
import com.yidianling.fm.api.service.IFMService import com.yidianling.fm.api.service.IFMService
import com.yidianling.tests.home.NewTestHomeActivity import com.yidianling.tests.home.NewTestHomeActivity
import com.yidianling.user.StatusUtils
import com.yidianling.user.ui.collect.CollectSexAndBirthActivity 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.SecretDescriptionDialog
import com.yidianling.user.widget.SecretDialog import com.yidianling.user.widget.SecretDialog
import com.yidianling.user.widget.SecretDialog.OnSecretDialogListener import com.yidianling.user.widget.SecretDialog.OnSecretDialogListener
import kotlinx.android.synthetic.main.activity_main.* 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
/** /**
......
...@@ -5,12 +5,12 @@ ext { ...@@ -5,12 +5,12 @@ ext {
ydlPublishVersion = [ ydlPublishVersion = [
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.49.02", "m-confide" : "0.0.49.06",
"m-consultant" : "0.0.59.69", "m-consultant" : "0.0.59.69",
"m-fm" : "0.0.30.01", "m-fm" : "0.0.30.01",
"m-user" : "0.0.61.29", "m-user" : "0.0.61.29",
"m-home" : "0.0.22.59", "m-home" : "0.0.22.59",
"m-im" : "0.0.18.41", "m-im" : "0.0.18.48",
"m-dynamic" : "0.0.7.19", "m-dynamic" : "0.0.7.19",
"m-article" : "0.0.0.6", "m-article" : "0.0.0.6",
...@@ -33,18 +33,18 @@ ext { ...@@ -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-media" : "0.0.21.6",
"ydl-pay" : "0.0.18.13", "ydl-pay" : "0.0.18.18",
"m-audioim" : "0.0.49.29.36", "m-audioim" : "0.0.49.29.36",
"ydl-flutter-base": "0.0.14.23", "ydl-flutter-base": "0.0.14.23",
//以下 几乎不会动 //以下 几乎不会动
"router" : "0.0.1", "router" : "0.0.1",
"ydl-net" : "0.0.3.7", "ydl-net" : "0.0.3.9",
"ydl-utils" : "0.0.3.1", "ydl-utils" : "0.0.3.1",
] ]
ydl_app = [ ydl_app = [
...@@ -88,12 +88,12 @@ ext { ...@@ -88,12 +88,12 @@ ext {
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.49.02", "m-confide" : "0.0.49.06",
"m-consultant" : "0.0.59.69", "m-consultant" : "0.0.59.69",
"m-fm" : "0.0.30.01", "m-fm" : "0.0.30.01",
"m-user" : "0.0.61.29", "m-user" : "0.0.61.29",
"m-home" : "0.0.22.59", "m-home" : "0.0.22.59",
"m-im" : "0.0.18.40", "m-im" : "0.0.18.48",
"m-dynamic" : "0.0.7.19", "m-dynamic" : "0.0.7.19",
"m-article" : "0.0.0.6", "m-article" : "0.0.0.6",
...@@ -115,18 +115,18 @@ ext { ...@@ -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-media" : "0.0.21.6",
"ydl-pay" : "0.0.18.11", "ydl-pay" : "0.0.18.18",
"m-audioim" : "0.0.49.29.36", "m-audioim" : "0.0.49.29.36",
"ydl-flutter-base": "0.0.14.23", "ydl-flutter-base": "0.0.14.23",
//以下 几乎不会动 //以下 几乎不会动
"router" : "0.0.1", "router" : "0.0.1",
"ydl-net" : "0.0.3.7", "ydl-net" : "0.0.3.9",
"ydl-utils" : "0.0.3.1", "ydl-utils" : "0.0.3.1",
] ]
...@@ -199,6 +199,7 @@ ext { ...@@ -199,6 +199,7 @@ ext {
"androideventbus" : "org.simple:androideventbus:1.0.5.1", "androideventbus" : "org.simple:androideventbus:1.0.5.1",
"otto" : "com.squareup:otto:1.3.8", "otto" : "com.squareup:otto:1.3.8",
"gson" : "com.google.code.gson:gson:2.8.5", "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", "javax.annotation" : "javax.annotation:jsr250-api:1.0",
"arouter" : "com.alibaba:arouter-api:1.4.1", "arouter" : "com.alibaba:arouter-api:1.4.1",
"progressmanager" : "me.jessyan:progressmanager:1.5.0", "progressmanager" : "me.jessyan:progressmanager:1.5.0",
......
...@@ -47,6 +47,8 @@ import com.ydl.ydlcommon.utils.LogUtil ...@@ -47,6 +47,8 @@ import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.Utils import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils 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.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.user.api.service.IUserService import com.yidianling.user.api.service.IUserService
...@@ -137,7 +139,7 @@ class ConsultantAudioHomeActivity : ...@@ -137,7 +139,7 @@ class ConsultantAudioHomeActivity :
super.onJoinChannelSuccess(channel, uid, elapsed) super.onJoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 加入频道回调") LogUtil.e("[agora]$uid 加入频道回调")
writeAgoraLog("被叫(用户)加入声网($channel)频道成功") writeAgoraLog("被叫(用户)加入声网($channel)频道成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "被叫(用户)加入声网($channel)频道成功")
runOnUiThread { runOnUiThread {
// 加入频道后再通知用户已接受 // 加入频道后再通知用户已接受
// YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId) // YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId)
...@@ -165,6 +167,9 @@ class ConsultantAudioHomeActivity : ...@@ -165,6 +167,9 @@ class ConsultantAudioHomeActivity :
super.onRejoinChannelSuccess(channel, uid, elapsed) super.onRejoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 重新加入频道回调") LogUtil.e("[agora]$uid 重新加入频道回调")
writeAgoraLog("被叫(用户)重新加入声网频道($channel)成功") writeAgoraLog("被叫(用户)重新加入声网频道($channel)成功")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "被叫(用户)重新加入声网频道($channel)成功")
runOnUiThread { runOnUiThread {
if (!isConnectSuccess) { if (!isConnectSuccess) {
tv_toast.visibility = View.VISIBLE tv_toast.visibility = View.VISIBLE
...@@ -182,6 +187,8 @@ class ConsultantAudioHomeActivity : ...@@ -182,6 +187,8 @@ class ConsultantAudioHomeActivity :
super.onUserJoined(uid, elapsed) super.onUserJoined(uid, elapsed)
LogUtil.e("[agora]远端用户加入频道回调") LogUtil.e("[agora]远端用户加入频道回调")
writeAgoraLog("主叫(专家)加入声网频道成功") writeAgoraLog("主叫(专家)加入声网频道成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "主叫(专家)加入声网频道成功")
//另一方加入频道成功 //另一方加入频道成功
runOnUiThread { runOnUiThread {
isConnectSuccess = true isConnectSuccess = true
...@@ -223,6 +230,8 @@ class ConsultantAudioHomeActivity : ...@@ -223,6 +230,8 @@ class ConsultantAudioHomeActivity :
override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) { override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) {
super.onLeaveChannel(stats) super.onLeaveChannel(stats)
LogUtil.e("[agora]自己离开频道回调") LogUtil.e("[agora]自己离开频道回调")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "自己离开频道回调")
//通知php 通话已结束 //通知php 通话已结束
close(RESULT_ANSWERED_CODE, "") close(RESULT_ANSWERED_CODE, "")
} }
...@@ -249,6 +258,8 @@ class ConsultantAudioHomeActivity : ...@@ -249,6 +258,8 @@ class ConsultantAudioHomeActivity :
) )
showToast("对方已挂断") showToast("对方已挂断")
writeAgoraLog("通话接通后挂断:主叫(专家)离开频道") writeAgoraLog("通话接通后挂断:主叫(专家)离开频道")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "通话接通后挂断:主叫(专家)离开频道")
if (null != totalDisposable) { if (null != totalDisposable) {
totalDisposable!!.dispose() totalDisposable!!.dispose()
} }
...@@ -265,6 +276,8 @@ class ConsultantAudioHomeActivity : ...@@ -265,6 +276,8 @@ class ConsultantAudioHomeActivity :
} }
LogUtil.e("[agora]发生警告回调=$warn") LogUtil.e("[agora]发生警告回调=$warn")
writeAgoraLog("声网警告回调码:($warn)") writeAgoraLog("声网警告回调码:($warn)")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "声网警告回调码:($warn)")
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源 //103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器 //104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
//105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的 //105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的
...@@ -290,6 +303,7 @@ class ConsultantAudioHomeActivity : ...@@ -290,6 +303,7 @@ class ConsultantAudioHomeActivity :
uploadException("mRtcEventHandler-onError:errorCode--%${err}") uploadException("mRtcEventHandler-onError:errorCode--%${err}")
LogUtil.e("[agora] 发生错误回调 =$err") LogUtil.e("[agora] 发生错误回调 =$err")
writeAgoraLog("声网错误回调errorCode--%${err}") writeAgoraLog("声网错误回调errorCode--%${err}")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}")
//3:SDK 初始化失败。Agora 建议尝试以下处理方法 //3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化 //7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
...@@ -510,6 +524,8 @@ class ConsultantAudioHomeActivity : ...@@ -510,6 +524,8 @@ class ConsultantAudioHomeActivity :
override fun channelTokenResponse(token: String?, needJoinChannel: Boolean) { override fun channelTokenResponse(token: String?, needJoinChannel: Boolean) {
if (TextUtils.isEmpty(token)) { if (TextUtils.isEmpty(token)) {
LogUtil.e("[agora]token not null") LogUtil.e("[agora]token not null")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "token isEmpty ")
showToast("通话频道不存在") showToast("通话频道不存在")
finish() finish()
return return
...@@ -583,6 +599,8 @@ class ConsultantAudioHomeActivity : ...@@ -583,6 +599,8 @@ class ConsultantAudioHomeActivity :
val account = YdlCommonRouterManager.getYdlCommonRoute().getUid() val account = YdlCommonRouterManager.getYdlCommonRoute().getUid()
if (!TextUtils.isEmpty(mAudioMessageBean?.channelId)) { if (!TextUtils.isEmpty(mAudioMessageBean?.channelId)) {
LogUtil.e("[agora] joinChannel:$account") LogUtil.e("[agora] joinChannel:$account")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "joinChannel:$account")
voiceManage?.getVoiceApi()?.joinChannel( voiceManage?.getVoiceApi()?.joinChannel(
channelToken channelToken
?: "", mAudioMessageBean!!.channelId!!, "Extra Optional Data", account ?: "", mAudioMessageBean!!.channelId!!, "Extra Optional Data", account
...@@ -807,6 +825,9 @@ class ConsultantAudioHomeActivity : ...@@ -807,6 +825,9 @@ class ConsultantAudioHomeActivity :
fun close(code: Int, msg: String) { fun close(code: Int, msg: String) {
runOnUiThread { runOnUiThread {
LogUtil.e("[agora]close(code:$code,msg:$msg)") LogUtil.e("[agora]close(code:$code,msg:$msg)")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "close(code:$code,msg:$msg)")
//上传日志文件 //上传日志文件
uploadLog() uploadLog()
stopMusic() stopMusic()
...@@ -837,6 +858,7 @@ class ConsultantAudioHomeActivity : ...@@ -837,6 +858,7 @@ class ConsultantAudioHomeActivity :
} }
ActivityManager.getInstance().removeStack(activity = this) ActivityManager.getInstance().removeStack(activity = this)
LogUtil.e("[agora]页面移除") LogUtil.e("[agora]页面移除")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "页面移除")
finish() finish()
} }
} }
...@@ -945,9 +967,11 @@ class ConsultantAudioHomeActivity : ...@@ -945,9 +967,11 @@ class ConsultantAudioHomeActivity :
Observable.create<Any> { Observable.create<Any> {
try { try {
AudioLogUtils.writeAgoraLog( AudioLogUtils.writeAgoraLog(
"$content-------Time:${AudioLogUtils.format.format( "$content-------Time:${
Calendar.getInstance().time AudioLogUtils.format.format(
)}", "consult.log" Calendar.getInstance().time
)
}", "consult.log"
) )
} catch (e: Exception) { } catch (e: Exception) {
} }
......
...@@ -10,6 +10,8 @@ import com.netease.nimlib.sdk.avchat.AVChatManager; ...@@ -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.constant.AVChatControlCommand;
import com.netease.nimlib.sdk.avchat.model.AVChatData; import com.netease.nimlib.sdk.avchat.model.AVChatData;
import com.ydl.ydlcommon.base.BaseActivityMgr; 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.activity.AVChatActivity;
import com.yidianling.avchatkit.common.log.ILogUtil; import com.yidianling.avchatkit.common.log.ILogUtil;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
...@@ -149,6 +151,8 @@ public class AVChatKit { ...@@ -149,6 +151,8 @@ public class AVChatKit {
*/ */
public static void outgoingCall(Context context, String account, String displayName, int callType, int source) { public static void outgoingCall(Context context, String account, String displayName, int callType, int source) {
AVChatActivity.outgoingCall(context, account, displayName, callType, source); AVChatActivity.outgoingCall(context, account, displayName, callType, source);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"outgoingCall 发起音视频通话呼叫");
} }
/** /**
...@@ -162,7 +166,7 @@ public class AVChatKit { ...@@ -162,7 +166,7 @@ public class AVChatKit {
*/ */
public static void outgoingTeamCall(Context context, boolean receivedCall, String teamId, String roomId, ArrayList<String> accounts, String teamName) { 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); TeamAVChatActivity.startActivity(context, receivedCall, teamId, roomId, accounts, teamName);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"outgoingTeamCall 发起群组音视频通话呼叫");
} }
/** /**
......
...@@ -35,6 +35,7 @@ public abstract class AVChatBaseUI extends AppCompatActivity { ...@@ -35,6 +35,7 @@ public abstract class AVChatBaseUI extends AppCompatActivity {
super.onStart(); super.onStart();
} }
@Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
......
...@@ -157,6 +157,7 @@ public class CustomAlertDialog extends AlertDialog { ...@@ -157,6 +157,7 @@ public class CustomAlertDialog extends AlertDialog {
} }
} }
@Override
public void setTitle(int resId) { public void setTitle(int resId) {
this.title = context.getString(resId); this.title = context.getString(resId);
isTitleVisible = TextUtils.isEmpty(title) ? false : true; isTitleVisible = TextUtils.isEmpty(title) ? false : true;
......
...@@ -11,6 +11,8 @@ import android.os.Build; ...@@ -11,6 +11,8 @@ import android.os.Build;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; 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; import com.yidianling.avchatkit.common.log.LogUtil;
public class NetworkUtil { public class NetworkUtil {
...@@ -79,8 +81,9 @@ public class NetworkUtil { ...@@ -79,8 +81,9 @@ public class NetworkUtil {
NetworkInfo networkInfo = getActiveNetworkInfo(context); NetworkInfo networkInfo = getActiveNetworkInfo(context);
if (networkInfo == null) { if (networkInfo == null) {
return -1; return -1;
} else } else {
return networkInfo.getType(); return networkInfo.getType();
}
} }
...@@ -145,7 +148,7 @@ public class NetworkUtil { ...@@ -145,7 +148,7 @@ public class NetworkUtil {
} }
} }
curNetworkType = type; curNetworkType = type;
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.NETSTATUS, "网络类型:" + type);
return type; return type;
} }
...@@ -271,8 +274,11 @@ public class NetworkUtil { ...@@ -271,8 +274,11 @@ public class NetworkUtil {
NetworkInfo ni = cm.getActiveNetworkInfo(); NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null) { if (ni != null) {
if (ni.getType() == ConnectivityManager.TYPE_WIFI) { if (ni.getType() == ConnectivityManager.TYPE_WIFI) {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.NETSTATUS, "网络类型:TYPE_WIFI");
return true; return true;
} else { } else {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.NETSTATUS, "网络类型:非WIFI环境");
return false; return false;
} }
} else { } else {
......
...@@ -35,6 +35,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatParameters; ...@@ -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.AVChatCameraCapturer;
import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory; import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory;
import com.netease.nrtc.video.render.IVideoRender; 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.AVChatKit;
import com.yidianling.avchatkit.TeamAVChatProfile; import com.yidianling.avchatkit.TeamAVChatProfile;
import com.yidianling.avchatkit.common.activity.AVChatBaseUI; import com.yidianling.avchatkit.common.activity.AVChatBaseUI;
...@@ -436,6 +438,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -436,6 +438,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
public void onSuccess(AVChatData data) { public void onSuccess(AVChatData data) {
chatId = data.getChatId(); chatId = data.getChatId();
LogUtil.i(TAG, "join room success, roomId=" + roomId + ", chatId=" + chatId); LogUtil.i(TAG, "join room success, roomId=" + roomId + ", chatId=" + chatId);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"join room success, roomId=" + roomId + ", chatId=" + chatId);
} }
@Override @Override
...@@ -458,13 +461,17 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -458,13 +461,17 @@ public class TeamAVChatActivity extends AVChatBaseUI {
startLocalPreview(); startLocalPreview();
startTimerForCheckReceivedCall(); startTimerForCheckReceivedCall();
LogUtil.i(TAG, "team avchat running..." + ", roomId=" + roomId); LogUtil.i(TAG, "team avchat running..." + ", roomId=" + roomId);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"onJoinRoomSuccess 进入房间成功");
} }
private void onJoinRoomFailed(int code, Throwable e) { private void onJoinRoomFailed(int code, Throwable e) {
if (code == ResponseCode.RES_ENONEXIST) { if (code == ResponseCode.RES_ENONEXIST) {
showToast(getString(R.string.im_t_avchat_join_fail_not_exist)); showToast(getString(R.string.im_t_avchat_join_fail_not_exist));
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"startRtc 进入房间失败 房间不存在 code:"+code);
} else { } else {
showToast("join room failed, code=" + code + ", e=" + (e == null ? "" : e.getMessage())); 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 { ...@@ -483,6 +490,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
updateAudioMuteButtonState(); updateAudioMuteButtonState();
LogUtil.i(TAG, "on user joined, account=" + account); LogUtil.i(TAG, "on user joined, account=" + account);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"on user joined, account=" + account);
} }
public void onAVChatUserLeave(String account) { public void onAVChatUserLeave(String account) {
...@@ -496,6 +504,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -496,6 +504,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
updateAudioMuteButtonState(); updateAudioMuteButtonState();
LogUtil.i(TAG, "on user leave, account=" + account); LogUtil.i(TAG, "on user leave, account=" + account);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"on user leave, account=" + account);
} }
private void startLocalPreview() { private void startLocalPreview() {
......
...@@ -17,6 +17,8 @@ import com.ydl.ydlcommon.ui.LoadingDialogFragment ...@@ -17,6 +17,8 @@ import com.ydl.ydlcommon.ui.LoadingDialogFragment
import com.ydl.ydlcommon.ui.LoadingDialogFragment.Companion.newInstance import com.ydl.ydlcommon.ui.LoadingDialogFragment.Companion.newInstance
import com.ydl.ydlcommon.utils.NetworkParamsUtils import com.ydl.ydlcommon.utils.NetworkParamsUtils
import com.ydl.ydlcommon.utils.UserInfoCache 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.utils.remind.HttpErrorUtils.Companion.handleError
import com.ydl.ydlcommon.view.dialog.CommonDialog import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
...@@ -194,6 +196,7 @@ object IMChatUtil { ...@@ -194,6 +196,7 @@ object IMChatUtil {
isFromQingShu: Int, isFromQingShu: Int,
context: AppCompatActivity context: AppCompatActivity
) { ) {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "startChatSession 开启聊天会话")
val p2PCustomActionHandlerImpl = P2PCustomActionHandlerImpl(toUid, expertInfo) val p2PCustomActionHandlerImpl = P2PCustomActionHandlerImpl(toUid, expertInfo)
p2PCustomActionHandlerImpl.isFromQingShu = isFromQingShu p2PCustomActionHandlerImpl.isFromQingShu = isFromQingShu
SessionHelper.startP2PSession( SessionHelper.startP2PSession(
...@@ -278,7 +281,7 @@ object IMChatUtil { ...@@ -278,7 +281,7 @@ object IMChatUtil {
} else { } else {
upLoadLog("consult/get-expert", resp.code, resp.msg) upLoadLog("consult/get-expert", resp.code, resp.msg)
if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) { if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) {
ImIn.loginByOneKeyLogin(context,true) ImIn.loginByOneKeyLogin(context, true)
ToastUtil.toastShort(resp.msg) ToastUtil.toastShort(resp.msg)
} else if (resp.code == ImConstants.SILENCED_CODE) { //禁言 } else if (resp.code == ImConstants.SILENCED_CODE) { //禁言
showSilencedDialog(context, resp.data.tips, resp.data.url) showSilencedDialog(context, resp.data.tips, resp.data.url)
...@@ -326,7 +329,7 @@ object IMChatUtil { ...@@ -326,7 +329,7 @@ object IMChatUtil {
} else { } else {
upLoadLog("consult/get-expert", resp.code, resp.msg) upLoadLog("consult/get-expert", resp.code, resp.msg)
if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) { if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) {
ImIn.loginByOneKeyLogin(context,true) ImIn.loginByOneKeyLogin(context, true)
ToastUtil.toastShort(resp.msg) ToastUtil.toastShort(resp.msg)
} else if (resp.code == ImConstants.SILENCED_CODE) { //禁言 } else if (resp.code == ImConstants.SILENCED_CODE) { //禁言
showSilencedDialog(context, resp.data.tips, resp.data.url) showSilencedDialog(context, resp.data.tips, resp.data.url)
...@@ -367,7 +370,9 @@ object IMChatUtil { ...@@ -367,7 +370,9 @@ object IMChatUtil {
tb.setmMinTitleVisiable(View.GONE) tb.setmMinTitleVisiable(View.GONE)
} else { } 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 .getUserInfo()?.user_type == USER_TYPE_ASSISTANT
) { ) {
tb.setTitleTextRightIcon(R.drawable.user_info_icon) { tb.setTitleTextRightIcon(R.drawable.user_info_icon) {
......
...@@ -5,6 +5,8 @@ import android.content.Context; ...@@ -5,6 +5,8 @@ import android.content.Context;
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment; import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage; 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.BaseNimUIKit;
import com.yidianling.nimbase.api.model.session.SessionCustomization; import com.yidianling.nimbase.api.model.session.SessionCustomization;
import com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity; import com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity;
...@@ -30,6 +32,7 @@ public class NimUIKit extends BaseNimUIKit { ...@@ -30,6 +32,7 @@ public class NimUIKit extends BaseNimUIKit {
*/ */
public static void startYDLChatting(Context context, String id, SessionTypeEnum sessionType, SessionCustomization public static void startYDLChatting(Context context, String id, SessionTypeEnum sessionType, SessionCustomization
customization, IMMessage anchor, IP2PCustomActionHandler handler) { customization, IMMessage anchor, IP2PCustomActionHandler handler) {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "startYDLChatting 打开壹点灵定制聊天窗口,开始聊天");
NimUIKitImpl.startChatting(context, id, sessionType, customization, anchor, handler); NimUIKitImpl.startChatting(context, id, sessionType, customization, anchor, handler);
} }
......
...@@ -4,7 +4,6 @@ import android.content.Context; ...@@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -17,6 +16,8 @@ import com.netease.nimlib.sdk.msg.MsgServiceObserve; ...@@ -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.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.CustomNotification; import com.netease.nimlib.sdk.msg.model.CustomNotification;
import com.netease.nimlib.sdk.msg.model.IMMessage; 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.common.tools.ToastUtil;
import com.yidianling.im.R; import com.yidianling.im.R;
import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack; import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack;
...@@ -82,9 +83,8 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -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 intent = new Intent();
intent.putExtra(Extras.EXTRA_ACCOUNT, contactId); intent.putExtra(Extras.EXTRA_ACCOUNT, contactId);
intent.putExtra(Extras.EXTRA_CUSTOMIZATION, customization); intent.putExtra(Extras.EXTRA_CUSTOMIZATION, customization);
...@@ -106,7 +106,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -106,7 +106,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
// 如果isChangeDoctor为true表示切换客服 // 如果isChangeDoctor为true表示切换客服
if (isChangeDoctor) { if (isChangeDoctor) {
messageFragment = (YDLMessageFragment) switchContent(switchServiceFragment(intent)); messageFragment = (YDLMessageFragment) switchContent(switchServiceFragment(intent));
isChangeDoctor=false; isChangeDoctor = false;
} }
} }
...@@ -137,7 +137,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -137,7 +137,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
isChangeDoctor = true; isChangeDoctor = true;
String serviceUid = String.valueOf(serviceBean.getData().getToUid()); String serviceUid = String.valueOf(serviceBean.getData().getToUid());
tb.setTitle(serviceBean.getData().getName()); 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 { ...@@ -145,13 +145,13 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (ActionHandlerStorage.getL(sessionId) != null) if (ActionHandlerStorage.getL(sessionId) != null) {
ActionHandlerStorage.getL(sessionId).clear(sessionId); ActionHandlerStorage.getL(sessionId).clear(sessionId);
}
registerObservers(false); registerObservers(false);
super.onDestroy(); super.onDestroy();
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"退出聊天页面");
} }
@Override @Override
......
...@@ -49,6 +49,8 @@ import com.ydl.ydlcommon.utils.LogUtil; ...@@ -49,6 +49,8 @@ import com.ydl.ydlcommon.utils.LogUtil;
import com.ydl.ydlcommon.utils.SharedPreferencesEditor; import com.ydl.ydlcommon.utils.SharedPreferencesEditor;
import com.ydl.ydlcommon.utils.YdlBuryPointUtil; import com.ydl.ydlcommon.utils.YdlBuryPointUtil;
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils; 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.log.LogHelper;
import com.ydl.ydlcommon.view.CircleImageView; import com.ydl.ydlcommon.view.CircleImageView;
import com.ydl.ydlcommon.view.dialog.CommonDialog; import com.ydl.ydlcommon.view.dialog.CommonDialog;
...@@ -754,15 +756,21 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy { ...@@ -754,15 +756,21 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
} }
// 帮助人数 // 帮助人数
help_num = String.valueOf(ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoOrderNum); 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); help_num_tv.setText(help_num);
// 服务时长 // 服务时长
server_num = String.valueOf((int) Math.ceil((double) ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoHelpLong / 60.0)); 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); server_num_tv.setText(server_num);
// 好评率 // 好评率
good_num = ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoFeedbackRateForShow; 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); good_num_tv.setText(good_num);
try { try {
...@@ -1176,13 +1184,14 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy { ...@@ -1176,13 +1184,14 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
} }
}); });
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendMessage 该消息发送成功 sessionId:" + sessionId);
} else { } else {
// 替换成tip // 替换成tip
message = MessageBuilder.createTipMessage(message.getSessionId(), message.getSessionType()); message = MessageBuilder.createTipMessage(message.getSessionId(), message.getSessionType());
message.setContent("该消息无法发送"); message.setContent("该消息无法发送");
message.setStatus(MsgStatusEnum.success); message.setStatus(MsgStatusEnum.success);
NIMClient.getService(MsgService.class).saveMessageToLocal(message, false); NIMClient.getService(MsgService.class).saveMessageToLocal(message, false);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendMessage 该消息无法发送 sessionId:" + sessionId);
} }
messageListPanel.onMsgSend(message); messageListPanel.onMsgSend(message);
...@@ -1210,9 +1219,12 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy { ...@@ -1210,9 +1219,12 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
LogHelper.Companion.getInstance().writeLogSync("发送消息失败:已被对方拉黑"); LogHelper.Companion.getInstance().writeLogSync("发送消息失败:已被对方拉黑");
ToastUtil.toastLong(getActivity(), "您已被对方拉黑!"); ToastUtil.toastLong(getActivity(), "您已被对方拉黑!");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendFailWithBlackList 发送消息失败:已被对方拉黑 sessionId:" + sessionId);
} else if (code == 404) { } else if (code == 404) {
LogHelper.Companion.getInstance().writeLogSync("发送消息失败:对象不见了"); LogHelper.Companion.getInstance().writeLogSync("发送消息失败:对象不见了");
ToastUtil.toastLong(getActivity(), "对象不见了!"); ToastUtil.toastLong(getActivity(), "对象不见了!");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendFailWithBlackList 发送消息失败:对象不见了 404 sessionId:" + sessionId);
} else { } else {
//上传至后台 //上传至后台
if (!TextUtils.isEmpty(sessionId) && ActionHandlerStorage.getL(sessionId) != null) { if (!TextUtils.isEmpty(sessionId) && ActionHandlerStorage.getL(sessionId) != null) {
......
...@@ -6,6 +6,8 @@ import com.tencent.bugly.crashreport.CrashReport ...@@ -6,6 +6,8 @@ import com.tencent.bugly.crashreport.CrashReport
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.utils.ActivityManager import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.BuryPointUtils 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.common.tools.LogUtil
import com.yidianling.im.api.bean.IMLoginInfo import com.yidianling.im.api.bean.IMLoginInfo
import com.yidianling.im.api.bean.IMRequestCallback import com.yidianling.im.api.bean.IMRequestCallback
...@@ -57,16 +59,22 @@ object LoginUtils { ...@@ -57,16 +59,22 @@ object LoginUtils {
val info = IMLoginInfo(userInfo?.uid ?: "", userInfo?.hxpwd ?: "") val info = IMLoginInfo(userInfo?.uid ?: "", userInfo?.hxpwd ?: "")
val callback = object : IMRequestCallback<IMLoginInfo> { val callback = object : IMRequestCallback<IMLoginInfo> {
override fun onSuccess(t: 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 ?: "") UserIn.imSetAccount(userInfo?.uid ?: "")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "IM登录成功")
} }
override fun onFailed(i: Int) { 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?) { override fun onException(throwable: Throwable?) {
LogUtil.e("IM登录onException:${throwable?.message}") LogUtil.e("IM登录onException:${throwable?.message}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "IM登录onException:${throwable?.message}")
} }
} }
...@@ -79,17 +87,18 @@ object LoginUtils { ...@@ -79,17 +87,18 @@ object LoginUtils {
fun logout() { fun logout() {
EventBus.getDefault().post(UserLogoutEvent()) EventBus.getDefault().post(UserLogoutEvent())
UserHttpImpl.getInstance().logout(Logout()) UserHttpImpl.getInstance().logout(Logout())
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
logoutClearLocal() logoutClearLocal()
}, { }, {
logoutClearLocal() logoutClearLocal()
}) })
} }
@JvmStatic @JvmStatic
fun logoutClearLocal() { fun logoutClearLocal() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "退出登录")
UserIn.imLogout() UserIn.imLogout()
UserIn.closePlayer() UserIn.closePlayer()
UserIn.clearImData() UserIn.clearImData()
...@@ -105,7 +114,7 @@ object LoginUtils { ...@@ -105,7 +114,7 @@ object LoginUtils {
ActivityManager.finishAll() ActivityManager.finishAll()
if (StatusUtils.isFirstLogin && StatusUtils.isFirstStartApp) { if (StatusUtils.isFirstLogin && StatusUtils.isFirstStartApp) {
activity.startActivity(Intent(activity, CollectSexAndBirthActivity::class.java)) activity.startActivity(Intent(activity, CollectSexAndBirthActivity::class.java))
}else { } else {
UserIn.mainIntent(activity) UserIn.mainIntent(activity)
} }
} else {//需要判断stack中是否有MainActivity } else {//需要判断stack中是否有MainActivity
......
...@@ -14,6 +14,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut ...@@ -14,6 +14,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.ActivityManager import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.UserInfoCache import com.ydl.ydlcommon.utils.UserInfoCache
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils 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.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.im.api.bean.IMLoginInfo import com.yidianling.im.api.bean.IMLoginInfo
import com.yidianling.im.api.bean.IMRequestCallback import com.yidianling.im.api.bean.IMRequestCallback
...@@ -118,13 +120,13 @@ class SmsLoginActivity : BaseActivity() { ...@@ -118,13 +120,13 @@ class SmsLoginActivity : BaseActivity() {
})*/ })*/
vCodeSub = userHttp.code(CodeParam(code, phoneNum, UserConstants.SIGNIN_ACTION)) vCodeSub = userHttp.code(CodeParam(code, phoneNum, UserConstants.SIGNIN_ACTION))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer {}, object : ThrowableConsumer() { .subscribe(Consumer {}, object : ThrowableConsumer() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastHelper.show(msg) ToastHelper.show(msg)
} }
}) })
} }
private var loginSub: Disposable? = null private var loginSub: Disposable? = null
...@@ -136,37 +138,49 @@ class SmsLoginActivity : BaseActivity() { ...@@ -136,37 +138,49 @@ class SmsLoginActivity : BaseActivity() {
return 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()); Log.e("短信验证码:", code + " - " + phoneNum + " - " + et_code.text.toString());
loginSub = userHttp.login(LoginParam(code, phoneNum, null, 2, et_code.text.toString())) loginSub = userHttp.login(LoginParam(code, phoneNum, null, 2, et_code.text.toString()))
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.doOnNext { LoginUtils.saveData(it) } .doOnNext { LoginUtils.saveData(it) }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { showProgressDialog("") } .doOnSubscribe { showProgressDialog("") }
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
LoginUtils.onLogin(it) LoginUtils.onLogin(it)
//关闭手势解锁页面与指纹解锁页面 //关闭手势解锁页面与指纹解锁页面
finishFinger() finishFinger()
if (it.firstLogin == 1) { if (it.firstLogin == 1) {
StatusUtils.isFirstLogin = true StatusUtils.isFirstLogin = true
baiduActionBury() baiduActionBury()
}else { } else {
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,it.uid!!,UserBIConstants.ACTION_TYPE_CODE_LOGIN) ActionCountUtils.countUid(
} UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
it.uid!!,
UserBIConstants.ACTION_TYPE_CODE_LOGIN
)
}
// ActivityManager.finishActivity(LoginActivity::class.java) // ActivityManager.finishActivity(LoginActivity::class.java)
// if (ActivityManager.getActivitySize() <= 1) { // if (ActivityManager.getActivitySize() <= 1) {
// UserIn.mainIntent(this) // UserIn.mainIntent(this)
// } // }
// finish() // finish()
LoginUtils.loginSuccessOperate(this) LoginUtils.loginSuccessOperate(this)
}, object : ThrowableConsumer() {
override fun accept(msg: String) { AliYunRichLogsHelper.getInstance()
dismissProgressDialog() .sendRichLog(AliYunLogConfig.LOGIN, "短信验证码 成功")
YdlCommonOut.showToast(msg) }, 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() { ...@@ -224,9 +238,11 @@ class SmsLoginActivity : BaseActivity() {
try { try {
if (userInfo != null) { if (userInfo != null) {
UserIn.imSetAccount(userInfo.uid.toString()) UserIn.imSetAccount(userInfo.uid.toString())
UserInfoCache.getInstance().saveYDLUser(userInfo.uid.toString(), UserInfoCache.getInstance().saveYDLUser(
userInfo.nick_name, userInfo.uid.toString(),
userInfo.head) userInfo.nick_name,
userInfo.head
)
} }
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
...@@ -237,21 +253,21 @@ class SmsLoginActivity : BaseActivity() { ...@@ -237,21 +253,21 @@ class SmsLoginActivity : BaseActivity() {
private fun initTimer() { private fun initTimer() {
timerSub = Observable.interval(0, 1, TimeUnit.SECONDS) timerSub = Observable.interval(0, 1, TimeUnit.SECONDS)
.subscribeOn(Schedulers.computation()) .subscribeOn(Schedulers.computation())
.take(60) .take(60)
.map { String.format("重发(%d)", 59 - it) } .map { String.format("重发(%d)", 59 - it) }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { .doOnSubscribe {
tv_get_code.isEnabled = false tv_get_code.isEnabled = false
tv_get_code.setTextColor(-0x525253) tv_get_code.setTextColor(-0x525253)
} }
.subscribe({ .subscribe({
tv_get_code.text = it tv_get_code.text = it
}, {}, { }, {}, {
tv_get_code.text = "重新发送" tv_get_code.text = "重新发送"
tv_get_code.isEnabled = true tv_get_code.isEnabled = true
tv_get_code.setTextColor(-0xb62d7f) tv_get_code.setTextColor(-0xb62d7f)
}) })
} }
......
...@@ -7,7 +7,6 @@ import android.content.Context ...@@ -7,7 +7,6 @@ import android.content.Context
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.graphics.Color import android.graphics.Color
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.view.Gravity import android.view.Gravity
import android.view.View import android.view.View
...@@ -17,17 +16,19 @@ import android.widget.TextView ...@@ -17,17 +16,19 @@ import android.widget.TextView
import com.fm.openinstall.OpenInstall import com.fm.openinstall.OpenInstall
import com.fm.openinstall.listener.AppInstallAdapter import com.fm.openinstall.listener.AppInstallAdapter
import com.fm.openinstall.model.AppData import com.fm.openinstall.model.AppData
import com.fm.openinstall.model.Error
import com.meituan.android.walle.WalleChannelReader import com.meituan.android.walle.WalleChannelReader
import com.mobile.auth.gatewayauth.* import com.mobile.auth.gatewayauth.*
import com.mobile.auth.gatewayauth.model.TokenRet import com.mobile.auth.gatewayauth.model.TokenRet
import com.tbruyelle.rxpermissions2.RxPermissions import com.tbruyelle.rxpermissions2.RxPermissions
import com.ydl.webview.NewH5Activity
import com.ydl.ydlcommon.base.BaseActivity import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.base.BaseApp import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.utils.JPushUtils import com.ydl.ydlcommon.utils.JPushUtils
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils 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.log.LogHelper
import com.yidianling.common.tools.RxAppTool import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool import com.yidianling.common.tools.RxDeviceTool
...@@ -430,6 +431,8 @@ object OneKeyLoginHelp { ...@@ -430,6 +431,8 @@ object OneKeyLoginHelp {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
if (it.code == 200) { if (it.code == 200) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "一键登录成功")
ToastUtil.toastShort("登录成功") ToastUtil.toastShort("登录成功")
saveUserData(it.data) saveUserData(it.data)
if (it.data.firstLogin == 1) {//第一次登录:是注册 if (it.data.firstLogin == 1) {//第一次登录:是注册
...@@ -463,10 +466,18 @@ object OneKeyLoginHelp { ...@@ -463,10 +466,18 @@ object OneKeyLoginHelp {
LoginUtils.loginSuccessOperate(mActivity) LoginUtils.loginSuccessOperate(mActivity)
} }
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.LOGIN,
"一键登录失败 msg:${it.msg}"
)
ToastUtil.toastShort(it.msg) ToastUtil.toastShort(it.msg)
mPhoneNumberAuthHelper?.hideLoginLoading() mPhoneNumberAuthHelper?.hideLoginLoading()
} }
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.LOGIN,
"一键登录Error msg:${it.message}"
)
ToastUtil.toastShort(it.message) ToastUtil.toastShort(it.message)
mPhoneNumberAuthHelper?.hideLoginLoading() mPhoneNumberAuthHelper?.hideLoginLoading()
}) })
...@@ -580,23 +591,29 @@ object OneKeyLoginHelp { ...@@ -580,23 +591,29 @@ object OneKeyLoginHelp {
* */ * */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
fun startLogin(context: Activity, isOpenDialog: Boolean) { fun startLogin(context: Activity, isOpenDialog: Boolean) {
RxPermissions(context) try {
.request(Manifest.permission.READ_PHONE_STATE) RxPermissions(context)
.subscribe { hasPermission: Boolean? -> .request(Manifest.permission.READ_PHONE_STATE)
if (hasPermission == true && mIsOpenOneKeyLogin) { .subscribe { hasPermission: Boolean? ->
getLoginToken(isOpenDialog) if (hasPermission == true && mIsOpenOneKeyLogin) {
} else { getLoginToken(isOpenDialog)
// 一键登录页面打开成功
if (mOpenPageIsSuccess) {
RegisterAndLoginActivity.start(context)
} else { } else {
RegisterAndLoginActivity.start( // 一键登录页面打开成功
context, if (mOpenPageIsSuccess) {
isFromOneKey = false, RegisterAndLoginActivity.start(context)
isFromGuide = true } else {
) RegisterAndLoginActivity.start(
context,
isFromOneKey = false,
isFromGuide = true
)
}
} }
} }
} } catch (e: Exception) {
RegisterAndLoginActivity.start(context)
e.printStackTrace()
}
} }
} }
...@@ -612,6 +612,7 @@ class RegisterAndLoginActivity : BaseMvpActivity<ILoginContract.View, ILoginCont ...@@ -612,6 +612,7 @@ class RegisterAndLoginActivity : BaseMvpActivity<ILoginContract.View, ILoginCont
runOnUiThread { runOnUiThread {
showLoading(false) showLoading(false)
} }
if (chcekPhoneResponeBean != null && chcekPhoneResponeBean?.hasPwd == 1) {//用户码有设置密码:跳转到密登录 if (chcekPhoneResponeBean != null && chcekPhoneResponeBean?.hasPwd == 1) {//用户码有设置密码:跳转到密登录
InputPassWordActivity.start( InputPassWordActivity.start(
this, this,
......
...@@ -7,6 +7,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut ...@@ -7,6 +7,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.StringUtils import com.ydl.ydlcommon.utils.StringUtils
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils 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.log.LogHelper
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.user.LoginUtils import com.yidianling.user.LoginUtils
...@@ -28,7 +30,9 @@ import java.math.BigDecimal ...@@ -28,7 +30,9 @@ import java.math.BigDecimal
* @Company 壹点灵 * @Company 壹点灵
* @date 2018/12/2 * @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 { override fun createModel(): IInputPassWordContract.Model {
return InputPassWordModelImpl() return InputPassWordModelImpl()
...@@ -37,38 +41,51 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II ...@@ -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) mModel.resetPwd(param)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { mView.showLoading(true) } .doOnSubscribe { mView.showLoading(true) }
.doAfterTerminate { mView.showLoading(false) } .doAfterTerminate { mView.showLoading(false) }
.subscribe({ .subscribe({
if (it?.data == null) { if (it?.data == null) {
ToastUtil.toastShort(it.msg) ToastUtil.toastShort(it.msg)
} else {
if (it.data.userInfo?.user_type == 2) {
mView.showNormalDialog()
} else { } else {
if (it.data.userInfo?.user_type == 2) { ToastUtil.toastShort("修改密码成功")
mView.showNormalDialog() 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 { } 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 ...@@ -76,36 +93,54 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
* 手机号密码登录 * 手机号密码登录
*/ */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
override fun userLoginByPassword(inputPassword: String, phone: String, phoneCountryCode: String) { override fun userLoginByPassword(
ActionCountUtils.count( UserBIConstants.POSITION_LOGIN_CLICK,UserBIConstants.ACTION_TYPE_PWD_LOGIN) 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) var param = PhoneLoginPwdParam(StringUtils.md5(inputPassword), phoneCountryCode, phone)
mModel.userLoginByPassword(param) mModel.userLoginByPassword(param)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { mView.showLoading(true) } .doOnSubscribe { mView.showLoading(true) }
.doAfterTerminate { mView.showLoading(false) } .doAfterTerminate { mView.showLoading(false) }
.subscribe({ .subscribe({
if (it?.data == null) { if (it?.data == null) {
ToastUtil.toastShort(it.msg) AliYunRichLogsHelper.getInstance()
mView.startAnim() .sendRichLog(AliYunLogConfig.LOGIN, "手机号密码 登录失败 msg: ${it.msg}")
ToastUtil.toastShort(it.msg)
mView.startAnim()
} else {
if (it.data.userInfo?.user_type == 2) {
mView.showNormalDialog()
} else { } else {
if (it.data.userInfo?.user_type == 2) { saveUserData(it.data)
mView.showNormalDialog() if (it.data.firstLogin == 1) {//第一次登录:是注册
StatusUtils.isFirstLogin = true
mView.baiduActionBury()
} else { } else {
saveUserData(it.data) ActionCountUtils.countUid(
if (it.data.firstLogin == 1) {//第一次登录:是注册 UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
StatusUtils.isFirstLogin = true it.data.uid!!,
mView.baiduActionBury() UserBIConstants.ACTION_TYPE_PWD_LOGIN
} else { )
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,it.data.uid!!,UserBIConstants.ACTION_TYPE_PWD_LOGIN)
}
mView.closeActivity()
} }
mView.closeActivity()
} }
}, { AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "手机号密码 登录成功")
YdlCommonOut.showToast(it.message!!)
}) }
}, {
YdlCommonOut.showToast(it.message!!)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "手机号密码 Error msg: ${it.message}")
})
} }
/** /**
......
...@@ -41,6 +41,7 @@ dependencies { ...@@ -41,6 +41,7 @@ dependencies {
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
api rootProject.ext.dependencies["gson"] api rootProject.ext.dependencies["gson"]
api rootProject.ext.dependencies["aliyun"]
api rootProject.ext.dependencies["rxjava2"] api rootProject.ext.dependencies["rxjava2"]
api(rootProject.ext.dependencies["rxandroid2"]) { api(rootProject.ext.dependencies["rxandroid2"]) {
exclude module: 'rxjava' exclude module: 'rxjava'
......
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
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
...@@ -2,7 +2,6 @@ package com.ydl.ydlnet.builder.interceptor.log; ...@@ -2,7 +2,6 @@ package com.ydl.ydlnet.builder.interceptor.log;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.ydl.ydlnet.utils.ApiErrorCountUtils;
import com.ydl.ydlnet.utils.CharacterHandler; import com.ydl.ydlnet.utils.CharacterHandler;
import com.ydl.ydlnet.utils.NetLogUtils; import com.ydl.ydlnet.utils.NetLogUtils;
import com.ydl.ydlnet.utils.UrlEncoderUtils; import com.ydl.ydlnet.utils.UrlEncoderUtils;
...@@ -23,13 +22,14 @@ import okhttp3.Response; ...@@ -23,13 +22,14 @@ import okhttp3.Response;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import okio.Buffer; import okio.Buffer;
import okio.BufferedSource; import okio.BufferedSource;
/** /**
* Created by haorui on 2019-09-01 . * Created by haorui on 2019-09-01 .
* Des: 解析框架中的网络请求和响应结果并打印 * Des: 解析框架中的网络请求和响应结果并打印
*/ */
public class RequestLogInterceptor implements Interceptor { public class RequestLogInterceptor implements Interceptor {
private DefaultFormatPrinter mPrinter = new DefaultFormatPrinter(); private DefaultFormatPrinter mPrinter = new DefaultFormatPrinter();
private boolean mIsDebug ; private boolean mIsDebug;
private RequestHandler mRequestHandler; private RequestHandler mRequestHandler;
public RequestLogInterceptor(boolean isDebug, RequestHandler requestHandler) { public RequestLogInterceptor(boolean isDebug, RequestHandler requestHandler) {
...@@ -48,10 +48,10 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -48,10 +48,10 @@ public class RequestLogInterceptor implements Interceptor {
mPrinter.printFileRequest(request); mPrinter.printFileRequest(request);
} }
if (mRequestHandler != null) if (mRequestHandler != null) {
request = mRequestHandler.onHttpRequestBefore(chain, request); request = mRequestHandler.onHttpRequestBefore(chain, request);
}
long t1 =System.nanoTime() ; long t1 = System.nanoTime();
Response originalResponse; Response originalResponse;
try { try {
originalResponse = chain.proceed(request); originalResponse = chain.proceed(request);
...@@ -59,7 +59,7 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -59,7 +59,7 @@ public class RequestLogInterceptor implements Interceptor {
NetLogUtils.debugInfo("Http Error: " + e); NetLogUtils.debugInfo("Http Error: " + e);
throw e; throw e;
} }
long t2 = System.nanoTime() ; long t2 = System.nanoTime();
ResponseBody responseBody = originalResponse.body(); ResponseBody responseBody = originalResponse.body();
...@@ -67,12 +67,12 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -67,12 +67,12 @@ public class RequestLogInterceptor implements Interceptor {
String bodyString = null; String bodyString = null;
if (responseBody != null && isParseable(responseBody.contentType())) { if (responseBody != null && isParseable(responseBody.contentType())) {
bodyString = printResult(request, originalResponse); bodyString = printResult(request, originalResponse);
if (mRequestHandler != null){ if (mRequestHandler != null) {
mRequestHandler.onHttpResultResponse(bodyString, chain, originalResponse); mRequestHandler.onHttpResultResponse(bodyString, chain, originalResponse);
} }
} }
if(mIsDebug) { if (mIsDebug) {
final List<String> segmentList = request.url().encodedPathSegments(); final List<String> segmentList = request.url().encodedPathSegments();
final String header = originalResponse.headers().toString(); final String header = originalResponse.headers().toString();
final int code = originalResponse.code(); final int code = originalResponse.code();
...@@ -87,21 +87,6 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -87,21 +87,6 @@ public class RequestLogInterceptor implements Interceptor {
mPrinter.printFileResponse(TimeUnit.NANOSECONDS.toMillis(t2 - t1), mPrinter.printFileResponse(TimeUnit.NANOSECONDS.toMillis(t2 - t1),
isSuccessful, code, header, segmentList, message, url); 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; return originalResponse;
} }
...@@ -109,8 +94,8 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -109,8 +94,8 @@ public class RequestLogInterceptor implements Interceptor {
/** /**
* 打印响应结果 * 打印响应结果
* *
* @param request {@link Request} * @param request {@link Request}
* @param response {@link Response} * @param response {@link Response}
* @return 解析后的响应结果 * @return 解析后的响应结果
* @throws IOException * @throws IOException
*/ */
......
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
...@@ -18,6 +18,8 @@ import com.ydl.ydlcommon.data.PlatformDataManager ...@@ -18,6 +18,8 @@ import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.ThrowableConsumer import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.modular.ModularServiceManager 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.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
...@@ -65,6 +67,7 @@ class PayActivity : BaseActivity() { ...@@ -65,6 +67,7 @@ class PayActivity : BaseActivity() {
*/ */
private const val PARAMS = "params" private const val PARAMS = "params"
private const val PARAMS_RED = "params_redPacket" private const val PARAMS_RED = "params_redPacket"
/** /**
* 支付类型 * 支付类型
* 1.微信支付 2.支付宝支付 * 1.微信支付 2.支付宝支付
...@@ -91,29 +94,41 @@ class PayActivity : BaseActivity() { ...@@ -91,29 +94,41 @@ class PayActivity : BaseActivity() {
//订单信息数据 //订单信息数据
private var payParams: PayParams? = null private var payParams: PayParams? = null
//红包列表数据+支付金额 //红包列表数据+支付金额
private var redPacketPayBean: RedPacketPayBean? = null private var redPacketPayBean: RedPacketPayBean? = null
//入口 //入口
private var inlet = PayParams.INLET_NORMAL private var inlet = PayParams.INLET_NORMAL
//红包列表弹窗 //红包列表弹窗
private var redPacketPopWindow: RedPacketPopWindow? = null private var redPacketPopWindow: RedPacketPopWindow? = null
//加载中弹窗 //加载中弹窗
private var dialog: AlertDialog? = null private var dialog: AlertDialog? = null
private var dialogContentView: View? = null private var dialogContentView: View? = null
//红包id 默认为0 //红包id 默认为0
private var redPacketId: String? = "0" private var redPacketId: String? = "0"
//使用红包金额 //使用红包金额
private var redPacketMoney: Float = 0f private var redPacketMoney: Float = 0f
//使用红包文案 //使用红包文案
private var redPacketMoneyContent: String = "" private var redPacketMoneyContent: String = ""
//账户余额 //账户余额
private var balanceMoney: Float = 0f private var balanceMoney: Float = 0f
//支付金额 //支付金额
private var payMoney: Float = 0F private var payMoney: Float = 0F
//可使用余额 //可使用余额
private var canBalanceMoney = 0F private var canBalanceMoney = 0F
//支付类型 //支付类型
private var payType = PAY_ALI private var payType = PAY_ALI
//测评下单数据bean //测评下单数据bean
private var testAddOrderBean: TestAddOrderBean? = null private var testAddOrderBean: TestAddOrderBean? = null
...@@ -538,6 +553,7 @@ class PayActivity : BaseActivity() { ...@@ -538,6 +553,7 @@ class PayActivity : BaseActivity() {
* 点击支付 * 点击支付
*/ */
private fun onClickPay() { private fun onClickPay() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "点击支付")
when (inlet) { when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
...@@ -603,6 +619,7 @@ class PayActivity : BaseActivity() { ...@@ -603,6 +619,7 @@ class PayActivity : BaseActivity() {
if (null == payParams) { if (null == payParams) {
return return
} }
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "进入充值, 0微信充值,其他支付宝充值:$select")
HttpUtils.recharge(RechargeParam(payParams!!.needPay.toInt().toString())) HttpUtils.recharge(RechargeParam(payParams!!.needPay.toInt().toString()))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -622,6 +639,8 @@ class PayActivity : BaseActivity() { ...@@ -622,6 +639,8 @@ class PayActivity : BaseActivity() {
.doOnSubscribe { showProgressDialog("") } .doOnSubscribe { showProgressDialog("") }
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付成功")
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
ToastUtil.toastShort("支付成功") ToastUtil.toastShort("支付成功")
var intent = Intent() var intent = Intent()
...@@ -633,6 +652,8 @@ class PayActivity : BaseActivity() { ...@@ -633,6 +652,8 @@ class PayActivity : BaseActivity() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastUtil.toastShort(msg) ToastUtil.toastShort(msg)
LogHelper.getInstance().writeLogSync("支付失败$msg") LogHelper.getInstance().writeLogSync("支付失败$msg")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付失败$msg")
} }
}) })
...@@ -644,13 +665,19 @@ class PayActivity : BaseActivity() { ...@@ -644,13 +665,19 @@ class PayActivity : BaseActivity() {
when (inlet) { when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付 正常入口")
balancePayById(payParams!!.payId) balancePayById(payParams!!.payId)
} }
INLET_TEST -> { INLET_TEST -> {
//测评入口 //测评入口
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付 测评入口")
balancePayById(testAddOrderBean!!.payId!!) balancePayById(testAddOrderBean!!.payId!!)
} }
else -> { else -> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付")
balancePayById(payParams!!.payId) balancePayById(payParams!!.payId)
} }
} }
...@@ -673,6 +700,7 @@ class PayActivity : BaseActivity() { ...@@ -673,6 +700,7 @@ class PayActivity : BaseActivity() {
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付:支付成功")
ToastUtil.toastShort("支付成功") ToastUtil.toastShort("支付成功")
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()
...@@ -680,6 +708,8 @@ class PayActivity : BaseActivity() { ...@@ -680,6 +708,8 @@ class PayActivity : BaseActivity() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastUtil.toastShort(msg) ToastUtil.toastShort(msg)
LogHelper.getInstance().writeLogSync("支付失败:$msg") LogHelper.getInstance().writeLogSync("支付失败:$msg")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付:支付失败:$msg")
} }
}) })
} }
...@@ -689,6 +719,7 @@ class PayActivity : BaseActivity() { ...@@ -689,6 +719,7 @@ class PayActivity : BaseActivity() {
*/ */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private fun appPay() { private fun appPay() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "微信支付 0 其他支付宝支付 select:${select}")
Observable.just(select) Observable.just(select)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -706,6 +737,7 @@ class PayActivity : BaseActivity() { ...@@ -706,6 +737,7 @@ class PayActivity : BaseActivity() {
.doOnSubscribe { showProgressDialog("") } .doOnSubscribe { showProgressDialog("") }
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付成功")
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()
...@@ -713,6 +745,8 @@ class PayActivity : BaseActivity() { ...@@ -713,6 +745,8 @@ class PayActivity : BaseActivity() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastUtil.toastShort(msg) ToastUtil.toastShort(msg)
LogHelper.getInstance().writeLogSync("支付失败:$msg") LogHelper.getInstance().writeLogSync("支付失败:$msg")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付失败:$msg")
} }
}) })
} }
...@@ -724,18 +758,21 @@ class PayActivity : BaseActivity() { ...@@ -724,18 +758,21 @@ class PayActivity : BaseActivity() {
return when (inlet) { return when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
wxPayById(payParams!!.payId,payParams?.merchantType.toString()) AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "微信支付:正常入口")
wxPayById(payParams!!.payId, payParams?.merchantType.toString())
} }
INLET_TEST -> { INLET_TEST -> {
//测评入口 //测评入口
if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) { 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 { } else {
null null
} }
} }
else -> { 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() { ...@@ -744,8 +781,8 @@ class PayActivity : BaseActivity() {
* 微信支付 * 微信支付
* @param payId 支付id * @param payId 支付id
*/ */
private fun wxPayById(payId: String,merchantType:String): Observable<PayStatus> { private fun wxPayById(payId: String, merchantType: String): Observable<PayStatus> {
val bean = WxPayParam(payId, 1,merchantType) val bean = WxPayParam(payId, 1, merchantType)
return HttpUtils.wxPay(bean) return HttpUtils.wxPay(bean)
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -760,17 +797,23 @@ class PayActivity : BaseActivity() { ...@@ -760,17 +797,23 @@ class PayActivity : BaseActivity() {
return when (inlet) { return when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付:正常入口")
aliPayById(payParams!!.payId) aliPayById(payParams!!.payId)
} }
INLET_TEST -> { INLET_TEST -> {
//测评入口 //测评入口
if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) { if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付:测评入口")
aliPayById(testAddOrderBean!!.payId!!) aliPayById(testAddOrderBean!!.payId!!)
} else { } else {
null null
} }
} }
else -> { else -> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付")
aliPayById(payParams!!.payId) aliPayById(payParams!!.payId)
} }
} }
...@@ -811,7 +854,8 @@ class PayActivity : BaseActivity() { ...@@ -811,7 +854,8 @@ class PayActivity : BaseActivity() {
.create() .create()
} }
if (dialogContentView == null) { 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 dialogContentView?.tvMsg?.visibility = View.GONE
} }
dialog?.show() dialog?.show()
......
...@@ -3,14 +3,16 @@ package com.yidianling.ydl_pay.pay ...@@ -3,14 +3,16 @@ package com.yidianling.ydl_pay.pay
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import com.alipay.sdk.app.PayTask 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.constants.Build
import com.tencent.mm.opensdk.modelpay.PayReq import com.tencent.mm.opensdk.modelpay.PayReq
import com.tencent.mm.opensdk.openapi.WXAPIFactory 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.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.CommonWXPayBean
import com.yidianling.ydl_pay.common.bean.PayResult 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 de.greenrobot.event.EventBus
import io.reactivex.Emitter import io.reactivex.Emitter
import io.reactivex.Observable import io.reactivex.Observable
...@@ -59,8 +61,18 @@ object RxPay { ...@@ -59,8 +61,18 @@ object RxPay {
val result = alipay.payV2(aliSign, true) val result = alipay.payV2(aliSign, true)
val payResult = PayResult(result) val payResult = PayResult(result)
when { 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() it.onComplete()
} }
......
...@@ -9,6 +9,8 @@ import android.support.v7.app.AlertDialog ...@@ -9,6 +9,8 @@ import android.support.v7.app.AlertDialog
import android.view.* import android.view.*
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.utils.StringUtils 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.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.ydl_pay.R import com.yidianling.ydl_pay.R
...@@ -160,6 +162,7 @@ class PayDialog : Dialog { ...@@ -160,6 +162,7 @@ class PayDialog : Dialog {
if (data?.payId == null) { if (data?.payId == null) {
ToastHelper.show("支付id有误,请返回重试") ToastHelper.show("支付id有误,请返回重试")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付id有误,请返回重试")
return return
} }
...@@ -187,9 +190,12 @@ class PayDialog : Dialog { ...@@ -187,9 +190,12 @@ class PayDialog : Dialog {
this.callBack?.onSuccess() this.callBack?.onSuccess()
} }
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付成功")
this.callBack?.onSuccess() this.callBack?.onSuccess()
dismiss() dismiss()
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付失败:${it.message}")
ToastHelper.show(it.message ?: "支付失败") ToastHelper.show(it.message ?: "支付失败")
LogHelper.getInstance().writeLogSync("支付失败:${it.message}") LogHelper.getInstance().writeLogSync("支付失败:${it.message}")
}) })
...@@ -200,6 +206,7 @@ class PayDialog : Dialog { ...@@ -200,6 +206,7 @@ class PayDialog : Dialog {
* @param payId 支付id * @param payId 支付id
*/ */
private fun wxPayById(payId: String,merchantType:String): Observable<PayStatus> { private fun wxPayById(payId: String,merchantType:String): Observable<PayStatus> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"微信支付")
val bean = WxPayParam(payId, 1,merchantType) val bean = WxPayParam(payId, 1,merchantType)
return HttpUtils.wxPay(bean) return HttpUtils.wxPay(bean)
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
...@@ -212,6 +219,8 @@ class PayDialog : Dialog { ...@@ -212,6 +219,8 @@ class PayDialog : Dialog {
* @param payId 支付Id * @param payId 支付Id
*/ */
private fun aliPayById(payId: String): Observable<PayStatus> { private fun aliPayById(payId: String): Observable<PayStatus> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付宝支付")
var bean = AliPayParam(payId, 1) var bean = AliPayParam(payId, 1)
return HttpUtils.getAliPayOrderId(bean) return HttpUtils.getAliPayOrderId(bean)
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
......
...@@ -72,10 +72,11 @@ dependencies { ...@@ -72,10 +72,11 @@ dependencies {
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//====================YDL Repository==================== //====================YDL Repository====================
// api rootProject.ext.dependencies["ydl-pushagent"] // api rootProject.ext.dependencies["ydl-pushagent"]
// api rootProject.ext.dependencies["ydl-hnet"] // api rootProject.ext.dependencies["ydl-hnet"]
api (rootProject.ext.dependencies["ydl-notracepoint"]){ api(rootProject.ext.dependencies["ydl-notracepoint"]) {
transitive = true transitive = true
exclude group: 'com.google.code.gson', module: 'gson' exclude group: 'com.google.code.gson', module: 'gson'
exclude group: 'com.squareup.okhttp3', module: 'okhttp3' exclude group: 'com.squareup.okhttp3', module: 'okhttp3'
......
...@@ -16,9 +16,13 @@ import com.ydl.ydlcommon.data.http.RxUtils ...@@ -16,9 +16,13 @@ import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.api.ApiRequestUtil import com.ydl.ydlcommon.data.http.api.ApiRequestUtil
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.utils.YDLCacheUtils 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.config.OkHttpConfig
import com.ydl.ydlnet.builder.factory.ApiFactory import com.ydl.ydlnet.builder.factory.ApiFactory
import com.ydl.ydlnet.builder.interceptor.log.RequestHandler 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.LogUtil
import com.yidianling.common.tools.RxAppTool import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool import com.yidianling.common.tools.RxDeviceTool
...@@ -118,6 +122,7 @@ class HttpConfig { ...@@ -118,6 +122,7 @@ class HttpConfig {
var ENCRYPTION_APP_KEY = "" // 接口加密appKey var ENCRYPTION_APP_KEY = "" // 接口加密appKey
var ENCRYPTION_APP_SECRET = "" // 接口加密appSecret var ENCRYPTION_APP_SECRET = "" // 接口加密appSecret
var isEncryption = false var isEncryption = false
var appDebug:Boolean=false
fun getInstance(): HttpConfig { fun getInstance(): HttpConfig {
return Holder.INSTANCE return Holder.INSTANCE
...@@ -127,7 +132,7 @@ class HttpConfig { ...@@ -127,7 +132,7 @@ class HttpConfig {
fun createOkHttp(): OkHttpClient { fun createOkHttp(): OkHttpClient {
val globalConfig = BaseApp.instance.getGlobalConfig() val globalConfig = BaseApp.instance.getGlobalConfig()
val context = BaseApp.getApp() val context = BaseApp.getApp()
val appDebug = globalConfig.appDebug appDebug = globalConfig.appDebug
val appName = globalConfig.appName val appName = globalConfig.appName
//获取证书 //获取证书
...@@ -144,7 +149,8 @@ class HttpConfig { ...@@ -144,7 +149,8 @@ class HttpConfig {
.setInterceptor( .setInterceptor(
commonParams(), commonParams(),
requestHead(appName), requestHead(appName),
addEncryptionHeaderParamsInterceptor() addEncryptionHeaderParamsInterceptor(),
responseErrorInterceptor()
) )
.setRequestHandler(getRequestHandler()) .setRequestHandler(getRequestHandler())
.setReadTimeout(15) .setReadTimeout(15)
...@@ -170,7 +176,7 @@ class HttpConfig { ...@@ -170,7 +176,7 @@ class HttpConfig {
path += it.request().url().encodedPath().substring(5) path += it.request().url().encodedPath().substring(5)
} }
else -> { else -> {
path+it.request().url().encodedPath() path + it.request().url().encodedPath()
} }
} }
val sign = EncryptionParams.getSign(path, timestamp) val sign = EncryptionParams.getSign(path, timestamp)
...@@ -180,12 +186,39 @@ class HttpConfig { ...@@ -180,12 +186,39 @@ class HttpConfig {
.addHeader("timestamp", timestamp) .addHeader("timestamp", timestamp)
.build() .build()
it.proceed(request) it.proceed(request)
}else{ } else {
it.proceed(it.request()) 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 { private fun getRequestHandler(): RequestHandler {
return object : RequestHandler { return object : RequestHandler {
override fun onHttpResultResponse( override fun onHttpResultResponse(
......
...@@ -134,10 +134,10 @@ class ActionCountUtils { ...@@ -134,10 +134,10 @@ class ActionCountUtils {
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp())) actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
actionDataParams.appId(appId) actionDataParams.appId(appId)
actionDataParams.api(api) actionDataParams.api(api)
actionDataParams.manufacturer(android.os.Build.BRAND.trim().toUpperCase()) actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(android.os.Build.MODEL) actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS) actionDataParams.os(BIConstants.OS)
actionDataParams.osVersion(android.os.Build.VERSION.RELEASE) actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1) actionDataParams.wifi(if (isWifi()) 0 else 1)
var deviceId = "" var deviceId = ""
/* /*
...@@ -243,10 +243,10 @@ class ActionCountUtils { ...@@ -243,10 +243,10 @@ class ActionCountUtils {
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp())) actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
actionDataParams.appId(appId) actionDataParams.appId(appId)
actionDataParams.api(api) actionDataParams.api(api)
actionDataParams.manufacturer(android.os.Build.BRAND.trim().toUpperCase()) actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(android.os.Build.MODEL) actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS) actionDataParams.os(BIConstants.OS)
actionDataParams.osVersion(android.os.Build.VERSION.RELEASE) actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1) actionDataParams.wifi(if (isWifi()) 0 else 1)
actionDataParams.screenWidth(RxDeviceTool.getScreenWidth(RxTool.getContext()!!)) actionDataParams.screenWidth(RxDeviceTool.getScreenWidth(RxTool.getContext()!!))
actionDataParams.screenHeight(RxDeviceTool.getScreenHeight(RxTool.getContext()!!)) actionDataParams.screenHeight(RxDeviceTool.getScreenHeight(RxTool.getContext()!!))
...@@ -287,7 +287,7 @@ class ActionCountUtils { ...@@ -287,7 +287,7 @@ class ActionCountUtils {
baiduActionDataParams.androidId(DeviceTool.getAndroidID())//MD5加密的androidId baiduActionDataParams.androidId(DeviceTool.getAndroidID())//MD5加密的androidId
baiduActionDataParams.ip("") baiduActionDataParams.ip("")
baiduActionDataParams.ipv6("")//给服务端传IPV6地址DeviceTool.getLocalIpV6() baiduActionDataParams.ipv6("")//给服务端传IPV6地址DeviceTool.getLocalIpV6()
baiduActionDataParams.tp(android.os.Build.MODEL) baiduActionDataParams.tp(Build.MODEL)
baiduActionDataParams.network(DeviceTool.getNetworkState(RxTool.getContext())) baiduActionDataParams.network(DeviceTool.getNetworkState(RxTool.getContext()))
baiduActionDataParams.convertParam("") baiduActionDataParams.convertParam("")
baiduActionDataParams.uid(uid) baiduActionDataParams.uid(uid)
...@@ -316,8 +316,52 @@ class ActionCountUtils { ...@@ -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参数,访问接口 * 传入ActionDataParams参数,访问接口
*/ */
@SuppressLint("CheckResult")
fun request(actionDataBean: ActionDataBean) { fun request(actionDataBean: ActionDataBean) {
try { try {
ApiRequestUtil.actionDataCount(actionDataBean) ApiRequestUtil.actionDataCount(actionDataBean)
......
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
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment