|
@@ -0,0 +1,136 @@
|
|
|
+package com.cooleshow.base.utils.helper;
|
|
|
+
|
|
|
+import android.app.Activity;
|
|
|
+import android.content.ComponentName;
|
|
|
+
|
|
|
+import com.cooleshow.base.bean.ErrorInfoBean;
|
|
|
+import com.cooleshow.base.common.AppManager;
|
|
|
+import com.cooleshow.base.common.BaseConstant;
|
|
|
+import com.cooleshow.base.constanst.ErrorConstants;
|
|
|
+import com.cooleshow.base.data.api.UploadApi;
|
|
|
+import com.cooleshow.base.data.net.BaseResponse;
|
|
|
+import com.cooleshow.base.data.net.RetrofitFactory;
|
|
|
+import com.cooleshow.base.utils.AppUtils;
|
|
|
+import com.cooleshow.base.utils.DeviceUtils;
|
|
|
+import com.cooleshow.base.utils.GsonUtils;
|
|
|
+import com.cooleshow.base.utils.RequestBodyUtil;
|
|
|
+import com.cooleshow.base.utils.SPUtils;
|
|
|
+import com.cooleshow.base.utils.TimeUtils;
|
|
|
+
|
|
|
+import org.json.JSONObject;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+
|
|
|
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.rxjava3.annotations.NonNull;
|
|
|
+import io.reactivex.rxjava3.core.Observable;
|
|
|
+import io.reactivex.rxjava3.core.Observer;
|
|
|
+import io.reactivex.rxjava3.disposables.Disposable;
|
|
|
+import io.reactivex.rxjava3.schedulers.Schedulers;
|
|
|
+import okhttp3.RequestBody;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Author by pq, Date on 2024/4/26.
|
|
|
+ */
|
|
|
+public class LogUploadManager {
|
|
|
+ private static LogUploadManager instance;
|
|
|
+
|
|
|
+ private LogUploadManager() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public static LogUploadManager getInstance() {
|
|
|
+ if (instance == null) {
|
|
|
+ synchronized (LogUploadManager.class) {
|
|
|
+ if (instance == null) {
|
|
|
+ instance = new LogUploadManager();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return instance;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void uploadErrorLog(String errorPosType, String errorMsg) {
|
|
|
+ uploadLog(ErrorConstants.ERROR_TYPE_ERROR, errorPosType, errorMsg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void uploadRecordLog(String errorPosType, String errorMsg) {
|
|
|
+ uploadLog(ErrorConstants.ERROR_TYPE_RECORD, errorPosType, errorMsg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void uploadLog(String errorType, String errorPosType, String errorMsg) {
|
|
|
+ try {
|
|
|
+ ErrorInfoBean errorInfoBean = new ErrorInfoBean();
|
|
|
+ errorInfoBean.setPhone(getPhone());
|
|
|
+ errorInfoBean.setContent(getContent(errorPosType, errorMsg));
|
|
|
+ errorInfoBean.setClientType(getClientType());
|
|
|
+ errorInfoBean.setAppType(ErrorConstants.APP_TYPE_ANDROID);
|
|
|
+ errorInfoBean.setExceptionType(errorType);
|
|
|
+ errorInfoBean.setDeviceType(DeviceUtils.getDeviceBrand() + "_" + DeviceUtils.getDeviceDevice());
|
|
|
+ errorInfoBean.setDeviceVersion(String.valueOf(DeviceUtils.getDeviceSDK()));
|
|
|
+ errorInfoBean.setExceptionTime(TimeUtils.getNowString());
|
|
|
+ ArrayList<ErrorInfoBean> list = new ArrayList();
|
|
|
+ list.add(errorInfoBean);
|
|
|
+ upload(list);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getClientType() {
|
|
|
+ if (BaseConstant.isStudentClient()) {
|
|
|
+ return ErrorConstants.ERROR_CLIENT_TYPE_STUDENT;
|
|
|
+ }
|
|
|
+ return ErrorConstants.ERROR_CLIENT_TYPE_TEACHER;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void upload(ArrayList<ErrorInfoBean> list) {
|
|
|
+ String s = GsonUtils.toJson(list);
|
|
|
+ RequestBody requestBody = RequestBodyUtil.convertToRequestBodyJson(s);
|
|
|
+ Observable<BaseResponse<Object>> observable = RetrofitFactory.Companion.getInstance().create(UploadApi.class).uploadAppLog(requestBody);
|
|
|
+ observable.subscribeOn(Schedulers.newThread())
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(new Observer<BaseResponse<Object>>() {
|
|
|
+ @Override
|
|
|
+ public void onSubscribe(@NonNull Disposable d) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onNext(@NonNull BaseResponse<Object> response) {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(@NonNull Throwable e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onComplete() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getPhone() {
|
|
|
+ String phone = SPUtils.getInstance().getString("phone");
|
|
|
+ return phone;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getContent(String errorType, String errorMsg) {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ try {
|
|
|
+ Activity activity = AppManager.Companion.getInstance().currentActivity();
|
|
|
+ if (activity != null) {
|
|
|
+ ComponentName componentName = activity.getComponentName();
|
|
|
+ String className = componentName.getClassName();
|
|
|
+ jsonObject.put("className", className);
|
|
|
+ }
|
|
|
+ jsonObject.put("errorType", errorType);
|
|
|
+ jsonObject.put("appVersion", AppUtils.getAppVersionName());
|
|
|
+ jsonObject.put("errorMsg", errorMsg);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return jsonObject.toString();
|
|
|
+ }
|
|
|
+}
|