Commit a516c951d2a39f6977fcaa3a78d0167f417e92e9

Authored by shixianjie
1 parent 028132f43d
Exists in master

作业删除

.idea/deploymentTargetDropDown.xml
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 <component name="deploymentTargetDropDown"> 3 <component name="deploymentTargetDropDown">
4 <value> 4 <value>
5 <entry key="app"> 5 <entry key="app">
6 <State /> 6 <State>
7 <runningDeviceTargetSelectedWithDropDown>
8 <Target>
9 <type value="RUNNING_DEVICE_TARGET" />
10 <deviceKey>
11 <Key>
12 <type value="SERIAL_NUMBER" />
13 <value value="192.168.3.176:39671" />
14 </Key>
15 </deviceKey>
16 </Target>
17 </runningDeviceTargetSelectedWithDropDown>
18 <timeTargetWasSelectedWithDropDown value="2024-09-29T02:03:12.057655600Z" />
19 </State>
7 </entry> 20 </entry>
8 </value> 21 </value>
9 </component> 22 </component>
10 </project> 23 </project>
app/src/main/java/com/hjx/parent/StuHomeworkActivity.java
1 package com.hjx.parent; 1 package com.hjx.parent;
2 2
3 import android.annotation.SuppressLint; 3 import android.annotation.SuppressLint;
4 import android.os.Bundle; 4 import android.os.Bundle;
5 import android.widget.LinearLayout; 5 import android.widget.LinearLayout;
6 import android.widget.PopupWindow; 6 import android.widget.PopupWindow;
7 7
8 import androidx.lifecycle.MutableLiveData; 8 import androidx.lifecycle.MutableLiveData;
9 9
10 import com.google.gson.Gson; 10 import com.google.gson.Gson;
11 import com.hjx.parent.adapter.HomeworkListAdapter; 11 import com.hjx.parent.adapter.HomeworkListAdapter;
12 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; 12 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding;
13 import com.hjx.parent.databinding.PopupFilterFeedbackBinding; 13 import com.hjx.parent.databinding.PopupFilterFeedbackBinding;
14 import com.hjx.parent.databinding.PopupFilterGradeBinding; 14 import com.hjx.parent.databinding.PopupFilterGradeBinding;
15 import com.hjx.parent.databinding.PopupFilterSubjectBinding; 15 import com.hjx.parent.databinding.PopupFilterSubjectBinding;
16 import com.hjx.parent.databinding.PopupFilterTermBinding; 16 import com.hjx.parent.databinding.PopupFilterTermBinding;
17 import com.hjx.parent.dialog.MsgConfirmDialog; 17 import com.hjx.parent.dialog.MsgConfirmDialog;
18 import com.hjx.parent.rx.BaseRxActivity; 18 import com.hjx.parent.rx.BaseRxActivity;
19 import com.prws.common.bean.Student; 19 import com.prws.common.bean.Student;
20 import com.prws.common.bean.homework.HomeworkList;
20 import com.prws.common.net.NetWorks; 21 import com.prws.common.net.NetWorks;
21 import com.prws.common.utils.SharedPreferencesUtil; 22 import com.prws.common.utils.SharedPreferencesUtil;
22 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 23 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
23 24
24 import java.util.Collections; 25 import java.util.Collections;
25 26
26 import io.reactivex.Observable; 27 import io.reactivex.Observable;
27 import io.reactivex.android.schedulers.AndroidSchedulers; 28 import io.reactivex.android.schedulers.AndroidSchedulers;
28 import io.reactivex.schedulers.Schedulers; 29 import io.reactivex.schedulers.Schedulers;
29 30
30 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { 31 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> {
31 32
32 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); 33 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter();
33 34
34 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; 35 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter;
35 MsgConfirmDialog deleteDialog; 36 MsgConfirmDialog deleteDialog;
36 State state = new State(); 37 State state = new State();
37 38
38 private void handlerIntent() { 39 private void handlerIntent() {
39 String json = getIntent().getStringExtra("studentJson"); 40 String json = getIntent().getStringExtra("studentJson");
40 if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); 41 if (json == null) json = (String) SharedPreferencesUtil.getData("student", "");
41 try { state.student = new Gson().fromJson(json, Student.class); } 42 try { state.student = new Gson().fromJson(json, Student.class); }
42 catch (Throwable t) { t.printStackTrace(); } 43 catch (Throwable t) { t.printStackTrace(); }
43 } 44 }
44 45
45 @SuppressLint("SetTextI18n") 46 @SuppressLint("SetTextI18n")
46 @Override 47 @Override
47 public void initView(Bundle savedInstanceState) { 48 public void initView(Bundle savedInstanceState) {
48 handlerIntent(); 49 handlerIntent();
49 if (state.student == null) { 50 if (state.student == null) {
50 finish(); 51 finish();
51 return; 52 return;
52 } 53 }
53 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 54 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
54 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 55 binding.tvTitle.setText(state.student.stuName + "的全部作业");
55 56
56 binding.recyclerView.setAdapter(homeworkAdapter); 57 binding.recyclerView.setAdapter(homeworkAdapter);
57 getHomework(); 58 getHomework();
58 59
59 binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); 60 binding.ftSubject.setOnClickListener(v -> showSubjectFilter());
60 binding.ftGrade.setOnClickListener(v -> showGradeFilter()); 61 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
61 binding.ftTerm.setOnClickListener(v -> showTermFilter()); 62 binding.ftTerm.setOnClickListener(v -> showTermFilter());
62 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); 63 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
63 homeworkAdapter.deleteCall = data -> { 64 homeworkAdapter.deleteCall = data -> {
64 if (deleteDialog == null) { 65 if (deleteDialog == null) {
65 deleteDialog = new MsgConfirmDialog.Builder(this) 66 deleteDialog = new MsgConfirmDialog.Builder(this)
66 .setMessage("确认要删除吗?一旦删除不可恢复") 67 .setMessage("确认要删除吗?一旦删除不可恢复")
67 .setPositive("暂不删除") 68 .setPositive("暂不删除")
68 .setNegative("确定删除") 69 .setNegative("确定删除")
69 .build(); 70 .build();
70 } 71 }
71 deleteDialog.show(() -> { 72 deleteDialog.show(() -> {
72 // TODO Delete 73 deleteHomework(data);
73 return true; 74 return true;
74 }, null); 75 }, null);
75 }; 76 };
76 } 77 }
77 78
79 @SuppressLint("CheckResult")
80 protected void deleteHomework(HomeworkList data) {
81 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId())
82 .subscribeOn(Schedulers.io())
83 .observeOn(AndroidSchedulers.mainThread())
84 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
85 .subscribe((response, th) -> {
86 if (th != null) th.printStackTrace();
87 if (response != null && response.getSuccess()) {
88 getHomework();
89 }
90 });
91
92 }
78 93
79 @SuppressLint("CheckResult") 94 @SuppressLint("CheckResult")
80 protected void getHomework() { 95 protected void getHomework() {
81 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) 96 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId)
82 .subscribeOn(Schedulers.io()) 97 .subscribeOn(Schedulers.io())
83 .observeOn(AndroidSchedulers.mainThread()) 98 .observeOn(AndroidSchedulers.mainThread())
84 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 99 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
85 .toObservable() 100 .toObservable()
86 .flatMap(response -> Observable.fromIterable(response.getData())) 101 .flatMap(response -> Observable.fromIterable(response.getData()))
87 // 过滤 102 // 过滤
88 .filter(data -> { // 学科 103 .filter(data -> { // 学科
89 String subject = state.subject.getValue(); 104 String subject = state.subject.getValue();
90 if (subject == null || subject.isEmpty()) return true; 105 if (subject == null || subject.isEmpty()) return true;
91 else return subject.equals(data.getSubject()); 106 else return subject.equals(data.getSubject());
92 }) 107 })
93 .filter(data -> { // 年级 108 .filter(data -> { // 年级
94 String grade = state.grade.getValue(); 109 String grade = state.grade.getValue();
95 if (grade == null || grade.isEmpty()) return true; 110 if (grade == null || grade.isEmpty()) return true;
96 else return grade.equals(data.getGrade()); 111 else return grade.equals(data.getGrade());
97 }) 112 })
98 .filter(data -> { // 学期 113 .filter(data -> { // 学期
99 String term = state.term.getValue(); 114 String term = state.term.getValue();
100 if (term == null || term.isEmpty()) return true; 115 if (term == null || term.isEmpty()) return true;
101 else return term.equals(data.getTerm()); 116 else return term.equals(data.getTerm());
102 }) 117 })
103 .filter(data -> { // 反馈 118 .filter(data -> { // 反馈
104 Integer feedback = state.feedback.getValue(); 119 Integer feedback = state.feedback.getValue();
105 if (feedback == null || feedback == 0) return true; 120 if (feedback == null || feedback == 0) return true;
106 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); 121 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null);
107 }) 122 })
108 // 过滤完成, 收集 123 // 过滤完成, 收集
109 .toList() 124 .toList()
110 .subscribe((data, th) -> { 125 .subscribe((data, th) -> {
111 if (th != null) th.printStackTrace(); 126 if (th != null) th.printStackTrace();
112 if (data != null) { 127 if (data != null) {
113 Collections.sort(data); 128 Collections.sort(data);
114 } 129 }
115 homeworkAdapter.setNewData(data); 130 homeworkAdapter.setNewData(data);
116 }); 131 });
117 } 132 }
118 133
119 private void showSubjectFilter() { 134 private void showSubjectFilter() {
120 if (subjectFilter == null) { 135 if (subjectFilter == null) {
121 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); 136 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater());
122 db.setLifecycleOwner(this); 137 db.setLifecycleOwner(this);
123 db.setState(state); 138 db.setState(state);
124 db.bg.setOnClickListener(v -> subjectFilter.dismiss()); 139 db.bg.setOnClickListener(v -> subjectFilter.dismiss());
125 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 140 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
126 subjectFilter.setOutsideTouchable(true); 141 subjectFilter.setOutsideTouchable(true);
127 subjectFilter.setOnDismissListener(this::getHomework); 142 subjectFilter.setOnDismissListener(this::getHomework);
128 } 143 }
129 subjectFilter.showAsDropDown(binding.anchorView); 144 subjectFilter.showAsDropDown(binding.anchorView);
130 } 145 }
131 146
132 private void showGradeFilter() { 147 private void showGradeFilter() {
133 if (gradeFilter == null) { 148 if (gradeFilter == null) {
134 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); 149 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater());
135 db.setLifecycleOwner(this); 150 db.setLifecycleOwner(this);
136 db.setState(state); 151 db.setState(state);
137 db.bg.setOnClickListener(v -> gradeFilter.dismiss()); 152 db.bg.setOnClickListener(v -> gradeFilter.dismiss());
138 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 153 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
139 gradeFilter.setOutsideTouchable(true); 154 gradeFilter.setOutsideTouchable(true);
140 gradeFilter.setOnDismissListener(this::getHomework); 155 gradeFilter.setOnDismissListener(this::getHomework);
141 } 156 }
142 gradeFilter.showAsDropDown(binding.anchorView); 157 gradeFilter.showAsDropDown(binding.anchorView);
143 } 158 }
144 159
145 private void showTermFilter() { 160 private void showTermFilter() {
146 if (termFilter == null) { 161 if (termFilter == null) {
147 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); 162 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater());
148 db.setLifecycleOwner(this); 163 db.setLifecycleOwner(this);
149 db.setState(state); 164 db.setState(state);
150 db.bg.setOnClickListener(v -> termFilter.dismiss()); 165 db.bg.setOnClickListener(v -> termFilter.dismiss());
151 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 166 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
152 termFilter.setOutsideTouchable(true); 167 termFilter.setOutsideTouchable(true);
153 termFilter.setOnDismissListener(this::getHomework); 168 termFilter.setOnDismissListener(this::getHomework);
154 } 169 }
155 termFilter.showAsDropDown(binding.anchorView); 170 termFilter.showAsDropDown(binding.anchorView);
156 } 171 }
157 172
158 private void showFeedbackFilter() { 173 private void showFeedbackFilter() {
159 if (feedbackFilter == null) { 174 if (feedbackFilter == null) {
160 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); 175 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater());
161 db.setLifecycleOwner(this); 176 db.setLifecycleOwner(this);
162 db.setState(state); 177 db.setState(state);
163 db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); 178 db.bg.setOnClickListener(v -> feedbackFilter.dismiss());
164 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 179 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
165 feedbackFilter.setOutsideTouchable(true); 180 feedbackFilter.setOutsideTouchable(true);
166 feedbackFilter.setOnDismissListener(this::getHomework); 181 feedbackFilter.setOnDismissListener(this::getHomework);
167 } 182 }
168 feedbackFilter.showAsDropDown(binding.anchorView); 183 feedbackFilter.showAsDropDown(binding.anchorView);
169 } 184 }
170 185
171 @Override 186 @Override
172 protected ActivityStudentHomeworkBinding getViewBinding() { 187 protected ActivityStudentHomeworkBinding getViewBinding() {
173 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); 188 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater());
174 } 189 }
175 190
176 public static class State { 191 public static class State {
177 public Student student; 192 public Student student;
178 193
179 public MutableLiveData<String> subject = new MutableLiveData<>(""); 194 public MutableLiveData<String> subject = new MutableLiveData<>("");
180 public void setSubject(String value) { 195 public void setSubject(String value) {
181 subject.setValue(value); 196 subject.setValue(value);
182 } 197 }
183 198
184 public MutableLiveData<String> grade = new MutableLiveData<>(""); 199 public MutableLiveData<String> grade = new MutableLiveData<>("");
185 public void setGrade(String value) { 200 public void setGrade(String value) {
186 grade.setValue(value); 201 grade.setValue(value);
187 } 202 }
188 203
189 public MutableLiveData<String> term = new MutableLiveData<>(""); 204 public MutableLiveData<String> term = new MutableLiveData<>("");
190 public void setTerm(String value) { 205 public void setTerm(String value) {
191 term.setValue(value); 206 term.setValue(value);
192 } 207 }
193 208
194 //0:全部, 1: 已反馈, 2:未反馈 209 //0:全部, 1: 已反馈, 2:未反馈
195 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); 210 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0);
196 public void setFeedback(int value) { 211 public void setFeedback(int value) {
197 feedback.setValue(value); 212 feedback.setValue(value);
198 } 213 }
199 } 214 }
200 } 215 }
201 216
libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java
1 package com.prws.common.bean.homework; 1 package com.prws.common.bean.homework;
2 2
3 import com.google.gson.annotations.SerializedName; 3 import com.google.gson.annotations.SerializedName;
4 4
5 import java.text.SimpleDateFormat; 5 import java.text.SimpleDateFormat;
6 import java.util.Date; 6 import java.util.Date;
7 import java.util.Locale; 7 import java.util.Locale;
8 8
9 public class HomeworkList implements Comparable<HomeworkList> { 9 public class HomeworkList implements Comparable<HomeworkList> {
10 10
11 @SerializedName(value = "homeworkId", alternate = "id") 11 @SerializedName(value = "homeworkId", alternate = "id")
12 private Integer homeworkId; 12 private String homeworkId;
13 @SerializedName(value = "name", alternate = "homeworkName") 13 @SerializedName(value = "name", alternate = "homeworkName")
14 private String name; 14 private String name;
15 @SerializedName("grade") 15 @SerializedName("grade")
16 private String grade; 16 private String grade;
17 @SerializedName("term") 17 @SerializedName("term")
18 private String term; 18 private String term;
19 @SerializedName("subject") 19 @SerializedName("subject")
20 private String subject; 20 private String subject;
21 private int completeFlag; 21 private int completeFlag;
22 22
23 private Integer total; 23 private Integer total;
24 private Integer right; 24 private Integer right;
25 25
26 public Date uploadTime; 26 public Date uploadTime;
27 27
28 public Integer getTotal() { 28 public Integer getTotal() {
29 return total; 29 return total;
30 } 30 }
31 31
32 public Integer getRight() { 32 public Integer getRight() {
33 return right; 33 return right;
34 } 34 }
35 35
36 public void setRight(Integer right) { 36 public void setRight(Integer right) {
37 this.right = right; 37 this.right = right;
38 } 38 }
39 39
40 public void setTotal(Integer total) { 40 public void setTotal(Integer total) {
41 this.total = total; 41 this.total = total;
42 } 42 }
43 43
44 public void setId(Integer id) { 44 public void setId(String id) {
45 this.homeworkId = id; 45 this.homeworkId = id;
46 } 46 }
47 47
48 public void setName(String name) { 48 public void setName(String name) {
49 this.name = name; 49 this.name = name;
50 } 50 }
51 51
52 public void setGrade(String grade) { 52 public void setGrade(String grade) {
53 this.grade = grade; 53 this.grade = grade;
54 } 54 }
55 55
56 public void setTerm(String term) { 56 public void setTerm(String term) {
57 this.term = term; 57 this.term = term;
58 } 58 }
59 59
60 public void setSubject(String subject) { 60 public void setSubject(String subject) {
61 this.subject = subject; 61 this.subject = subject;
62 } 62 }
63 63
64 public void setCompleteFlag(int completeFlag) { 64 public void setCompleteFlag(int completeFlag) {
65 this.completeFlag = completeFlag; 65 this.completeFlag = completeFlag;
66 } 66 }
67 67
68 public Integer getId() { 68 public String getId() {
69 return homeworkId; 69 return homeworkId;
70 } 70 }
71 71
72 public String getName() { 72 public String getName() {
73 return name; 73 return name;
74 } 74 }
75 75
76 public String getGrade() { 76 public String getGrade() {
77 return grade; 77 return grade;
78 } 78 }
79 79
80 public String getTerm() { 80 public String getTerm() {
81 return term; 81 return term;
82 } 82 }
83 83
84 public String getSubject() { 84 public String getSubject() {
85 return subject; 85 return subject;
86 } 86 }
87 87
88 public int getCompleteFlag() { 88 public int getCompleteFlag() {
89 return completeFlag; 89 return completeFlag;
90 } 90 }
91 91
92 @Override 92 @Override
93 public int compareTo(HomeworkList other) { 93 public int compareTo(HomeworkList other) {
94 long time1 = this.uploadTime == null ? 0 : this.uploadTime.getTime(); 94 long time1 = this.uploadTime == null ? 0 : this.uploadTime.getTime();
95 long time2 = other.uploadTime == null ? 0 : other.uploadTime.getTime(); 95 long time2 = other.uploadTime == null ? 0 : other.uploadTime.getTime();
96 return (int) (time2 - time1); 96 return (int) (time2 - time1);
97 } 97 }
98 98
99 private String time; 99 private String time;
100 private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); 100 private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
101 public String getFormatTime() { 101 public String getFormatTime() {
102 if (uploadTime == null) return ""; 102 if (uploadTime == null) return "";
103 if (time != null) return time; 103 if (time != null) return time;
104 time = format.format(uploadTime); 104 time = format.format(uploadTime);
105 return time; 105 return time;
106 } 106 }
107 } 107 }
108 108
libs/common/src/main/java/com/prws/common/net/NetWorks.java
1 package com.prws.common.net; 1 package com.prws.common.net;
2 2
3 3
4 import com.google.gson.Gson; 4 import com.google.gson.Gson;
5 import com.google.gson.JsonObject; 5 import com.google.gson.JsonObject;
6 import com.prws.common.BuildConfig; 6 import com.prws.common.BuildConfig;
7 import com.prws.common.bean.CutPicBean; 7 import com.prws.common.bean.CutPicBean;
8 import com.prws.common.bean.GradeAndSubject; 8 import com.prws.common.bean.GradeAndSubject;
9 import com.prws.common.bean.PageInfo; 9 import com.prws.common.bean.PageInfo;
10 import com.prws.common.bean.ResponseResult; 10 import com.prws.common.bean.ResponseResult;
11 import com.prws.common.bean.ScheduleBean; 11 import com.prws.common.bean.ScheduleBean;
12 import com.prws.common.bean.Student; 12 import com.prws.common.bean.Student;
13 import com.prws.common.bean.Teacher; 13 import com.prws.common.bean.Teacher;
14 import com.prws.common.bean.TopicBean; 14 import com.prws.common.bean.TopicBean;
15 import com.prws.common.bean.UpdateBean; 15 import com.prws.common.bean.UpdateBean;
16 import com.prws.common.bean.baidu.BaiduInput; 16 import com.prws.common.bean.baidu.BaiduInput;
17 import com.prws.common.bean.homework.HomeworkList; 17 import com.prws.common.bean.homework.HomeworkList;
18 import com.prws.common.utils.BitmapUtils; 18 import com.prws.common.utils.BitmapUtils;
19 import com.prws.common.utils.SharedPreferencesUtil; 19 import com.prws.common.utils.SharedPreferencesUtil;
20 20
21 import java.io.File; 21 import java.io.File;
22 import java.util.HashMap; 22 import java.util.HashMap;
23 import java.util.List; 23 import java.util.List;
24 import java.util.Map; 24 import java.util.Map;
25 25
26 import io.reactivex.Observable; 26 import io.reactivex.Observable;
27 import io.reactivex.Observer; 27 import io.reactivex.Observer;
28 import io.reactivex.Single; 28 import io.reactivex.Single;
29 import io.reactivex.android.schedulers.AndroidSchedulers; 29 import io.reactivex.android.schedulers.AndroidSchedulers;
30 import io.reactivex.schedulers.Schedulers; 30 import io.reactivex.schedulers.Schedulers;
31 import okhttp3.MediaType; 31 import okhttp3.MediaType;
32 import okhttp3.MultipartBody; 32 import okhttp3.MultipartBody;
33 import okhttp3.RequestBody; 33 import okhttp3.RequestBody;
34 import okhttp3.ResponseBody; 34 import okhttp3.ResponseBody;
35 import retrofit2.Call; 35 import retrofit2.Call;
36 import retrofit2.Callback; 36 import retrofit2.Callback;
37 import retrofit2.http.Body; 37 import retrofit2.http.Body;
38 import retrofit2.http.GET; 38 import retrofit2.http.GET;
39 import retrofit2.http.Header; 39 import retrofit2.http.Header;
40 import retrofit2.http.Headers; 40 import retrofit2.http.Headers;
41 import retrofit2.http.Multipart; 41 import retrofit2.http.Multipart;
42 import retrofit2.http.POST; 42 import retrofit2.http.POST;
43 import retrofit2.http.PUT; 43 import retrofit2.http.PUT;
44 import retrofit2.http.Part; 44 import retrofit2.http.Part;
45 import retrofit2.http.PartMap; 45 import retrofit2.http.PartMap;
46 import retrofit2.http.Query; 46 import retrofit2.http.Query;
47 import retrofit2.http.Url; 47 import retrofit2.http.Url;
48 48
49 /** 49 /**
50 * 类名称:NetWorks 50 * 类名称:NetWorks
51 * 创建人: 51 * 创建人:
52 * <p> 52 * <p>
53 * 类描述:网络请求的操作类 53 * 类描述:网络请求的操作类
54 */ 54 */
55 public class NetWorks extends RetrofitUtils { 55 public class NetWorks extends RetrofitUtils {
56 //服务器路径 56 //服务器路径
57 public static final NetService service_url = getMachineRetrofit(BuildConfig.SERVER_URL).create(NetService.class); 57 public static final NetService service_url = getMachineRetrofit(BuildConfig.SERVER_URL).create(NetService.class);
58 58
59 //设缓存有效期为1天 59 //设缓存有效期为1天
60 protected static final long CACHE_STALE_SEC = 60 * 60 * 24 * 1; 60 protected static final long CACHE_STALE_SEC = 60 * 60 * 24 * 1;
61 //查询缓存的Cache-Control设置,使用缓存 61 //查询缓存的Cache-Control设置,使用缓存
62 protected static final String CACHE_CONTROL_CACHE = "only-if-cached, max-stale=" + CACHE_STALE_SEC; 62 protected static final String CACHE_CONTROL_CACHE = "only-if-cached, max-stale=" + CACHE_STALE_SEC;
63 //查询网络的Cache-Control设置。不使用缓存 63 //查询网络的Cache-Control设置。不使用缓存
64 protected static final String CACHE_CONTROL_NETWORK = "max-age=0"; 64 protected static final String CACHE_CONTROL_NETWORK = "max-age=0";
65 65
66 66
67 public interface NetService { 67 public interface NetService {
68 68
69 69
70 @GET("/api/v1/user/logout") 70 @GET("/api/v1/user/logout")
71 Observable<ResponseBody> logout(); 71 Observable<ResponseBody> logout();
72 72
73 @Multipart 73 @Multipart
74 @POST("/api/v1/user/upLoadAvatar") 74 @POST("/api/v1/user/upLoadAvatar")
75 Observable<ResponseBody> upLoadAvatar(@Header("Authorization") String token, @Part List<MultipartBody.Part> partLis); 75 Observable<ResponseBody> upLoadAvatar(@Header("Authorization") String token, @Part List<MultipartBody.Part> partLis);
76 76
77 77
78 @Headers("Content-Type: application/json") 78 @Headers("Content-Type: application/json")
79 @POST("/api/v1/user/editUser") 79 @POST("/api/v1/user/editUser")
80 Observable<ResponseBody> editUser(@Header("Authorization") String token, @Body RequestBody body); 80 Observable<ResponseBody> editUser(@Header("Authorization") String token, @Body RequestBody body);
81 81
82 @Headers("Content-Type: application/json") 82 @Headers("Content-Type: application/json")
83 @POST("/api/v1/user/changePassword") 83 @POST("/api/v1/user/changePassword")
84 Observable<ResponseBody> changePassword(@Header("Authorization") String token, @Body RequestBody body); 84 Observable<ResponseBody> changePassword(@Header("Authorization") String token, @Body RequestBody body);
85 85
86 86
87 @GET("/api/v1/user/searchById") 87 @GET("/api/v1/user/searchById")
88 Observable<ResponseBody> searchById(@Header("Authorization") String token, @Query("userId") String userId); 88 Observable<ResponseBody> searchById(@Header("Authorization") String token, @Query("userId") String userId);
89 89
90 90
91 @Headers("Content-Type: application/json") 91 @Headers("Content-Type: application/json")
92 @POST("/api/v1/auth/login") 92 @POST("/api/v1/auth/login")
93 Observable<ResponseBody> login(@Body RequestBody body); 93 Observable<ResponseBody> login(@Body RequestBody body);
94 94
95 @GET("/api/v1/resource/listGradeAndSubject") 95 @GET("/api/v1/resource/listGradeAndSubject")
96 Observable<ResponseResult<List<GradeAndSubject>>> listGradeAndSubject(@Header("Authorization") String token); 96 Observable<ResponseResult<List<GradeAndSubject>>> listGradeAndSubject(@Header("Authorization") String token);
97 97
98 98
99 @GET("/api/v1/manager/generalQrCode") 99 @GET("/api/v1/manager/generalQrCode")
100 Observable<ResponseBody> generalQrCode(); 100 Observable<ResponseBody> generalQrCode();
101 101
102 @GET("/api/v1/parent/scanAndLogin?") 102 @GET("/api/v1/parent/scanAndLogin?")
103 Observable<ResponseBody> scanAndLogin(@Header("Authorization") String token, @Query("code") String code, @Query("stuId") String stuId); 103 Observable<ResponseBody> scanAndLogin(@Header("Authorization") String token, @Query("code") String code, @Query("stuId") String stuId);
104 104
105 @GET("/api/v1/parent/getChildrenList") 105 @GET("/api/v1/parent/getChildrenList")
106 Observable<ResponseBody> getChildrenList(@Header("Authorization") String token); 106 Observable<ResponseBody> getChildrenList(@Header("Authorization") String token);
107 107
108 108
109 @Headers("Content-Type: application/json") 109 @Headers("Content-Type: application/json")
110 @POST("/api/v1/parent/registerParent") 110 @POST("/api/v1/parent/registerParent")
111 Observable<ResponseBody> registerParent(@Body RequestBody body); 111 Observable<ResponseBody> registerParent(@Body RequestBody body);
112 112
113 113
114 @GET("/api/v1/parent/listChildren") 114 @GET("/api/v1/parent/listChildren")
115 Observable<ResponseBody> listChildren(@Header("Authorization") String token); 115 Observable<ResponseBody> listChildren(@Header("Authorization") String token);
116 116
117 117
118 @Headers("Content-Type: application/json") 118 @Headers("Content-Type: application/json")
119 @POST("/api/v1/parent/registerStudent") 119 @POST("/api/v1/parent/registerStudent")
120 Observable<ResponseBody> registerStudent(@Header("Authorization") String token, @Body RequestBody body); 120 Observable<ResponseBody> registerStudent(@Header("Authorization") String token, @Body RequestBody body);
121 121
122 @Headers("Content-Type: application/json") 122 @Headers("Content-Type: application/json")
123 @POST("/api/v1/parent/bindTeacher") 123 @POST("/api/v1/parent/bindTeacher")
124 Observable<ResponseBody> bindTeacher(@Header("Authorization") String token, @Body RequestBody body); 124 Observable<ResponseBody> bindTeacher(@Header("Authorization") String token, @Body RequestBody body);
125 125
126 @Multipart 126 @Multipart
127 @POST("/api/v1/user/upLoadAvatar") 127 @POST("/api/v1/user/upLoadAvatar")
128 Observable<ResponseResult<Map<String, String>>> uploadAvatar(@Header("Authorization") String token, @Part() MultipartBody.Part file); 128 Observable<ResponseResult<Map<String, String>>> uploadAvatar(@Header("Authorization") String token, @Part() MultipartBody.Part file);
129 129
130 130
131 @Multipart 131 @Multipart
132 @POST("/api/v1/student/editStudentAvatar") 132 @POST("/api/v1/student/editStudentAvatar")
133 Observable<ResponseResult<Map<String, String>>> uploadAvatar(@Header("Authorization") String token, @Part() MultipartBody.Part file, @PartMap Map<String, Object> map); 133 Observable<ResponseResult<Map<String, String>>> uploadAvatar(@Header("Authorization") String token, @Part() MultipartBody.Part file, @PartMap Map<String, Object> map);
134 134
135 @Headers("Content-Type: application/json") 135 @Headers("Content-Type: application/json")
136 @POST("/api/v1/parent/editChild") 136 @POST("/api/v1/parent/editChild")
137 Observable<ResponseResult> editStudent(@Header("Authorization") String token, @Body RequestBody body); 137 Observable<ResponseResult> editStudent(@Header("Authorization") String token, @Body RequestBody body);
138 138
139 @GET("/api/v1/student/getStudyPlanForThisWeek") 139 @GET("/api/v1/student/getStudyPlanForThisWeek")
140 Observable<ResponseResult<ScheduleBean>> getWeekPlan(@Header("Authorization") String token, @Query("stuId") String stuId); 140 Observable<ResponseResult<ScheduleBean>> getWeekPlan(@Header("Authorization") String token, @Query("stuId") String stuId);
141 141
142 @GET("api/v1/parent/searchTeacher") 142 @GET("api/v1/parent/searchTeacher")
143 Observable<ResponseResult<Teacher>> searchTeacher(@Header("Authorization") String token, @Query("phone") String phone); 143 Observable<ResponseResult<Teacher>> searchTeacher(@Header("Authorization") String token, @Query("phone") String phone);
144 144
145 @POST("api/v1/question/listErrorBook") 145 @POST("api/v1/question/listErrorBook")
146 Observable<ResponseResult<PageInfo<TopicBean>>> getError(@Header("Authorization") String token, @Body Map<String, Object> body); 146 Observable<ResponseResult<PageInfo<TopicBean>>> getError(@Header("Authorization") String token, @Body Map<String, Object> body);
147 147
148 @POST 148 @POST
149 Observable<JsonObject> removeWriting(@Url String url, @Body RequestBody body); 149 Observable<JsonObject> removeWriting(@Url String url, @Body RequestBody body);
150 150
151 @POST 151 @POST
152 Observable<CutPicBean> cut(@Url String url, @Body RequestBody body); 152 Observable<CutPicBean> cut(@Url String url, @Body RequestBody body);
153 153
154 @POST 154 @POST
155 Observable<JsonObject> getBaiduToken(@Url String url); 155 Observable<JsonObject> getBaiduToken(@Url String url);
156 156
157 @Multipart 157 @Multipart
158 @POST("api/v1/pad/addErrorBook") 158 @POST("api/v1/pad/addErrorBook")
159 Observable<ResponseResult> addError(@Part() MultipartBody.Part file, @PartMap Map<String, Object> map); 159 Observable<ResponseResult> addError(@Part() MultipartBody.Part file, @PartMap Map<String, Object> map);
160 160
161 @POST("api/v1/pad/deleteStuErrorBook") 161 @POST("api/v1/pad/deleteStuErrorBook")
162 Observable<ResponseResult> deleteError(@Header("Authorization") String token, @Body List<String> map); 162 Observable<ResponseResult> deleteError(@Header("Authorization") String token, @Body List<String> map);
163 163
164 @PUT("api/v1/pad/updateStuErrorBookInfo") 164 @PUT("api/v1/pad/updateStuErrorBookInfo")
165 Observable<ResponseResult> updateError(@Header("Authorization") String token, @Body List<HashMap<String, Object>> map); 165 Observable<ResponseResult> updateError(@Header("Authorization") String token, @Body List<HashMap<String, Object>> map);
166 166
167 @POST("api/v1/question/editErrorBook") 167 @POST("api/v1/question/editErrorBook")
168 Observable<ResponseResult> editError(@Header("Authorization") String Authorization, @Body Map<String, Object> map); 168 Observable<ResponseResult> editError(@Header("Authorization") String Authorization, @Body Map<String, Object> map);
169 169
170 @GET("api/v1/resource/checkUpdate") 170 @GET("api/v1/resource/checkUpdate")
171 Call<ResponseResult<UpdateBean>> checkUpdate(@Query("version") int version, @Query("packageName") String packageName, @Query("type") int type); 171 Call<ResponseResult<UpdateBean>> checkUpdate(@Query("version") int version, @Query("packageName") String packageName, @Query("type") int type);
172 172
173 @GET("api/v1/teacher/getStudentList") 173 @GET("api/v1/teacher/getStudentList")
174 Observable<ResponseBody> getStudentList(@Header("Authorization") String token, @Query("userId") String id); 174 Observable<ResponseBody> getStudentList(@Header("Authorization") String token, @Query("userId") String id);
175 175
176 @GET("api/v1/teacher/getStudentList") 176 @GET("api/v1/teacher/getStudentList")
177 Single<ResponseResult<List<Student>>> getStudentList2(@Header("Authorization") String token, @Query("userId") String id); 177 Single<ResponseResult<List<Student>>> getStudentList2(@Header("Authorization") String token, @Query("userId") String id);
178 178
179 @GET("api/v1/answer/listRecordForTeacher") 179 @GET("api/v1/answer/listRecordForTeacher")
180 Observable<ResponseBody> getRecordList(@Header("Authorization") String token, @Query("userId") String id); 180 Observable<ResponseBody> getRecordList(@Header("Authorization") String token, @Query("userId") String id);
181 181
182 @GET("api/v1/homework/listHomeworkByStuId") 182 @GET("api/v1/homework/listHomeworkByStuId")
183 Single<ResponseResult<List<HomeworkList>>> getStudentHomework(@Header("Authorization") String token, @Query("stuId") String stuId); 183 Single<ResponseResult<List<HomeworkList>>> getStudentHomework(@Header("Authorization") String token, @Query("stuId") String stuId);
184 184
185 @POST 185 @POST
186 Single<BaiduInput> inputImage(@Url String url, @Body RequestBody body); 186 Single<BaiduInput> inputImage(@Url String url, @Body RequestBody body);
187 187
188 @Multipart 188 @Multipart
189 @POST("api/v1/homework/uploadHomework") 189 @POST("api/v1/homework/uploadHomework")
190 Single<ResponseResult> uploadImage(@Header("Authorization") String token, @Part() MultipartBody.Part file, @Query("brief") String id); 190 Single<ResponseResult> uploadImage(@Header("Authorization") String token, @Part() MultipartBody.Part file, @Query("brief") String id);
191 191
192 @POST("api/v1/homework/uploadHomeworkAction") 192 @POST("api/v1/homework/uploadHomeworkAction")
193 Single<ResponseResult> uploadHomework(@Header("Authorization") String token, @Body Object map); 193 Single<ResponseResult> uploadHomework(@Header("Authorization") String token, @Body Object map);
194 194
195 @GET("api/v1/homework/removeHomework")
196 Single<ResponseResult<Boolean>> deleteHomework(
197 @Header("Authorization") String token,
198 @Query("homeworkId") String homeworkId
199 );
200
195 } 201 }
196 202
197 public static String getUserId() { 203 public static String getUserId() {
198 return (String) SharedPreferencesUtil.getData("userId", ""); 204 return (String) SharedPreferencesUtil.getData("userId", "");
199 } 205 }
200 206
201 public static String getHeader() { 207 public static String getHeader() {
202 return (String) SharedPreferencesUtil.getData("token", ""); 208 return (String) SharedPreferencesUtil.getData("token", "");
203 } 209 }
204 210
205 public static String getBaiduToken() { 211 public static String getBaiduToken() {
206 return (String) SharedPreferencesUtil.getData("baiduToken", ""); 212 return (String) SharedPreferencesUtil.getData("baiduToken", "");
207 } 213 }
208 214
209 public static Single<BaiduInput> inputImage(String filePath, String id) { 215 public static Single<BaiduInput> inputImage(String filePath, String id) {
210 MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); 216 MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
211 String base64 = BitmapUtils.fileToBase64(filePath); 217 String base64 = BitmapUtils.fileToBase64(filePath);
212 File file = new File(filePath); 218 File file = new File(filePath);
213 RequestBody body = RequestBody.create(mediaType, "image=" + base64 + "&brief={\"name\":\"" + file.getName() + "\", \"id\":\"" + id + "\"}"); 219 RequestBody body = RequestBody.create(mediaType, "image=" + base64 + "&brief={\"name\":\"" + file.getName() + "\", \"id\":\"" + id + "\"}");
214 return getBaiduTokenOcr().map(jsonObject -> jsonObject.get("access_token").getAsString()) 220 return getBaiduTokenOcr().map(jsonObject -> jsonObject.get("access_token").getAsString())
215 .flatMap(token -> { 221 .flatMap(token -> {
216 return service_url.inputImage("https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/add?access_token=" + token, body); 222 return service_url.inputImage("https://aip.baidubce.com/rest/2.0/realtime_search/same_hq/add?access_token=" + token, body);
217 }); 223 });
218 } 224 }
219 225
220 public static Single<ResponseResult> uploadImage(String path, String id) { 226 public static Single<ResponseResult> uploadImage(String path, String id) {
221 File file = new File(path); 227 File file = new File(path);
222 RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpg"), file); 228 RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpg"), file);
223 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody); 229 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
224 return service_url.uploadImage(getHeader(), part, id); 230 return service_url.uploadImage(getHeader(), part, id);
225 } 231 }
226 232
227 233
228 public static void checkUpdate(int code, String packageName, Callback<ResponseResult<UpdateBean>> callback) { 234 public static void checkUpdate(int code, String packageName, Callback<ResponseResult<UpdateBean>> callback) {
229 service_url.checkUpdate(code, packageName, 0).enqueue(callback); 235 service_url.checkUpdate(code, packageName, 0).enqueue(callback);
230 } 236 }
231 237
232 public static void addError(String path, Map<String, String> param, Observer<ResponseResult> observer) { 238 public static void addError(String path, Map<String, String> param, Observer<ResponseResult> observer) {
233 File file = new File(path); 239 File file = new File(path);
234 RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpg"), file); 240 RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpg"), file);
235 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody); 241 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
236 Map<String, Object> map = new HashMap<>(); 242 Map<String, Object> map = new HashMap<>();
237 map.put("condition", param); 243 map.put("condition", param);
238 setSubscribe(service_url.addError(part, map), observer); 244 setSubscribe(service_url.addError(part, map), observer);
239 } 245 }
240 246
241 247
242 public static void cut(String base64, Observer<CutPicBean> observer) { 248 public static void cut(String base64, Observer<CutPicBean> observer) {
243 MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); 249 MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
244 RequestBody body = RequestBody.create(mediaType, "image=" + base64 + "&detect_direction=true"); 250 RequestBody body = RequestBody.create(mediaType, "image=" + base64 + "&detect_direction=true");
245 setSubscribe(service_url.cut("https://aip.baidubce.com/rest/2.0/ocr/v1/paper_cut_edu?access_token=" + getBaiduToken(), body), observer); 251 setSubscribe(service_url.cut("https://aip.baidubce.com/rest/2.0/ocr/v1/paper_cut_edu?access_token=" + getBaiduToken(), body), observer);
246 } 252 }
247 253
248 public static void editError(Map<String, Object> map, Observer<ResponseResult> observer) { 254 public static void editError(Map<String, Object> map, Observer<ResponseResult> observer) {
249 setSubscribe(service_url.editError(getHeader(), map), observer); 255 setSubscribe(service_url.editError(getHeader(), map), observer);
250 } 256 }
251 257
252 public static void editError(List<HashMap<String, Object>> map, Observer<ResponseResult> observer) { 258 public static void editError(List<HashMap<String, Object>> map, Observer<ResponseResult> observer) {
253 setSubscribe(service_url.updateError(getHeader(), map), observer); 259 setSubscribe(service_url.updateError(getHeader(), map), observer);
254 } 260 }
255 261
256 public static void deleteError(List<String> map, Observer<ResponseResult> observer) { 262 public static void deleteError(List<String> map, Observer<ResponseResult> observer) {
257 setSubscribe(service_url.deleteError(getHeader(), map), observer); 263 setSubscribe(service_url.deleteError(getHeader(), map), observer);
258 } 264 }
259 265
260 public static void getBaiduToken(Observer<JsonObject> observer) { 266 public static void getBaiduToken(Observer<JsonObject> observer) {
261 setSubscribe(service_url.getBaiduToken("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + BuildConfig.APIKey + "&client_secret=" + BuildConfig.SecretKey), observer); 267 setSubscribe(service_url.getBaiduToken("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + BuildConfig.APIKey + "&client_secret=" + BuildConfig.SecretKey), observer);
262 } 268 }
263 269
264 public static Single<JsonObject> getBaiduTokenOcr() { 270 public static Single<JsonObject> getBaiduTokenOcr() {
265 return service_url.getBaiduToken("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + BuildConfig.APIKey1 + "&client_secret=" + BuildConfig.SecretKey1).firstOrError(); 271 return service_url.getBaiduToken("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + BuildConfig.APIKey1 + "&client_secret=" + BuildConfig.SecretKey1).firstOrError();
266 } 272 }
267 273
268 public static void removeWriting(String base64, Observer<JsonObject> observer) { 274 public static void removeWriting(String base64, Observer<JsonObject> observer) {
269 MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); 275 MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
270 RequestBody body = RequestBody.create(mediaType, "image=" + base64); 276 RequestBody body = RequestBody.create(mediaType, "image=" + base64);
271 setSubscribe(service_url.removeWriting(("https://aip.baidubce.com/rest/2.0/ocr/v1/remove_handwriting?access_token=" + getBaiduToken()), body), observer); 277 setSubscribe(service_url.removeWriting(("https://aip.baidubce.com/rest/2.0/ocr/v1/remove_handwriting?access_token=" + getBaiduToken()), body), observer);
272 } 278 }
273 279
274 public static void searchTeacher(String phone, Observer<ResponseResult<Teacher>> observer) { 280 public static void searchTeacher(String phone, Observer<ResponseResult<Teacher>> observer) {
275 setSubscribe(service_url.searchTeacher(getHeader(), phone), observer); 281 setSubscribe(service_url.searchTeacher(getHeader(), phone), observer);
276 } 282 }
277 283
278 public static void logout(Observer<ResponseBody> observer) { 284 public static void logout(Observer<ResponseBody> observer) {
279 setSubscribe(service_url.logout(), observer); 285 setSubscribe(service_url.logout(), observer);
280 } 286 }
281 287
282 public static void editStudent(RequestBody body, Observer<ResponseResult> observable) { 288 public static void editStudent(RequestBody body, Observer<ResponseResult> observable) {
283 setSubscribe(service_url.editStudent(getHeader(), body), observable); 289 setSubscribe(service_url.editStudent(getHeader(), body), observable);
284 } 290 }
285 291
286 public static void getWeekPlan(String id, Observer<ResponseResult<ScheduleBean>> observer) { 292 public static void getWeekPlan(String id, Observer<ResponseResult<ScheduleBean>> observer) {
287 setSubscribe(service_url.getWeekPlan(getHeader(), id), observer); 293 setSubscribe(service_url.getWeekPlan(getHeader(), id), observer);
288 } 294 }
289 295
290 public static void uploadStudentAvatar(File file, String stuId, Observer<ResponseResult<Map<String, String>>> observer) { 296 public static void uploadStudentAvatar(File file, String stuId, Observer<ResponseResult<Map<String, String>>> observer) {
291 RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); 297 RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
292 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody); 298 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
293 Map<String, Object> map = new HashMap<>(); 299 Map<String, Object> map = new HashMap<>();
294 map.put("stuId", stuId); 300 map.put("stuId", stuId);
295 setSubscribe(service_url.uploadAvatar(getHeader(), part, map), observer); 301 setSubscribe(service_url.uploadAvatar(getHeader(), part, map), observer);
296 } 302 }
297 303
298 public static void uploadAvatar(File file, Observer<ResponseResult<Map<String, String>>> observer) { 304 public static void uploadAvatar(File file, Observer<ResponseResult<Map<String, String>>> observer) {
299 RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); 305 RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
300 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody); 306 MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
301 setSubscribe(service_url.uploadAvatar(getHeader(), part), observer); 307 setSubscribe(service_url.uploadAvatar(getHeader(), part), observer);
302 } 308 }
303 309
304 public static void upLoadAvatar(List<MultipartBody.Part> partLis, Observer<ResponseBody> observer) { 310 public static void upLoadAvatar(List<MultipartBody.Part> partLis, Observer<ResponseBody> observer) {
305 setSubscribe(service_url.upLoadAvatar(getHeader(), partLis), observer); 311 setSubscribe(service_url.upLoadAvatar(getHeader(), partLis), observer);
306 } 312 }
307 313
308 314
309 public static void editUser(RequestBody body, Observer<ResponseBody> observer) { 315 public static void editUser(RequestBody body, Observer<ResponseBody> observer) {
310 setSubscribe(service_url.editUser(getHeader(), body), observer); 316 setSubscribe(service_url.editUser(getHeader(), body), observer);
311 } 317 }
312 318
313 public static void changePassword(RequestBody body, Observer<ResponseBody> observer) { 319 public static void changePassword(RequestBody body, Observer<ResponseBody> observer) {
314 setSubscribe(service_url.changePassword(getHeader(), body), observer); 320 setSubscribe(service_url.changePassword(getHeader(), body), observer);
315 } 321 }
316 322
317 323
318 public static void searchById(String userId, Observer<ResponseBody> observer) { 324 public static void searchById(String userId, Observer<ResponseBody> observer) {
319 setSubscribe(service_url.searchById(getHeader(), userId), observer); 325 setSubscribe(service_url.searchById(getHeader(), userId), observer);
320 } 326 }
321 327
322 328
323 public static void login(RequestBody body, Observer<ResponseBody> observer) { 329 public static void login(RequestBody body, Observer<ResponseBody> observer) {
324 setSubscribe(service_url.login(body), observer); 330 setSubscribe(service_url.login(body), observer);
325 } 331 }
326 332
327 public static void listGradeAndSubject(Observer<ResponseResult<List<GradeAndSubject>>> observer) { 333 public static void listGradeAndSubject(Observer<ResponseResult<List<GradeAndSubject>>> observer) {
328 setSubscribe(service_url.listGradeAndSubject(getHeader()), observer); 334 setSubscribe(service_url.listGradeAndSubject(getHeader()), observer);
329 } 335 }
330 336
331 337
332 public static void scanAndLogin(String code, String stuId, Observer<ResponseBody> observer) { 338 public static void scanAndLogin(String code, String stuId, Observer<ResponseBody> observer) {
333 setSubscribe(service_url.scanAndLogin(getHeader(), code, stuId), observer); 339 setSubscribe(service_url.scanAndLogin(getHeader(), code, stuId), observer);
334 } 340 }
335 341
336 public static void getChildrenList(Observer<ResponseBody> observer) { 342 public static void getChildrenList(Observer<ResponseBody> observer) {
337 setSubscribe(service_url.getChildrenList(getHeader()), observer); 343 setSubscribe(service_url.getChildrenList(getHeader()), observer);
338 } 344 }
339 345
340 346
341 public static void registerParent(RequestBody body, Observer<ResponseBody> observer) { 347 public static void registerParent(RequestBody body, Observer<ResponseBody> observer) {
342 setSubscribe(service_url.registerParent(body), observer); 348 setSubscribe(service_url.registerParent(body), observer);
343 } 349 }
344 350
345 351
346 public static void listChildren(Observer<ResponseBody> observer) { 352 public static void listChildren(Observer<ResponseBody> observer) {
347 setSubscribe(service_url.listChildren(getHeader()), observer); 353 setSubscribe(service_url.listChildren(getHeader()), observer);
348 } 354 }
349 355
350 public static void listStudent(Observer<ResponseBody> observer) { 356 public static void listStudent(Observer<ResponseBody> observer) {
351 setSubscribe(service_url.getStudentList(getHeader(), (String) SharedPreferencesUtil.getData("userId", "")), observer); 357 setSubscribe(service_url.getStudentList(getHeader(), (String) SharedPreferencesUtil.getData("userId", "")), observer);
352 } 358 }
353 359
354 public static Single<ResponseResult<List<Student>>> listStudent() { 360 public static Single<ResponseResult<List<Student>>> listStudent() {
355 return service_url.getStudentList2(getHeader(), getUserId()); 361 return service_url.getStudentList2(getHeader(), getUserId());
356 } 362 }
357 363
358 public static void listRecord(Observer<ResponseBody> observer) { 364 public static void listRecord(Observer<ResponseBody> observer) {
359 setSubscribe(service_url.getRecordList(getHeader(), (String) SharedPreferencesUtil.getData("userId", "")), observer); 365 setSubscribe(service_url.getRecordList(getHeader(), (String) SharedPreferencesUtil.getData("userId", "")), observer);
360 } 366 }
361 367
362 368
363 public static void registerStudent(RequestBody body, Observer<ResponseBody> observer) { 369 public static void registerStudent(RequestBody body, Observer<ResponseBody> observer) {
364 setSubscribe(service_url.registerStudent(getHeader(), body), observer); 370 setSubscribe(service_url.registerStudent(getHeader(), body), observer);
365 } 371 }
366 372
367 public static void bindTeacher(RequestBody body, Observer<ResponseBody> observer) { 373 public static void bindTeacher(RequestBody body, Observer<ResponseBody> observer) {
368 setSubscribe(service_url.bindTeacher(getHeader(), body), observer); 374 setSubscribe(service_url.bindTeacher(getHeader(), body), observer);
369 } 375 }
370 376
371 public static void getError(Map map, Observer<ResponseResult<PageInfo<TopicBean>>> observer) { 377 public static void getError(Map map, Observer<ResponseResult<PageInfo<TopicBean>>> observer) {
372 setSubscribe(service_url.getError(getHeader(), map), observer); 378 setSubscribe(service_url.getError(getHeader(), map), observer);
373 } 379 }
374 380
375 381
376 public static RequestBody getMapRequestBody(Map map) { 382 public static RequestBody getMapRequestBody(Map map) {
377 return RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(map)); 383 return RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(map));
378 } 384 }
379 385
380 386
381 public static RequestBody getArrayRequestBody(List list) { 387 public static RequestBody getArrayRequestBody(List list) {
382 return RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(list)); 388 return RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(list));
383 } 389 }
384 390
385 public static RequestBody getFileRequestBody(File file) { 391 public static RequestBody getFileRequestBody(File file) {
386 return RequestBody.create(MediaType.parse("application/octet-stream"), file); 392 return RequestBody.create(MediaType.parse("application/octet-stream"), file);
387 } 393 }
388 394
389 public static RequestBody getFileRequestBody(byte[] bytes) { 395 public static RequestBody getFileRequestBody(byte[] bytes) {
390 return RequestBody.create(MediaType.parse("multipart/form-data"), bytes); 396 return RequestBody.create(MediaType.parse("multipart/form-data"), bytes);
391 } 397 }
392 398
393 public static RequestBody getObjectRequestBody(Object obj) { 399 public static RequestBody getObjectRequestBody(Object obj) {
394 return RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(obj)); 400 return RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(obj));
395 } 401 }
396 402
397 public static RequestBody getStringRequestBody(String str) { 403 public static RequestBody getStringRequestBody(String str) {
398 return RequestBody.create(MediaType.parse("text/plain"), str); 404 return RequestBody.create(MediaType.parse("text/plain"), str);
399 } 405 }
400 406
401 407
402 /** 408 /**
403 * 插入观察者 409 * 插入观察者
404 * 410 *
405 * @param observable 411 * @param observable
406 * @param observer 412 * @param observer
407 * @param <T> 413 * @param <T>
408 */ 414 */
409 public static <T> void setSubscribe(Observable<T> observable, Observer<T> observer) { 415 public static <T> void setSubscribe(Observable<T> observable, Observer<T> observer) {
410 observable.subscribeOn(Schedulers.io())//子线程访问网络 416 observable.subscribeOn(Schedulers.io())//子线程访问网络
411 .observeOn(AndroidSchedulers.mainThread())//回调到主线程 417 .observeOn(AndroidSchedulers.mainThread())//回调到主线程
412 .subscribe(observer); 418 .subscribe(observer);
413 } 419 }
414 420
415 } 421 }
416 422