This commit is contained in:
18401019693
2022-07-29 16:04:12 +08:00
parent 41f07f2e3d
commit 00de2169b9
39 changed files with 531 additions and 385 deletions

View File

@@ -167,5 +167,12 @@ dependencies {
api 'com.adjust.sdk:adjust-android:4.30.1'
api 'com.android.installreferrer:installreferrer:2.2'
api 'com.google.firebase:firebase-analytics:15.0.0'
//Retrofit2库
api 'com.squareup.retrofit2:retrofit:2.3.0'
api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//gson解析
api 'com.squareup.retrofit2:converter-gson:2.3.0'
//rxjava2库
api 'io.reactivex.rxjava2:rxjava:2.0.1'
api 'io.reactivex.rxjava2:rxandroid:2.0.1'
}

View File

@@ -0,0 +1,52 @@
package com.yunbao.common.http;
import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.internal.bind.DateTypeAdapter;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.http.base.BaseApi;
import java.util.Date;
import okhttp3.OkHttpClient;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* pdLive接口
*/
public class API extends BaseApi {
private PDLiveApi pdLiveApi;
private static API api;
/**
* 获取单利
*
* @return
*/
public static API get() {
if (null == api) {
api = new API();
}
return api;
}
public PDLiveApi pdLiveApi(Context context) {
if (null == pdLiveApi) {
//实例化gson
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();
OkHttpClient.Builder builder = new OkHttpClient()
.newBuilder()
.addInterceptor(new PDLiveInterceptor(context));
pdLiveApi = create(builder.build(),
GsonConverterFactory.create(gson), RxJava2CallAdapterFactory.create(), CommonAppConfig.HOST, PDLiveApi.class);
}
return pdLiveApi;
}
}

View File

@@ -162,8 +162,6 @@ public class CommonHttpUtil {
Log.i("来了", lang);
//或者仅仅使用 locale = Locale.getDefault(); 不需要考虑接口 deprecated(弃用)问题
HttpClient.getInstance().get("Home.getConfig", CommonHttpConsts.GET_CONFIG)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("langue", lang)
.execute(new HttpCallback() {
@Override
@@ -228,32 +226,6 @@ public class CommonHttpUtil {
setAttention(CommonHttpConsts.SET_ATTENTION, touid, callback);
}
// /**
// * 关注别人 或 取消对别人的关注的接口
// */
// public static void setAttention(String tag, final String touid, final CommonCallback<Integer> callback) {
// if (touid.equals(CommonAppConfig.getInstance().getUid())) {
// ToastUtil.show(WordUtil.getString(R.string.cannot_follow_self));
// return;
// }
// HttpClient.getInstance().get("User.setAttent", tag)
// .params("uid", CommonAppConfig.getInstance().getUid())
// .params("token", CommonAppConfig.getInstance().getToken())
// .params("touid", touid)
// .execute(new HttpCallback() {
// @Override
// public void onSuccess(int code, String msg, String[] info) {
// if (code == 0 && info.length > 0) {
// int isAttention = JSON.parseObject(info[0]).getIntValue("isattent");//1是 关注 0是未关注
// EventBus.getDefault().post(new FollowEvent(touid, isAttention));
// if (callback != null) {
// callback.callback(isAttention);
// }
// }
// }
// });
// }
/**
* 关注别人 或 取消对别人的关注的接口
*/
@@ -263,8 +235,6 @@ public class CommonHttpUtil {
return;
}
HttpClient.getInstance().get("User.setAttents", tag)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("touid", touid)
.execute(new HttpCallback() {
@Override
@@ -291,8 +261,6 @@ public class CommonHttpUtil {
isGoogle = "-1";
}
HttpClient.getInstance().get("User.getBalance", CommonHttpConsts.GET_BALANCE)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("type", 0)
.params("isGooglePay", isGoogle)
.execute(callback);
@@ -349,8 +317,6 @@ public class CommonHttpUtil {
*/
public static void checkTokenInvalid() {
HttpClient.getInstance().get("User.ifToken", CommonHttpConsts.CHECK_TOKEN_INVALID)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.execute(NO_CALLBACK);
}
@@ -391,8 +357,6 @@ public class CommonHttpUtil {
if ("2".equals(community_type)) {
request = HttpClient.getInstance().post(CommonHttpConsts.COMMUNITY_SETREPORT, CommonHttpConsts.COMMUNITY_SETREPORT)
.isMultipart(true)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("dynamic_id", dynamic_id)
.params("report_type", report_type)
.params("content", content)
@@ -401,8 +365,6 @@ public class CommonHttpUtil {
} else {
request = HttpClient.getInstance().post(CommonHttpConsts.COMMUNITY_SETREPORT, CommonHttpConsts.COMMUNITY_SETREPORT)
.isMultipart(true)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("token", CommonAppConfig.getInstance().getToken())
.params("dynamic_id", dynamic_id)
.params("report_type", report_type)
.params("content", content)
@@ -425,7 +387,6 @@ public class CommonHttpUtil {
*/
public static void getUserBaseinfo(String touid, HttpCallback callback) {
HttpClient.getInstance().get("User.getUserBaseinfo", CommonHttpConsts.GET_USER_BASEINFO)
.params("uid", CommonAppConfig.getInstance().getUid())
.params("touid", touid)
.execute(callback);
}

View File

@@ -1,8 +1,10 @@
package com.yunbao.common.http;
import android.app.Dialog;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.Response;
import com.lzy.okgo.request.base.Request;
@@ -33,6 +35,8 @@ public abstract class HttpCallback extends AbsCallback<JsonBean> {
@Override
public void onSuccess(Response<JsonBean> response) {
JsonBean bean = response.body();
String gson = new Gson().toJson(bean);
Log.e("onSuccess",gson);
if (bean != null) {
if (200 == bean.getRet()) {
Data data = bean.getData();

View File

@@ -1,5 +1,7 @@
package com.yunbao.common.http;
import android.content.Context;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.cookie.CookieJarImpl;
@@ -8,7 +10,11 @@ import com.lzy.okgo.request.GetRequest;
import com.lzy.okgo.request.PostRequest;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.manager.IMLoginManager;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
@@ -47,17 +53,12 @@ public class HttpClient {
builder.writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS);
builder.cookieJar(new CookieJarImpl(new MemoryCookieStore()));
builder.retryOnConnectionFailure(true);
// Dispatcher dispatcher = new Dispatcher();
// dispatcher.setMaxRequests(20000);
// dispatcher.setMaxRequestsPerHost(10000);
// builder.dispatcher(dispatcher);
//输出HTTP请求 响应信息
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("http");
loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(loggingInterceptor);
//添加PDLive请求常用信息
mOkHttpClient = builder.build();
OkGo.getInstance().init(CommonAppContext.sInstance)
.setOkHttpClient(mOkHttpClient)
.setCacheMode(CacheMode.NO_CACHE)
@@ -66,23 +67,51 @@ public class HttpClient {
}
public GetRequest<JsonBean> get(String serviceName, String tag) {
Context context = CommonAppContext.sInstance.getApplicationContext();
//拼装基本信息
Map<String, String> map = new HashMap<>();
if (IMLoginManager.isLogin(context)) {
IMLoginModel model = IMLoginManager.get(context).getUserInfo();
map.put("uid", String.valueOf(model.getId()));
map.put("token", model.getToken());
}
return OkGo.<JsonBean>get(mUrl + serviceName)
.headers("Connection","keep-alive")
.params(map, true)
.headers("Connection", "keep-alive")
.tag(tag)
.params(CommonHttpConsts.LANGUAGE, mLanguage);
}
public GetRequest<JsonBean> get(String url,String serviceName, String tag) {
public GetRequest<JsonBean> get(String url, String serviceName, String tag) {
Context context = CommonAppContext.sInstance.getApplicationContext();
//拼装基本信息
Map<String, String> map = new HashMap<>();
if (IMLoginManager.isLogin(context)) {
IMLoginModel model = IMLoginManager.get(context).getUserInfo();
map.put("uid", String.valueOf(model.getId()));
map.put("token", model.getToken());
}
return OkGo.<JsonBean>get(url + serviceName)
.headers("Connection","keep-alive")
.headers("Connection", "keep-alive")
.params(map, true)
.tag(tag)
.params(CommonHttpConsts.LANGUAGE, mLanguage);
}
public PostRequest<JsonBean> post(String serviceName, String tag) {
Context context = CommonAppContext.sInstance.getApplicationContext();
//拼装基本信息
Map<String, String> map = new HashMap<>();
if (IMLoginManager.isLogin(context)) {
IMLoginModel model = IMLoginManager.get(context).getUserInfo();
map.put("uid", String.valueOf(model.getId()));
map.put("token", model.getToken());
}
return OkGo.<JsonBean>post(mUrl + serviceName)
.headers("Connection","keep-alive")
.headers("Connection", "keep-alive")
.params(map, true)
.tag(tag)
.params(CommonHttpConsts.LANGUAGE, mLanguage);
}

View File

@@ -0,0 +1,33 @@
package com.yunbao.common.http;
import com.yunbao.common.bean.IMLoginModel;
import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
/**
* PDLive网络接口访问
*/
public interface PDLiveApi {
/**
* 用户手机号登录
*
* @param userName
* @param passWord
* @param uuidDevice
* @param pushid
* @param lastlogindevice
* @return
*/
@FormUrlEncoded
@POST("/api/public/?service=Login.userLogin")
Observable<ResponseModel<IMLoginModel>> loginByManager(
@Field("user_login") String userName,
@Field("user_pass") String passWord,
@Field("uuid_Device") String uuidDevice,
@Field("pushid") String pushid,
@Field("lastlogindevice") String lastlogindevice
);
}

View File

@@ -0,0 +1,41 @@
package com.yunbao.common.http;
import android.content.Context;
import android.util.Log;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.manager.IMLoginManager;
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
/**
* PDlLive通用拦截器
*/
public class PDLiveInterceptor implements Interceptor {
private Context context;
PDLiveInterceptor(Context context) {
this.context = context;
}
@Override
public Response intercept(Chain chain) throws IOException {
//拼接请求,添加头
Request request = chain.request();
Request.Builder builder = request.newBuilder();
Log.e("TAG", "Request: " + request.toString());
//已登录则添加全局参数
if (IMLoginManager.isLogin(context)) {
IMLoginModel model = IMLoginManager.get(context).getUserInfo();
builder.addHeader("userid", String.valueOf(model.getId()));
builder.addHeader("token", model.getToken());
}
Response response = chain.proceed(builder.build());
Log.e("TAG", "Request: " + response.toString());
return response;
}
}

View File

@@ -0,0 +1,39 @@
package com.yunbao.common.http;
import com.google.gson.annotations.SerializedName;
public class ResponseData<T> {
@SerializedName("code")
private int code;
@SerializedName("msg")
private String msg;
@SerializedName("info")
private T info;
public int getCode() {
return code;
}
public ResponseData<T> setCode(int code) {
this.code = code;
return this;
}
public String getMsg() {
return msg;
}
public ResponseData<T> setMsg(String msg) {
this.msg = msg;
return this;
}
public T getInfo() {
return info;
}
public ResponseData<T> setInfo(T info) {
this.info = info;
return this;
}
}

View File

@@ -0,0 +1,49 @@
package com.yunbao.common.http;
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
/**
* 响应体基础结构(使用info字符串数组数据)
*/
public class ResponseModel<T> {
/**
* ret : 200
* data : {"code":0,"msg":"登录成功","info":{"id":139372,"user_nicename":"新手指导员05","avatar":"https://napi.yaoulive.com/default.jpg","avatar_thumb":"https://napi.yaoulive.com/default_thumb.jpg","sex":1,"signature":"这家伙很懒,什么都没留下","coin":0,"gold":470,"goldsumption":0,"consumption":7200,"votestotal":0,"province":"","city":"","birthday":"","user_status":1,"issuper":0,"location":"","noble_id":0,"goodnum":"","is_guess":null,"langue":"chinese","goodnum_expire_time":null,"avatar2":null,"front_task":1,"level":"5","level_anchor":"1","vip":{"type":"0"},"liang":{"name":"0"},"medal_level":"0","medal_name":"","token":"790b4a59b46e22e68e04ba76c505dbc3","first_login":"0","token_rong":"Qx7tt7henwUJC3NXkwaOsnQeHkqz/DDlzFfBg3prJ6c=@xln2.sg.rongnav.com;xln2.sg.rongcfg.com"}}
* msg :
*/
@SerializedName("ret")
private int ret;
@SerializedName("data")
private ResponseData<T> data;
@SerializedName("msg")
private String msg;
public int getRet() {
return ret;
}
public ResponseModel<T> setRet(int ret) {
this.ret = ret;
return this;
}
public ResponseData<T> getData() {
return data;
}
public ResponseModel<T> setData(ResponseData<T> data) {
this.data = data;
return this;
}
public String getMsg() {
return msg;
}
public ResponseModel<T> setMsg(String msg) {
this.msg = msg;
return this;
}
}

View File

@@ -0,0 +1,93 @@
package com.yunbao.common.http.base;
import java.util.HashMap;
import java.util.Map;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import retrofit2.CallAdapter;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
/**
* 网络请求基类
*/
public class BaseApi {
/**
* 创建一个接口方法
*
* @param okHttpClient okhttp客户端
* @param converterFactory 处理工厂类
* @param callAdapterFactory 请求适配器工厂
* @param baseUrl 基础地质
* @param service 接口
* @param <T> 接口泛型
* @return 接口
*/
public <T> T create(OkHttpClient okHttpClient, Converter.Factory converterFactory, CallAdapter.Factory callAdapterFactory, String baseUrl, Class<T> service) {
Retrofit.Builder builder = new Retrofit.Builder()
//基础url
.baseUrl(baseUrl)
//客户端OKHttp
.client(okHttpClient);
//添加转换工厂
if (null != converterFactory) {
builder.addConverterFactory(converterFactory);
}
//添加请求工厂
if (null != callAdapterFactory) {
builder.addCallAdapterFactory(callAdapterFactory);
}
//创建retrofit对象
Retrofit retrofit = builder.build();
//返回创建的api
return retrofit.create(service);
}
public <T> T createApi(Interceptor interceptor, Converter.Factory converterFactory, CallAdapter.Factory callAdapterFactory, String baseUrl, Class<T> service) {
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
if (null != interceptor) {
builder.addInterceptor(interceptor);
}
return create(builder.build(), converterFactory, callAdapterFactory, baseUrl, service);
}
public <T> T createApi(Map<String, String> headerMap, Converter.Factory converterFactory, CallAdapter.Factory callAdapterFactory, String baseUrl, Class<T> service) {
return createApi(new CommonInterceptor(headerMap), converterFactory, callAdapterFactory, baseUrl, service);
}
public <T> T createApi(Converter.Factory converterFactory, CallAdapter.Factory callAdapterFactory, String baseUrl, Class<T> service) {
return createApi(new HashMap<>(), converterFactory, callAdapterFactory, baseUrl, service);
}
public <T> T createApi(CallAdapter.Factory callAdapterFactory, String baseUrl, Class<T> service) {
return createApi(null, callAdapterFactory, baseUrl, service);
}
public <T> T createApi(String baseUrl, Class<T> service) {
return createApi(null, baseUrl, service);
}
public <T> T createRxApi(Interceptor interceptor, Converter.Factory converterFactory, String baseUrl, Class<T> service) {
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
if (null != interceptor) {
builder.addInterceptor(interceptor);
}
return create(builder.build(), converterFactory, RxJava2CallAdapterFactory.create(), baseUrl, service);
}
public <T> T createRxApi(Map<String, String> headerMap, Converter.Factory converterFactory, String baseUrl, Class<T> service) {
return createRxApi(new CommonInterceptor(headerMap), converterFactory, baseUrl, service);
}
public <T> T createRxApi(Converter.Factory converterFactory, String baseUrl, Class<T> service) {
return createRxApi(new HashMap<>(), converterFactory, baseUrl, service);
}
public <T> T createRxApi(String baseUrl, Class<T> service) {
return createRxApi(null, baseUrl, service);
}
}

View File

@@ -0,0 +1,35 @@
package com.yunbao.common.http.base;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import okhttp3.Interceptor;
import okhttp3.Request;
/**
* 通用性拦截器
*/
public class CommonInterceptor implements Interceptor {
private Map<String, String> headerMap;
public CommonInterceptor(Map<String, String> headerMap) {
this.headerMap = headerMap;
}
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
//拼接请求,添加头
Request.Builder builder = chain.request()
.newBuilder();
if (null != headerMap) {
Iterator<String> iterator = headerMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
String value = headerMap.get(key);
builder.addHeader(key, value);
}
}
return chain.proceed(builder.build());
}
}

View File

@@ -0,0 +1,20 @@
package com.yunbao.common.http.main;
/**
* maim的请求回调接口
*/
public interface HttpCallback<T> {
/**
* 请求成功
*
* @param data
*/
void onSuccess(T data);
/**
* 请求失败
*
* @param error
*/
void onError(String error);
}

View File

@@ -0,0 +1,64 @@
package com.yunbao.common.http.main;
import android.app.Activity;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.http.API;
import com.yunbao.common.http.ResponseModel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
* main库的网络请求管理
*/
public class MainNetManager {
private Activity mContext;
private static MainNetManager manager;
public MainNetManager(Activity context) {
this.mContext = context;
}
/**
* 获取单利
*
* @return
*/
public static MainNetManager get(Activity context) {
if (null == manager) {
manager = new MainNetManager(context);
}
return manager;
}
/**
* 手机号登录
*
* @param phoneNum 手机号码
* @param pwd 密码
* @param uuid 设备码
* @param callback 网络请求回调
*/
public void login(String phoneNum, String pwd, String uuid, HttpCallback<IMLoginModel> callback) {
API.get().pdLiveApi(mContext).loginByManager(phoneNum, pwd, uuid, "", "Android")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<IMLoginModel>>() {
@Override
public void accept(ResponseModel<IMLoginModel> imLoginModelResponseModel) throws Exception {
if (callback != null) {
IMLoginModel model = imLoginModelResponseModel.getData().getInfo();
callback.onSuccess(model);
}
}
}, throwable -> {
if (callback != null) {
callback.onError(throwable.getMessage());
}
}).isDisposed();
}
}

View File

@@ -125,8 +125,8 @@ public class IMLoginManager extends BaseCacheManager {
@Override
public void run() {
HttpClient.getInstance().get("User.isInstructor", "isInstructor")
.params("uid", userInfo.getId())
.params("token", userInfo.getToken())
.params("uid", userInfo.getId(),true)
.params("token", userInfo.getToken(),true)
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {

View File

@@ -103,8 +103,8 @@ public class InstructorRemarkManager extends BaseCacheManager {
public void run() {
IMLoginModel userInfo = IMLoginManager.get(context).getUserInfo();
HttpClient.getInstance().get("User.getInstructorRemark", "getInstructorRemark")
.params("uid", userInfo.getId())
.params("token", userInfo.getToken())
.params("uid", userInfo.getId(),true)
.params("token", userInfo.getToken(),true)
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {

View File

@@ -112,7 +112,7 @@ public class NoviceInstructorManager extends BaseCacheManager {
if (TextUtils.equals(userModel.getIsAdmin(), "1")) {
IMLoginModel userInfo = IMLoginManager.get(context).getUserInfo();
HttpClient.getInstance().get("Message.setZdyMsg", "setZdyMsg")
.params("uid", userInfo.getId())
.params("uid", userInfo.getId(),true)
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {

View File

@@ -59,6 +59,7 @@
android:id="@+id/quote_linear"
android:layout_width="0dp"
android:layout_weight="1"
android:visibility="gone"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"