package cn.seecoder.courselearningdemo.viewmodel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import java.util.ArrayList; import java.util.List; import cn.seecoder.courselearningdemo.model.CourseOrder; import cn.seecoder.courselearningdemo.model.PageInfo; import cn.seecoder.courselearningdemo.model.ResultVO; import cn.seecoder.courselearningdemo.repository.CourseOrderRepository; import cn.seecoder.courselearningdemo.repository.CourseRepository; import cn.seecoder.courselearningdemo.utils.Constant; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import cn.seecoder.courselearningdemo.model.Course; import cn.seecoder.courselearningdemo.network.RetrofitClient; import cn.seecoder.courselearningdemo.utils.LoadState; import cn.seecoder.courselearningdemo.utils.LogUtil; public class HomeViewModel extends ViewModel { private String uid = null; private String queryKey = ""; private Integer currentPage = 1; private MutableLiveData stateData; private MutableLiveData> courseListData; private MutableLiveData courseOrderFlag = new MutableLiveData<>(); private CourseOrderRepository courseOrderRepository= new CourseOrderRepository(); private CourseRepository courseRepository= CourseRepository.getCourseRepository(); public HomeViewModel(){ } public void setUid(String uid) { this.uid = uid; query(); } public String getUid() { return uid; } public void setQueryKey(String queryKey) { this.queryKey = queryKey.trim(); } public LiveData getState(){ return stateData; } public LiveData> getData() { if (courseListData == null) { courseListData = new MutableLiveData<>(); stateData = new MutableLiveData<>(); loadData(); } return courseListData; } public LiveData getCourseOrderFlag(){ return courseOrderFlag; } public void getNextPageData(){ currentPage ++; loadData(); } public void query(){ currentPage = 1; courseListData.setValue(new ArrayList<>()); loadData(); } private void loadData(){ stateData.setValue(LoadState.LOADING); courseRepository.getCourseListData(currentPage,uid,queryKey,courseListData,stateData); currentPage =courseRepository.getCurrentPage(); } public void createCourseOrder(Course course){ // 生成待支付订单 CourseOrder order = new CourseOrder(); order.setUserId(uid); order.setCourseId(course.getId()); order.setCourseName(course.getName()); order.setCost(course.getCost()); // 订单状态设为未支付 order.setStatus(Constant.ORDER_STATUS_UNPAID); // 调用后端生成订单的接口 courseOrderFlag=courseOrderRepository.createCourseOrder(order); if(courseOrderRepository.getSuccessCreatedFlag()==true) sendCourseOrderSuccessNotify(course.getId()); } private void sendCourseOrderSuccessNotify(Integer courseId){ System.out.println("sendCourseOrderSuccessNotify uid = "+uid); Call> sendCourseOrderSuccessNotify = RetrofitClient.notifyService.sendCourseOrderSuccessNotify(uid, courseId); sendCourseOrderSuccessNotify.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if(response.body() == null || response.body().getCode() == null) LogUtil.e("sendCourseOrderSuccessNotify", "response Null Error!"); else if(response.body().getCode().equals(Constant.REQUEST_SUCCESS)) LogUtil.i("sendCourseOrderSuccessNotify", "success"); else LogUtil.i("sendCourseOrderSuccessNotify", "fail"); } @Override public void onFailure(Call> call, Throwable t) { LogUtil.i("sendCourseOrderSuccessNotify", "Call fail"+ t.getMessage() + " caused by: "+t.getCause()); } }); } }