From b3a51f064c4dfb27f54cd9526803338d2e8dc296 Mon Sep 17 00:00:00 2001 From: Runt <qingingrunt2010@qq.com> Date: Sat, 13 Aug 2022 16:26:49 +0000 Subject: [PATCH] 添加注释,部分优化 --- app/src/main/java/com/runt/open/mvvm/base/activities/BaseFragmentActivity.java | 73 ++++++++++++ app/src/main/java/com/runt/open/mvvm/ui/coin/WithDrawActivity.java | 1 app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java | 103 ++++++++++++---- app/src/main/java/com/runt/open/mvvm/ui/adapter/NumAdapter.java | 1 app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java | 12 + app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java | 4 app/src/main/java/com/runt/open/mvvm/ui/adapter/CoinTransAdapter.java | 1 app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java | 16 -- app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/AddHeadersInterceptor.java | 39 ++++++ app/src/main/java/com/runt/open/mvvm/base/adapter/BaseAdapter.java | 14 - app/src/main/java/com/runt/open/mvvm/ui/adapter/MsgAdapter.java | 4 app/src/main/java/com/runt/open/mvvm/ui/sign/SignInViewModel.java | 2 app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java | 9 + app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java | 3 app/src/main/java/com/runt/open/mvvm/ui/coin/CoinSettingActivity.java | 2 app/src/main/java/com/runt/open/mvvm/base/fragments/BaseFragment.java | 5 app/src/main/java/com/runt/open/mvvm/base/activities/BaseTabActivity.java | 13 ++ /dev/null | 11 - app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java | 4 app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java | 3 app/src/main/java/com/runt/open/mvvm/base/fragments/BaseTabFragment.java | 5 app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java | 17 ++ app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/HttpLoggingInterceptor.java | 16 ++ app/src/main/java/com/runt/open/mvvm/ui/adapter/CalendarAdapter.java | 1 24 files changed, 270 insertions(+), 89 deletions(-) diff --git a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java index b60cc95..5610e15 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java @@ -43,11 +43,16 @@ */ public abstract class BaseActivity<VB extends ViewBinding,VM extends BaseViewModel> extends AppCompatActivity { - protected VB mBinding; - protected VM mViewModel; + //viewbind + protected VB mBinding; + //viewmodel + protected VM mViewModel; protected String TAG ; + //文件读取权限 public final String[] FILE_PERMISSIONS = new String []{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE}; + //夹带摄像头权限 public final String[] CAMERA_PERMISSIONS = new String[]{ FILE_PERMISSIONS[0],FILE_PERMISSIONS[1], Manifest.permission.CAMERA}; + //夹带录音权限 public final String[] CAMERA_RECORD_PERMISSIONS = new String[]{ FILE_PERMISSIONS[0],FILE_PERMISSIONS[1], Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO}; public static final String PARAMS_TITLE = "title"; @@ -82,6 +87,7 @@ RESULT_CODE_SUCESS = 4046/*成功*/, RESULT_CODE_CANCEL = 4043/*取消*/; protected Context mContext; + //标题栏 protected TitleBarView titleBarView; @@ -89,10 +95,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // get genericity "B" - setStatusBarBgColor(R.color.white); - setStatusBarTextColor(true); + setStatusBarBgColor(R.color.white);//白色状态栏 + setStatusBarTextColor(true);//状态栏文本黑色 final ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass(); try { + //实例化泛型类 Class<VB> entityClass = (Class<VB>) type.getActualTypeArguments()[0]; Method method = entityClass.getMethod("inflate", LayoutInflater.class);//get method from name "inflate"; mBinding = (VB) method.invoke(entityClass,getLayoutInflater());//execute method to create a objct of viewbind; @@ -111,32 +118,45 @@ } catch (Exception e) { } TAG = this.getClass().getSimpleName(); - initViews(); + initViews();//初始化UI mViewModel.onCreate(this); - loadData(); + loadData();//加载数据 } public abstract void initViews(); public abstract void loadData(); + /** + * 是否为空 + * @param object + * @return + */ public boolean isNull(Object object){ return object == null || object.toString().trim().equals("") || object.equals("null"); } + /** + * 设置标题 + * @param text + */ protected void setTitle(String text){ titleBarView.setTitleText(text); } - protected void onTitleLeftClick(){ - onBackKeyDown(); - } - + /** + * 标题栏右侧文本 + * @param text + */ protected void setTitleRight(String text){ titleBarView.setRightText(text); titleBarView.setRightDra(null); } + /** + * 标题栏右侧图片 + * @param drawable + */ protected void setTitleRight(Drawable drawable){ titleBarView.setRightText(null); titleBarView.setRightDra(drawable); @@ -145,35 +165,61 @@ AlertDialog dialog; /** - * 显示弹框 - * @param title - * @param msg - * @param resPonse + * 显示输入框弹框 + * @param title 标题 + * @param msg 消息 + * @param resPonse 回调 */ public void showDialog(String title,String msg,ResPonse resPonse){ showDialog(title,msg,"确认","取消",resPonse); } + /** + * 显示输入框弹框 + * @param title 标题 + * @param msg 消息 + * @param hint 默认消息文本 + * @param resPonse 回调 + */ public void showInputDialog(String title,String msg,String hint,ResPonse resPonse){ showInputDialog(title,msg,hint,"确认","取消",resPonse); } + /** + * 显示输入框弹框 + * @param title 标题 + * @param msg 消息 + * @param hint 默认消息文本 + * @param btnOk 确认按钮文本 + * @param btnCancel 取消按钮文本 + * @param resPonse 回调 + */ public void showInputDialog(String title, String msg, String hint,String btnOk,String btnCancel,final ResPonse resPonse){ showDialog(title,msg,hint,btnOk,btnCancel,resPonse,true); } /** * 显示弹框 - * @param title - * @param msg - * @param btnOk - * @param btnCancel - * @param resPonse + * @param title 标题 + * @param msg 消息 + * @param btnOk 确认按钮文本 + * @param btnCancel 取消按钮文本 + * @param resPonse 回调 */ public void showDialog(String title, String msg, String btnOk,String btnCancel,final ResPonse resPonse){ showDialog(title,msg,null,btnOk,btnCancel,resPonse,false); } + /** + * 显示弹框 + * @param title 标题 + * @param msg 消息 + * @param hint 默认消息文本 + * @param btnOk 确认按钮文本 + * @param btnCancel 取消按钮文本 + * @param resPonse 回调 + * @param isEdit 是否为输入框 + */ private void showDialog(String title, String msg, String hint,String btnOk,String btnCancel,final ResPonse resPonse,boolean isEdit){ AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.TransparentDialog); @@ -245,16 +291,23 @@ } } + /** + * viewmodel 工厂创建实例 + * @return + */ public ViewModelProvider.Factory getViewModelFactory(){ return ViewModelFactory.getInstance(); } + /** + * 透明状态栏 + * @param isBlack 是否为黑色文本 + */ public void setStatusBarTransparent(boolean isBlack){ //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); - setStatusBarTextColor(isBlack); final ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) titleBarView.getLayoutParams(); layoutParams.topMargin = layoutParams.topMargin+getStatusBarHeight(); @@ -410,12 +463,6 @@ return storePath + File.separator +fileName; } - - protected boolean onBackKeyDown() { - onBackPressed(); - return false; - } - /** * 拨打电话(直接拨打电话) * @param phoneNum 电话号码 @@ -435,11 +482,11 @@ }); } - + //=========================================== + //以下为preferences操作 public boolean getBooleanUserPrefrence(String key){ return PreferencesUtils.getBoolean(this,key,false,PreferencesUtils.USER); } - public boolean getBooleanProjectPrefrence(String key){ return PreferencesUtils.getBoolean(this,key,false,PreferencesUtils.PROJECT); } diff --git a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseFragmentActivity.java b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseFragmentActivity.java new file mode 100644 index 0000000..298bfa5 --- /dev/null +++ b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseFragmentActivity.java @@ -0,0 +1,73 @@ +package com.runt.open.mvvm.base.activities; + +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; +import androidx.viewbinding.ViewBinding; + +import com.runt.open.mvvm.R; +import com.runt.open.mvvm.base.fragments.BaseFragment; +import com.runt.open.mvvm.base.model.BaseViewModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * 带有fragment切换的activity + * 继承此类,有效优化代码22行 + * 试用于加载各种fragment需求的activity + * Created by Runt (qingingrunt2010@qq.com) on 2022/8/13. + */ +public class BaseFragmentActivity <VB extends ViewBinding,VM extends BaseViewModel> + extends BaseActivity<VB,VM>{ + + + List<BaseFragment> fragments = new ArrayList<>(); + + /** + * 切换界面 要显示的fragnemt + * @param fragment + */ + protected void showFragment(BaseFragment fragment){ + showFragment(fragments.indexOf(fragment)); + } + + /** + * 切换界面 要显示的fragnemt + * @param position + */ + protected void showFragment(int position){ + if(position>fragments.size()-1|| position < 0){ + showToast("当前fragment不在队列中"); + return; + } + FragmentManager fragmentManager = getSupportFragmentManager(); + FragmentTransaction transaction = fragmentManager.beginTransaction(); + for(int i = 0 ; i < fragments.size() ; i ++){ + if(i != position){ + transaction.hide(fragments.get(i)); + } + } + transaction.show(fragments.get(position)); + transaction.commit(); + } + + /** + * 添加fragment + * @param fragment + */ + protected void addAndShowFragment(BaseFragment fragment){ + if(fragments.contains(fragment)){ + showFragment(fragment); + return; + } + FragmentManager fragmentManager = getSupportFragmentManager(); + FragmentTransaction transaction = fragmentManager.beginTransaction(); + for(int i = 0 ; i < fragments.size() ; i ++){ + transaction.hide(fragments.get(i)); + } + transaction.add(R.id.framelayout,fragment).commit(); + fragments.add(fragment); + } + + +} diff --git a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseTabActivity.java b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseTabActivity.java index e02d83c..32b53c8 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/activities/BaseTabActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/base/activities/BaseTabActivity.java @@ -17,8 +17,12 @@ import java.util.List; /** + * 带有tablayout activity封装(带有viewpager的视图父类) + * 继承此类,有效优化代码13行 + * 项目中有过多含有viewpager的activity可调用,其他情况下不建议使用,优化代码量不佳 * Created by Administrator on 2021/11/4 0004. */ +@Deprecated public abstract class BaseTabActivity<B extends ViewBinding,VM extends BaseViewModel> extends BaseActivity<B,VM> { TabLayout tabLayout; @@ -50,9 +54,16 @@ new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> tab.setText(tabTitles.get(position))).attach(); } - + /** + * tablayout 标题列表 + * @return + */ protected abstract List<String> initTabTitles(); + /** + * 初始化fragment列表 + * @return + */ protected abstract List<BaseFragment> initFragments(); protected List<String> getTabTitles(){ diff --git a/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java b/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java index 245f461..44a86d1 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/base/activities/LoadPageActivity.java @@ -1,5 +1,8 @@ package com.runt.open.mvvm.base.activities; +import android.view.MotionEvent; +import android.view.View; + import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.LinearLayoutManager; @@ -21,6 +24,9 @@ import java.util.Map; /** + * 含有上拉刷新的Activity + * 继承此类,有效优化代码60行 + * 试用于 有下拉刷新,上拉加载等分页需求的界面 * Created by Administrator on 2021/11/4 0004. */ public abstract class LoadPageActivity<VB extends ViewBinding,VM extends LoadPageViewModel,A extends BaseAdapter,RESULT> @@ -30,11 +36,13 @@ //适配器 protected A adapter; - protected abstract String initTitle(); + protected String initTitle(){return null;} @Override public void initViews() { - setTitle(initTitle()); + if(initTitle() != null) { + setTitle(initTitle()); + } try { Class<A> entityClass = (Class<A>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[2]; this.adapter = entityClass.newInstance();//实例化泛型 diff --git a/app/src/main/java/com/runt/open/mvvm/base/adapter/BaseAdapter.java b/app/src/main/java/com/runt/open/mvvm/base/adapter/BaseAdapter.java index 00f3fd9..a494dcf 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/adapter/BaseAdapter.java +++ b/app/src/main/java/com/runt/open/mvvm/base/adapter/BaseAdapter.java @@ -17,8 +17,8 @@ /** * Created by Administrator on 2021/10/27 0027. - * T 数据类型 - * V 适配器视图 + * DATA 数据类型 + * VB 适配器视图 */ public abstract class BaseAdapter<DATA, VB extends ViewBinding> extends RecyclerView.Adapter<RecyclerView.ViewHolder> { @@ -75,16 +75,9 @@ @Override public ViewBindHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if(viewType == 1 ){ - // get genericity "B" try { + //实例化viewbind Class<VB> entityClass = (Class<VB>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[1]; - /*for(Method method: entityClass.getMethods()){ - StringBuilder sb = new StringBuilder(); - for(Class type : method.getParameterTypes()){ - sb.append(type.getSimpleName()+","); - } - Log.e("BaseAdapter",String.format("method:%s,return:%s,param:%s",method.getName(),method.getReturnType().getSimpleName(),sb.toString())); - }*/ Method method = entityClass.getMethod("inflate", LayoutInflater.class,ViewGroup.class,boolean.class);//get method from name "inflate"; VB vBind = (VB) method.invoke(entityClass,LayoutInflater.from(parent.getContext()),parent,false);//execute method to create a objct of viewbind; return new ViewBindHolder(vBind); @@ -103,6 +96,7 @@ e.printStackTrace(); } } + //加载空数据 return new ViewBindHolder( LayoutNullBinding.inflate( LayoutInflater.from(parent.getContext()), parent, false ) ); } diff --git a/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseFragment.java b/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseFragment.java index 5918601..16213a5 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseFragment.java +++ b/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseFragment.java @@ -43,6 +43,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { // get genericity "B" try { + //实例化viewbind,viewmodel final ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass(); Class<VB> entityClass = (Class<VB>) type.getActualTypeArguments()[0]; Method method = entityClass.getMethod("inflate", LayoutInflater.class,ViewGroup.class,boolean.class);//get method from name "inflate"; @@ -52,6 +53,7 @@ } catch (Exception e) { e.printStackTrace(); } + //加载UI initViews(); return mBinding.getRoot(); } @@ -73,6 +75,9 @@ loadData(); } + /** + * 该方法内调用getActivity()为空,需要在loadData()中使用 + */ public abstract void initViews(); public abstract void loadData(); diff --git a/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseTabFragment.java b/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseTabFragment.java index bf6878f..7ab8f97 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseTabFragment.java +++ b/app/src/main/java/com/runt/open/mvvm/base/fragments/BaseTabFragment.java @@ -13,9 +13,12 @@ import java.util.List; /** - * 带有tablayout fragment封装 + * 带有tablayout fragment封装(带有viewpager的视图父类) + * 继承此类,有效优化代码13行 + * 项目中有过多含有viewpager的fragment可调用,其他情况下不建议使用,优化代码量不佳 * Created by Administrator on 2021/11/3 0003. */ +@Deprecated public abstract class BaseTabFragment<B extends ViewBinding,VM extends BaseViewModel> extends BaseFragment<B,VM> { TabLayout tabLayout; diff --git a/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java b/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java index 0b1855e..c32f594 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java +++ b/app/src/main/java/com/runt/open/mvvm/base/fragments/LoadPageFragment.java @@ -21,7 +21,9 @@ import java.util.Map; /** - * 分页fragment 封装 + * 含有上拉刷新的分页fragment + * 继承此类,有效优化代码60行 + * 试用于 有下拉刷新,上拉加载等分页需求的界面 * Created by Administrator on 2021/11/3 0003. */ public abstract class LoadPageFragment<VB extends ViewBinding,VM extends LoadPageViewModel,A extends BaseAdapter,RESULT> extends BaseFragment<VB,VM> implements OnRefreshLoadMoreListener { diff --git a/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java b/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java index fde9799..d799898 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java +++ b/app/src/main/java/com/runt/open/mvvm/base/model/BaseViewModel.java @@ -47,6 +47,9 @@ this.mActivity = activity; } + /** + * 获取用户信息 + */ public void getUserBean(){ httpObserverOn(commonApi.getUserBean(), new HttpObserver<UserBean>() { @Override @@ -112,6 +115,10 @@ } + /** + * 检查更新 + * @param showTip + */ public void checkUpdate(boolean showTip){ Observable<HttpApiResult<Results.ApkVersion>> appUpdate = commonApi.getAppUpdate(); HttpObserver<Results.ApkVersion> observer = new HttpObserver<Results.ApkVersion>(mActivity) { @@ -259,7 +266,7 @@ /** - * 网络请求观察 + * 网络请求观察(加载框) * @param observable * @param <T> * @return diff --git a/app/src/main/java/com/runt/open/mvvm/base/model/ItemViewModel.java b/app/src/main/java/com/runt/open/mvvm/base/model/ItemViewModel.java deleted file mode 100644 index ef2d908..0000000 --- a/app/src/main/java/com/runt/open/mvvm/base/model/ItemViewModel.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.runt.open.mvvm.base.model; - -import androidx.lifecycle.MutableLiveData; - -/** - * Created by Administrator on 2021/11/5 0005. - */ -public class ItemViewModel<T> extends BaseViewModel { - - MutableLiveData<T> liveData = new MutableLiveData<>(); - - public MutableLiveData<T> getLiveData() { - return liveData; - } -} diff --git a/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java b/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java index 1cdb1a1..1f7fc47 100644 --- a/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java +++ b/app/src/main/java/com/runt/open/mvvm/base/model/LoadPageViewModel.java @@ -29,9 +29,6 @@ /** * 数据请求 - */ - /** - * 数据请求 * @param page 页数 * @param param 请求参数 */ @@ -62,19 +59,6 @@ public MutableLiveData getLiveFailed() { return liveFailed; - } - - public class PageHttpObserver extends HttpObserver<PageResult<D>> { - @Override - protected void onSuccess(PageResult<D> data) { - liveData.postValue(data.rows); - } - - @Override - protected void onFailed(HttpApiResult httpResult) { - mActivity.showToast(httpResult.msg); - liveFailed.postValue(1); - } } } diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/AddHeadersInterceptor.java b/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/AddHeadersInterceptor.java new file mode 100644 index 0000000..66cd343 --- /dev/null +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/AddHeadersInterceptor.java @@ -0,0 +1,39 @@ +package com.runt.open.mvvm.retrofit.Interceptor; + + +import com.google.gson.Gson; +import com.runt.open.mvvm.MyApplication; +import com.runt.open.mvvm.data.PhoneDevice; +import com.runt.open.mvvm.ui.login.UserBean; +import com.runt.open.mvvm.util.DeviceUtil; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +/** + * My father is Object, ites purpose of 添加header拦截器 + * + * @purpose Created by Runt (qingingrunt2010@qq.com) on 2021-10-8. + */ +public class AddHeadersInterceptor implements Interceptor { + + @Override + public Response intercept(Chain chain) throws IOException { + return chain.proceed(addHeaders(chain.request())); + } + + protected Request addHeaders(Request request){ + Request.Builder requestBuild = request.newBuilder() + .addHeader("device", new Gson().toJson(PhoneDevice.getDevice())) + .addHeader("appVersion", DeviceUtil.getAppVersionName(MyApplication.getApplication())) + .addHeader("os", DeviceUtil.isHarmonyOS()? "harmony" : "android"); + if(UserBean.getUser() != null){ + requestBuild.addHeader("token", UserBean.getUser().getToken()); + } + return requestBuild.build().newBuilder().build(); + } + +} diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/EncryptInterceptor.java b/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/EncryptInterceptor.java deleted file mode 100644 index fdf7e30..0000000 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/EncryptInterceptor.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.runt.open.mvvm.retrofit.Interceptor; - - -import com.google.gson.Gson; -import com.runt.open.mvvm.retrofit.utils.RSAUtils; - -import org.json.JSONObject; - -import java.io.IOException; -import java.net.URLDecoder; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map; - -import okhttp3.FormBody; -import okhttp3.Headers; -import okhttp3.Interceptor; -import okhttp3.MediaType; -import okhttp3.MultipartBody; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okio.Buffer; - -/** - * My father is Object, ites purpose of 加密拦截器 - * - * @purpose Created by Runt (qingingrunt2010@qq.com) on 2021-10-8. - */ -public class EncryptInterceptor implements Interceptor { - - protected static final Charset UTF8 = Charset.forName("UTF-8"); - private final String ENCRYPT = "paramsString"; - - @Override - public Response intercept(Chain chain) throws IOException { - return chain.proceed(encryptRequest(chain.request())); - } - - - //加密 - protected Request encryptRequest(Request request) throws IOException { - Headers headers = request.headers(); - RequestBody requestBody = request.body(); - Request.Builder builder = request.newBuilder(); - for(int i = 0 ; i < headers.size() ; i ++){ - builder.addHeader(headers.name(i),headers.value(i)); - } - if(requestBody != null){ - Charset charset = UTF8; - MediaType contentType = requestBody.contentType(); - if (contentType != null) { - charset = contentType.charset(UTF8); - } - HashMap param = new HashMap(); - if(requestBody instanceof MultipartBody){ - MultipartBody body = (MultipartBody) requestBody; - for(MultipartBody.Part part:body.parts()){ - Buffer buffer1 = new Buffer(); - part.body().writeTo(buffer1); - String str=buffer1.readString(charset).replaceAll("%(?![0-9a-fA-F]{2})","%25"); - param.put(part.headers().get(part.headers().name(0)), URLDecoder.decode(str, "UTF-8")); - } - MultipartBody.Builder mbuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); - mbuilder.addFormDataPart(ENCRYPT,encryptParam(param)); - builder.post(mbuilder.build()); - }else if(requestBody instanceof FormBody){ - FormBody body = (FormBody) requestBody; - for(int i = 0 ; i < body.size() ; i ++ ){ - param.put(body.name(i),body.value(i)); - } - FormBody.Builder formBuild = new FormBody.Builder(); - formBuild.add(ENCRYPT,encryptParam(param)); - builder.post(formBuild.build()); - }else{ - Buffer buffer = new Buffer(); - requestBody.writeTo(buffer); - String str = buffer.readString(charset); - String encrypt = encryptJson(str); - param.put(ENCRYPT,encrypt); - builder.post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"), new JSONObject(param).toString())); - } - } - return builder.build(); - } - - - /** - * 加密传递的参数 - * @param params - * @return - */ - public static String encryptParam(Map<String, Object> params){ - return encryptJson(new JSONObject(params).toString()); - } - public static String encryptJson(String json){ - try { - //System.out.println("object:"+object); - Map signMap = new HashMap(); - //用客户端私钥加签 - signMap.put("sign",RSAUtils.sign(json,RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY))); - signMap.put("body",json); - //System.out.println("signMap:"+signMap); - //用服务端公钥加密 - return RSAUtils.encrypt(new Gson().toJson(signMap),RSAUtils.getPublicKey(RSAUtils.PUBLIC_KEY)); - }catch (Exception e){ - e.printStackTrace(); - return e.getMessage(); - } - } -} diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/HttpLoggingInterceptor.java b/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/HttpLoggingInterceptor.java index 59cb698..556ec33 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/HttpLoggingInterceptor.java +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/Interceptor/HttpLoggingInterceptor.java @@ -31,7 +31,7 @@ * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-10-21. */ -public class HttpLoggingInterceptor extends EncryptInterceptor { +public class HttpLoggingInterceptor extends AddHeadersInterceptor { final String TAG = "HttpLogging"; @@ -65,7 +65,6 @@ try { logArrays.addAll(getRequestLog(request)); int position = logArrays.size() +2; - //request = encryptRequest(request);//加密 response = chain.proceed(request); logArrays.addAll(getResponseLog(response)); NetWorkCost netWorkCost = NetWorkListenear.workCostMap.get(hashCode); @@ -109,6 +108,11 @@ return response; } + /** + * 请求数据信息 + * @param request + * @return + */ private ArrayList<String> getRequestLog(Request request) throws IOException, JSONException { RequestBody requestBody = request.body(); ArrayList<String> logArrays = new ArrayList<>(); @@ -175,7 +179,13 @@ } - + /** + * 返回的数据信息 + * @param response + * @return + * @throws IOException + * @throws JSONException + */ private ArrayList<String> getResponseLog(Response response) throws IOException, JSONException { ArrayList<String> logArrays = new ArrayList<>(); ResponseBody responseBody = response.body(); diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java b/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java index c27a0bf..3beabf5 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/api/CommonApiCenter.java @@ -6,19 +6,28 @@ import com.runt.open.mvvm.data.PageResult; import com.runt.open.mvvm.data.Results; import com.runt.open.mvvm.ui.login.UserBean; -import io.reactivex.Observable; -import okhttp3.MultipartBody; -import retrofit2.http.*; import java.util.List; import java.util.Map; + +import io.reactivex.Observable; +import okhttp3.MultipartBody; +import retrofit2.http.Field; +import retrofit2.http.FieldMap; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.Multipart; +import retrofit2.http.POST; +import retrofit2.http.Part; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; +import retrofit2.http.Url; /** * My father is Object, ites purpose of 常用接口 * * @purpose Created by Runt (qingingrunt2010@qq.com) on 2021-7-21. */ - public interface CommonApiCenter { @GET diff --git a/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java b/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java index 65e3440..61fc860 100644 --- a/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java +++ b/app/src/main/java/com/runt/open/mvvm/retrofit/utils/RetrofitUtils.java @@ -2,7 +2,7 @@ import com.runt.open.mvvm.BuildConfig; -import com.runt.open.mvvm.retrofit.Interceptor.EncryptInterceptor; +import com.runt.open.mvvm.retrofit.Interceptor.AddHeadersInterceptor; import com.runt.open.mvvm.retrofit.Interceptor.HttpLoggingInterceptor; import com.runt.open.mvvm.retrofit.api.CommonApiCenter; import com.runt.open.mvvm.retrofit.converter.GsonConverterFactory; @@ -29,7 +29,7 @@ CommonApiCenter commonApi;//常用接口 OkHttpClient.Builder builder = new OkHttpClient.Builder() - .addInterceptor(new EncryptInterceptor()); + .addInterceptor(new AddHeadersInterceptor()); OkHttpClient.Builder logBuilder = new OkHttpClient.Builder() .addInterceptor(new HttpLoggingInterceptor());//log打印拦截器 diff --git a/app/src/main/java/com/runt/open/mvvm/ui/adapter/CalendarAdapter.java b/app/src/main/java/com/runt/open/mvvm/ui/adapter/CalendarAdapter.java index 22722d8..3ab4918 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/adapter/CalendarAdapter.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/adapter/CalendarAdapter.java @@ -9,6 +9,7 @@ import java.util.List; /** + * 日历 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2019-3-26. */ public class CalendarAdapter extends BaseAdapter<Results.Mycalendar, ItemCalendarDayBinding> { diff --git a/app/src/main/java/com/runt/open/mvvm/ui/adapter/CoinTransAdapter.java b/app/src/main/java/com/runt/open/mvvm/ui/adapter/CoinTransAdapter.java index 14b970a..90f552f 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/adapter/CoinTransAdapter.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/adapter/CoinTransAdapter.java @@ -12,6 +12,7 @@ import com.runt.open.mvvm.util.HandleDate; /** + * 金币记录 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-10-29. */ public class CoinTransAdapter extends BaseAdapter<Results.CustomCoin, ItemCoinReportBinding> { diff --git a/app/src/main/java/com/runt/open/mvvm/ui/adapter/MsgAdapter.java b/app/src/main/java/com/runt/open/mvvm/ui/adapter/MsgAdapter.java index 55b2ca8..560cc0e 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/adapter/MsgAdapter.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/adapter/MsgAdapter.java @@ -10,11 +10,9 @@ import com.runt.open.mvvm.util.HandleDate; /** - * My father is Object, ites purpose of - * + * 资讯记录 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-8-21. */ - public class MsgAdapter extends BaseAdapter<Results.Message, ItemMsgBinding> { @Override diff --git a/app/src/main/java/com/runt/open/mvvm/ui/adapter/NumAdapter.java b/app/src/main/java/com/runt/open/mvvm/ui/adapter/NumAdapter.java index 785afd0..1824540 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/adapter/NumAdapter.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/adapter/NumAdapter.java @@ -6,6 +6,7 @@ import java.util.List; /** + * 数字键盘 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-10-30. */ public class NumAdapter extends BaseAdapter<String, ItemNumBinding> { diff --git a/app/src/main/java/com/runt/open/mvvm/ui/coin/CoinSettingActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/coin/CoinSettingActivity.java index 47f8eed..79e1066 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/coin/CoinSettingActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/coin/CoinSettingActivity.java @@ -45,7 +45,7 @@ showDialog("设置支付密码", "当前账号还没有设置支付密码", "设置", "取消", new ResPonse() { @Override public void doSuccess(Object obj) { - //startActivity(new Intent(mContext, PaypassActivity.class).putExtra("type", 1));//去设置密码 + startActivity(new Intent(mContext, PaypassActivity.class).putExtra("type", 1));//去设置密码 } }); } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/coin/WithDrawActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/coin/WithDrawActivity.java index 53d7523..1d731b7 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/coin/WithDrawActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/coin/WithDrawActivity.java @@ -13,6 +13,7 @@ import com.runt.open.mvvm.ui.paypass.PaypassActivity; /** + * 提现 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-10-30. */ public class WithDrawActivity extends BaseActivity<ActivityWithdrawBinding, CoinViewModel> { diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginDataSource.java b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginDataSource.java deleted file mode 100644 index 6b88fa8..0000000 --- a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginDataSource.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.runt.open.mvvm.ui.login; - -/** - * Created by Administrator on 2021/11/15 0015. - */ -public class LoginDataSource { -} diff --git a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java index dd5cd96..e285cde 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java @@ -24,7 +24,6 @@ loginApi = RetrofitUtils.getInstance().getRetrofit(LoginApiCenter.class); } - MutableLiveData<Results.StringApiResult> resetResult = new MutableLiveData<>(); MutableLiveData<Results.StringApiResult> registerResult = new MutableLiveData<>(); HttpObserver<UserBean> logginObserver; @@ -85,7 +84,7 @@ httpObserverOnLoading(loginApi.register(phone, sms, pass), new HttpObserver<Results.StringApiResult>(){ @Override protected void onSuccess(Results.StringApiResult data) { - resetResult.setValue(data); + registerResult.setValue(data); } }); } diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java b/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java index 70f50a9..7127d89 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/main/MainActivity.java @@ -14,6 +14,7 @@ import com.runt.open.mvvm.base.activities.BaseActivity; import com.runt.open.mvvm.base.adapter.FragmentAdapter; import com.runt.open.mvvm.base.fragments.BaseFragment; +import com.runt.open.mvvm.base.model.ImpViewModel; import com.runt.open.mvvm.data.PhoneDevice; import com.runt.open.mvvm.databinding.ActivityMainBinding; import com.runt.open.mvvm.listener.CustomClickListener; @@ -27,7 +28,7 @@ import java.util.Arrays; -public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> { +public class MainActivity extends BaseActivity<ActivityMainBinding, ImpViewModel> { private BaseFragment[] fragments = {new PageFragments.HomeFragment(),new ServiceFragment(),new MineFragment()} ; ActivityResultLauncher<Intent> loginLaunch = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { diff --git a/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java deleted file mode 100644 index d313fdd..0000000 --- a/app/src/main/java/com/runt/open/mvvm/ui/main/MainViewModel.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.runt.open.mvvm.ui.main; - -import com.runt.open.mvvm.base.model.BaseViewModel; - -/** - * My father is Object, ites purpose of - * - * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-9-17. - */ -public class MainViewModel extends BaseViewModel { -} diff --git a/app/src/main/java/com/runt/open/mvvm/ui/sign/SignInViewModel.java b/app/src/main/java/com/runt/open/mvvm/ui/sign/SignInViewModel.java index 405efe0..7c3603f 100644 --- a/app/src/main/java/com/runt/open/mvvm/ui/sign/SignInViewModel.java +++ b/app/src/main/java/com/runt/open/mvvm/ui/sign/SignInViewModel.java @@ -13,8 +13,6 @@ */ public class SignInViewModel extends BaseViewModel { - - public void signIn(HttpObserver<String> observer){ httpObserverOn(commonApi.signIn(),observer); } -- Gitblit v1.9.1