Commit 1d422b3c by 严久程

课程、支付

parent 0e1cad6c
......@@ -25,28 +25,25 @@ import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.ui.LogoLoadingView
import com.ydl.ydlcommon.utils.NetworkParamsUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.actionutil.BIConstants
import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.RxImageTool
import com.yidianling.course.CourseConstants
import com.yidianling.course.CourseNewListAdapter
import com.yidianling.course.R
import com.yidianling.course.bean.Course
import com.yidianling.course.constants.CourseBIConstants
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.CourseRetrofitUtils
import com.yidianling.course.bean.Course
import com.yidianling.course.constants.CourseBIConstants
import com.yidianling.course.model.CourseCategoryBean
import com.yidianling.course.router.CourseIn
import com.yidianling.course.net.CourseRetrofitUtils
import com.yidianling.course.widget.SearchBarView
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.activity_courses.*
import kotlinx.android.synthetic.main.item_hot_search_view.view.*
import kotlinx.android.synthetic.main.course_layout_title_bar.*
import org.json.JSONException
import org.json.JSONObject
......@@ -56,7 +53,8 @@ import org.json.JSONObject
@Route(path = "/course/list")
class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler {
private var currentType: Int = -1
private var currentType: String = ""
private var currentValue: String = ""
private var childType: Int = 0
private var adapter: CourseNewListAdapter? = null
private var hasMore = true
......@@ -102,18 +100,23 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
}
override fun initDataAndEvent() {
currentType = intent.getIntExtra(PARAMS_LISTTYPE, -1)
childType = intent.getIntExtra(PARAMS_ISFREE, 2)
if (intent.hasExtra(PARAMS_LISTTYPE)) {
currentType = intent.getStringExtra(PARAMS_LISTTYPE)
}
isFree = intent.getIntExtra(PARAMS_ISFREE, 0)
if (!TextUtils.isEmpty(intent.getStringExtra("routerParam"))) {
try {
val jsonObject = JSONObject(intent.getStringExtra("routerParam"))
currentType = jsonObject.getInt(PARAMS_LISTTYPE)
childType = jsonObject.getInt(PARAMS_ISFREE)
currentType = jsonObject.getString(PARAMS_LISTTYPE)
isFree = jsonObject.getInt(PARAMS_ISFREE)
} catch (e: JSONException) {
LogUtil.e("--json解析错误" + e.message)
}
}
if (TextUtils.equals("0", currentType)) {
currentType = "10"
}
search_view.initBarType(SearchBarView.JUMP_TO_SEARCH_COURSE, null)
iv_back.setOnClickListener {
......@@ -123,6 +126,7 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
finish()
}
search_view.setTextVisibility()
search_view.setTextTitle("搜索")
init()
loadData()
......@@ -130,6 +134,24 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
setClick()
initNetLossView()
if (this@CourseListContainerActivity.isFree != 0 || this@CourseListContainerActivity.isInvite != 0 || this@CourseListContainerActivity.isPromotion != 0) {
filter_layout.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
filter_layout.setTextColor(
ContextCompat.getColor(
this@CourseListContainerActivity,
R.color.course_color_1DA1F2
)
)
} else {
filter_layout.typeface = Typeface.defaultFromStyle(Typeface.NORMAL)
filter_layout.setTextColor(
ContextCompat.getColor(
this@CourseListContainerActivity,
R.color.course_color_242424
)
)
}
}
private fun init() {
......@@ -152,14 +174,20 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
load_more_list_view_container.setLoadMoreHandler(this)
adapter = CourseNewListAdapter(this)
lv_content.adapter = adapter
lv_content.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
lv_content.onItemClickListener =
AdapterView.OnItemClickListener { parent, view, position, id ->
val course = adapter!!.dataList[position]
if (course != null) {
val h5Params = H5Params(CourseConstants.COURSE_DETAIL_H5 + course.id, "课程详情")
if (null != course.share && !TextUtils.isEmpty(course.share.share_url)) {
val shareData =
ShareData(course.share.share_url, course.share.title, course.share.cover, course.share.desc)
ShareData(
course.share.share_url,
course.share.title,
course.share.cover,
course.share.desc
)
h5Params.shareData = shareData
}
......@@ -188,9 +216,10 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
return@repeat
}
}
if (currentType != -1) {
if (currentType != "") {
for (bean in allCourseList) {
if (bean.type == currentType.toString()) {
if (TextUtils.equals(bean.type, currentType)) {
currentValue = bean.value
selectedCourseList.add(bean)
break
}
......@@ -235,7 +264,10 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
//综合排序弹窗
sort_layout.setOnClickListener {
var popupWindow =
CourseSortPopupWindow(this, selectedSort, object : CourseSortPopupWindow.OnSortItemSelectedListener {
CourseSortPopupWindow(
this,
selectedSort,
object : CourseSortPopupWindow.OnSortItemSelectedListener {
override fun onSortItemSelected(sortItem: String) {
selectedSort = sortItem
getData(false)
......@@ -276,11 +308,13 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
}
if (selectedGoodsList.size == 0) {
//重置所有选择条件:这时候默认选择全部类型
currentType = 10
currentType = "10"
currentValue = "listType"
}
getData(false)
var name = if (selectedGoodsList.size == 0) "全部类型" else selectedGoodsList[0].name
var name =
if (selectedGoodsList.size == 0) "全部类型" else selectedGoodsList[0].name
ActionCountUtils.count(
CourseBIConstants.CourseListEvent.POSITION_COURSE_LIST_CLASSIFICATION_CLICK,
name
......@@ -312,7 +346,12 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
0
)
}
classify_layout.setTextColor(ContextCompat.getColor(this@CourseListContainerActivity, R.color.course_color_1DA1F2))
classify_layout.setTextColor(
ContextCompat.getColor(
this@CourseListContainerActivity,
R.color.course_color_1DA1F2
)
)
classify_layout.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
......@@ -345,7 +384,10 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
if (isPromotion == 1) {
sign += "促销"
}
ActionCountUtils.count(CourseBIConstants.CourseListEvent.POSITION_COURSE_LIST_FILTER_CLICK, sign)
ActionCountUtils.count(
CourseBIConstants.CourseListEvent.POSITION_COURSE_LIST_FILTER_CLICK,
sign
)
}
})
popupWindow.setOnDismissListener {
......@@ -373,7 +415,12 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
0
)
}
filter_layout.setTextColor(ContextCompat.getColor(this@CourseListContainerActivity, R.color.course_color_1DA1F2))
filter_layout.setTextColor(
ContextCompat.getColor(
this@CourseListContainerActivity,
R.color.course_color_1DA1F2
)
)
filter_layout.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
......@@ -407,13 +454,6 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
* 获取课程具体数据
*/
private fun getData(loadMore: Boolean) {
when (currentType) {
1, 2 -> if (!CourseIn.isLogin()) {
return
}
else -> {
}
}
if (loadMore && !hasMore) {
load_more_list_view_container.loadMoreFinish(false, false)
return
......@@ -432,25 +472,28 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
private fun getCourses(loadMore: Boolean) {
val sb = StringBuffer()
if (selectedCourseList.size > 0) {
currentType = selectedCourseList[0].type.toInt()
}
if (currentType >= 10) {
sb.append("&listType=").append(currentType)
} else {
sb.append("&listType=").append(currentType + 1)
currentType = selectedCourseList[0].type
currentValue = selectedCourseList[0].value
}
sb.append("&page=").append(page)
.append("&isFree=").append(isFree)
.append("&reorder=").append(selectedSort)
.append("&isInvite=").append(isInvite)
.append("&isPromotion=").append(isPromotion)
var map = HashMap<String, Any>()
map["&$currentValue="] = currentType
map["&page="] = page
map["&isFree="] = isFree
map["&reorder="] = selectedSort
map["&isInvite="] = isInvite
map["&isPromotion="] = isPromotion
if (keyList.size > 0) {
repeat(keyList.size) {
sb.append("&${keyList[it]}=").append(valueList[it])
map["&${keyList[it]}="] = valueList[it]
}
}
for (key in map.keys) {
sb.append(key).append(map[key])
}
val urlParams = NetworkParamsUtils.getCommonParam() + sb.toString()
//不是上拉加载更多,是第一次加载或者下拉刷新,且当前页面还没有数据
......@@ -460,7 +503,8 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null)
}
CourseRetrofitUtils.getCourseList(urlParams).compose(RxUtils.resultJavaData()).subscribeOn(Schedulers.io())
CourseRetrofitUtils.getCourseList(urlParams).compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp ->
if (resp.list.isNotEmpty()) {
......@@ -551,7 +595,11 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
selectedSort = bean.type
//处理view选中状态
repeat(hotSearchList.size) {
if (hotSearchList[it].parentId == 1 && !TextUtils.equals(hotSearchList[it].name, bean.name)) {
if (hotSearchList[it].parentId == 1 && !TextUtils.equals(
hotSearchList[it].name,
bean.name
)
) {
val textView = ll_hot_search.getChildAt(it) as TextView
textView.isSelected = false
}
......@@ -566,11 +614,16 @@ class CourseListContainerActivity : BaseActivity(), PtrHandler, LoadMoreHandler
selectedCourseList.add(bean)
} else {
//重置所有分类条件:这时候默认选择全部类型
currentType = 10
currentValue = "listType"
currentType = "10"
}
repeat(hotSearchList.size) {
if (hotSearchList[it].parentId == 2 && !TextUtils.equals(hotSearchList[it].name, bean.name)) {
if (hotSearchList[it].parentId == 2 && !TextUtils.equals(
hotSearchList[it].name,
bean.name
)
) {
val textView = ll_hot_search.getChildAt(it) as TextView
textView.isSelected = false
}
......
import android.content.Intent
import android.net.Uri
import android.os.Handler
import android.text.TextUtils
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.model.Music
......@@ -11,6 +12,7 @@ import com.ydl.webview.NewH5Activity
import com.ydl.ydl_router.manager.YDLRouterManager
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.base.flutter.base.BaseFlutterFragment
import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.RxDeviceTool
......@@ -23,6 +25,7 @@ import com.yidianling.course.router.CourseIn
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.view.FlutterView
import org.json.JSONObject
/**
* @author jiucheng
......@@ -60,6 +63,7 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
mMap["accessToken"] = loginBean?.token ?: ""
?: ""
mMap["isFromApp"] = "1"
mMap["ffrom"] = PlatformDataManager.getRam().getChannelName()
mMap["version"] = RxDeviceTool.getAppVersionName(BaseApp.getApp())
mMap["osBuild"] =
RxDeviceTool.getBuildMANUFACTURER() + "," + RxDeviceTool.getBuildBrandModel() + "," + RxDeviceTool.getOsBuileVersion() + "," + RxDeviceTool.getAppVersionName(
......@@ -70,6 +74,11 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
JUMPURL -> {
var jumpUrl: String? = methodCall.arguments.toString()
if (!TextUtils.isEmpty(jumpUrl)) {
if (jumpUrl!!.startsWith("http")) {
val h5Params = H5Params(jumpUrl, "")
NewH5Activity.start(mFragment!!.activity, h5Params)
return
}
when {
jumpUrl!!.contains("user/login") -> mFragment!!.startActivity(
CourseIn.loginWayIntent(
......@@ -86,8 +95,9 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
)
jumpUrl.contains("course/detail") -> {
var uri = Uri.parse(jumpUrl)
var id = uri.getQueryParameter("id")
val h5Params = H5Params(CourseConstants.COURSE_DETAIL_H5 + id, "课程详情")
var resultParams = uri.getQueryParameter("params")
val jsonObject = JSONObject(resultParams)
val h5Params = H5Params(CourseConstants.COURSE_DETAIL_H5 + jsonObject.getString("id"), "课程详情")
NewH5Activity.start(mFragment!!.activity, h5Params)
}
else -> YDLRouterManager.router(jumpUrl)
......@@ -141,6 +151,7 @@ class CoursePlugin : MethodChannel.MethodCallHandler {
// PlayerFloatHelper.show(mFragment!!.activity)
}
Handler().postDelayed({ CourseSendPlugin.sendMsg(true) }, 300)
PlayerFloatHelper.addClickListener(object : PlayerFloatView.FloatViewPlayListener {
override fun onStartClick() {
......
......@@ -97,6 +97,10 @@ class SearchBarView : LinearLayout {
}
fun setTextTitle(title: String) {
common_search_bar_btn.text = title
}
private fun setEditTextVisibility(boolean: Boolean) {
if (boolean) {
common_search_bar_text.visibility = View.GONE
......
......@@ -8,13 +8,30 @@
android:orientation="vertical"
>
<include layout="@layout/course_layout_title_bar"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="@color/course_color_FFFFFF"
android:gravity="center"
android:orientation="horizontal"
android:paddingLeft="16dp">
<ImageView
android:id="@+id/iv_back"
android:layout_width="13dp"
android:layout_height="22dp"
android:scaleType="centerCrop"
android:src="@drawable/course_icon_back_black" />
<com.yidianling.course.widget.SearchBarView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<View
android:id="@+id/divider_line"
android:layout_width="match_parent"
......
......@@ -15,7 +15,7 @@
android:layout_height="wrap_content"
android:visibility="gone"/>
<com.ydl.base_module.ui.searchbarview.SearchBarView
<com.yidianling.course.widget.SearchBarView
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
......
......@@ -77,6 +77,7 @@ dependencies {
api rootProject.ext.dependencies["ydl-hnet"]
api rootProject.ext.dependencies["imagepicker"]
api rootProject.ext.dependencies["ydl-utils"]
api rootProject.ext.dependencies["ydl-js"]
api rootProject.ext.dependencies["ydl-flutter"]
api rootProject.ext.dependencies["ydl-net"]
api ('com.ydl:device-id:0.0.7@aar'){
......
......@@ -4,6 +4,7 @@ import com.ydl.ydlcommon.base.BaseApp;
import com.ydl.ydlcommon.data.PlatformDataManager;
import com.ydl.ydlcommon.data.http.BaseCommand;
import com.ydl.ydlcommon.data.http.FormatText;
import com.ydl.ydlcommon.modular.ModularServiceManager;
import com.ydl.ydlcommon.router.YdlCommonRouterManager;
import com.ydl.ydlcommon.router.YdlUserInfo;
import com.yidianling.common.tools.RxAppTool;
......@@ -132,7 +133,7 @@ public class NetworkParamsUtils {
public static String getCommonParam() {
StringBuffer sb = new StringBuffer();
YdlUserInfo userInfo = YdlCommonRouterManager.INSTANCE.getYdlCommonRoute().getUserInfo();
YdlUserInfo userInfo = ModularServiceManager.INSTANCE.getPlatformUserService().getUser();
sb.append("ffrom").append("=").append(PlatformDataManager.INSTANCE.getRam().getChannelName())
.append("&").append("isFromApp").append("=").append("1")
.append("&").append("osBuild").append("=").append(RxDeviceTool.getBuildBrandModel()).append(",")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment