HomeViewModel.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package cn.seecoder.courselearningdemo.viewmodel;
  2. import androidx.lifecycle.LiveData;
  3. import androidx.lifecycle.MutableLiveData;
  4. import androidx.lifecycle.ViewModel;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import cn.seecoder.courselearningdemo.model.CourseOrder;
  8. import cn.seecoder.courselearningdemo.model.PageInfo;
  9. import cn.seecoder.courselearningdemo.model.ResultVO;
  10. import cn.seecoder.courselearningdemo.repository.CourseOrderRepository;
  11. import cn.seecoder.courselearningdemo.repository.CourseRepository;
  12. import cn.seecoder.courselearningdemo.utils.Constant;
  13. import retrofit2.Call;
  14. import retrofit2.Callback;
  15. import retrofit2.Response;
  16. import cn.seecoder.courselearningdemo.model.Course;
  17. import cn.seecoder.courselearningdemo.network.RetrofitClient;
  18. import cn.seecoder.courselearningdemo.utils.LoadState;
  19. import cn.seecoder.courselearningdemo.utils.LogUtil;
  20. public class HomeViewModel extends ViewModel {
  21. private String uid = null;
  22. private String queryKey = "";
  23. private Integer currentPage = 1;
  24. private MutableLiveData<LoadState> stateData;
  25. private MutableLiveData<List<Course>> courseListData;
  26. private MutableLiveData<Boolean> courseOrderFlag = new MutableLiveData<>();
  27. private CourseOrderRepository courseOrderRepository= new CourseOrderRepository();
  28. private CourseRepository courseRepository= CourseRepository.getCourseRepository();
  29. public HomeViewModel(){
  30. }
  31. public void setUid(String uid) {
  32. this.uid = uid;
  33. query();
  34. }
  35. public String getUid() {
  36. return uid;
  37. }
  38. public void setQueryKey(String queryKey) {
  39. this.queryKey = queryKey.trim();
  40. }
  41. public LiveData<LoadState> getState(){
  42. return stateData;
  43. }
  44. public LiveData<List<Course>> getData() {
  45. if (courseListData == null) {
  46. courseListData = new MutableLiveData<>();
  47. stateData = new MutableLiveData<>();
  48. loadData();
  49. }
  50. return courseListData;
  51. }
  52. public LiveData<Boolean> getCourseOrderFlag(){
  53. return courseOrderFlag;
  54. }
  55. public void getNextPageData(){
  56. currentPage ++;
  57. loadData();
  58. }
  59. public void query(){
  60. currentPage = 1;
  61. courseListData.setValue(new ArrayList<>());
  62. loadData();
  63. }
  64. private void loadData(){
  65. stateData.setValue(LoadState.LOADING);
  66. courseRepository.getCourseListData(currentPage,uid,queryKey,courseListData,stateData);
  67. currentPage =courseRepository.getCurrentPage();
  68. }
  69. public void createCourseOrder(Course course){
  70. // 生成待支付订单
  71. CourseOrder order = new CourseOrder();
  72. order.setUserId(uid);
  73. order.setCourseId(course.getId());
  74. order.setCourseName(course.getName());
  75. order.setCost(course.getCost());
  76. // 订单状态设为未支付
  77. order.setStatus(Constant.ORDER_STATUS_UNPAID);
  78. // 调用后端生成订单的接口
  79. courseOrderFlag=courseOrderRepository.createCourseOrder(order);
  80. if(courseOrderRepository.getSuccessCreatedFlag()==true)
  81. sendCourseOrderSuccessNotify(course.getId());
  82. }
  83. private void sendCourseOrderSuccessNotify(Integer courseId){
  84. System.out.println("sendCourseOrderSuccessNotify uid = "+uid);
  85. Call<ResultVO<String>> sendCourseOrderSuccessNotify = RetrofitClient.notifyService.sendCourseOrderSuccessNotify(uid, courseId);
  86. sendCourseOrderSuccessNotify.enqueue(new Callback<ResultVO<String>>() {
  87. @Override
  88. public void onResponse(Call<ResultVO<String>> call, Response<ResultVO<String>> response) {
  89. if(response.body() == null || response.body().getCode() == null)
  90. LogUtil.e("sendCourseOrderSuccessNotify", "response Null Error!");
  91. else if(response.body().getCode().equals(Constant.REQUEST_SUCCESS))
  92. LogUtil.i("sendCourseOrderSuccessNotify", "success");
  93. else
  94. LogUtil.i("sendCourseOrderSuccessNotify", "fail");
  95. }
  96. @Override
  97. public void onFailure(Call<ResultVO<String>> call, Throwable t) {
  98. LogUtil.i("sendCourseOrderSuccessNotify", "Call fail"+ t.getMessage() + " caused by: "+t.getCause());
  99. }
  100. });
  101. }
  102. }