Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
7f627417
Commit
7f627417
authored
May 06, 2022
by
刘鹏
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/new_dev_4.3.91' into new_dev_4.3.91
# Conflicts: # config.gradle
parents
493da86b
e2c30018
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
404 additions
and
110 deletions
+404
-110
DemoGlobalConfig.java
app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
+2
-2
build.gradle
build.gradle
+9
-51
config.gradle
config.gradle
+6
-2
build.gradle
m-audioim/build.gradle
+2
-3
AudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
+24
-1
YDLavManager.kt
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
+15
-0
ApmEvent.kt
m-audioim/src/main/java/com/ydl/audioim/utils/ApmEvent.kt
+17
-0
ExpertSearchAdapter.kt
m-consultant/src/main/java/com/yidianling/consultant/adapter/ExpertSearchAdapter.kt
+7
-1
consultant_item_tag.xml
m-consultant/src/main/res/layout/consultant_item_tag.xml
+0
-1
dynamicFocusEvent.kt
m-dynamic/src/main/java/com/yidianling/dynamic/event/dynamicFocusEvent.kt
+6
-0
MembersActivity.java
m-dynamic/src/main/java/com/yidianling/dynamic/members/MembersActivity.java
+5
-0
TopicDetailActivity.java
m-dynamic/src/main/java/com/yidianling/dynamic/topic/topicDetail/TopicDetailActivity.java
+5
-0
TrendsDetailActivity.java
m-dynamic/src/main/java/com/yidianling/dynamic/trendsDetail/TrendsDetailActivity.java
+16
-1
HomeBaseImpl.kt
m-home/src/main/java/com/yidianling/home/event/HomeBaseImpl.kt
+13
-2
IHomeBaseEvent.kt
m-home/src/main/java/com/yidianling/home/event/IHomeBaseEvent.kt
+7
-0
HomeAssuageGriefItemView.kt
m-home/src/ydl/java/com/yidianling/home/ui/view/HomeAssuageGriefItemView.kt
+4
-1
home_assuage_grief_item_view.xml
m-home/src/ydl/res/layout/home_assuage_grief_item_view.xml
+1
-0
FirstQuestionBean.kt
m-im/src/main/java/com/yidianling/im/bean/FirstQuestionBean.kt
+15
-0
FirstQuestionAdapter.kt
m-im/src/main/java/com/yidianling/im/ui/adapter/FirstQuestionAdapter.kt
+20
-0
YDLMessageFragment.java
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
+21
-4
InputPanel.java
m-im/src/main/java/com/yidianling/uikit/business/session/module/input/InputPanel.java
+74
-1
ServiceApi.kt
m-im/src/main/java/com/yidianling/uikit/custom/http/ServiceApi.kt
+9
-4
ServiceImpl.kt
m-im/src/main/java/com/yidianling/uikit/custom/http/ServiceImpl.kt
+13
-0
im_item_chat_first_question.xml
m-im/src/main/res/layout/im_item_chat_first_question.xml
+23
-0
im_nim_message_activity_bottom_layout.xml
m-im/src/main/res_uikit/layout/im_nim_message_activity_bottom_layout.xml
+58
-15
im_nim_message_activity_text_layout.xml
m-im/src/main/res_uikit/layout/im_nim_message_activity_text_layout.xml
+19
-20
im_ydl_nim_message_fragment.xml
m-im/src/main/res_uikit/layout/im_ydl_nim_message_fragment.xml
+2
-1
maven_push.gradle
maven_push.gradle
+8
-0
build.gradle
ydl-platform/build.gradle
+1
-0
AliYunRichLogsHelper.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/AliYunRichLogsHelper.kt
+2
-0
No files found.
app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
View file @
7f627417
...
...
@@ -21,9 +21,9 @@ import java.util.List;
public
final
class
DemoGlobalConfig
implements
IConfigModule
{
String
APP_DOMAIN
=
"https://api.github.com/"
;
// public static String appEnv = YDLConstants.ENV_AUTO_TEST;
public
static
String
appEnv
=
YDLConstants
.
ENV_TEST
;
//
public static String appEnv = YDLConstants.ENV_TEST;
// public static String appEnv = YDLConstants.ENV_NEW_TEST;//配置未上传到maven库
//
public static String appEnv = YDLConstants.ENV_PROD;
public
static
String
appEnv
=
YDLConstants
.
ENV_PROD
;
@Override
public
void
injectAppLifecycle
(
@NotNull
Context
context
,
@NotNull
List
<
IAppLifecycles
>
lifecycles
)
{
lifecycles
.
add
(
new
DemoAppLifecycles
());
...
...
build.gradle
View file @
7f627417
apply
from:
"config.gradle"
buildscript
{
ext
.
kotlin_version
=
'1.3.50'
ext
{
kotlin_version
=
'1.3.
21
'
kotlin_version
=
'1.3.
50
'
support_version
=
'26.1.0'
minSdkVersion
=
21
targetSdkVersion
=
28
...
...
@@ -16,50 +15,27 @@ buildscript {
constrait_support_version
=
'1.0.2'
}
repositories
{
google
()
//壹点灵android maven私服 开发版
maven
{
url
'http://nexus.yidianling.com/repository/AndroidRepository/'
credentials
{
username
"admin"
password
"fjoi#1+#@"
}
}
maven
{
url
'http://nexus.yidianling.com/repository/
AndroidReleases
/'
url
'http://nexus.yidianling.com/repository/
android
/'
credentials
{
username
"admin"
password
"fjoi#1+#@"
}
}
maven
{
url
'http://maven.aliyun.com/nexus/content/groups/public/'
}
// maven {
// url 'https://dl.bintray.com/zouyuhan/maven'
// }
mavenCentral
()
google
()
jcenter
()
maven
{
url
"https://oss.sonatype.org/content/repositories/snapshots/"
}
//Umeng sdk maven 地址
maven
{
url
'https://repo1.maven.org/maven2/'
}
mavenLocal
()
// maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies
{
classpath
'com.android.tools.build:gradle:3.2.0'
classpath
"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath
'com.jakewharton:butterknife-gradle-plugin:8.4.0'
classpath
'com.meituan.android.walle:plugin:1.1.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath
'com.meituan.robust:gradle-plugin:0.4.87'
classpath
'com.meituan.robust:auto-patch-plugin:0.4.87'
//bugly 符号表
classpath
'com.tencent.bugly:symtabfileuploader:2.2.1'
//微信资源混淆
classpath
'com.tencent.mm:AndResGuard-gradle-plugin:1.2.16'
classpath
'com.ydl.plugins:modular:1.0.3'
classpath
'com.ydl:notracepoint-gradle-plugin:0.0.3'
classpath
'com.ydl.plugins:restools:
0
.0.1'
classpath
'com.ydl.plugins:restools:
1
.0.1'
classpath
'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc1'
}
}
...
...
@@ -68,34 +44,16 @@ allprojects {
repositories
{
//壹点灵android maven私服 开发版
maven
{
url
'http://nexus.yidianling.com/repository/AndroidRepository/'
credentials
{
username
"admin"
password
"fjoi#1+#@"
}
}
maven
{
url
'http://nexus.yidianling.com/repository/AndroidReleases/'
url
'http://nexus.yidianling.com/repository/android/'
credentials
{
username
"admin"
password
"fjoi#1+#@"
}
}
maven
{
url
'http://maven.aliyun.com/nexus/content/groups/public/'
}
// maven { url'http://developer.huawei.com/repo/' }
maven
{
url
"https://jitpack.io"
}
maven
{
// url 'https://maven.google.com'
url
'https://dl.google.com/dl/android/maven2/'
}
// maven {
// url 'https://dl.bintray.com/zouyuhan/maven'
// }
mavenCentral
()
google
()
jcenter
()
maven
{
url
'https://maven.aliyun.com/repository/releases'
}
//Umeng sdk maven 地址
maven
{
url
'https://repo1.maven.org/maven2/'
}
mavenLocal
()
}
}
...
...
config.gradle
View file @
7f627417
...
...
@@ -6,9 +6,11 @@ ext {
// -------------- 业务模块 --------------
//第三步 若干
"m-confide"
:
"0.0.49.69"
,
"m-consultant"
:
"0.0.60.
19
"
,
"m-consultant"
:
"0.0.60.
20
"
,
"m-fm"
:
"0.0.30.08"
,
"m-user"
:
"0.0.62.04"
,
"m-home"
:
"0.0.23.18"
,
"m-im"
:
"0.0.21.30"
,
"m-home"
:
"0.0.23.35"
,
"m-im"
:
"0.0.21.30"
,
"m-dynamic"
:
"0.0.7.35"
,
...
...
@@ -92,9 +94,11 @@ ext {
//第三步 若干
"m-confide"
:
"0.0.49.69"
,
"m-consultant"
:
"0.0.60.
19
"
,
"m-consultant"
:
"0.0.60.
20
"
,
"m-fm"
:
"0.0.30.08"
,
"m-user"
:
"0.0.62.04"
,
"m-home"
:
"0.0.23.18"
,
"m-im"
:
"0.0.21.30"
,
"m-home"
:
"0.0.23.35"
,
"m-im"
:
"0.0.21.30"
,
"m-dynamic"
:
"0.0.7.35"
,
...
...
m-audioim/build.gradle
View file @
7f627417
...
...
@@ -75,9 +75,8 @@ dependencies {
kapt
"com.alibaba:arouter-compiler:$arouter_compiler"
api
"com.alibaba:arouter-api:$arouter_api"
api
(
'com.ydl:ydl-av:1.3.4@aar'
){
transitive
=
true
}
implementation
"com.ydl:ydl-av:1.3.9"
implementation
'com.volcengine:apm_insight:1.4.6.cn'
if
(
rootProject
.
ext
.
dev_mode
){
//开发时使用
...
...
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
View file @
7f627417
...
...
@@ -34,6 +34,7 @@ import com.ydl.audioim.player.AudioPlayer
import
com.ydl.audioim.presenter.AudioHomePresenterImpl
import
com.ydl.audioim.utils.AudioLogUtils
import
com.ydl.audioim.utils.DateUtils
import
com.ydl.audioim.utils.onConfideEvent
import
com.ydl.audioim.widget.AxbConfirmDialog
import
com.ydl.audioim.widget.ZDialog
import
com.ydl.webview.H5Params
...
...
@@ -55,7 +56,6 @@ import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import
com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import
com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.user.api.service.IUserService
import
de.greenrobot.event.EventBus
import
io.agora.rtc.Constants
...
...
@@ -262,6 +262,7 @@ class AudioHomeActivity :
override
fun
onJoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
onMeJoined
()
callEventSave
(
"20"
,
"$uid 用户声网加入频道成功:channel=$channel"
)
LogUtil
.
e
(
"[agora]$uid 用户声网加入频道成功:channel=$channel"
)
...
...
@@ -349,6 +350,7 @@ class AudioHomeActivity :
super
.
onUserJoined
(
uid
,
elapsed
)
callEventSave
(
"20"
,
"${uid}加入频道回调"
)
LogUtil
.
e
(
"[agora]远端用户/主播加入频道回调"
)
onPeerJoined
()
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"远端用户/主播加入频道回调"
)
}
...
...
@@ -795,6 +797,7 @@ class AudioHomeActivity :
fun
rtcCall
()
{
YDLavManager
.
instances
.
rtcCall
(
listenerUid
,
channelId
,
sendDoctocrMsg
)
onStartCall
()
}
/**
...
...
@@ -1411,4 +1414,24 @@ class AudioHomeActivity :
)
{
YDLavManager
.
instances
.
callEventSave
(
status
,
res
,
session
,
line
)
}
private
fun
onStartCall
()
{
val
dimension
=
hashMapOf
(
"conversation"
to
"start_call"
,
"call"
to
"call_start"
)
onConfideEvent
(
dimension
,
channelId
)
}
private
fun
onMeJoined
()
{
val
dimension
=
hashMapOf
(
"conversation"
to
"me_joined"
)
onConfideEvent
(
dimension
,
channelId
)
}
fun
onPeerAccepted
()
{
val
dimension
=
hashMapOf
(
"conversation"
to
"peer_accepted"
,
"call"
to
"call_accepted"
)
onConfideEvent
(
dimension
,
channelId
)
}
private
fun
onPeerJoined
()
{
val
dimension
=
hashMapOf
(
"conversation"
to
"peer_joined"
)
onConfideEvent
(
dimension
,
channelId
)
}
}
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
View file @
7f627417
...
...
@@ -6,6 +6,7 @@ import android.os.Handler
import
android.text.TextUtils
import
android.util.Log
import
com.alibaba.android.arouter.launcher.ARouter
import
com.bytedance.apm.insight.ApmInsightAgent
import
com.google.gson.Gson
import
com.ydl.audioim.bean.AgoraInvitationBean
import
com.ydl.audioim.http.AudioApiRequestUtil
...
...
@@ -13,6 +14,7 @@ import com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.router.AudioImIn
import
com.ydl.audioim.utils.AudioLogUtils
import
com.ydl.audioim.utils.AudioLogUtils.Companion.writeAgoraLog
import
com.ydl.audioim.utils.onConfideEvent
import
com.ydl.consultantim.ConsultantAudioHomeActivity
import
com.ydl.ydl_av.messge_service.YDLRTMClient
import
com.ydl.ydl_av.messge_service.bean.RTMMesssage
...
...
@@ -41,6 +43,7 @@ import io.agora.rtm.RtmStatusCode.ConnectionChangeReason.CONNECTION_CHANGE_REASO
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
org.json.JSONObject
import
java.util.*
import
java.util.concurrent.TimeUnit
...
...
@@ -99,6 +102,8 @@ class YDLavManager {
"${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}"
)
val
dimension
=
hashMapOf
(
"call"
to
"call_received_by_peer"
)
onConfideEvent
(
dimension
,
response
?.
ChannelId
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
...
...
@@ -120,6 +125,7 @@ class YDLavManager {
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
joinChannel
()
act
.
onPeerAccepted
()
}
}
}
...
...
@@ -131,6 +137,8 @@ class YDLavManager {
AliYunLogConfig
.
AGORA
,
"${response?.calleeId}已拒绝呼叫邀请"
)
val
dimension
=
hashMapOf
(
"call"
to
"call_refused"
)
onConfideEvent
(
dimension
,
response
?.
ChannelId
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
...
...
@@ -152,6 +160,8 @@ class YDLavManager {
AliYunLogConfig
.
AGORA
,
"主叫已取消呼叫邀请"
)
val
dimension
=
hashMapOf
(
"call"
to
"call_canceled"
)
onConfideEvent
(
dimension
,
response
?.
ChannelId
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
...
...
@@ -168,6 +178,11 @@ class YDLavManager {
AliYunLogConfig
.
AGORA
,
"呼叫${response?.calleeId}用户失败:${response?.response}"
)
val
dimension
=
hashMapOf
(
"call"
to
"call_fail"
,
"call_fail"
to
"code${errorCode}"
)
onConfideEvent
(
dimension
,
response
?.
ChannelId
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
when
(
errorCode
)
{
...
...
m-audioim/src/main/java/com/ydl/audioim/utils/ApmEvent.kt
0 → 100644
View file @
7f627417
package
com.ydl.audioim.utils
import
com.apm.insight.log.VLog
import
com.bytedance.apm.insight.ApmInsightAgent
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
org.json.JSONObject
internal
fun
onConfideEvent
(
dimension
:
HashMap
<
String
,
String
>,
channel
:
String
?)
{
try
{
val
uid
=
ModularServiceManager
.
getPlatformUserService
()
?.
getUser
()
?.
userId
val
ext
=
JSONObject
(
mapOf
(
"uid"
to
uid
,
"channelId"
to
(
channel
?:
"unknown"
)))
ApmInsightAgent
.
monitorEvent
(
"confide"
,
dimension
,
hashMapOf
(),
ext
)
}
catch
(
throwable
:
Throwable
)
{
VLog
.
e
(
"onConfideEvent"
,
throwable
.
message
)
}
}
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/adapter/ExpertSearchAdapter.kt
View file @
7f627417
...
...
@@ -230,7 +230,13 @@ class ExpertSearchAdapter(
if
(
it
.
isNotEmpty
()){
for
(
tag
in
itemBean
.
tagList
){
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_item_tag
,
holder
.
ll_tags
,
false
)
view
.
tvTag
.
text
=
tag
.
tagName
tag
.
tagName
?.
let
{
name
->
if
(
name
.
length
>
4
){
view
.
tvTag
.
text
=
"${name.substring(0,4)}…"
}
else
{
view
.
tvTag
.
text
=
name
}
}
if
(
tag
.
isHigh
==
1
){
view
.
tvTag
.
setBackgroundResource
(
R
.
drawable
.
consultant_bg_radius_line_eb892c
)
view
.
tvTag
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
color_EB892C
))
...
...
m-consultant/src/main/res/layout/consultant_item_tag.xml
View file @
7f627417
...
...
@@ -8,7 +8,6 @@
android:gravity=
"center"
android:layout_marginEnd=
"6dp"
android:padding=
"3dp"
android:maxLength=
"5"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"10sp"
tools:text=
"恋爱情感"
/>
m-dynamic/src/main/java/com/yidianling/dynamic/event/dynamicFocusEvent.kt
0 → 100644
View file @
7f627417
package
com.yidianling.dynamic.event
data class
dynamicFocusEvent
(
var
focusState
:
String
)
\ No newline at end of file
m-dynamic/src/main/java/com/yidianling/dynamic/members/MembersActivity.java
View file @
7f627417
...
...
@@ -42,6 +42,7 @@ import com.yidianling.dynamic.common.net.DynamicApiUtils;
import
com.yidianling.dynamic.dialog.CancelFocusDialog
;
import
com.yidianling.dynamic.event.BlackEvent
;
import
com.yidianling.dynamic.event.LoginStateEvent
;
import
com.yidianling.dynamic.event.dynamicFocusEvent
;
import
com.yidianling.dynamic.model.Command
;
import
com.yidianling.dynamic.model.MemberInfoBean
;
import
com.yidianling.dynamic.router.DynamicIn
;
...
...
@@ -433,7 +434,9 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
/**
*
*/
@SuppressLint
(
"CheckResult"
)
private
void
Focus
()
{
showProgressDialog
(
""
);
Command
.
FocusCmd
cmd
=
new
Command
.
FocusCmd
(
mem_id
,
"1"
);
DynamicApiUtils
.
focus
(
cmd
)
...
...
@@ -450,6 +453,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
fans_count
=
(
fans_counti
+
1
)
+
""
;
members_top_user_fensi_num_tv
.
setText
(
"粉丝 "
+
fans_count
);
focus_state
=
"1"
;
EventBus
.
getDefault
().
post
(
new
dynamicFocusEvent
(
focus_state
));
Drawable
drawable
=
getResources
().
getDrawable
(
R
.
drawable
.
dynamic_ic_expand
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
());
members_top_user_focus_ortion_tv
.
setCompoundDrawablePadding
(
20
);
...
...
@@ -461,6 +465,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
fans_count
=
(
fans_counti
-
1
)
+
""
;
members_top_user_fensi_num_tv
.
setText
(
"粉丝 "
+
fans_count
);
focus_state
=
"2"
;
EventBus
.
getDefault
().
post
(
new
dynamicFocusEvent
(
focus_state
));
members_top_user_focus_ortion_tv
.
setCompoundDrawables
(
null
,
null
,
null
,
null
);
members_top_user_focus_ortion_tv
.
setText
(
"+ 关注"
);
members_top_user_focus_ortion_tv
.
setTextColor
(
getResources
().
getColor
(
R
.
color
.
dynamic_white
));
...
...
m-dynamic/src/main/java/com/yidianling/dynamic/topic/topicDetail/TopicDetailActivity.java
View file @
7f627417
...
...
@@ -290,6 +290,11 @@ public class TopicDetailActivity extends BaseMvpActivity<TopicDetailView, TopicD
totalMembers
=
0
;
topicId
=
getIntent
().
getStringExtra
(
"topic_id"
);
isSplash
=
getIntent
().
getBooleanExtra
(
"isSplash"
,
false
);
Bundle
bundle
=
getIntent
().
getBundleExtra
(
"bundle"
);
if
(
bundle
!=
null
)
{
topicId
=
bundle
.
getString
(
"topic_id"
,
"44"
);
isSplash
=
bundle
.
getBoolean
(
"isSplash"
,
false
);
}
adapter
=
new
TopicDetailMemberAdapter
(
this
);
mFragments
=
new
Fragment
[]{
TrendListInFragment
.
newInstance
(
"1"
,
topicId
,
"default"
,
"0"
),
TrendListInFragment
.
newInstance
(
"2"
,
topicId
,
"default"
,
"0"
)};
...
...
m-dynamic/src/main/java/com/yidianling/dynamic/trendsDetail/TrendsDetailActivity.java
View file @
7f627417
...
...
@@ -24,6 +24,7 @@ import android.text.Html;
import
android.text.TextUtils
;
import
android.text.TextWatcher
;
import
android.text.style.ImageSpan
;
import
android.util.EventLog
;
import
android.view.KeyEvent
;
import
android.view.MotionEvent
;
import
android.view.View
;
...
...
@@ -72,6 +73,8 @@ import com.yidianling.dynamic.R2;
import
com.yidianling.dynamic.common.browsePictures.BrowsePicturesActivity2
;
import
com.yidianling.dynamic.common.emoji.EmoticonPickerView
;
import
com.yidianling.dynamic.common.emoji.IEmoticonSelectedListener
;
import
com.yidianling.dynamic.event.LoginStateEvent
;
import
com.yidianling.dynamic.event.dynamicFocusEvent
;
import
com.yidianling.dynamic.members.MembersActivity
;
import
com.yidianling.dynamic.model.CommentBean
;
import
com.yidianling.dynamic.model.Reply
;
...
...
@@ -95,6 +98,7 @@ import java.util.concurrent.TimeUnit;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.OnClick
;
import
de.greenrobot.event.EventBus
;
import
io.reactivex.Observable
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
...
...
@@ -374,6 +378,7 @@ public class TrendsDetailActivity extends BaseMvpActivity<ITrendsDetailView, ITr
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
EventBus
.
getDefault
().
register
(
this
);
setContentView
(
R
.
layout
.
dynamic_activity_trend_details
);
ButterKnife
.
bind
(
this
);
initDatas
();
...
...
@@ -1451,8 +1456,18 @@ public class TrendsDetailActivity extends BaseMvpActivity<ITrendsDetailView, ITr
if
(
subscribe
!=
null
)
{
subscribe
.
dispose
();
}
EventBus
.
getDefault
().
unregister
(
this
);
}
public
void
onEvent
(
dynamicFocusEvent
event
)
{
// 1已关注 2关注
if
(
event
.
getFocusState
().
equals
(
"1"
)){
tvGuanzhu
.
setVisibility
(
GONE
);
tvGuanzhu
.
setText
(
"已关注"
);
}
else
{
tvGuanzhu
.
setVisibility
(
VISIBLE
);
tvGuanzhu
.
setText
(
"关注"
);
}
}
@NonNull
@Override
public
ITrendsDetailPresenterImpl
createPresenter
()
{
...
...
m-home/src/main/java/com/yidianling/home/event/HomeBaseImpl.kt
View file @
7f627417
...
...
@@ -4,10 +4,10 @@ import android.content.Context
import
android.content.Intent
import
android.net.Uri
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
androidx.recyclerview.widget.RecyclerView
import
android.text.TextUtils
import
android.view.View
import
androidx.appcompat.app.AppCompatActivity
import
androidx.recyclerview.widget.RecyclerView
import
com.alibaba.android.arouter.launcher.ARouter
import
com.ydl.media.audio.AudioPlayer
import
com.ydl.media.audio.model.Music
...
...
@@ -23,6 +23,7 @@ import com.ydl.ydlcommon.base.config.HttpConfig
import
com.ydl.ydlcommon.bean.ShareData
import
com.ydl.ydlcommon.data.PlatformRamImpl
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.modular.ModularServiceManager.provide
import
com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.ydl.ydlcommon.utils.LogUtil
import
com.ydl.ydlcommon.utils.Utils
...
...
@@ -110,6 +111,16 @@ open class HomeBaseImpl : IHomeBaseEvent {
mHomeView
!!
.
getConsultData
(
type
.
id
.
toString
(),
selectPosition
)
}
override
fun
jumpToTopicDetail
(
topic_id
:
String
)
{
val
bundle
=
Bundle
()
bundle
.
putString
(
"topic_id"
,
topic_id
)
bundle
.
putBoolean
(
"isSplash"
,
false
)
//动态详情
ARouter
.
getInstance
().
build
(
"/topic/detail"
)
.
withBundle
(
"bundle"
,
bundle
)
.
navigation
()
}
private
var
headerView
:
View
?
=
null
var
mContext
:
Context
?
=
null
...
...
m-home/src/main/java/com/yidianling/home/event/IHomeBaseEvent.kt
View file @
7f627417
...
...
@@ -185,4 +185,10 @@ interface IHomeBaseEvent {
* @param selectPosition 选中的position
*/
fun
getConsultData
(
type
:
HomeHeaderBean
.
ConsultCategoryDateBean
,
selectPosition
:
Int
)
/*
* 跳转话题详情
*
* */
fun
jumpToTopicDetail
(
topic_id
:
String
)
}
\ No newline at end of file
m-home/src/ydl/java/com/yidianling/home/ui/view/HomeAssuageGriefItemView.kt
View file @
7f627417
...
...
@@ -67,7 +67,10 @@ class HomeAssuageGriefItemView(private val mContext: Context, private var homeEv
homeModuleAssuageGriefViewTag
.
text
=
bean
?.
askTag
homeModuleAssuageGriefViewCommentsCount
.
text
=
bean
?.
commentsCount
.
toString
()
homeModuleAssuageGriefViewZanCount
.
text
=
bean
?.
zanCount
.
toString
()
ll_topic_detail
.
setOnClickListener
{
//跳转话题详情
homeEvent
?.
jumpToTopicDetail
(
bean
.
topicId
.
toString
())
}
/**
* 点赞
...
...
m-home/src/ydl/res/layout/home_assuage_grief_item_view.xml
View file @
7f627417
...
...
@@ -187,6 +187,7 @@
android:background=
"@drawable/home_assuage_grief_item_view_tab_back"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
android:id=
"@+id/ll_topic_detail"
android:paddingLeft=
"@dimen/platform_dp_7"
android:paddingTop=
"@dimen/platform_dp_4"
android:paddingRight=
"@dimen/platform_dp_7"
...
...
m-im/src/main/java/com/yidianling/im/bean/FirstQuestionBean.kt
0 → 100644
View file @
7f627417
package
com.yidianling.im.bean
/**
* Created by Ykai on 2022/5/6.
*/
data class
FirstQuestionBean
(
var
objects
:
List
<
ContentBean
>
)
data class
ContentBean
(
var
type
:
Int
,
var
content
:
String
,
var
id
:
Long
)
\ No newline at end of file
m-im/src/main/java/com/yidianling/im/ui/adapter/FirstQuestionAdapter.kt
0 → 100644
View file @
7f627417
package
com.yidianling.im.ui.adapter
import
com.chad.library.adapter.base.BaseQuickAdapter
import
com.chad.library.adapter.base.BaseViewHolder
import
com.yidianling.im.R
import
com.yidianling.im.bean.ContentBean
/**
* Created by Ykai on 2022/5/5.
*
* 首问语适配器
*/
class
FirstQuestionAdapter
(
data
:
MutableList
<
ContentBean
>):
BaseQuickAdapter
<
ContentBean
,
BaseViewHolder
>(
R
.
layout
.
im_item_chat_first_question
)
{
override
fun
convert
(
holder
:
BaseViewHolder
,
item
:
ContentBean
)
{
holder
.
setText
(
R
.
id
.
tv_question_name
,
item
.
content
)
}
}
\ No newline at end of file
m-im/src/main/java/com/yidianling/uikit/business/session/fragment/YDLMessageFragment.java
View file @
7f627417
...
...
@@ -30,6 +30,7 @@ import androidx.appcompat.app.AppCompatActivity;
import
androidx.constraintlayout.widget.ConstraintLayout
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.blankj.utilcode.util.SPUtils
;
import
com.google.gson.Gson
;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.Observer
;
...
...
@@ -250,6 +251,7 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
}
};
@SuppressLint
(
"CheckResult"
)
@Override
public
void
onActivityCreated
(
Bundle
savedInstanceState
)
{
super
.
onActivityCreated
(
savedInstanceState
);
...
...
@@ -257,9 +259,6 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
titleBar
=
((
YDLBaseMessageActivity
)
getActivity
()).
getTitleBarBottom
();
titleBar
.
setTitleLeftDraw
(
getResources
().
getDrawable
(
R
.
drawable
.
loading_01
));
titleBar
.
setTitle
(
"正在连接中..."
);
if
(
sessionType
==
SessionTypeEnum
.
Team
){
titleBar
.
setRightIcon
(
getContext
().
getDrawable
(
R
.
drawable
.
platform_common_more
));
}
fl_container
=
rootView
.
findViewById
(
R
.
id
.
message_activity_list_view_container
);
v_chattips
=
rootView
.
findViewById
(
R
.
id
.
v_chattips
);
...
...
@@ -318,9 +317,27 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
}
//如果是群聊
if
(
SessionTypeEnum
.
Team
==
sessionType
){
titleBar
.
setRightIcon
(
getContext
().
getDrawable
(
R
.
drawable
.
platform_common_more
));
rela_zixun
.
setVisibility
(
View
.
GONE
);
titleBar
.
setTitleRightDraw
(
null
);
}
// 判断最近一次发送消息的时间是否大于24小时
long
time
=
System
.
currentTimeMillis
()-
SPUtils
.
getInstance
().
getLong
(
ModularServiceManager
.
INSTANCE
.
provide
(
IUserService
.
class
).
getUserInfo
().
getUid
(),
0L
);
if
(
time
==
0L
||
time
>
24
*
60
*
60
*
1000
){
//如果等于0或者大于则请求首问语接口
// 获取首问语数据
ServiceImpl
.
Companion
.
getInstance
().
getFirstQuestion
()
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
res
->
{
if
(
res
.
code
.
equals
(
"200"
)){
if
(!
res
.
data
.
getObjects
().
isEmpty
()){
inputPanel
.
setFirstQuestion
(
res
.
data
.
getObjects
());
}
}
},
throwable
->
{
ToastUtil
.
toastShort
(
throwable
.
getMessage
());
});
}
}
...
...
@@ -429,8 +446,8 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
},
throwable
->
{
});
}
}
/**
* 是否隐藏输入框相关控件
*/
...
...
m-im/src/main/java/com/yidianling/uikit/business/session/module/input/InputPanel.java
View file @
7f627417
...
...
@@ -26,7 +26,13 @@ import android.widget.ImageView;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
androidx.constraintlayout.widget.ConstraintLayout
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.alibaba.fastjson.JSONObject
;
import
com.blankj.utilcode.util.SPUtils
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.netease.nimlib.sdk.NIMClient
;
import
com.netease.nimlib.sdk.media.record.AudioRecorder
;
import
com.netease.nimlib.sdk.media.record.IAudioRecordCallback
;
...
...
@@ -40,9 +46,13 @@ import com.netease.nimlib.sdk.msg.model.CustomNotificationConfig;
import
com.netease.nimlib.sdk.msg.model.IMMessage
;
import
com.tbruyelle.rxpermissions2.Permission
;
import
com.tbruyelle.rxpermissions2.RxPermissions
;
import
com.ydl.ydlcommon.modular.ModularServiceManager
;
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
;
import
com.yidianling.common.tools.ToastUtil
;
import
com.yidianling.im.R
;
import
com.yidianling.im.bean.ContentBean
;
import
com.yidianling.im.event.MultipleSelectedEvent
;
import
com.yidianling.im.ui.adapter.FirstQuestionAdapter
;
import
com.yidianling.nimbase.api.UIKitOptions
;
import
com.yidianling.nimbase.api.model.session.SessionCustomization
;
import
com.yidianling.nimbase.business.session.actions.BaseAction
;
...
...
@@ -58,8 +68,10 @@ import com.yidianling.uikit.api.NimUIKit;
import
com.yidianling.uikit.api.NimUIKitImpl
;
import
com.yidianling.uikit.business.ait.AitTextChangeListener
;
import
com.yidianling.uikit.custom.widget.SafeHelpRemindDialog
;
import
com.yidianling.user.api.service.IUserService
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.List
;
import
de.greenrobot.event.EventBus
;
...
...
@@ -112,6 +124,11 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
/***贴图表情控件*/
protected
EmoticonPickerView
emoticonPickerView
;
/**首问语相关控件*/
public
ConstraintLayout
clFirstQuestion
;
public
RecyclerView
rvFirstQuestion
;
private
FirstQuestionAdapter
firstQuestionAdapter
;
/***语音*/
protected
AudioRecorder
audioMessageHelper
;
private
Chronometer
time
;
...
...
@@ -148,6 +165,8 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
private
Boolean
onlyShowInputTest
=
false
;
//灵犀2.0 点击其他的时候隐藏除输入框以外的其他内容
private
String
uid
;
/***设置输入框内容*/
public
void
setInputContent
(
String
content
)
{
messageEditText
.
setText
(
content
==
null
?
""
:
content
);
...
...
@@ -218,6 +237,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
}
private
void
init
()
{
uid
=
ModularServiceManager
.
INSTANCE
.
provide
(
IUserService
.
class
).
getUserInfo
().
getUid
();
initViews
();
initInputBarListener
();
initTextEdit
();
...
...
@@ -276,6 +296,35 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
textAudioSwitchLayout
.
setVisibility
(
View
.
GONE
);
}
initVoice
();
// 首问语控件初始化
initFirstQuestion
();
}
private
void
initFirstQuestion
()
{
clFirstQuestion
=
view
.
findViewById
(
R
.
id
.
cl_first_question
);
rvFirstQuestion
=
view
.
findViewById
(
R
.
id
.
rv_first_question
);
firstQuestionAdapter
=
new
FirstQuestionAdapter
(
new
ArrayList
<>());
rvFirstQuestion
.
setLayoutManager
(
new
LinearLayoutManager
(
context
));
rvFirstQuestion
.
setAdapter
(
firstQuestionAdapter
);
firstQuestionAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
{
String
content
=
firstQuestionAdapter
.
getData
().
get
(
position
).
getContent
();
// 埋点
ActionCountUtils
.
Companion
.
baiDuCountSign3
(
"counselor_consult_page"
,
"quick_language_click"
,
content
,
""
,
""
);
// 根据uid记录每次发消息的时间戳
SPUtils
.
getInstance
().
put
(
uid
,
System
.
currentTimeMillis
());
onTextMessageSendButtonPressed
(
content
);
clFirstQuestion
.
setVisibility
(
View
.
GONE
);
});
}
/**
* 设置首问语数据
* @param data
*/
public
void
setFirstQuestion
(
List
<
ContentBean
>
data
){
clFirstQuestion
.
setVisibility
(
View
.
VISIBLE
);
firstQuestionAdapter
.
getData
().
addAll
(
data
);
firstQuestionAdapter
.
notifyDataSetChanged
();
}
private
void
initVoice
()
{
...
...
@@ -446,6 +495,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
// 点击edittext,切换键盘和更多布局
private
void
switchToTextLayout
(
boolean
needShowInput
)
{
hideEmojiLayout
();
hideFirstQuestionLayout
();
hideActionPanelLayout
();
audioRecordBtn
.
setVisibility
(
View
.
GONE
);
...
...
@@ -500,8 +550,10 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
* 替换之后最终发送的字符串
*/
private
void
onTextMessageSendButtonClick
()
{
IMMessage
textMessage
=
createTextMessage
(
sendText
);
// 根据uid记录每次发消息的时间戳
SPUtils
.
getInstance
().
put
(
uid
,
System
.
currentTimeMillis
());
IMMessage
textMessage
=
createTextMessage
(
sendText
);
if
(
container
.
proxy
.
sendMessage
(
textMessage
))
{
restoreText
(
true
);
}
...
...
@@ -605,6 +657,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
messageEditLL
.
setVisibility
(
View
.
GONE
);
hideInputMethod
();
hideEmojiLayout
();
hideFirstQuestionLayout
();
hideActionPanelLayout
();
switchToAudioButtonInInputBar
.
setVisibility
(
View
.
GONE
);
...
...
@@ -644,6 +697,16 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
}
/**
* 隐藏首问语布局
*/
public
void
hideFirstQuestionLayout
(){
uiHandler
.
removeCallbacks
(
showFirstQuestionRunnable
);
if
(
clFirstQuestion
!=
null
)
{
clFirstQuestion
.
setVisibility
(
View
.
GONE
);
}
}
/**
* 隐藏更多布局
*/
private
void
hideActionPanelLayout
()
{
...
...
@@ -704,6 +767,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
* 显示表情布局
*/
private
void
showEmojiLayout
()
{
hideFirstQuestionLayout
();
hideInputMethod
();
hideActionPanelLayout
();
hideAudioLayout
();
...
...
@@ -752,6 +816,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
*/
private
void
showActionPanelLayout
()
{
hideEmojiLayout
();
hideFirstQuestionLayout
();
hideInputMethod
();
uiHandler
.
postDelayed
(
showMoreFuncRunnable
,
SHOW_LAYOUT_DELAY
);
...
...
@@ -765,6 +830,13 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
}
};
private
Runnable
showFirstQuestionRunnable
=
new
Runnable
()
{
@Override
public
void
run
()
{
clFirstQuestion
.
setVisibility
(
View
.
VISIBLE
);
}
};
private
Runnable
showMoreFuncRunnable
=
new
Runnable
()
{
@Override
public
void
run
()
{
...
...
@@ -875,6 +947,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
hideInputMethod
();
hideActionPanelLayout
();
hideEmojiLayout
();
hideFirstQuestionLayout
();
}
};
}
...
...
m-im/src/main/java/com/yidianling/uikit/custom/http/ServiceApi.kt
View file @
7f627417
...
...
@@ -4,6 +4,7 @@ import com.ydl.ydlcommon.base.config.YDL_DOMAIN
import
com.ydl.ydlcommon.base.config.YDL_DOMAIN_JAVA
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.yidianling.im.bean.BusyBean
import
com.yidianling.im.bean.FirstQuestionBean
import
com.yidianling.uikit.custom.http.response.*
import
com.yidianling.uikit.custom.http.response.question.QuestionsInfoBean
import
io.reactivex.Observable
...
...
@@ -115,10 +116,13 @@ interface ServiceApi {
//答题
@POST
(
"cms/exam/api/v1/exams/{id}/lingxi/answer-question"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
answerQuestion
(
@Path
(
"id"
)
id
:
String
,
@Body
body
:
RequestBody
):
Observable
<
BaseAPIResponse
<
String
>>
fun
answerQuestion
(
@Path
(
"id"
)
id
:
String
,
@Body
body
:
RequestBody
):
Observable
<
BaseAPIResponse
<
String
>>
/**
* 获取首问语
*/
@POST
(
"dmp/v1/clouddata/schemas/lingxi_quick_replies/query"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
,
"X-App-Id: crm_cloud"
)
fun
getFirstQuestion
(
@Body
map
:
Map
<
String
,
@JvmSuppressWildcards
Any
>):
Observable
<
BaseAPIResponse
<
FirstQuestionBean
>>
}
\ No newline at end of file
m-im/src/main/java/com/yidianling/uikit/custom/http/ServiceImpl.kt
View file @
7f627417
...
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.im.bean.BusyBean
import
com.yidianling.im.bean.FirstQuestionBean
import
com.yidianling.im.http.ImRetrofitApi
import
com.yidianling.uikit.custom.http.response.*
import
com.yidianling.uikit.custom.http.response.question.QuestionsInfoBean
...
...
@@ -188,4 +189,15 @@ class ServiceImpl private constructor() {
return
YDLHttpUtils
.
obtainApi
(
ImRetrofitApi
::
class
.
java
).
batchSendCustomizeMessage
(
body
)
}
/**
* 获取首问语
*/
fun
getFirstQuestion
():
Observable
<
BaseAPIResponse
<
FirstQuestionBean
>>
{
val
filterMap
=
HashMap
<
String
,
Any
>()
filterMap
[
"type"
]
=
1
val
map
=
HashMap
<
String
,
Any
>()
map
[
"filter"
]
=
filterMap
return
YDLHttpUtils
.
obtainApi
(
ServiceApi
::
class
.
java
).
getFirstQuestion
(
map
)
}
}
\ No newline at end of file
m-im/src/main/res/layout/im_item_chat_first_question.xml
0 → 100644
View file @
7f627417
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/tv_question_name"
android:layout_width=
"match_parent"
android:layout_height=
"48dp"
tools:text=
"我感觉自己心里有抑郁倾向"
android:gravity=
"center_vertical"
android:paddingStart=
"12dp"
android:textSize=
"14sp"
android:textColor=
"#16263D"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:background=
"@color/platform_color_F2F2F2"
/>
</LinearLayout>
\ No newline at end of file
m-im/src/main/res_uikit/layout/im_nim_message_activity_bottom_layout.xml
View file @
7f627417
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/messageActivityBottomLayout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<include
layout=
"@layout/im_nim_message_activity_text_layout"
/>
<com.yidianling.nimbase.business.session.emoji.EmoticonPickerView
android:id=
"@+id/emoticon_picker_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/messageActivityBottomLayout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<include
layout=
"@layout/im_nim_message_activity_text_layout"
/>
<com.yidianling.nimbase.business.session.emoji.EmoticonPickerView
android:id=
"@+id/emoticon_picker_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_first_question"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"46dp"
android:gravity=
"center_vertical"
android:paddingStart=
"12dp"
android:text=
"您可以试试这样描述您的问题:"
app:layout_constraintTop_toTopOf=
"parent"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"13sp"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
app:layout_constraintTop_toTopOf=
"parent"
android:layout_marginTop=
"46dp"
android:background=
"@color/platform_color_F2F2F2"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_first_question"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
app:layout_constraintHeight_default=
"wrap"
app:layout_constraintHeight_max=
"200dp"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
android:layout_marginTop=
"47dp"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
m-im/src/main/res_uikit/layout/im_nim_message_activity_text_layout.xml
View file @
7f627417
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/textMessageLayout"
android:layout_width=
"match_parent"
android:layout_height=
"56dp"
android:background=
"@color/platform_color_F7F7F7"
android:gravity=
"center_vertical"
>
<!--android:paddingTop="@dimen/bottom_component_margin_vertical"-->
<!--android:paddingBottom="@dimen/bottom_component_margin_vertical"-->
android:id=
"@+id/textMessageLayout"
android:layout_width=
"match_parent"
android:layout_height=
"56dp"
android:background=
"@color/platform_color_F7F7F7"
android:gravity=
"center_vertical"
>
<FrameLayout
android:id=
"@+id/switchLayout"
android:layout_width=
"wrap_content"
...
...
@@ -42,6 +41,7 @@
<Button
android:id=
"@+id/audioRecord"
style=
"?android:attr/borderlessButtonStyle"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginTop=
"10dp"
...
...
@@ -52,7 +52,6 @@
android:textColor=
"@color/color_3D3D3D"
android:textSize=
"15sp"
android:textStyle=
"bold"
style=
"?android:attr/borderlessButtonStyle"
android:visibility=
"gone"
/>
</FrameLayout>
...
...
@@ -75,10 +74,10 @@
android:layout_gravity=
"center"
android:layout_marginLeft=
"10dp"
android:layout_marginRight=
"10dp"
android:hint=
"隐私保密,安心咨询"
android:layout_weight=
"1"
android:autoLink=
"all"
android:background=
"#ffffff"
android:hint=
"隐私保密,安心咨询"
android:maxHeight=
"72dp"
android:maxLines=
"4"
android:textColorHint=
"#CCCCCC"
...
...
@@ -114,17 +113,17 @@
android:scaleType=
"center"
/>
<TextView
android:id=
"@+id/buttonSendMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:background=
"@drawable/platform_bg_radius_5"
android:contentDescription=
"@string/im_empty"
android:gravity=
"center"
android:padding=
"5dp"
android:text=
"@string/im_send"
android:textColor=
"@color/platform_but_text_color"
android:textSize=
"14sp"
/>
android:id=
"@+id/buttonSendMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:background=
"@drawable/platform_bg_radius_5"
android:contentDescription=
"@string/im_empty"
android:gravity=
"center"
android:padding=
"5dp"
android:text=
"@string/im_send"
android:textColor=
"@color/platform_but_text_color"
android:textSize=
"14sp"
/>
</FrameLayout>
</RelativeLayout>
m-im/src/main/res_uikit/layout/im_ydl_nim_message_fragment.xml
View file @
7f627417
...
...
@@ -613,7 +613,8 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<include
layout=
"@layout/im_nim_message_activity_bottom_layout"
/>
</LinearLayout>
maven_push.gradle
View file @
7f627417
...
...
@@ -5,6 +5,13 @@ def mavenRepositoryUrl = "http://nexus.yidianling.com/repository/AndroidReleases
def
getVersionName
()
{
return
hasProperty
(
'VERSION_NAME'
)
?
VERSION_NAME
:
rootProject
.
ext
.
ydlPublishVersion
[
project
.
getName
()]
}
task
sourceJar
(
type:
Jar
){
classifier
=
'source'
from
android
.
sourceSets
.
main
.
java
.
srcDirs
}
artifacts
{
archives
sourceJar
}
afterEvaluate
{
project
->
uploadArchives
{
...
...
@@ -16,6 +23,7 @@ afterEvaluate { project ->
repository
(
url:
mavenRepositoryUrl
)
{
authentication
(
userName:
"admin"
,
password:
"fjoi#1+#@"
)
}
// repository(url:mavenLocal().url)
}
}
}
...
...
ydl-platform/build.gradle
View file @
7f627417
...
...
@@ -75,6 +75,7 @@ dependencies {
//====================YDL Repository====================
// api rootProject.ext.dependencies["ydl-pushagent"]
// api rootProject.ext.dependencies["ydl-hnet"]
implementation
'com.volcengine:apm_insight:1.4.6.cn'
api
(
rootProject
.
ext
.
dependencies
[
"ydl-notracepoint"
])
{
transitive
=
true
exclude
group:
'com.google.code.gson'
,
module:
'gson'
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/AliYunRichLogsHelper.kt
View file @
7f627417
package
com.ydl.ydlcommon.utils.log
import
com.aliyun.sls.android.producer.*
import
com.apm.insight.log.VLog
import
com.ydl.ydlcommon.base.BaseApp.Companion.getApp
import
com.ydl.ydlcommon.data.PlatformDataManager.getRam
import
com.ydl.ydlcommon.modular.ModularServiceManager.getPlatformUserService
...
...
@@ -45,6 +46,7 @@ class AliYunRichLogsHelper {
* @param value 具体的状态值
* */
fun
sendRichLog
(
key
:
String
,
value
:
String
)
{
VLog
.
i
(
key
,
value
)
val
log
=
Log
()
val
userInfo
=
getPlatformUserService
()
!!
.
getUser
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment