Commit 6273740e by wukun

0327

parent aa1f19b1
...@@ -15,6 +15,7 @@ import com.dayu.common.Constants; ...@@ -15,6 +15,7 @@ import com.dayu.common.Constants;
import com.dayu.event.CheckPayData; import com.dayu.event.CheckPayData;
import com.dayu.event.Notice; import com.dayu.event.Notice;
import com.dayu.event.PayData; import com.dayu.event.PayData;
import com.dayu.event.StudyCourseData;
import java.util.List; import java.util.List;
...@@ -215,4 +216,18 @@ public interface APIService { ...@@ -215,4 +216,18 @@ public interface APIService {
*/ */
@POST(Constants.API_7900 + "/courses/pay") @POST(Constants.API_7900 + "/courses/pay")
Observable<BaseResponse<Boolean>> pay(@Body PayData data); Observable<BaseResponse<Boolean>> pay(@Body PayData data);
@POST(Constants.API_7900 + "/courses/studyCourse")
Observable<BaseResponse<Boolean>> studyCourse(@Body StudyCourseData data);
/**
* 课程 点赞/取消点赞
*
* @param type 1点赞 2取消点赞
* @return
*/
@GET(Constants.API_7900 + "/courses/point/courseId/{courseId}/engineerId/{engineerId}/type/{type}")
Observable<BaseResponse<Boolean>> pointCourse(@Path("courseId") int courseId,
@Path("engineerId") int engineerId,
@Path("type") int type);
} }
package com.dayu.learncenter.api.data; package com.dayu.event;
public class StudyCourseData { public class StudyCourseData {
public int courseId ; // 课程ID public int courseId ; // 课程ID
......
...@@ -15,7 +15,7 @@ import com.dayu.learncenter.api.bean.ShareRecordBean; ...@@ -15,7 +15,7 @@ import com.dayu.learncenter.api.bean.ShareRecordBean;
import com.dayu.learncenter.api.data.EditCourseData; import com.dayu.learncenter.api.data.EditCourseData;
import com.dayu.learncenter.api.data.LiveData; import com.dayu.learncenter.api.data.LiveData;
import com.dayu.learncenter.api.data.PubCourseData; import com.dayu.learncenter.api.data.PubCourseData;
import com.dayu.learncenter.api.data.StudyCourseData; import com.dayu.event.StudyCourseData;
import io.reactivex.Observable; import io.reactivex.Observable;
import retrofit2.http.Body; import retrofit2.http.Body;
......
...@@ -14,7 +14,7 @@ import com.dayu.event.UserInfo; ...@@ -14,7 +14,7 @@ import com.dayu.event.UserInfo;
import com.dayu.learncenter.api.LearnService; import com.dayu.learncenter.api.LearnService;
import com.dayu.learncenter.api.bean.CommonLearnBean; import com.dayu.learncenter.api.bean.CommonLearnBean;
import com.dayu.event.PayData; import com.dayu.event.PayData;
import com.dayu.learncenter.api.data.StudyCourseData; import com.dayu.event.StudyCourseData;
import com.dayu.learncenter.event.RefreshLeanTabEvent; import com.dayu.learncenter.event.RefreshLeanTabEvent;
import com.dayu.utils.UserManager; import com.dayu.utils.UserManager;
......
...@@ -20,7 +20,7 @@ import com.dayu.common.Constants; ...@@ -20,7 +20,7 @@ import com.dayu.common.Constants;
import com.dayu.learncenter.R; import com.dayu.learncenter.R;
import com.dayu.learncenter.api.LearnService; import com.dayu.learncenter.api.LearnService;
import com.dayu.learncenter.api.bean.CourseDeatilBean; import com.dayu.learncenter.api.bean.CourseDeatilBean;
import com.dayu.learncenter.api.data.StudyCourseData; import com.dayu.event.StudyCourseData;
import com.dayu.learncenter.databinding.ActivityCourseDetailBinding; import com.dayu.learncenter.databinding.ActivityCourseDetailBinding;
import com.dayu.utils.CommonUtils; import com.dayu.utils.CommonUtils;
import com.dayu.utils.ProgressUtil; import com.dayu.utils.ProgressUtil;
......
package com.dayu.usercenter.adapter;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.usercenter.R;
import com.dayu.usercenter.model.CoursesVideoData;
import java.util.List;
public class CoursesVideoAdapter extends RecyclerView.Adapter<CoursesVideoAdapter.MyViewHolder> {
private Activity mActivity;
private List<CoursesVideoData> videoDataList;
private OnItemClickListener onItemClickListener;
public CoursesVideoAdapter(Activity mActivity, List<CoursesVideoData> videoDataList) {
this.mActivity = mActivity;
this.videoDataList = videoDataList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_business_video, parent, false);
return new MyViewHolder(inflate);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
CoursesVideoData coursesVideoData1 = videoDataList.get(position);
holder.tvName.setText(coursesVideoData1.getName());
if (coursesVideoData1.getCurrent()){
holder.tvName.setTextColor(ContextCompat.getColor(mActivity,R.color.text_common_blue));
}else{
holder.tvName.setTextColor(ContextCompat.getColor(mActivity,R.color.common_text_color));
}
if (position == 0){
holder.ivVideoLock.setVisibility(View.GONE);
}else{
CoursesVideoData coursesVideoData = videoDataList.get(position - 1);
if (3 == coursesVideoData.getPlayStatus()){
holder.ivVideoLock.setVisibility(View.GONE);
}else {
holder.ivVideoLock.setVisibility(View.VISIBLE);
}
}
holder.rlItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (View.VISIBLE == holder.ivVideoLock.getVisibility()){
return;
}
if (onItemClickListener != null){
onItemClickListener.onItemClick(position);
}
}
});
}
@Override
public int getItemCount() {
return videoDataList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
private final TextView tvName;
private final ImageView ivVideoLock;
private final RelativeLayout rlItem;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
tvName = itemView.findViewById(R.id.tv_name);
ivVideoLock = itemView.findViewById(R.id.iv_video_lock);
rlItem = itemView.findViewById(R.id.rl_item);
}
}
public interface OnItemClickListener{
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
}
...@@ -6,8 +6,27 @@ public class CoursesVideoData { ...@@ -6,8 +6,27 @@ public class CoursesVideoData {
private String url; private String url;
private int learners; private int learners;
private int playStatus; private int playStatus;
private Object points; private String points;
private String price; private String price;
private int pointStatus;
private Boolean isCurrent = false;
public Boolean getCurrent() {
return isCurrent;
}
public int getPointStatus() {
return pointStatus;
}
public void setPointStatus(int pointStatus) {
this.pointStatus = pointStatus;
}
public void setCurrent(Boolean current) {
isCurrent = current;
}
public String getPrice() { public String getPrice() {
return price; return price;
...@@ -57,11 +76,11 @@ public class CoursesVideoData { ...@@ -57,11 +76,11 @@ public class CoursesVideoData {
this.playStatus = playStatus; this.playStatus = playStatus;
} }
public Object getPoints() { public String getPoints() {
return points; return points;
} }
public void setPoints(Object points) { public void setPoints(String points) {
this.points = points; this.points = points;
} }
} }
...@@ -12,8 +12,10 @@ import com.dayu.base.api.Api; ...@@ -12,8 +12,10 @@ import com.dayu.base.api.Api;
import com.dayu.base.ui.activity.BaseActivity; import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.event.CheckPayData; import com.dayu.event.CheckPayData;
import com.dayu.event.PayData; import com.dayu.event.PayData;
import com.dayu.event.StudyCourseData;
import com.dayu.event.UserInfo; import com.dayu.event.UserInfo;
import com.dayu.usercenter.R; import com.dayu.usercenter.R;
import com.dayu.usercenter.adapter.CoursesVideoAdapter;
import com.dayu.usercenter.api.UserService2; import com.dayu.usercenter.api.UserService2;
import com.dayu.usercenter.databinding.ActivityBusinessDetailBinding; import com.dayu.usercenter.databinding.ActivityBusinessDetailBinding;
import com.dayu.usercenter.model.BusinessDetailData; import com.dayu.usercenter.model.BusinessDetailData;
...@@ -25,18 +27,23 @@ import com.dayu.utils.CommonUtils; ...@@ -25,18 +27,23 @@ import com.dayu.utils.CommonUtils;
import com.dayu.utils.GlideImageLoader; import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.UserManager; import com.dayu.utils.UserManager;
import com.dayu.widgets.CustomDialog; import com.dayu.widgets.CustomDialog;
import com.google.gson.Gson; import com.dayu.widgets.MyJzvdStd;
import com.google.gson.GsonBuilder;
import java.util.List; import java.util.List;
import cn.jzvd.Jzvd;
/** /**
* 商家详情 * 商家详情
*/ */
public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter, ActivityBusinessDetailBinding> implements BusinessDetailContract.View { public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter, ActivityBusinessDetailBinding> implements BusinessDetailContract.View {
private CoursesVideoData currendVideoData;
private int currentId; private int currentId = 0;
private String currentPrice; private String currentPrice;
private List<CoursesVideoData> videoDataList;
private CoursesVideoAdapter coursesVideoAdapter;
private int licenceAuthorityId;
private int mUserId;
@Override @Override
public void setPresenter() { public void setPresenter() {
...@@ -51,8 +58,9 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter ...@@ -51,8 +58,9 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter
@Override @Override
public void initView() { public void initView() {
int licenceAuthorityId = getBundle().getInt("licenceAuthorityId"); showDialog();
int mUserId = getBundle().getInt("mUserId"); licenceAuthorityId = getBundle().getInt("licenceAuthorityId");
mUserId = getBundle().getInt("mUserId");
mBind.titleBack.setOnClickListener(view -> finish()); mBind.titleBack.setOnClickListener(view -> finish());
...@@ -65,7 +73,7 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter ...@@ -65,7 +73,7 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter
@Override @Override
public void onClick(View view) { public void onClick(View view) {
CheckPayData checkPayData = new CheckPayData(currentId,mUserId); CheckPayData checkPayData = new CheckPayData(currentId, mUserId);
Api.getService(APIService.class).checkPay(checkPayData).compose(Api.applySchedulers()) Api.getService(APIService.class).checkPay(checkPayData).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver(success -> { .subscribe(mPresenter.baseObserver(success -> {
if (success){ if (success){
...@@ -73,6 +81,9 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter ...@@ -73,6 +81,9 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter
mBind.jzVideo.startVideoAfterPreloading(); //如果预加载完会开始播放,如果未加载则开始加载 mBind.jzVideo.startVideoAfterPreloading(); //如果预加载完会开始播放,如果未加载则开始加载
mBind.rlClick.setVisibility(View.GONE); mBind.rlClick.setVisibility(View.GONE);
}else{ }else{
if (currentPrice == null){
currentPrice = "";
}
CustomDialog dialog = new CustomDialog(mActivity, R.style.CustomDialog, "付费"+ currentPrice + "元后观看", CustomDialog dialog = new CustomDialog(mActivity, R.style.CustomDialog, "付费"+ currentPrice + "元后观看",
(dialog1, confirm) -> { (dialog1, confirm) -> {
if (confirm) { if (confirm) {
...@@ -89,6 +100,48 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter ...@@ -89,6 +100,48 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter
} }
}); });
mBind.jzVideo.setPlayCallBack(new MyJzvdStd.PlayCallBack(){
@Override
public void onstart() {
if (currendVideoData.getPlayStatus() != 2 && currendVideoData.getPlayStatus() != 3)
studyCourse(currendVideoData.getId(), 0, 0, 1);
}
@Override
public void onPrepare() {
}
@Override
public void onPause() {
if (currendVideoData.getPlayStatus() != 3)
studyCourse(currendVideoData.getId(), mBind.jzVideo.curProgress, mBind.jzVideo.curPosition, 2);
}
@Override
public void onComplete() {
if (currendVideoData.getPlayStatus() != 3)
studyCourse(currendVideoData.getId(), 100, mBind.jzVideo.getDuration(), 3);
}
});
}
public void studyCourse(int courseId, int progress, long progressTime, int status) {
mUserInfo = UserManager.getInstance().getUser();
StudyCourseData studyData = new StudyCourseData(courseId, mUserId, mUserInfo.getMobile(),
mUserInfo.getAccountName(), progress, progressTime, status);
Api.getService(APIService.class).studyCourse(studyData).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver(success -> {
// ToastUtils.showShortToast("result "+success);
if (3 == status){
getVideo(licenceAuthorityId, mUserId);
}
}));
} }
private void pay() { private void pay() {
...@@ -118,41 +171,92 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter ...@@ -118,41 +171,92 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter
private void getVideo(int licenceAuthorityId, int mUserId) { private void getVideo(int licenceAuthorityId, int mUserId) {
Api.getService(UserService2.class).getVideo(licenceAuthorityId,mUserId,1,500).compose(Api.applySchedulers()) Api.getService(UserService2.class).getVideo(licenceAuthorityId,mUserId,1,500).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver(data -> { .subscribe(mPresenter.baseObserver(data -> {
List<CoursesVideoData> videoDataList = data.getData(); videoDataList = data.getData();
if (videoDataList == null || videoDataList.size() == 0){ if (videoDataList == null || videoDataList.size() == 0){
mBind.llVideo.setVisibility(View.GONE); mBind.llVideo.setVisibility(View.GONE);
}else{ }else{
mBind.llVideo.setVisibility(View.VISIBLE); mBind.llVideo.setVisibility(View.VISIBLE);
mBind.tvTips.setText("共计"+videoDataList.size()+"个,上下滑动观看更多视频"); mBind.tvTips.setText("共计"+ videoDataList.size()+"个,上下滑动观看更多视频");
CoursesVideoData coursesVideoData = videoDataList.get(0); setCurrentData(currentId);
currentId = coursesVideoData.getId();
currentPrice = coursesVideoData.getPrice(); coursesVideoAdapter = new CoursesVideoAdapter(mActivity,videoDataList);
String name = coursesVideoData.getName();
String url = coursesVideoData.getUrl();
Object points = coursesVideoData.getPoints();
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
String jsonString = gson.toJson(points);
mBind.jzVideo.setUp(url, name);
CommonUtils.setVideoThumb(mActivity, mBind.jzVideo, url);
BaseQuickAdapter<CoursesVideoData, BaseViewHolder> mAdapter =
new BaseQuickAdapter<CoursesVideoData, BaseViewHolder>(R.layout.item_business_video, videoDataList) {
@Override
protected void convert(BaseViewHolder helper, CoursesVideoData item) {
helper.setText(R.id.tv_name,item.getName());
}
};
mBind.rlVideo.setLayoutManager(new LinearLayoutManager(mActivity)); mBind.rlVideo.setLayoutManager(new LinearLayoutManager(mActivity));
mBind.rlVideo.setAdapter(mAdapter); mBind.rlVideo.setAdapter(coursesVideoAdapter);
coursesVideoAdapter.setOnItemClickListener(new CoursesVideoAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
setCurrentData(position);
}
});
} }
})); }));
} }
/**
* 设置页面数据
* @param position
*/
private void setCurrentData(int position) {
try {
CoursesVideoData coursesVideoData = videoDataList.get(position);
currendVideoData = coursesVideoData;
currentId = coursesVideoData.getId();
currentPrice = coursesVideoData.getPrice();
String name = coursesVideoData.getName();
String url = coursesVideoData.getUrl();
String jsonString = coursesVideoData.getPoints();
// Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
// String jsonString = gson.toJson(points);
if (jsonString == null){
jsonString = "0";
}
if (jsonString.contains(".")){
jsonString = jsonString.substring(0,jsonString.indexOf("."));
}
mBind.tvLooks.setText(coursesVideoData.getLearners()+"");
mBind.tvLike.setText(jsonString);
mBind.ivLike.setImageResource(coursesVideoData.getPointStatus() == 1 ? R.drawable.icon_like_red : R.drawable.icon_like_gray);
mBind.ivLike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int type = coursesVideoData.getPointStatus() == 1 ? 2 : 1;
Api.getService(APIService.class).pointCourse(coursesVideoData.getId(), mUserId, type).compose(Api.applySchedulers())
.subscribe(mPresenter.baseObserver(success -> {
if (success) {
coursesVideoData.setPoints(type == 1 ? (Integer.parseInt(currendVideoData.getPoints()) + 1)+"" : (Integer.parseInt(currendVideoData.getPoints()) - 1)+"");
coursesVideoData.setPointStatus(type);
mBind.tvLike.setText(coursesVideoData.getPoints());
mBind.ivLike.setImageResource(coursesVideoData.getPointStatus() == 1 ? R.drawable.icon_like_red : R.drawable.icon_like_gray);
}
}));
}
});
mBind.jzVideo.setUp(url, name);
CommonUtils.setVideoThumb(mActivity, mBind.jzVideo, url);
for (int i = 0; i < videoDataList.size(); i++) {
CoursesVideoData coursesVideoData1 = videoDataList.get(i);
if (i == position){
coursesVideoData1.setCurrent(true);
}else{
coursesVideoData1.setCurrent(false);
}
}
coursesVideoAdapter.notifyDataSetChanged();
} catch (Exception e) {
e.printStackTrace();
}
}
/** /**
* 商家信息 * 商家信息
...@@ -210,7 +314,13 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter ...@@ -210,7 +314,13 @@ public class BusinessDetailActivity extends BaseActivity<BusinessDetailPresenter
mBind.btnCommit.setBackgroundColor(ContextCompat.getColor(mActivity,R.color.text_common_green)); mBind.btnCommit.setBackgroundColor(ContextCompat.getColor(mActivity,R.color.text_common_green));
} }
hideDialog();
})); }));
} }
@Override
public void onPause() {
super.onPause();
Jzvd.releaseAllVideos();
}
} }
\ No newline at end of file
...@@ -118,10 +118,51 @@ Y ...@@ -118,10 +118,51 @@ Y
<RelativeLayout <RelativeLayout
android:id="@+id/rl_click" android:id="@+id/rl_click"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent" />
</RelativeLayout> </RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_looks" />
<TextView
android:id="@+id/tv_looks"
style="@style/common_text_style"
android:layout_marginLeft="5dp"
android:text="0" />
<ImageView
android:id="@+id/iv_like"
android:layout_width="18dp"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:src="@drawable/icon_like_gray" />
<TextView
android:id="@+id/tv_like"
style="@style/common_text_style"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:paddingRight="10dp"
android:text="0"
android:layout_marginRight="20dp"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rl_video" android:id="@+id/rl_video"
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -8,12 +8,34 @@ ...@@ -8,12 +8,34 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1px" android:layout_height="1px"
android:background="@color/light_grey"/> android:background="@color/light_grey"/>
<TextView <RelativeLayout
android:id="@+id/tv_name" android:id="@+id/rl_item"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="match_parent">
android:layout_weight="1"
android:paddingLeft="20dp" <ImageView
android:textSize="18dp" android:id="@+id/iv_icon"
android:gravity="center_vertical"/> android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:src="@drawable/ic_business_video"/>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="20dp"
android:textSize="18dp"
android:gravity="center_vertical"
android:layout_toRightOf="@id/iv_icon"
android:text="aaaaaaaaaaaaaaaaaaa"/>
<ImageView
android:id="@+id/iv_video_lock"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="20dp"
android:layout_alignParentRight="true"
android:src="@drawable/ic_business_lock"/>
</RelativeLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment