第5次提交 清空贷款

This commit is contained in:
xuhuixiang
2026-03-21 11:02:14 +08:00
parent 1e0a4412c8
commit 1724c1a8af
1056 changed files with 61546 additions and 8094 deletions

View File

@@ -0,0 +1,76 @@
package com.dskj.cashly.api;
import android.text.TextUtils;
import com.azhon.basic.retrofit.BaseApi;
import com.dskj.cashly.InitApp;
import com.dskj.cashly.config.Config;
import com.dskj.cashly.utils.LogUtils;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
/**
* 项目名: TODO-MVVM
* 包名 com.azhon.mvvm.api
* 文件名: Api
* 创建时间: 2019-03-27 on 14:56
* 描述: TODO 使用Retrofit基础服务
*
*/
public class Api extends BaseApi {
private static final long CONNECT_TIMEOUT = 10;
private static final long READ_TIMEOUT = 10;
private static final long WRITE_TIMEOUT = 10;
/**
* 静态内部类单例
*/
private static class ApiHolder {
private static Api api = new Api();
private final static ApiService apiService = api.initRetrofit(ApiService.URL)
.create(ApiService.class);
}
public static ApiService getInstance() {
return ApiHolder.apiService;
}
/**
* 做自己需要的操作
*/
@Override
protected OkHttpClient setClient() {
OkHttpClient.Builder builder;
builder = new OkHttpClient()
.newBuilder();
//禁止使用代理抓取数据
// builder.proxy(Proxy.NO_PROXY);
//设置超时
builder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS);
builder.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS);
builder.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS);
//错误重连
builder.retryOnConnectionFailure(true);
builder.addInterceptor(new HeaderInterceptor());
// if(Config.IS_DEBUG) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(message -> {
String text = message;
LogUtils.i("OKHttp111111-----", text);
});
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(interceptor);
// }
return builder.build();
}
}

View File

@@ -0,0 +1,172 @@
package com.dskj.cashly.api;
import com.dskj.cashly.bean.BankBean;
import com.dskj.cashly.bean.CallLogBean;
import com.dskj.cashly.bean.ContactBean;
import com.dskj.cashly.bean.ListBean;
import com.dskj.cashly.bean.LoadDetail;
import com.dskj.cashly.bean.LoanApplyBean;
import com.dskj.cashly.bean.LoanBean;
import com.dskj.cashly.bean.TokenBean;
import com.dskj.cashly.bean.UserBean;
import com.dskj.cashly.bean.VideoIndexResult;
import com.dskj.cashly.bean.VideoResult;
import java.util.List;
import io.reactivex.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
/**
* 项目名:
* 包名 com.azhon.mvvm.api
* 文件名: ApiService
* 创建时间: 2019-03-27 on 14:55
* 描述:
*
*/
public interface ApiService {
// String URL ="https://xjp-api.telebol.com/";
// String URL ="https://api.clashly666.com/";
// String URL ="http://47.113.146.77:8000/";
// String URL ="https://test666.telebol.com/";
//
String URL ="https://test-api.telebol.com/";
// String URL ="https://api666.telebol.com/";
/**获取Access-Token*/
@GET("api/BuildToken/getAccessToken")
Observable<Result<TokenBean>> getAccessToken(@Query("app_id") String app_id,
@Query("signature") String signature,
@Query("device_id") String device_id);
/**登录*/
@FormUrlEncoded
@POST("api/User/login")
Observable<Result<UserBean>> getLogin(@Field("phone") String phone, @Field("password") String password);
/**登录*/
@FormUrlEncoded
@POST("api/User/login")
Observable<Result<UserBean>> getLoginCaptcha(@Field("phone") String phone, @Field("captcha") String captcha);
/**登录*/
@FormUrlEncoded
@POST("api/User/sendSMS")
Observable<Result> sendSMS(@Field("phone") String phone);
// /**登录*/
@FormUrlEncoded
@POST("api/User/login")
Observable<Result<UserBean>> getLogin(@Field("phone") String phone, @Field("password") String password,
@Field("invit_code") String invit_code);
@GET("api/Loan/getList")
Observable<Result<ListBean>> getList(@Query("page") int page);
@GET("api/Loan/getLoanDetail")
Observable<Result<List<LoadDetail>>> getLoanDetail(@Query("id") int id);
@GET("api/Settle/loanList")
Observable<Result<List<LoanBean>>> loanList();
@GET("api/Settle/getList")
Observable<Result<ListBean>> getSettleList(@Query("page") int page);
@GET("api/Loan/detail")
Observable<Result<LoanBean>> detail(@Query("id") int phone);
@GET("api/Settle/detail")
Observable<Result<LoanBean>> SettleDetail(@Query("id") int phone);
@GET("api/Bank/index")
Observable<Result<List<BankBean>>> BankIndex();
@GET("api/User/logout")
Observable<Result> logout();
/**通讯录*/
@FormUrlEncoded
@POST("api/Upload/phone")
Observable<Result> phone(@Field("id") long id, @Field("name_phone") String name_phone);
/**通讯录*/
@FormUrlEncoded
@POST("api/Upload/settle-phone")
Observable<Result> settlePhone(@Field("id") long id, @Field("name_phone") String name_phone);
/**身份证*/
@POST("api/Upload/picture")
Observable<Result<List<String>>> picture(@Body MultipartBody file);
/**身份证*/
@POST("api/Settle/upload")
Observable<Result<List<String>>> SettleUpload(@Body MultipartBody file);
// /**提交*/
// @FormUrlEncoded
// @POST("api/Loan/apply")
// Observable<Result<LoanApplyBean>> apply(@Field("full_name") String full_name, @Field("ic_code") String ic_code, @Field("phone") String phone,
// @Field("occupation") String occupation, @Field("address") String address, @Field("bank_name") String bank_name,
// @Field("bank_code") String bank_code, @Field("salary") String salary, @Field("amount") float amount,
// @Field("id_front") String id_front, @Field("id_back") String id_back,
// @Field("period") String period, @Field("period_time") String period_time,
// @Field("invit_code") String invit_code);
/**提交*/
@FormUrlEncoded
@POST("api/Loan/apply")
Observable<Result<LoanApplyBean>> apply(@Field("full_name") String full_name, @Field("ic_code") String ic_code, @Field("phone") String phone,
@Field("occupation") String occupation, @Field("address") String address, @Field("bank_name") String bank_name,
@Field("bank_code") String bank_code, @Field("salary") String salary, @Field("amount") float amount,
@Field("id_front") String id_front, @Field("id_back") String id_back,
@Field("period") String period, @Field("period_time") String period_time
);
/**提交*/
@FormUrlEncoded
@POST("api/Settle/apply")
Observable<Result<LoanApplyBean>> SettleApply(@Field("full_name") String full_name, @Field("ic_code") String ic_code, @Field("phone") String phone,
@Field("amount") float amount, @Field("id_front") String id_front,
@Field("id_back") String id_back,@Field("loan_id") String loan_id,
@Field("receipt") String receipt);
/**通话记录*/
@POST("api/loan/postPhoneHistory")
Observable<Result> postPhoneHistory(@Body List<CallLogBean> file);
/**通话记录 清账*/
@POST("api/Settle/postPhoneHistory")
Observable<Result> postSettlePhoneHistory(@Body List<CallLogBean> file);
@GET("api/bank/contact")
Observable<Result<ContactBean>> contact();
/**通讯录*/
@FormUrlEncoded
@POST("api/User/setUserPushToken")
Observable<Result> setUserPushToken(@Field("FCM_token") String FCM_token);
}

View File

@@ -0,0 +1,130 @@
package com.dskj.cashly.api;
import android.content.Intent;
import com.dskj.cashly.InitApp;
import com.dskj.cashly.bean.BankBean;
import com.dskj.cashly.ui.activity.LoginActivity;
import com.google.gson.JsonParseException;
import org.json.JSONException;
import java.io.InterruptedIOException;
import java.net.ConnectException;
import java.net.UnknownHostException;
import java.text.ParseException;
import java.util.List;
import io.reactivex.observers.DisposableObserver;
import retrofit2.HttpException;
public abstract class BaseObserver<T> extends DisposableObserver<T> {
/**
* 解析数据失败
*/
public static final int PARSE_ERROR = 1001;
/**
* 网络问题
*/
public static final int BAD_NETWORK = 1002;
/**
* 连接错误
*/
public static final int CONNECT_ERROR = 1003;
/**
* 连接超时
*/
public static final int CONNECT_TIMEOUT = 1004;
@Override
public void onNext(T o) {
try {
Result model = (Result) o;
if (model.code == 1) {
onSuccess(o);
} else {
onError(model.code,model.msg);
if(model.code == -996){
InitApp.setToken("");
InitApp.setUserToken("");
reStart();
}
}
} catch (Exception e) {
e.printStackTrace();
onError(407,e.toString());
}
}
/*** 重新启动应用*/
public void reStart(){
Intent launch= InitApp.getAppContext().getPackageManager()
.getLaunchIntentForPackage(InitApp.getAppContext()
.getPackageName());
launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
InitApp.getAppContext().startActivity(launch);
}
@Override
public void onError(Throwable e) {
if (e instanceof HttpException) {
// HTTP错误
onException(BAD_NETWORK);
} else if (e instanceof ConnectException
|| e instanceof UnknownHostException) {
// 连接错误
onException(CONNECT_ERROR);
} else if (e instanceof InterruptedIOException) {
// 连接超时
onException(CONNECT_TIMEOUT);
} else if (e instanceof JsonParseException
|| e instanceof JSONException
|| e instanceof ParseException) {
// 解析错误
onException(PARSE_ERROR);
} else {
if (e != null) {
onError(409,e.toString());
} else {
onError(407,"未知錯誤");
}
}
}
private void onException(int unknownError) {
switch (unknownError) {
case CONNECT_ERROR:
onError(CONNECT_ERROR,"連接錯誤");
break;
case CONNECT_TIMEOUT:
onError(CONNECT_TIMEOUT,"連接超時");
break;
case BAD_NETWORK:
onError(BAD_NETWORK,"網絡問題");
break;
case PARSE_ERROR:
onError(PARSE_ERROR,"數據解析异常");
break;
default:
break;
}
}
@Override
public void onComplete() {
}
public abstract void onSuccess(T o);
public abstract void onError(int code,String msg);
}

View File

@@ -0,0 +1,30 @@
package com.dskj.cashly.api;
import com.dskj.cashly.InitApp;
import com.dskj.cashly.utils.LogUtils;
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
/**
*/
public class HeaderInterceptor implements Interceptor {
public HeaderInterceptor() {
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.addHeader("Access-Token", InitApp.getToken())
.addHeader("User-Token", InitApp.getUserToken())
.build();
LogUtils.i("头文件:"+InitApp.getToken());
LogUtils.i("头文件1"+InitApp.getUserToken());
return chain.proceed(request);
}
}

View File

@@ -0,0 +1,30 @@
package com.dskj.cashly.api;
import com.dskj.cashly.utils.GsonUtils;
import java.io.Serializable;
import java.util.List;
public class Result<T> implements Serializable {
public String msg;
public int code;
public T data;
public List<String> debug;
public boolean isSuccessful() {
return code == 1;
}
@Override
public String toString() {
return "Result{" +
"message='" + msg + '\'' +
", code=" + code +
", data=" + GsonUtils.beanToJSONString(data) +
", debug=" + GsonUtils.beanToJSONString(debug) +
'}';
}
}