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
ab5f7bff
Commit
ab5f7bff
authored
Nov 09, 2019
by
严久程
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
课程模块
parent
2b2eb4ee
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
603 additions
and
123 deletions
+603
-123
CourseListFragment.java
m-course/src/main/java/com/yidianling/course/CourseListFragment.java
+4
-4
CoursePosterActivity.kt
m-course/src/main/java/com/yidianling/course/CoursePosterActivity.kt
+2
-2
FlutterCourseHomeFragment.kt
m-course/src/main/java/com/yidianling/course/FlutterCourseHomeFragment.kt
+4
-4
CourseTopicActivity.kt
m-course/src/main/java/com/yidianling/course/courseNew/CourseTopicActivity.kt
+2
-2
CourseListContainerActivity.kt
m-course/src/main/java/com/yidianling/course/courseNew/courseList/CourseListContainerActivity.kt
+4
-4
CourseCommentActivity.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CourseCommentActivity.kt
+3
-3
CoursePlayActivity.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayActivity.kt
+8
-7
CourseReplyListActivity.kt
m-course/src/main/java/com/yidianling/course/coursePlay/CourseReplyListActivity.kt
+134
-0
CoursePlayPresenter.kt
m-course/src/main/java/com/yidianling/course/coursePlay/presenter/CoursePlayPresenter.kt
+3
-3
CourseSpecialListModelImpl.kt
m-course/src/main/java/com/yidianling/course/course_special_list/model/CourseSpecialListModelImpl.kt
+3
-2
CoursePlugin.kt
m-course/src/main/java/com/yidianling/course/flutterPlugin/CoursePlugin.kt
+36
-24
CourseRetrofitUtils.java
m-course/src/main/java/com/yidianling/course/net/CourseRetrofitUtils.java
+4
-21
NetApiStore.java
m-course/src/main/java/com/yidianling/course/net/NetApiStore.java
+16
-13
CouponHintView.kt
m-course/src/main/java/com/yidianling/course/widget/CouponHintView.kt
+2
-2
CourseItemNewView.kt
m-course/src/main/java/com/yidianling/course/widget/CourseItemNewView.kt
+28
-19
CourseRedPacketView.kt
m-course/src/main/java/com/yidianling/course/widget/CourseRedPacketView.kt
+2
-2
coursde_ico_course_fanli.png
m-course/src/main/res/drawable-xhdpi/coursde_ico_course_fanli.png
+0
-0
course_ico_course_cuxiao.png
m-course/src/main/res/drawable-xhdpi/course_ico_course_cuxiao.png
+0
-0
course_ico_course_list_hot.png
m-course/src/main/res/drawable-xhdpi/course_ico_course_list_hot.png
+0
-0
course_ico_course_list_new.png
m-course/src/main/res/drawable-xhdpi/course_ico_course_list_new.png
+0
-0
course_ico_course_list_play.png
m-course/src/main/res/drawable-xhdpi/course_ico_course_list_play.png
+0
-0
course_background_course_list_item_view.xml
m-course/src/main/res/drawable/course_background_course_list_item_view.xml
+11
-0
dincond_bold.ttf
m-course/src/main/res/font/dincond_bold.ttf
+0
-0
activity_course_reply_list.xml
m-course/src/main/res/layout/activity_course_reply_list.xml
+21
-0
item_course_new_list_view.xml
m-course/src/main/res/layout/item_course_new_list_view.xml
+231
-0
item_course_play_recylist.xml
m-course/src/main/res/layout/item_course_play_recylist.xml
+62
-0
colors.xml
m-course/src/main/res/values/colors.xml
+3
-0
PlayerFloatHelper.kt
ydl-media/src/main/java/com/ydl/media/view/PlayerFloatHelper.kt
+1
-0
PlayerFloatView.kt
ydl-media/src/main/java/com/ydl/media/view/PlayerFloatView.kt
+9
-3
AppConfig.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/AppConfig.kt
+1
-0
GlobalConfig.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/GlobalConfig.kt
+9
-8
No files found.
m-course/src/main/java/com/yidianling/course/CourseListFragment.java
View file @
ab5f7bff
...
...
@@ -19,7 +19,7 @@ import com.ydl.ydlcommon.utils.BuryPointUtils;
import
com.ydl.ydlcommon.utils.NetworkParamsUtils
;
import
com.yidianling.common.tools.LogUtil
;
import
com.yidianling.course.courseNew.LoadMoreView
;
import
com.yidianling.course.net.RetrofitUtils
;
import
com.yidianling.course.net.
Course
RetrofitUtils
;
import
com.yidianling.course.bean.Course
;
import
com.yidianling.course.router.CourseIn
;
import
in.srain.cube.views.loadmore.LoadMoreContainer
;
...
...
@@ -182,7 +182,7 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load
.
append
(
"&listType="
).
append
(
tagId
+
1
);
}
String
urlParams
=
NetworkParamsUtils
.
getCommonParam
()
+
sb
.
toString
();
RetrofitUtils
.
getCourseList
(
urlParams
).
compose
(
RxUtils
.
resultJavaData
()).
subscribeOn
(
Schedulers
.
io
())
Course
RetrofitUtils
.
getCourseList
(
urlParams
).
compose
(
RxUtils
.
resultJavaData
()).
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
resp
->
{
lvContent
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -223,10 +223,10 @@ public class CourseListFragment extends BaseFragment implements PtrHandler, Load
emptyTv
.
setText
(
"网络不给力哦,下拉刷新重试"
);
ivEmptyView
.
setImageResource
(
R
.
drawable
.
no_net
);
}
else
{
RetrofitUtils
.
handleError
(
getActivity
(),
throwable
);
Course
RetrofitUtils
.
handleError
(
getActivity
(),
throwable
);
}
}
else
{
RetrofitUtils
.
handleError
(
getActivity
(),
throwable
);
Course
RetrofitUtils
.
handleError
(
getActivity
(),
throwable
);
isShowEmptyView
();
}
});
...
...
m-course/src/main/java/com/yidianling/course/CoursePosterActivity.kt
View file @
ab5f7bff
...
...
@@ -18,7 +18,7 @@ import com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.view.dialog.YDLShareDialog
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.course.bean.PostersShareBean
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
com.yidianling.course.widget.CoursePosterTemplate
import
com.yidianling.course.widget.CustomPagerTransformer
import
io.reactivex.android.schedulers.AndroidSchedulers
...
...
@@ -106,7 +106,7 @@ class CoursePosterActivity : BaseActivity() {
}
private
fun
getData
()
{
RetrofitUtils
.
getPosterData
(
courseId
)
Course
RetrofitUtils
.
getPosterData
(
courseId
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
...
...
m-course/src/main/java/com/yidianling/course/FlutterCourseHomeFragment.kt
View file @
ab5f7bff
...
...
@@ -17,7 +17,7 @@ import com.ydl.ydlcommon.utils.actionutil.BIConstants
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.course.bean.CourseCouponBean
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
com.yidianling.course.flutterPlugin.CourseSendPlugin
import
com.yidianling.course.widget.CourseCouponDialog
import
com.yidianling.router.RouterManager
...
...
@@ -40,7 +40,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() {
private
var
hasRequestCoupon
=
false
private
var
dialog
:
CourseCouponDialog
?
=
null
override
fun
initChannelPlugin
(
flutterView
:
FlutterView
)
{
CoursePlugin
.
r
i
gister
(
this
,
flutterView
)
CoursePlugin
.
r
e
gister
(
this
,
flutterView
)
CourseSendPlugin
.
initContext
(
this
,
flutterView
)
}
...
...
@@ -85,7 +85,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() {
@SuppressLint
(
"SimpleDateFormat"
,
"CheckResult"
)
private
fun
getCouponData
()
{
val
(
userId
)
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUserInfo
()
?:
return
RetrofitUtils
.
getCourseCoupons
(
userId
,
"3"
,
"1"
,
"3"
)
Course
RetrofitUtils
.
getCourseCoupons
(
userId
,
"3"
,
"1"
,
"3"
)
.
compose
(
RxUtils
.
netCheck
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
@@ -151,7 +151,7 @@ class FlutterCourseHomeFragment : BaseFlutterFragment() {
bean
.
couponIds
=
couponIds
bean
.
uid
=
userId
val
couponIdsStr
=
Gson
().
toJson
(
bean
)
RetrofitUtils
.
receiveCoupon
(
couponIdsStr
)
Course
RetrofitUtils
.
receiveCoupon
(
couponIdsStr
)
.
compose
(
RxUtils
.
netCheck
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
m-course/src/main/java/com/yidianling/course/courseNew/CourseTopicActivity.kt
View file @
ab5f7bff
...
...
@@ -20,7 +20,7 @@ import com.ydl.ydlcommon.utils.UMEventUtils
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxNetTool
import
com.yidianling.course.R
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
com.yidianling.course.bean.Course
import
com.yidianling.course.model.TopicCourseBean
import
io.reactivex.android.schedulers.AndroidSchedulers
...
...
@@ -114,7 +114,7 @@ class CourseTopicActivity : BaseActivity(), View.OnClickListener, SwipeRefreshLa
}
course_topic_rcv
.
visibility
=
View
.
VISIBLE
v_no_network
.
visibility
=
View
.
GONE
RetrofitUtils
.
getCourseTopic
(
specialId
.
toString
())
Course
RetrofitUtils
.
getCourseTopic
(
specialId
.
toString
())
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
resultJavaData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
m-course/src/main/java/com/yidianling/course/courseNew/courseList/CourseListContainerActivity.kt
View file @
ab5f7bff
...
...
@@ -36,7 +36,7 @@ import com.yidianling.course.courseNew.LoadMoreView
import
com.yidianling.course.courseNew.courseList.widget.CourseFilterPopupWindow
import
com.yidianling.course.courseNew.courseList.widget.CourseGoodPopupWindow
import
com.yidianling.course.courseNew.courseList.widget.CourseSortPopupWindow
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
com.yidianling.course.bean.Course
import
com.yidianling.course.model.CourseCategoryBean
import
com.yidianling.course.router.CourseIn
...
...
@@ -174,7 +174,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
*/
@SuppressLint
(
"CheckResult"
)
private
fun
loadData
()
{
RetrofitUtils
.
getCourseListCategory
()
Course
RetrofitUtils
.
getCourseListCategory
()
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
resultJavaData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
@@ -459,7 +459,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
}
RetrofitUtils
.
getCourseList
(
urlParams
).
compose
(
RxUtils
.
resultJavaData
()).
subscribeOn
(
Schedulers
.
io
())
Course
RetrofitUtils
.
getCourseList
(
urlParams
).
compose
(
RxUtils
.
resultJavaData
()).
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
if
(
resp
.
list
.
isNotEmpty
())
{
...
...
@@ -509,7 +509,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
"哎呦,网络开小差了"
)
}
else
{
ToastHelper
.
show
(
"网络不给力"
)
RetrofitUtils
.
handleError
(
this
@CourseListContainerActivity
,
throwable
)
Course
RetrofitUtils
.
handleError
(
this
@CourseListContainerActivity
,
throwable
)
}
})
}
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/CourseCommentActivity.kt
View file @
ab5f7bff
...
...
@@ -15,7 +15,7 @@ import com.yidianling.common.tools.ToastUtil
import
com.yidianling.course.CourseConstants
import
com.yidianling.course.R
import
com.yidianling.course.net.Command
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.activity_course_commeny.*
...
...
@@ -86,7 +86,7 @@ class CourseCommentActivity : BaseActivity() {
private
fun
commitReply
(
content
:
String
)
{
showProgressDialog
(
null
)
val
cmd
=
Command
.
CourseCommitReply
(
courseId
!!
.
toInt
(),
content
)
RetrofitUtils
.
commitCourseReply
(
cmd
)
Course
RetrofitUtils
.
commitCourseReply
(
cmd
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
...
...
@@ -104,7 +104,7 @@ class CourseCommentActivity : BaseActivity() {
}
},
{
t
->
dismissProgressDialog
()
RetrofitUtils
.
handleError
(
this
,
t
)
Course
RetrofitUtils
.
handleError
(
this
,
t
)
LogHelper
.
getInstance
().
writeLogSync
(
"提交评论失败:"
+
t
.
message
)
})
}
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/CoursePlayActivity.kt
View file @
ab5f7bff
...
...
@@ -617,13 +617,14 @@ class CoursePlayActivity : BaseActivity() {
var
status
=
Utils
.
getValue
(
videoView
,
"status"
)
//视频课程正在播放中
if
(
status
==
PlayStateParams
.
STATE_PLAYING
)
{
YDLMusicHelper
.
title
=
courPlayBean
?.
courseExtra
?.
title
YDLMusicHelper
.
cover
=
courPlayBean
?.
courseExtra
?.
pic
YDLMusicHelper
.
name
=
courPlayBean
?.
courseExtra
?.
doctorName
YDLMusicHelper
.
isVideoPlaying
=
true
YDLMusicHelper
.
playType
=
1
YDLMusicHelper
.
courseVideoUlr
=
(
play_view
as
CoursePlayItemViewVideo
).
videoUrl
YDLMusicHelper
.
course_id
=
courPlayBean
?.
courseExtra
?.
id
!!
.
toInt
()
//todo 视屏播放
// YDLMusicHelper.title = courPlayBean?.courseExtra?.title
// YDLMusicHelper.cover = courPlayBean?.courseExtra?.pic
// YDLMusicHelper.name = courPlayBean?.courseExtra?.doctorName
// YDLMusicHelper.isVideoPlaying = true
// YDLMusicHelper.playType = 1
// YDLMusicHelper.courseVideoUlr = (play_view as CoursePlayItemViewVideo).videoUrl
// YDLMusicHelper.course_id = courPlayBean?.courseExtra?.id!!.toInt()
PlayerFloatHelper
.
show
(
this
)
}
...
...
m-course/src/main/java/com/yidianling/course/coursePlay/CourseReplyListActivity.kt
0 → 100644
View file @
ab5f7bff
package
com.yidianling.course.coursePlay
import
android.annotation.SuppressLint
import
android.support.v7.widget.LinearLayoutManager
import
android.support.v7.widget.RecyclerView
import
com.ydl.ydl_image.module.GlideApp
import
com.ydl.ydlcommon.adapter.CommonRecyclerAdapter
import
com.ydl.ydlcommon.base.BaseActivity
import
com.ydl.ydlcommon.view.BaseViewHolder
import
com.ydl.ydlcommon.view.CircleImageView
import
com.ydl.ydlcommon.view.FootViewLoadMore
import
com.ydl.ydlcommon.view.TitleBar
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.course.R
import
com.yidianling.course.bean.CoursePlayBean
import
com.yidianling.course.net.Command
import
com.yidianling.course.net.CourseRetrofitUtils
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
/**
* 课程课后笔记列表
*
*/
class
CourseReplyListActivity
:
BaseActivity
()
{
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
activity_course_reply_list
}
override
fun
initDataAndEvent
()
{
course_id
=
intent
.
getIntExtra
(
"course_id"
,
0
)
initView
()
getListData
(
false
)
}
var
title_bar
:
TitleBar
?
=
null
var
recycler_list
:
RecyclerView
?
=
null
var
footView
:
FootViewLoadMore
?
=
null
var
adapter
:
CommonRecyclerAdapter
<
CoursePlayBean
.
Comments
>?
=
null
var
page
=
1
//分页
//课程id
var
course_id
=
0
fun
initView
()
{
title_bar
=
findViewById
<
TitleBar
>(
R
.
id
.
title_bar
)
recycler_list
=
findViewById
<
RecyclerView
>(
R
.
id
.
recycler_list
)
recycler_list
?.
layoutManager
=
LinearLayoutManager
(
mContext
,
LinearLayoutManager
.
VERTICAL
,
false
)
adapter
=
CommonRecyclerAdapter
<
CoursePlayBean
.
Comments
>(
recycler_list
,
R
.
layout
.
item_course_play_recylist
)
.
setBindDataCallback
(
object
:
CommonRecyclerAdapter
.
BindDataCallback
<
CoursePlayBean
.
Comments
>
{
override
fun
bindDatabindData
(
holder
:
BaseViewHolder
,
t
:
CoursePlayBean
.
Comments
,
position
:
Int
)
{
//绑定数据
var
img
:
CircleImageView
=
holder
.
getView
(
R
.
id
.
img_head
)
GlideApp
.
with
(
applicationContext
).
load
(
t
.
head
).
into
(
img
)
holder
.
setText
(
R
.
id
.
text_name
,
t
.
name
)
holder
.
setText
(
R
.
id
.
text_time
,
t
.
create_time
)
holder
.
setText
(
R
.
id
.
text_des
,
t
.
content
)
}
})
.
setOnLoadMoreListener
(
object
:
CommonRecyclerAdapter
.
OnLoadMoreLIstener
{
override
fun
onLoadMore
()
{
getListData
(
true
)
LogUtil
.
e
(
"---------------------------------------"
)
}
})
footView
=
FootViewLoadMore
(
mContext
)
adapter
?.
addFootView
(
footView
)
recycler_list
?.
adapter
=
adapter
}
//获取列表数据
@SuppressLint
(
"CheckResult"
)
fun
getListData
(
isLoadMore
:
Boolean
)
{
if
(
isLoadMore
)
{
page
++
}
else
{
page
=
1
}
if
(
isLoadMore
)
{
footView
?.
onLoading
()
}
else
{
showProgressDialog
(
null
)
}
val
cmd
=
Command
.
CourseReplyList
(
course_id
,
page
)
CourseRetrofitUtils
.
courseReplyList
(
cmd
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
if
(!
isLoadMore
)
{
dismissProgressDialog
()
}
if
(
resp
.
code
==
0
)
{
//跟新view显示
updateView
(
isLoadMore
,
resp
.
data
as
List
<
CoursePlayBean
.
Comments
>)
}
else
{
footView
?.
onError
()
ToastUtil
.
toastShort
(
resp
.
msg
)
}
},
{
throwable
->
footView
?.
onError
()
if
(!
isLoadMore
)
{
dismissProgressDialog
()
}
CourseRetrofitUtils
.
handleError
(
mContext
,
throwable
)
})
}
//跟新视图
fun
updateView
(
isLoadMore
:
Boolean
,
list
:
List
<
CoursePlayBean
.
Comments
>)
{
if
(
list
==
null
)
return
if
(
list
.
size
==
0
)
{
footView
?.
onFinish
()
return
}
if
(
isLoadMore
)
{
adapter
?.
addDatas
(
list
)
}
else
{
adapter
?.
update
(
list
)
}
}
}
m-course/src/main/java/com/yidianling/course/coursePlay/presenter/CoursePlayPresenter.kt
View file @
ab5f7bff
...
...
@@ -4,7 +4,7 @@ import android.annotation.SuppressLint
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.course.bean.CourseMediaDetailBean
import
com.yidianling.course.coursePlay.CoursePlayActivity
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
...
...
@@ -16,7 +16,7 @@ class CoursePlayPresenter(val view: CoursePlayActivity) {
@SuppressLint
(
"CheckResult"
)
fun
getInitData
(
course_id
:
Int
)
{
view
.
showLoadingDialog
()
RetrofitUtils
.
getCoursePlayData
(
course_id
.
toString
())
Course
RetrofitUtils
.
getCoursePlayData
(
course_id
.
toString
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
...
...
@@ -33,7 +33,7 @@ class CoursePlayPresenter(val view: CoursePlayActivity) {
}
},
{
t
->
view
.
dismissLoadingDialog
()
RetrofitUtils
.
handleError
(
view
,
t
)
Course
RetrofitUtils
.
handleError
(
view
,
t
)
})
}
...
...
m-course/src/main/java/com/yidianling/course/course_special_list/model/CourseSpecialListModelImpl.kt
View file @
ab5f7bff
package
com.yidianling.course.course_special_list.model
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
com.yidianling.course.course_special_list.bean.CourseSpecialListBean
import
com.yidianling.course.course_special_list.contract.ICourseSpecialListContract
import
com.yidianling.course.course_special_list.bean.CourseSpecialListParam
...
...
@@ -17,7 +17,7 @@ import io.reactivex.Observable
class
CourseSpecialListModelImpl
:
ICourseSpecialListContract
.
Model
{
override
fun
specialListRequest
(
param
:
CourseSpecialListParam
):
Observable
<
CourseSpecialListBean
>
{
return
RetrofitUtils
.
specialListRequest
(
param
)
return
Course
RetrofitUtils
.
specialListRequest
(
param
)
.
compose
(
RxUtils
.
resultJavaData
())
}
}
\ No newline at end of file
m-course/src/main/java/com/yidianling/course/flutterPlugin/CoursePlugin.kt
View file @
ab5f7bff
import
android.content.Intent
import
android.net.Uri
import
android.text.TextUtils
import
com.ydl.media.audio.AudioPlayer
import
com.ydl.media.audio.model.Music
import
com.ydl.media.view.PlayTypeEnum
import
com.ydl.media.view.PlayerFloatHelper
import
com.ydl.media.view.PlayerFloatView
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.ydl_router.manager.YDLRouterManager
...
...
@@ -40,7 +45,7 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
const
val
PLAYCOURSEFILE
:
String
=
"playCourseFile"
const
val
PAUSECOURSEPLAY
:
String
=
"pauseCoursePlay"
fun
r
i
gister
(
fragment
:
BaseFlutterFragment
,
flutterView
:
FlutterView
)
{
fun
r
e
gister
(
fragment
:
BaseFlutterFragment
,
flutterView
:
FlutterView
)
{
MethodChannel
(
flutterView
,
CHANNEL
).
setMethodCallHandler
(
CoursePlugin
(
fragment
))
}
}
...
...
@@ -52,10 +57,13 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
mMap
[
"isDevelopment"
]
=
BuildConfig
.
DEBUG
mMap
[
"uid"
]
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
mMap
[
"accessToken"
]
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getAccessToken
()
?:
""
?:
""
mMap
[
"isFromApp"
]
=
"1"
mMap
[
"version"
]
=
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
())
mMap
[
"osBuild"
]
=
RxDeviceTool
.
getBuildMANUFACTURER
()
+
","
+
RxDeviceTool
.
getBuildBrandModel
()
+
","
+
RxDeviceTool
.
getOsBuileVersion
()
+
","
+
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
())
mMap
[
"osBuild"
]
=
RxDeviceTool
.
getBuildMANUFACTURER
()
+
","
+
RxDeviceTool
.
getBuildBrandModel
()
+
","
+
RxDeviceTool
.
getOsBuileVersion
()
+
","
+
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
()
)
result
.
success
(
mMap
)
}
JUMPURL
->
{
...
...
@@ -65,7 +73,12 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
jumpUrl
!!
.
contains
(
"user/login"
)
->
mFragment
!!
.
startActivity
(
CourseIn
.
loginWayIntent
(
mFragment
!!
.
activity
))
jumpUrl
.
contains
(
"course/myCourse"
)
->
MyCourseActivity
.
start
(
mFragment
!!
.
activity
)
jumpUrl
.
contains
(
"course/specialList"
)
->
//跳转专题列表页
mFragment
!!
.
activity
.
startActivity
(
Intent
(
mFragment
!!
.
activity
,
CourseSpecialListActivity
::
class
.
java
))
mFragment
!!
.
activity
.
startActivity
(
Intent
(
mFragment
!!
.
activity
,
CourseSpecialListActivity
::
class
.
java
)
)
jumpUrl
.
contains
(
"course/detail"
)
->
{
var
uri
=
Uri
.
parse
(
jumpUrl
)
var
id
=
uri
.
getQueryParameter
(
"id"
)
...
...
@@ -82,8 +95,8 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
playMedia
(
fileInfo
)
}
PAUSECOURSEPLAY
->
{
if
(
YDLMusicHelper
.
isPlaying
()
)
{
YDLMusicHelper
.
p
ause
()
if
(
AudioPlayer
.
get
().
isPlaying
)
{
AudioPlayer
.
get
().
playP
ause
()
PlayerFloatHelper
.
updatePlayState
()
}
}
...
...
@@ -94,51 +107,50 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
if
(
PlayerFloatHelper
.
isShow
(
mFragment
!!
.
activity
))
{
PlayerFloatHelper
.
hide
()
PlayerFloatHelper
.
removeView
(
mFragment
!!
.
activity
)
YDLMusicHelper
.
clearTempData
()
YDLMusicHelper
.
stop
()
AudioPlayer
.
get
().
stopPlayer
()
}
else
{
PlayerFloatHelper
.
removeView
(
mFragment
!!
.
activity
)
}
YDLMusicHelper
.
title
=
fileInfo
[
"title"
].
toString
()
YDLMusicHelper
.
name
=
fileInfo
[
"nam
e"
].
toString
()
YDLMusicHelper
.
cover
=
fileInfo
[
"cover
"
].
toString
()
YDLMusicHelper
.
course_id
=
fileInfo
[
"courseId"
]
as
Int
YDLMusic
Helper
.
isCanClick
=
false
val
music
=
Music
()
music
.
title
=
fileInfo
[
"titl
e"
].
toString
()
music
.
artist
=
fileInfo
[
"name
"
].
toString
()
music
.
coverPath
=
fileInfo
[
"cover"
].
toString
()
PlayerFloat
Helper
.
isCanClick
=
false
var
demoType
=
fileInfo
[
"demoType"
]
as
Int
var
url
=
fileInfo
[
"url"
].
toString
()
if
(
demoType
==
1
)
{
YDLMusicHelper
.
playType
=
0
PlayerFloatHelper
.
show
(
mFragment
!!
.
activity
)
PlayerFloatHelper
.
playingType
=
PlayTypeEnum
.
PLAY_TYPE_COURSE
music
.
path
=
url
YDLMusicHelper
.
coursePlay
(
url
)
AudioPlayer
.
get
().
singlePlay
(
music
)
}
if
(
demoType
==
2
)
{
YDLMusicHelper
.
playType
=
1
YDLMusicHelper
.
courseVideoUlr
=
url
PlayerFloatHelper
.
show
(
mFragment
!!
.
activity
)
//todo 视屏播放
// YDLMusicHelper.playType = 1
// YDLMusicHelper.courseVideoUlr = url
//
// PlayerFloatHelper.show(mFragment!!.activity)
}
PlayerFloatHelper
.
addClickListener
(
object
:
PlayerFloatView
.
FloatViewPlayListener
{
override
fun
onStartClick
()
{
if
(!
YDLMusicHelper
.
isCanClick
&&
YDLMusicHelper
.
course_id
!=
0
)
{
if
(!
PlayerFloatHelper
.
isCanClick
&&
PlayerFloatHelper
.
playingType
==
PlayTypeEnum
.
PLAY_TYPE_COURSE
)
{
CourseSendPlugin
.
sendMsg
(
true
)
}
}
override
fun
onPlayFinish
()
{
PlayerFloatHelper
.
hide
()
YDLMusicHelper
.
clearTempData
()
YDLMusicHelper
.
stop
()
AudioPlayer
.
get
().
stopPlayer
()
}
override
fun
onPauseClick
()
{
if
(!
YDLMusicHelper
.
isCanClick
&&
YDLMusicHelper
.
course_id
!=
0
)
{
if
(!
PlayerFloatHelper
.
isCanClick
&&
PlayerFloatHelper
.
playingType
==
PlayTypeEnum
.
PLAY_TYPE_COURSE
)
{
CourseSendPlugin
.
sendMsg
(
false
)
}
}
...
...
m-course/src/main/java/com/yidianling/course/net/RetrofitUtils.java
→
m-course/src/main/java/com/yidianling/course/net/
Course
RetrofitUtils.java
View file @
ab5f7bff
package
com
.
yidianling
.
course
.
net
;
import
android.content.Context
;
import
com.ydl.ydlcommon.base.config.HttpConfig
;
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
;
import
com.ydl.ydlcommon.data.http.BaseResponse
;
import
com.ydl.ydlcommon.data.http.FormatText
;
...
...
@@ -8,9 +9,6 @@ import com.ydl.ydlcommon.utils.NetworkParamsUtils;
import
com.ydl.ydlcommon.utils.remind.HttpErrorUtils
;
import
com.ydl.ydlnet.YDLHttpUtils
;
import
com.yidianling.course.bean.*
;
import
com.yidianling.course.bean.Course
;
import
com.yidianling.course.bean.CourseListDataBean
;
import
com.yidianling.course.bean.CoursePlayBean
;
import
com.yidianling.course.course_special_list.bean.CourseSpecialListBean
;
import
com.yidianling.course.course_special_list.bean.CourseSpecialListParam
;
import
com.yidianling.course.model.CourseCategoryBean
;
...
...
@@ -25,7 +23,7 @@ import java.util.List;
* Created by Jim on 2018/2/26 0026.
*/
public
class
RetrofitUtils
{
public
class
Course
RetrofitUtils
{
public
static
void
handleError
(
Context
context
,
Throwable
e
)
{
HttpErrorUtils
.
Companion
.
handleError
(
context
,
e
);
...
...
@@ -35,41 +33,28 @@ public class RetrofitUtils {
//课程提交回复
public
static
Observable
<
BaseResponse
<
Object
>>
commitCourseReply
(
Command
.
CourseCommitReply
cmd
)
{
List
<
FormatText
>
list
=
NetworkParamsUtils
.
getPostList
(
cmd
);
// return YdlRetrofitUtils.getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).commitCourseReply(getMaps(list));
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
commitCourseReply
(
NetworkParamsUtils
.
getMaps
(
list
));
}
//获取课程海报分享数据
public
static
Observable
<
BaseResponse
<
PostersShareBean
>>
getPosterData
(
String
courseId
)
{
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getPosterData
(
courseId
);
// return YdlRetrofitUtils.getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).getPosterData(courseId);
}
//课程课后笔记列表
public
static
Observable
<
BaseResponse
<
List
<
CoursePlayBean
.
Comments
>>>
courseReplyList
(
Command
.
CourseReplyList
cmd
)
{
List
<
FormatText
>
list
=
NetworkParamsUtils
.
getPostList
(
cmd
);
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
courseReplyList
(
NetworkParamsUtils
.
getMaps
(
list
));
// return getRxRetrofit().create(NetApiStore.class).courseReplyList(getMaps(list));
}
//获取课程列表(php接口)
public
static
Observable
<
BaseResponse
<
List
<
Course
>>>
getCourseList
(
Command
.
GetCourse
cmd
)
{
List
<
FormatText
>
list
=
NetworkParamsUtils
.
getPostList
(
cmd
);
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getPhpCourseList
(
NetworkParamsUtils
.
getMaps
(
list
));
// return getRxRetrofit().create(NetApiStore.class).getPhpCourseList(getMaps(list));
}
//获取课程列表分类
public
static
Observable
<
BaseAPIResponse
<
CourseCategoryBean
>>
getCourseListCategory
()
{
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCourseListCategory
();
// return getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).getCourseListCategory();
}
//获取课程专题
public
static
Observable
<
BaseAPIResponse
<
TopicCourseBean
>>
getCourseTopic
(
String
id
)
{
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCourseSpecial
(
id
);
// return getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_API_JAVA_URL).build().create(NetApiStore.class).getCourseSpecial(id);
}
...
...
@@ -84,8 +69,6 @@ public class RetrofitUtils {
*/
public
static
Observable
<
BaseResponse
<
List
<
CourseCouponBean
>>>
getCourseCoupons
(
String
uid
,
String
services
,
String
receiveType
,
String
applyEnds
)
{
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCourseCoupons
(
uid
,
services
,
receiveType
,
applyEnds
);
// return YdlRetrofitUtils.getRxRetrofit().newBuilder().baseUrl(YdlRetrofitUtils.SERVER_COUPON_URL)
// .build().create(NetApiStore.class).getCourseCoupons(uid, services, receiveType, applyEnds);
}
//领取优惠券
...
...
@@ -102,11 +85,11 @@ public class RetrofitUtils {
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"serviceType"
).
append
(
"="
).
append
(
param
.
getServiceType
()).
append
(
"&"
);
String
confideParam
=
sb
.
toString
()
+
NetworkParamsUtils
.
getCommonParam
();
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCouponMax
(
confideParam
);
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCouponMax
(
HttpConfig
.
Companion
.
getJAVA_BASE_URL
()
+
"auth/coupon/max?"
+
confideParam
);
}
public
static
Observable
<
BaseAPIResponse
<
CourseListDataBean
>>
getCourseList
(
String
url
)
{
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCourseList
(
YdlRetrofitUtils
.
SERVER_API_JAVA_URL
+
"auth/course/getList?"
+
url
);
return
YDLHttpUtils
.
Companion
.
obtainApi
(
NetApiStore
.
class
).
getCourseList
(
HttpConfig
.
Companion
.
getJAVA_BASE_URL
()
+
"auth/course/getList?"
+
url
);
}
...
...
m-course/src/main/java/com/yidianling/course/net/NetApiStore.java
View file @
ab5f7bff
...
...
@@ -2,24 +2,20 @@ package com.yidianling.course.net;
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
;
import
com.ydl.ydlcommon.data.http.BaseResponse
;
import
com.yidianling.course.bean.CouponHintResponseBean
;
import
com.yidianling.course.bean.CourseCouponBean
;
import
com.yidianling.course.bean.CourseMediaDetailBean
;
import
com.yidianling.course.bean.PostersShareBean
;
import
com.yidianling.course.bean.Course
;
import
com.yidianling.course.bean.CourseAddOrderBean
;
import
com.yidianling.course.bean.CourseListDataBean
;
import
com.yidianling.course.bean.CoursePlayBean
;
import
com.yidianling.course.bean.*
;
import
com.yidianling.course.course_special_list.bean.CourseSpecialListBean
;
import
com.yidianling.course.model.CourseCategoryBean
;
import
com.yidianling.course.model.TopicCourseBean
;
import
io.reactivex.Observable
;
import
okhttp3.RequestBody
;
import
retrofit2.http.*
;
import
java.util.List
;
import
java.util.Map
;
import
io.reactivex.Observable
;
import
okhttp3.RequestBody
;
import
retrofit2.http.*
;
import
static
com
.
ydl
.
ydlcommon
.
base
.
config
.
AppConfigKt
.
YDL_DOMAIN
;
import
static
com
.
ydl
.
ydlcommon
.
base
.
config
.
AppConfigKt
.
YDL_DOMAIN_COUPON_URL
;
import
static
com
.
ydl
.
ydlcommon
.
base
.
config
.
AppConfigKt
.
YDL_DOMAIN_JAVA
;
/**
* Created by Jim on 2018/2/26 0026.
...
...
@@ -46,6 +42,7 @@ public interface NetApiStore {
//课程提交回复
@FormUrlEncoded
@POST
(
"auth/course/comments/add"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
Observable
<
BaseResponse
<
Object
>>
commitCourseReply
(
@FieldMap
Map
<
String
,
String
>
params
);
//课程播放页--点赞
...
...
@@ -60,6 +57,7 @@ public interface NetApiStore {
//获取课程海报分享数据
@GET
(
"auth/course/posters/share"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
Observable
<
BaseResponse
<
PostersShareBean
>>
getPosterData
(
@Query
(
"id"
)
String
courseId
);
...
...
@@ -70,12 +68,13 @@ public interface NetApiStore {
//课程筛选分类
@GET
(
"auth/course/search/newsample"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
Observable
<
BaseAPIResponse
<
CourseCategoryBean
>>
getCourseListCategory
();
//课程专题列表接口
@GET
(
"auth/course/new/listCoursesBySpecialId"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
Observable
<
BaseAPIResponse
<
TopicCourseBean
>>
getCourseSpecial
(
@Query
(
"specialId"
)
String
uid
);
...
...
@@ -89,6 +88,7 @@ public interface NetApiStore {
* @return
*/
@GET
(
"marketing/coupon/new/available"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_COUPON_URL
)
Observable
<
BaseResponse
<
List
<
CourseCouponBean
>>>
getCourseCoupons
(
@Query
(
"uid"
)
String
uid
,
@Query
(
"services"
)
String
services
,
@Query
(
"receiveType"
)
String
receiveType
,
...
...
@@ -96,10 +96,12 @@ public interface NetApiStore {
//领取优惠券
@POST
(
"marketing/coupon/new/receives"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_COUPON_URL
)
Observable
<
BaseResponse
<
List
<
String
>>>
receiveCoupon
(
@Body
RequestBody
body
);
@GET
(
"auth/coupon/courseCoupon/warn"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
Observable
<
BaseAPIResponse
<
CouponHintResponseBean
>>
getCouponHint
();
...
...
@@ -110,11 +112,12 @@ public interface NetApiStore {
//获取课程播放页 java 接口
@GET
(
"auth/course/get/all/audio-video"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
Observable
<
BaseResponse
<
CourseMediaDetailBean
>>
getCoursePlayData
(
@Query
(
"courseId"
)
String
courseId
);
//课程专题列表
//todo
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
@GET
(
"auth/course/listCoursesBySpecialId"
)
Observable
<
BaseAPIResponse
<
CourseSpecialListBean
>>
courseSpecialList
(
@QueryMap
Map
<
String
,
String
>
params
);
}
m-course/src/main/java/com/yidianling/course/widget/CouponHintView.kt
View file @
ab5f7bff
...
...
@@ -13,7 +13,7 @@ import com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.yidianling.course.R
import
com.yidianling.course.bean.CouponHintParam
import
com.yidianling.course.bean.CouponHintResponseBean
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
kotlinx.android.synthetic.main.coupon_hint_view.view.*
...
...
@@ -79,7 +79,7 @@ class CouponHintView : RelativeLayout{
fun
initData
(
visible
:
Int
){
this
.
couponHintVisible
=
visible
RetrofitUtils
.
getCouponHint
(
CouponHintParam
(
0
)).
compose
(
RxUtils
.
resultJavaData
())
Course
RetrofitUtils
.
getCouponHint
(
CouponHintParam
(
0
)).
compose
(
RxUtils
.
resultJavaData
())
.
map
{
it
}
.
filter
{
it
!=
null
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
m-course/src/main/java/com/yidianling/course/widget/CourseItemNewView.kt
View file @
ab5f7bff
...
...
@@ -8,11 +8,21 @@ import android.text.TextUtils
import
android.util.AttributeSet
import
android.view.View
import
com.alibaba.android.arouter.launcher.ARouter
import
com.ydl.media.audio.AudioPlayer
import
com.ydl.media.audio.model.Music
import
com.ydl.media.view.PlayTypeEnum
import
com.ydl.media.view.PlayerFloatHelper
import
com.ydl.media.view.PlayerFloatView
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.ydl_image.module.GlideApp
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.actionutil.BIConstants
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.course.CourseConstants
import
com.yidianling.course.R
import
com.yidianling.course.bean.Course
import
kotlinx.android.synthetic.main.item_course_new_list_view.view.*
/**
* @author jiucheng
...
...
@@ -33,7 +43,7 @@ class CourseItemNewView : ConstraintLayout {
initView
()
}
constructor
(
mContext
:
Context
,
a
rrt
:
AttributeSet
)
:
super
(
mContext
,
arrt
)
{
constructor
(
mContext
:
Context
,
a
ttr
:
AttributeSet
)
:
super
(
mContext
,
attr
)
{
this
.
mContext
=
mContext
initView
()
}
...
...
@@ -41,8 +51,8 @@ class CourseItemNewView : ConstraintLayout {
fun
initView
()
{
View
.
inflate
(
mContext
,
R
.
layout
.
item_course_new_list_view
,
this
)
va
r
parma
s
=
LayoutParams
(
LayoutParams
.
MATCH_PARENT
,
LayoutParams
.
WRAP_CONTENT
)
layoutParams
=
par
ma
s
va
l
param
s
=
LayoutParams
(
LayoutParams
.
MATCH_PARENT
,
LayoutParams
.
WRAP_CONTENT
)
layoutParams
=
par
am
s
setPadding
(
RxImageTool
.
dp2px
(
13f
),
0
,
RxImageTool
.
dp2px
(
15f
),
0
)
}
...
...
@@ -201,30 +211,30 @@ class CourseItemNewView : ConstraintLayout {
if
(
PlayerFloatHelper
.
isShow
(
mContext
))
{
PlayerFloatHelper
.
hide
()
PlayerFloatHelper
.
removeView
(
mContext
)
YDLMusicHelper
.
clearTempData
()
YDLMusicHelper
.
stop
()
AudioPlayer
.
get
().
stopPlayer
()
}
else
{
PlayerFloatHelper
.
removeView
(
mContext
)
}
val
music
=
Music
()
music
.
title
=
course
.
title
music
.
artist
=
doctorName
music
.
coverPath
=
if
(!
TextUtils
.
isEmpty
(
course
.
image
))
course
.
image
else
course
.
pic
PlayerFloatHelper
.
isCanClick
=
false
YDLMusicHelper
.
title
=
course
.
title
YDLMusicHelper
.
name
=
doctorName
YDLMusicHelper
.
cover
=
if
(!
TextUtils
.
isEmpty
(
course
.
image
))
course
.
image
else
course
.
pic
YDLMusicHelper
.
course_id
=
course
.
id
.
toInt
()
YDLMusicHelper
.
isCanClick
=
false
if
(
course
.
demoType
==
1
)
{
YDLMusicHelper
.
playType
=
0
PlayerFloatHelper
.
show
(
mContext
)
PlayerFloatHelper
.
playingType
=
PlayTypeEnum
.
PLAY_TYPE_COURSE
music
.
path
=
course
.
demoFile
YDLMusicHelper
.
coursePlay
(
course
.
demoFile
)
AudioPlayer
.
get
().
singlePlay
(
music
)
}
if
(
course
.
demoType
==
2
)
{
YDLMusicHelper
.
playType
=
1
YDLMusicHelper
.
courseVideoUlr
=
course
.
demoFile
PlayerFloatHelper
.
show
(
mContext
)
//todo 视屏播放
// YDLMusicHelper.playType = 1
// YDLMusicHelper.courseVideoUlr = course.demoFile
//
// PlayerFloatHelper.show(mContext)
}
...
...
@@ -235,8 +245,7 @@ class CourseItemNewView : ConstraintLayout {
override
fun
onPlayFinish
()
{
PlayerFloatHelper
.
hide
()
YDLMusicHelper
.
clearTempData
()
YDLMusicHelper
.
stop
()
AudioPlayer
.
get
().
stopPlayer
()
}
override
fun
onPauseClick
()
{
...
...
m-course/src/main/java/com/yidianling/course/widget/CourseRedPacketView.kt
View file @
ab5f7bff
...
...
@@ -12,7 +12,7 @@ import com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.router.IYDLRouterConstant
import
com.yidianling.course.R
import
com.yidianling.course.bean.RedListParam
import
com.yidianling.course.net.RetrofitUtils
import
com.yidianling.course.net.
Course
RetrofitUtils
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
kotlinx.android.synthetic.main.course_redpacket_view.view.*
...
...
@@ -83,7 +83,7 @@ class CourseRedPacketView : RelativeLayout {
@SuppressLint
(
"CheckResult"
)
fun
initData
(
visible
:
Int
)
{
this
.
redPacketVisible
=
visible
RetrofitUtils
.
getCouponMax
(
RedListParam
(
3
)).
compose
(
RxUtils
.
resultJavaData
())
Course
RetrofitUtils
.
getCouponMax
(
RedListParam
(
3
)).
compose
(
RxUtils
.
resultJavaData
())
.
map
{
it
}
.
filter
{
it
!=
null
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
m-course/src/main/res/drawable-xhdpi/coursde_ico_course_fanli.png
0 → 100644
View file @
ab5f7bff
6.48 KB
m-course/src/main/res/drawable-xhdpi/course_ico_course_cuxiao.png
0 → 100644
View file @
ab5f7bff
5.75 KB
m-course/src/main/res/drawable-xhdpi/course_ico_course_list_hot.png
0 → 100644
View file @
ab5f7bff
3.52 KB
m-course/src/main/res/drawable-xhdpi/course_ico_course_list_new.png
0 → 100644
View file @
ab5f7bff
4.36 KB
m-course/src/main/res/drawable-xhdpi/course_ico_course_list_play.png
0 → 100644
View file @
ab5f7bff
1.6 KB
m-course/src/main/res/drawable/course_background_course_list_item_view.xml
0 → 100644
View file @
ab5f7bff
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:state_enabled=
"true"
>
<shape>
<corners
android:radius=
"13dp"
/>
<gradient
android:endColor=
"@color/color_FFD814"
android:startColor=
"@color/color_FFDB26"
/>
</shape>
</item>
</selector>
\ No newline at end of file
m-course/src/main/res/font/dincond_bold.ttf
0 → 100644
View file @
ab5f7bff
File added
m-course/src/main/res/layout/activity_course_reply_list.xml
0 → 100644
View file @
ab5f7bff
<?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:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<com.ydl.ydlcommon.view.TitleBar
android:id=
"@+id/title_bar"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
app:title_text=
"课后笔记"
app:left_start_icon=
"@drawable/course_toolbar_back"
/>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/recycler_list"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:overScrollMode=
"never"
>
</android.support.v7.widget.RecyclerView>
</LinearLayout>
m-course/src/main/res/layout/item_course_new_list_view.xml
0 → 100644
View file @
ab5f7bff
<?xml version="1.0" encoding="utf-8"?>
<merge
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingStart=
"12dp"
android:paddingRight=
"15dp"
tools:parentTag=
"android.support.constraint.ConstraintLayout"
>
<com.ydl.ydlcommon.view.widgets.RoundImageView
android:id=
"@+id/iv_head"
android:layout_width=
"92dp"
android:layout_height=
"114dp"
android:layout_marginStart=
"2dp"
android:layout_marginTop=
"20dp"
android:scaleType=
"centerCrop"
app:borderRadius=
"4dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:type=
"round"
tools:background=
"@color/main_theme"
/>
<ImageView
android:id=
"@+id/iv_play"
android:layout_width=
"26dp"
android:layout_height=
"26dp"
android:layout_marginRight=
"3dp"
android:layout_marginBottom=
"3dp"
android:padding=
"3dp"
android:src=
"@drawable/course_ico_course_list_play"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@+id/iv_head"
app:layout_constraintEnd_toEndOf=
"@+id/iv_head"
tools:visibility=
"visible"
/>
<ImageView
android:id=
"@+id/iv_new"
android:layout_width=
"27dp"
android:layout_height=
"16dp"
android:layout_marginLeft=
"0.5dp"
android:src=
"@drawable/course_ico_course_list_new"
android:visibility=
"gone"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/iv_head"
tools:visibility=
"visible"
/>
<ImageView
android:id=
"@+id/iv_hot"
android:layout_width=
"27dp"
android:layout_height=
"16dp"
android:layout_marginLeft=
"0.5dp"
android:src=
"@drawable/course_ico_course_list_hot"
android:visibility=
"gone"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/iv_head"
/>
<android.support.constraint.Guideline
android:id=
"@+id/guide_line"
android:layout_width=
"1dp"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
app:layout_constraintGuide_begin=
"100dp"
app:layout_constraintStart_toEndOf=
"@+id/iv_head"
/>
<TextView
android:id=
"@+id/tv_title"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:ellipsize=
"end"
android:maxLines=
"2"
android:textColor=
"@color/color_333333"
android:textSize=
"16sp"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@+id/guide_line"
app:layout_constraintTop_toTopOf=
"@+id/iv_head"
tools:text=
"走出余光恐惧,一位余光恐惧者的亲诉一位余光恐惧者的亲诉一位余光恐惧者的亲诉一位余光恐惧者的亲诉"
/>
<TextView
android:id=
"@+id/tv_doctor_info"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:layout_marginTop=
"4dp"
android:ellipsize=
"end"
android:maxLines=
"1"
android:textColor=
"@color/color_242424"
android:textSize=
"12sp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@+id/guide_line"
app:layout_constraintTop_toBottomOf=
"@+id/tv_title"
tools:text=
"黄世杰国家二黄黄世杰国家二黄世杰国家二级心理咨询师级心理咨询师世杰国家二级心理咨询师级心理咨询师"
/>
<TextView
android:id=
"@+id/tv_course_info"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:layout_marginTop=
"4dp"
android:textColor=
"@color/color_999999"
android:textSize=
"12sp"
app:layout_constraintStart_toEndOf=
"@+id/guide_line"
app:layout_constraintTop_toBottomOf=
"@+id/tv_doctor_info"
tools:text=
"共12讲"
/>
<View
android:id=
"@+id/view_line"
android:layout_width=
"0.5dp"
android:layout_height=
"0dp"
android:layout_marginStart=
"6dp"
android:layout_marginEnd=
"2dp"
android:background=
"@color/color_EBEBEB"
app:layout_constraintBottom_toBottomOf=
"@+id/tv_course_num"
app:layout_constraintStart_toEndOf=
"@+id/tv_course_info"
app:layout_constraintTop_toBottomOf=
"@+id/tv_doctor_info"
app:layout_constraintTop_toTopOf=
"@+id/tv_course_info"
/>
<TextView
android:id=
"@+id/tv_course_num"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"4dp"
android:layout_marginTop=
"4dp"
android:textColor=
"@color/color_999999"
android:textSize=
"12sp"
app:layout_constraintStart_toEndOf=
"@+id/view_line"
app:layout_constraintTop_toBottomOf=
"@+id/tv_doctor_info"
tools:text=
"320人已学"
/>
<ImageView
android:id=
"@+id/tv_cu_xiao"
android:layout_width=
"42dp"
android:layout_height=
"13dp"
android:layout_marginStart=
"4dp"
android:layout_marginBottom=
"3dp"
android:src=
"@drawable/course_ico_course_cuxiao"
app:layout_constraintBottom_toBottomOf=
"@+id/iv_head"
app:layout_constraintStart_toEndOf=
"@+id/guide_line"
/>
<ImageView
android:id=
"@+id/tv_fan_li"
android:layout_width=
"42dp"
android:layout_height=
"13dp"
android:layout_marginStart=
"4dp"
android:layout_marginBottom=
"3dp"
android:src=
"@drawable/coursde_ico_course_fanli"
app:layout_constraintBottom_toBottomOf=
"@+id/iv_head"
app:layout_constraintStart_toEndOf=
"@+id/tv_cu_xiao"
/>
<TextView
android:id=
"@+id/tv_price_decimal"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:fontFamily=
"@font/dincond_bold"
android:text=
".00"
android:textColor=
"@color/color_FF5040"
android:textSize=
"12sp"
app:layout_constraintBottom_toBottomOf=
"@+id/iv_head"
app:layout_constraintEnd_toEndOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_price"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"19dp"
android:fontFamily=
"@font/dincond_bold"
android:textColor=
"@color/color_FF5040"
android:textSize=
"18sp"
android:textStyle=
"bold"
app:layout_constraintBottom_toTopOf=
"@+id/view_bottom_line"
app:layout_constraintEnd_toStartOf=
"@+id/tv_price_decimal"
tools:text=
"128"
/>
<TextView
android:id=
"@+id/tv_price_si"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"1dp"
android:layout_marginEnd=
"2dp"
android:text=
"¥"
android:textColor=
"@color/color_FF5040"
android:textSize=
"11sp"
android:textStyle=
"bold"
app:layout_constraintEnd_toStartOf=
"@+id/tv_price"
app:layout_constraintTop_toTopOf=
"@+id/tv_price"
/>
<TextView
android:id=
"@+id/tv_original_price"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"3dp"
android:textColor=
"@color/color_BFBFBF"
android:textSize=
"10sp"
app:layout_constraintBottom_toBottomOf=
"@+id/iv_head"
app:layout_constraintEnd_toStartOf=
"@+id/tv_price_si"
tools:text=
"¥166"
/>
<TextView
android:id=
"@+id/tv_view_course"
android:layout_width=
"84dp"
android:layout_height=
"24dp"
android:background=
"@drawable/course_background_course_list_item_view"
android:gravity=
"center"
android:text=
"立即听课"
android:textColor=
"@color/color_242424"
android:textSize=
"13dp"
android:textStyle=
"bold"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@id/iv_head"
app:layout_constraintEnd_toEndOf=
"parent"
/>
<View
android:id=
"@+id/view_bottom_line"
android:layout_width=
"match_parent"
android:layout_height=
"0.5dp"
android:layout_marginStart=
"2dp"
android:layout_marginTop=
"20dp"
android:background=
"@color/color_EBEBEB"
app:layout_constraintTop_toBottomOf=
"@+id/iv_head"
/>
</merge>
\ No newline at end of file
m-course/src/main/res/layout/item_course_play_recylist.xml
0 → 100644
View file @
ab5f7bff
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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=
"match_parent"
android:background=
"@color/white"
>
<com.ydl.ydlcommon.view.CircleImageView
android:id=
"@+id/img_head"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:layout_marginLeft=
"15dp"
android:layout_marginTop=
"15dp"
android:src=
"@drawable/course_head_place_hold_pic"
/>
<TextView
android:id=
"@+id/text_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_toRightOf=
"@+id/img_head"
android:layout_alignTop=
"@+id/img_head"
android:layout_alignBottom=
"@+id/img_head"
android:textSize=
"14sp"
android:gravity=
"center_vertical"
android:layout_marginLeft=
"15dp"
tools:text=
"赵云"
/>
<TextView
android:id=
"@+id/text_time"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_toRightOf=
"@+id/text_name"
android:layout_alignTop=
"@+id/text_name"
android:layout_alignBottom=
"@+id/text_name"
android:gravity=
"center_vertical"
android:layout_marginLeft=
"20dp"
android:textColor=
"#999999"
android:textSize=
"12sp"
android:layout_marginRight=
"15dp"
tools:text=
"207.02.12"
/>
<TextView
android:id=
"@+id/text_des"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/text_name"
android:gravity=
"center_vertical"
android:textSize=
"15sp"
android:layout_marginRight=
"15dp"
android:layout_alignLeft=
"@+id/text_name"
tools:text=
"老师切入点很好,讲解很认真"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"0.5dp"
android:layout_marginTop=
"15dp"
android:layout_below=
"@+id/text_des"
android:background=
"@color/color_F5F5F5"
/>
</RelativeLayout>
\ No newline at end of file
m-course/src/main/res/values/colors.xml
View file @
ab5f7bff
...
...
@@ -137,4 +137,6 @@
<color
name=
"color_0D1A30"
>
#0D1A30
</color>
<color
name=
"color_FDD33D"
>
#FDD33D
</color>
<color
name=
"color_BFBFBF"
>
#BFBFBF
</color>
<color
name=
"color_FF5040"
>
#FF5040
</color>
<color
name=
"color_FFD814"
>
#FFD814
</color>
</resources>
\ No newline at end of file
ydl-media/src/main/java/com/ydl/media/view/PlayerFloatHelper.kt
View file @
ab5f7bff
...
...
@@ -28,6 +28,7 @@ class PlayerFloatHelper {
//已添加悬浮窗页面全路径名
private
var
showingPageName
:
String
?
=
null
private
var
wm
:
WindowManager
?
=
null
var
isCanClick
=
true
var
playingType
=
PlayTypeEnum
.
PLAY_TYPE_NONE
var
playTempData
=
hashMapOf
<
String
,
String
>()
...
...
ydl-media/src/main/java/com/ydl/media/view/PlayerFloatView.kt
View file @
ab5f7bff
...
...
@@ -117,7 +117,9 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) {
updateViewPosition
()
}
else
{
if
(!
isMove
)
{
PlayerFloatHelper
.
startPlayingActivity
(
context
)
if
(
PlayerFloatHelper
.
isCanClick
){
PlayerFloatHelper
.
startPlayingActivity
(
context
)
}
}
}
isMove
=
false
...
...
@@ -149,7 +151,9 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) {
updateViewPosition
()
}
else
{
if
(!
isMove
)
{
PlayerFloatHelper
.
startPlayingActivity
(
context
)
if
(
PlayerFloatHelper
.
isCanClick
){
PlayerFloatHelper
.
startPlayingActivity
(
context
)
}
}
}
isMove
=
false
...
...
@@ -181,7 +185,9 @@ class PlayerFloatView(var mContext: Context) : FrameLayout(mContext) {
updateViewPosition
()
}
else
{
if
(!
isMove
)
{
PlayerFloatHelper
.
startPlayingActivity
(
context
)
if
(
PlayerFloatHelper
.
isCanClick
){
PlayerFloatHelper
.
startPlayingActivity
(
context
)
}
}
}
isMove
=
false
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/AppConfig.kt
View file @
ab5f7bff
...
...
@@ -6,3 +6,4 @@ package com.ydl.ydlcommon.base.config
*/
const
val
YDL_DOMAIN
=
"Domain-Name:"
const
val
YDL_DOMAIN_JAVA
=
"JAVA_BASE_URL"
const
val
YDL_DOMAIN_COUPON_URL
=
"SERVER_COUPON_URL"
ydl-platform/src/main/java/com/ydl/ydlcommon/base/config/GlobalConfig.kt
View file @
ab5f7bff
...
...
@@ -21,7 +21,7 @@ class GlobalConfig private constructor(var builder: Builder) {
this
.
appDebug
=
builder
.
appDebug
}
fun
initEnv
(){
fun
initEnv
()
{
builder
.
initEnv
(
BaseApp
.
instance
)
}
...
...
@@ -30,9 +30,9 @@ class GlobalConfig private constructor(var builder: Builder) {
private
var
okHttpClient
:
OkHttpClient
?
=
null
var
appFrom
:
String
=
YDLConstants
.
FROM_YDL
var
appEnv
:
String
=
YDLConstants
.
ENV_PROD
var
appBaseURL
:
String
?
=
null
var
multipleUrl
:
HashMap
<
String
,
String
>
=
hashMapOf
()
var
appDebug
:
Boolean
=
false
var
appBaseURL
:
String
?
=
null
var
multipleUrl
:
HashMap
<
String
,
String
>
=
hashMapOf
()
var
appDebug
:
Boolean
=
false
fun
setOkHttpClient
(
okHttpClient
:
OkHttpClient
)
{
this
.
okHttpClient
=
okHttpClient
...
...
@@ -42,7 +42,7 @@ class GlobalConfig private constructor(var builder: Builder) {
this
.
appBaseURL
=
baseURL
}
fun
setDebug
(
isDebug
:
Boolean
)
{
fun
setDebug
(
isDebug
:
Boolean
)
{
this
.
appDebug
=
isDebug
}
...
...
@@ -77,16 +77,17 @@ class GlobalConfig private constructor(var builder: Builder) {
fun
initEnv
(
context
:
Context
)
{
HttpConfig
.
getInstance
().
initEnv
(
context
,
appEnv
)
val
apiFactory
=
YDLHttpUtils
val
apiFactory
=
YDLHttpUtils
.
getInstance
()
.
init
(
context
)
.
config
()
.
setBaseUrl
(
appBaseURL
?:
HttpConfig
.
PHP_BASE_URL
)
.
setBaseUrl
(
appBaseURL
?:
HttpConfig
.
PHP_BASE_URL
)
.
addUrl
(
YDL_DOMAIN_JAVA
,
HttpConfig
.
JAVA_BASE_URL
)
.
addUrl
(
YDL_DOMAIN_COUPON_URL
,
HttpConfig
.
SERVER_COUPON_URL
)
.
setMultipleUrlMap
(
multipleUrl
)
if
(
okHttpClient
==
null
)
{
okHttpClient
=
HttpConfig
.
getInstance
().
createOkHttp
(
context
,
appFrom
,
appDebug
)
okHttpClient
=
HttpConfig
.
getInstance
().
createOkHttp
(
context
,
appFrom
,
appDebug
)
}
apiFactory
.
setOkClient
(
okHttpClient
)
...
...
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