Procházet zdrojové kódy

2021年9月22日 提交

yanghuaxiong před 3 roky
rodič
revize
5399a96487
100 změnil soubory, kde provedl 7004 přidání a 141 odebrání
  1. binární
      Untitled
  2. 33 2
      app/build.gradle
  3. 18 0
      app/release/output-metadata.json
  4. 47 5
      app/src/main/AndroidManifest.xml
  5. binární
      app/src/main/ic_launcher-playstore.png
  6. 7 4
      app/src/main/java/com/tjzhxx/union/GroupFragment.java
  7. 85 18
      app/src/main/java/com/tjzhxx/union/HomeFragment.java
  8. 181 0
      app/src/main/java/com/tjzhxx/union/MainActivity.java
  9. 150 0
      app/src/main/java/com/tjzhxx/union/MyFragment.java
  10. 140 0
      app/src/main/java/com/tjzhxx/union/UnionFragment.java
  11. 34 0
      app/src/main/java/com/tjzhxx/union/WellcomActivity.java
  12. 292 0
      app/src/main/java/com/tjzhxx/union/activity/AuthenticationActivity.java
  13. 164 0
      app/src/main/java/com/tjzhxx/union/activity/DataEditeDbjzActivity.java
  14. 204 0
      app/src/main/java/com/tjzhxx/union/activity/DataEditeJtccActivity.java
  15. 209 0
      app/src/main/java/com/tjzhxx/union/activity/DataEditeWzzjActivity.java
  16. 136 0
      app/src/main/java/com/tjzhxx/union/activity/DataEditeXcjzActivity.java
  17. 204 0
      app/src/main/java/com/tjzhxx/union/activity/DataEditeYwsgActivity.java
  18. 295 0
      app/src/main/java/com/tjzhxx/union/activity/DataEditeZywwActivity.java
  19. 76 0
      app/src/main/java/com/tjzhxx/union/activity/HomeGuanaiActivity.java
  20. 154 0
      app/src/main/java/com/tjzhxx/union/activity/LoginActivity.java
  21. 220 0
      app/src/main/java/com/tjzhxx/union/activity/NewListActivity.java
  22. 88 0
      app/src/main/java/com/tjzhxx/union/activity/PayActivity.java
  23. 48 0
      app/src/main/java/com/tjzhxx/union/activity/PhotoPreviewActivity.java
  24. 149 0
      app/src/main/java/com/tjzhxx/union/activity/PolicyListActivity.java
  25. 52 0
      app/src/main/java/com/tjzhxx/union/activity/SetActivity.java
  26. 141 0
      app/src/main/java/com/tjzhxx/union/activity/SignatureSureActivity.java
  27. 4 4
      app/src/main/java/com/tjzhxx/union/adapter/NewAdapter.java
  28. 186 0
      app/src/main/java/com/tjzhxx/union/adapter/RescuestyleAdapter.java
  29. 1 1
      app/src/main/java/com/tjzhxx/union/custom_view/CusItemDecoration.java
  30. 2 2
      app/src/main/java/com/tjzhxx/union/custom_view/CustomDatePicker.java
  31. 2 2
      app/src/main/java/com/tjzhxx/union/custom_view/DatePickerView.java
  32. 352 0
      app/src/main/java/com/tjzhxx/union/custom_view/LinePathView.java
  33. 1 1
      app/src/main/java/com/tjzhxx/union/custom_view/NeverScrollGridView.java
  34. 1 1
      app/src/main/java/com/tjzhxx/union/custom_view/NeverScrollListView.java
  35. 186 0
      app/src/main/java/com/tjzhxx/union/custom_view/PhotoSelectLayout.java
  36. 2 2
      app/src/main/java/com/tjzhxx/union/custom_view/RatingBarView.java
  37. 2 2
      app/src/main/java/com/tjzhxx/union/custom_view/RoundImageView.java
  38. 80 0
      app/src/main/java/com/tjzhxx/union/dialog/DialogNoMemberDialog.java
  39. 3 3
      app/src/main/java/com/tjzhxx/union/dialog/SessionPromptDialog.java
  40. 98 0
      app/src/main/java/com/tjzhxx/union/entity/AuthenticationInfo.java
  41. 1 1
      app/src/main/java/com/tjzhxx/union/entity/BannerEntity.java
  42. 15 17
      app/src/main/java/com/tjzhxx/union/entity/BaseResponse.java
  43. 46 0
      app/src/main/java/com/tjzhxx/union/entity/BaseResponse2.java
  44. 31 0
      app/src/main/java/com/tjzhxx/union/entity/Doclist.java
  45. 116 0
      app/src/main/java/com/tjzhxx/union/entity/Faceid.java
  46. 1 1
      app/src/main/java/com/tjzhxx/union/entity/NewBean.java
  47. 94 0
      app/src/main/java/com/tjzhxx/union/entity/Rescuestyle.java
  48. 77 0
      app/src/main/java/com/tjzhxx/union/entity/Resucekey.java
  49. 64 0
      app/src/main/java/com/tjzhxx/union/entity/UserInfo.java
  50. 1 1
      app/src/main/java/com/tjzhxx/union/entity/request/BaseRequest.java
  51. 30 0
      app/src/main/java/com/tjzhxx/union/entity/request/DataDbqzPhotoRequest.java
  52. 58 0
      app/src/main/java/com/tjzhxx/union/entity/request/DataDbqzRequest.java
  53. 50 0
      app/src/main/java/com/tjzhxx/union/entity/request/DataXcjzRequest.java
  54. 57 0
      app/src/main/java/com/tjzhxx/union/entity/request/DataZywwRequest.java
  55. 32 0
      app/src/main/java/com/tjzhxx/union/entity/request/FaceidRequest.java
  56. 22 0
      app/src/main/java/com/tjzhxx/union/entity/request/GetPayInfoRequest.java
  57. 22 0
      app/src/main/java/com/tjzhxx/union/entity/request/IsRepeatRequest.java
  58. 1 1
      app/src/main/java/com/tjzhxx/union/entity/request/NewListRequest.java
  59. 1 1
      app/src/main/java/com/tjzhxx/union/entity/request/Request.java
  60. 15 0
      app/src/main/java/com/tjzhxx/union/entity/request/RescuestyleRequest.java
  61. 22 0
      app/src/main/java/com/tjzhxx/union/entity/request/SmsCodeRequest.java
  62. 30 0
      app/src/main/java/com/tjzhxx/union/entity/request/SmsLoginRequest.java
  63. 230 0
      app/src/main/java/com/tjzhxx/union/entity/request/SubnewworkerRequest.java
  64. 90 0
      app/src/main/java/com/tjzhxx/union/entity/request/WxPayReq.java
  65. 131 0
      app/src/main/java/com/tjzhxx/union/fragment/ActivityListFragment.java
  66. 32 29
      app/src/main/java/com/tjzhxx/union/fragment/NewListFragment.java
  67. 63 0
      app/src/main/java/com/tjzhxx/union/permission/PermissionHelper.java
  68. 29 0
      app/src/main/java/com/tjzhxx/union/permission/PermissionInterface.java
  69. 69 0
      app/src/main/java/com/tjzhxx/union/permission/PermissionUtil.java
  70. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/AppDataFile.java
  71. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/AppInfoUitl.java
  72. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/BasePreferences.java
  73. 2 2
      app/src/main/java/com/tjzhxx/union/public_store/CacheUtils.java
  74. 17 0
      app/src/main/java/com/tjzhxx/union/public_store/ConstDefine.java
  75. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/CrashHandler.java
  76. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/Des3Util.java
  77. 117 0
      app/src/main/java/com/tjzhxx/union/public_store/DownloadThread.java
  78. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/FNNetwork.java
  79. 525 0
      app/src/main/java/com/tjzhxx/union/public_store/FileUtils.java
  80. 100 0
      app/src/main/java/com/tjzhxx/union/public_store/GlideEngine.java
  81. 483 0
      app/src/main/java/com/tjzhxx/union/public_store/ImageUtils.java
  82. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/LogUtils.java
  83. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/MyAppGlideModule.java
  84. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/PhoneFormatCheckUtils.java
  85. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/PropertyTypeUtil.java
  86. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/RootUtil.java
  87. 23 1
      app/src/main/java/com/tjzhxx/union/public_store/ScreenUtils.java
  88. 39 5
      app/src/main/java/com/tjzhxx/union/public_store/SpUtils.java
  89. 85 4
      app/src/main/java/com/tjzhxx/union/public_store/TimeUtil.java
  90. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/UtilSD.java
  91. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentPager.java
  92. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentPagerAdapter.java
  93. 2 2
      app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentTab.java
  94. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentVisitor.java
  95. 3 2
      app/src/main/java/com/tjzhxx/union/public_store/retrofit/RetrofitUtils.java
  96. 103 0
      app/src/main/java/com/tjzhxx/union/public_store/retrofit/UnionServices.java
  97. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/rx/ApiThrowableExceptionFunc.java
  98. 10 9
      app/src/main/java/com/tjzhxx/union/public_store/rx/DefaultSubscriber.java
  99. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/rx/ExceptionHandle.java
  100. 1 1
      app/src/main/java/com/tjzhxx/union/public_store/rx/NetWorkErrorException.java

binární
Untitled


+ 33 - 2
app/build.gradle

@@ -6,21 +6,38 @@ android {
     compileSdkVersion 30
     buildToolsVersion "30.0.3"
     defaultConfig {
-        applicationId "com.yhx.union"
+        applicationId "com.tjzhxx.union"
         minSdkVersion 19
         targetSdkVersion 30
         versionCode 1
         versionName "1.0"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        //dex分包属性设置
+        multiDexEnabled true
+    }
+    /*签名信息*/
+    signingConfigs {
+        sign {
+            storeFile file('/Users/yanghuaxiong/AndroidStudioProjects/git/workers_union/Untitled')
+            storePassword "111111"
+            keyAlias "key0"
+            keyPassword "111111"
+        }
     }
-
     buildTypes {
         release {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
+        debug {
+            minifyEnabled false
+            signingConfig signingConfigs.sign
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
     }
+
+
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
@@ -63,4 +80,18 @@ dependencies {
     implementation 'cn.bingoogolapple:bga-banner:2.1.7@aar'
     //gson
     implementation 'com.google.code.gson:gson:2.8.0'
+    /*高德地图*/
+    //3D地图so及jar
+    implementation 'com.amap.api:3dmap:latest.integration'
+    //定位功能
+    implementation 'com.amap.api:location:latest.integration'
+    //dex分包引用
+    implementation 'com.android.support:multidex:1.0.1'
+    implementation project(':easyPhotos')
+
+    //图片工具
+    implementation 'com.github.chrisbanes:PhotoView:2.3.0'
+    //微信支付
+    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
+
 }

+ 18 - 0
app/release/output-metadata.json

@@ -0,0 +1,18 @@
+{
+  "version": 2,
+  "artifactType": {
+    "type": "APK",
+    "kind": "Directory"
+  },
+  "applicationId": "com.tjzhxx.union",
+  "variantName": "processReleaseResources",
+  "elements": [
+    {
+      "type": "SINGLE",
+      "filters": [],
+      "versionCode": 1,
+      "versionName": "1.0",
+      "outputFile": "app-release.apk"
+    }
+  ]
+}

+ 47 - 5
app/src/main/AndroidManifest.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yhx.union">
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.tjzhxx.union">
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -12,7 +13,11 @@
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.FLASHLIGHT" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <!--定位权限-->
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
     <application
+        android:name=".system.MyApplication"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -20,18 +25,55 @@
         android:requestLegacyExternalStorage="true"
         android:roundIcon="@mipmap/ic_launcher"
         android:supportsRtl="true"
-        android:usesCleartextTraffic="true"
-        android:name=".system.MyApplication"
-        android:theme="@style/AppTheme">
-        <activity android:name=".MainActivity">
+        android:theme="@style/AppTheme"
+        android:usesCleartextTraffic="true">
+        <activity android:name=".WellcomActivity"
+            android:theme="@style/SplashTheme"
+            >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".MainActivity" />
         <activity android:name=".system.WebviewActivity" />
         <activity android:name=".activity.NewListActivity" />
+        <activity android:name=".activity.SignatureSureActivity" />
+        <activity android:name=".activity.AuthenticationActivity" />
+        <activity android:name=".activity.LoginActivity" />
+        <activity android:name=".activity.PhotoPreviewActivity" />
+        <activity android:name=".activity.DataEditeXcjzActivity" />
+        <activity android:name=".activity.DataEditeZywwActivity" />
+        <activity android:name=".activity.DataEditeWzzjActivity" />
+        <activity android:name=".activity.DataEditeJtccActivity" />
+        <activity android:name=".activity.DataEditeYwsgActivity" />
+        <activity android:name=".activity.DataEditeDbjzActivity" />
+        <activity android:name=".activity.PayActivity" />
+        <activity android:name=".activity.SetActivity" />
+        <activity android:name=".activity.HomeGuanaiActivity" />
+        <activity android:name=".activity.PolicyListActivity" />
+        <provider
+            android:name="androidx.core.content.FileProvider"
+            android:authorities="com.tjzhxx.union.FileProvider"
+            android:exported="false"
+            android:grantUriPermissions="true"
+            tools:replace="android:authorities">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                tools:replace="android:resource"
+                android:resource="@xml/provider_paths" />
+        </provider>
+        <!-- wx pay begin -->
+        <activity
+            android:name=".wxapi.WXPayEntryActivity"
+            android:exported="true"
+            android:launchMode="singleTop" />
+        <!-- wx pay end -->
+        <!-- 设置key -->
+        <meta-data
+            android:name="com.amap.api.v2.apikey"
+            android:value="4ab5367cc330bb659dd96c523a271a7b" />
     </application>
 
 </manifest>

binární
app/src/main/ic_launcher-playstore.png


+ 7 - 4
app/src/main/java/com/yhx/union/GroupFragment.java → app/src/main/java/com/tjzhxx/union/GroupFragment.java

@@ -1,21 +1,25 @@
-package com.yhx.union;
+package com.tjzhxx.union;
 
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.yhx.union.system.BaseFragment;
+import com.tjzhxx.union.system.BaseFragment;
+
 import butterknife.ButterKnife;
 import io.reactivex.annotations.Nullable;
+
 /**
  * 描述:
+ *
  * @author yanghuaxiong
  * @create 2021/9/1 11:44 AM
- *
  */
 
 public class GroupFragment extends BaseFragment {
+
+
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -29,7 +33,6 @@ public class GroupFragment extends BaseFragment {
         ButterKnife.bind(this, view);
 
 
-
         return view;
     }
 

+ 85 - 18
app/src/main/java/com/yhx/union/HomeFragment.java → app/src/main/java/com/tjzhxx/union/HomeFragment.java

@@ -1,4 +1,4 @@
-package com.yhx.union;
+package com.tjzhxx.union;
 
 import android.content.Intent;
 import android.os.Bundle;
@@ -14,20 +14,23 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.tjzhxx.union.activity.HomeGuanaiActivity;
+import com.tjzhxx.union.activity.NewListActivity;
+import com.tjzhxx.union.activity.PayActivity;
+import com.tjzhxx.union.activity.PolicyListActivity;
+import com.tjzhxx.union.adapter.NewAdapter;
+import com.tjzhxx.union.entity.BannerEntity;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.NewBean;
+import com.tjzhxx.union.entity.request.NewListRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.system.BaseFragment;
+import com.tjzhxx.union.system.WebviewActivity;
 import com.uber.autodispose.AutoDispose;
 import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
-import com.yhx.union.activity.NewListActivity;
-import com.yhx.union.adapter.NewAdapter;
-import com.yhx.union.entity.BannerEntity;
-import com.yhx.union.entity.BaseResponse;
-import com.yhx.union.entity.NewBean;
-import com.yhx.union.entity.request.NewListRequest;
-import com.yhx.union.public_store.ConstDefine;
-import com.yhx.union.public_store.retrofit.RetrofitUtils;
-import com.yhx.union.public_store.retrofit.UnionServices;
-import com.yhx.union.public_store.rx.DefaultSubscriber;
-import com.yhx.union.system.BaseFragment;
-import com.yhx.union.system.WebviewActivity;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -73,7 +76,7 @@ public class HomeFragment extends BaseFragment {
         return view;
     }
 
-    private void init(){
+    private void init() {
         services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
         bgaBanner.setAdapter(new BGABanner.Adapter<ImageView, String>() {
             @Override
@@ -118,6 +121,7 @@ public class HomeFragment extends BaseFragment {
         getBanners();
         querynewlist();
     }
+
     @OnClick({R.id.function01, R.id.function02, R.id.function03, R.id.function04, R.id.function05, R.id.function06, R.id.function07, R.id.function08})
     public void onClick(View view) {
         Intent intent = new Intent();
@@ -127,18 +131,82 @@ public class HomeFragment extends BaseFragment {
                 startActivity(intent);
                 break;
             case R.id.function02:
+                if (ConstDefine.userInfo != null) {
+                    if (ConstDefine.userInfo.getIsactive().equals("1")) {
+                        showSnackBar("你已是会员");
+                    } else {
+                        showSnackBar("请先缴费");
+                    }
+                } else {
+                    if (TextUtils.isEmpty(ConstDefine.city)){
+                        showSnackBar("请先授权获取位置信息");
+                        return;
+                    }else if (!ConstDefine.city.contains("天津")){
+                        showSnackBar("你不是天津人");
+                        return;
+                    }
+                    intent.setClass(getActivity(), WebviewActivity.class);
+                    intent.putExtra("url", ConstDefine.HttpAdressH5 + "/index.html#/guidepage");
+                    intent.putExtra("title", "会员入会");
+                    startActivity(intent);
+                }
                 break;
             case R.id.function03:
+                if (ConstDefine.userInfo != null) {
+                    if (ConstDefine.userInfo.getIsactive().equals("1")) {
+                        showSnackBar("你已是会员");
+                    } else {
+                        intent.setClass(getActivity(), PayActivity.class);
+                        startActivity(intent);
+                    }
+                } else {
+                    showSnackBar("请先登录");
+                }
                 break;
             case R.id.function04:
+                if (ConstDefine.userInfo != null) {
+                    if (ConstDefine.userInfo.getIsactive().equals("1")) {
+                        intent.setClass(getActivity(), HomeGuanaiActivity.class);
+                        startActivity(intent);
+                    } else {
+                        intent.setClass(getActivity(), PayActivity.class);
+                        startActivity(intent);
+                    }
+                } else {
+                    showSnackBar("请先登录");
+                }
                 break;
             case R.id.function05:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/sportList?type=jnpx");
+                intent.putExtra("title", "技能培训");
+                intent.putExtra("UserInfo",ConstDefine.userInfo);
+                startActivity(intent);
                 break;
             case R.id.function06:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/sportList?type=wthd");
+                intent.putExtra("title", "文体活动");
+                intent.putExtra("UserInfo",ConstDefine.userInfo);
+                startActivity(intent);
                 break;
             case R.id.function07:
+                intent.setClass(getActivity(), PolicyListActivity.class);
+                startActivity(intent);
                 break;
             case R.id.function08:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/legalAid");
+                intent.putExtra("title", "法律援助");
+                startActivity(intent);
                 break;
         }
     }
@@ -147,7 +215,6 @@ public class HomeFragment extends BaseFragment {
      * 加载广告
      */
     private void getBanners() {
-        //4-主页广告 5-餐饮广告,6-医疗广告,7-出行广告,8-物业广告
         services.querytitlelist()
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -155,11 +222,11 @@ public class HomeFragment extends BaseFragment {
                 .subscribe(new DefaultSubscriber<BaseResponse<List<BannerEntity>>>(getActivity()) {
                     @Override
                     public void success(BaseResponse<List<BannerEntity>> value) {
-                        bannerEntities = value.getResultData();
+                        bannerEntities = value.getData();
                         List<String> urls = new ArrayList<>();
                         List<String> titles = new ArrayList<>();
-                        if (value.getResultData() != null) {
-                            for (BannerEntity entity : value.getResultData()) {
+                        if (value.getData() != null) {
+                            for (BannerEntity entity : value.getData()) {
                                 if (!TextUtils.isEmpty(entity.getPicurl())) {
                                     urls.add(entity.getPicurl());
                                     titles.add(entity.getWxtitle());

+ 181 - 0
app/src/main/java/com/tjzhxx/union/MainActivity.java

@@ -0,0 +1,181 @@
+package com.tjzhxx.union;
+
+import android.Manifest;
+import android.os.Bundle;
+import android.view.KeyEvent;
+import android.widget.FrameLayout;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+import com.amap.api.location.AMapLocation;
+import com.amap.api.location.AMapLocationClient;
+import com.amap.api.location.AMapLocationClientOption;
+import com.amap.api.location.AMapLocationListener;
+import com.tjzhxx.union.permission.PermissionHelper;
+import com.tjzhxx.union.permission.PermissionInterface;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.LogUtils;
+import com.tjzhxx.union.public_store.SpUtils;
+import com.tjzhxx.union.public_store.fragment.FragmentTab;
+import com.tjzhxx.union.public_store.fragment.FragmentVisitor;
+import com.tjzhxx.union.system.BaseActivity;
+
+import butterknife.BindView;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2021/9/1 11:43 AM
+ */
+public class MainActivity extends BaseActivity implements FragmentVisitor.FragmentVisitorListener, PermissionInterface {
+
+    @BindView(R.id.fragment_continer)
+    FrameLayout fragmentContiner;
+    @BindView(R.id.mt_home)
+    FragmentTab mtHome;
+    @BindView(R.id.mt_union)
+    FragmentTab mtUnion;
+    @BindView(R.id.mt_group)
+    FragmentTab mtGroup;
+    @BindView(R.id.mt_personal)
+    FragmentTab mtPersonal;
+    public FragmentVisitor fragmentVisitor;
+    public int currIndex = 0;
+    private FragmentTab[] majorTabs;
+    private Class<? extends Fragment>[] fragments;
+    private long exit_time;
+    private PermissionHelper mPermissionHelper;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_main;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        init();
+    }
+
+    private void init() {
+        mPermissionHelper = new PermissionHelper(this, this);
+        ConstDefine.userInfo = SpUtils.getUserInfo(this);
+        fragmentContiner.removeAllViews();
+        fragmentVisitor = new FragmentVisitor();
+        majorTabs = new FragmentTab[]{mtHome, mtUnion, mtGroup, mtPersonal};
+        fragments = new Class[]{HomeFragment.class, UnionFragment.class, GroupFragment.class, MyFragment.class};
+        fragmentVisitor.init(getSupportFragmentManager(), this)
+                .setFragmentContiner(R.id.fragment_continer)
+                .setTabAndFragmentData(majorTabs, fragments);
+        fragmentVisitor.setCurrentItem(0);
+        mPermissionHelper.requestPermissions();
+    }
+
+    @Override
+    public void onItemChanged(int oldItem, int newItem, String tabDiscription) {
+        currIndex = newItem;
+    }
+
+    @Override
+    public boolean boforeItemChangedItemEnable(int currentItem, int newItem) {
+
+        return true;
+    }
+
+    @Override
+    public void controlItemEnable(boolean enable) {
+
+    }
+
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {// 是后退键
+            long temp = System.currentTimeMillis();
+            if (temp - exit_time <= 3000) {
+                finish(); // 主界面退出
+            } else {
+                exit_time = temp;
+                showSnackBar("再按一次退出程序");
+            }
+            return true;
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+
+    public void startLocaion() {
+        AMapLocationClient mLocationClient = new AMapLocationClient(this);
+        mLocationClient.setLocationListener(mLocationListener);
+        AMapLocationClientOption mLocationOption = new AMapLocationClientOption();
+        //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
+        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
+        //设置是否返回地址信息(默认返回地址信息)
+        mLocationOption.setNeedAddress(true);
+        //获取一次定位结果:
+        //该方法默认为false。
+        mLocationOption.setOnceLocation(true);
+        //设置是否允许模拟位置,默认为false,不允许模拟位置
+        mLocationOption.setMockEnable(false);
+
+        //给定位客户端对象设置定位参数
+        mLocationClient.setLocationOption(mLocationOption);
+        //启动定位
+        mLocationClient.startLocation();
+
+    }
+
+    public AMapLocationListener mLocationListener = new AMapLocationListener() {
+        @Override
+        public void onLocationChanged(AMapLocation amapLocation) {
+            if (amapLocation != null) {
+                if (amapLocation.getErrorCode() == 0) {
+                    //定位成功回调信息,设置相关消息
+                    ConstDefine.city = amapLocation.getCity();
+                    ConstDefine.district = amapLocation.getDistrict();
+                    LogUtils.e("TAG", ConstDefine.city + ConstDefine.district);
+                } else {
+                    //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
+                    LogUtils.e("AmapError", "location Error, ErrCode:"
+                            + amapLocation.getErrorCode() + ", errInfo:"
+                            + amapLocation.getErrorInfo());
+                }
+            }
+        }
+    };
+
+    @Override
+    public int getPermissionsRequestCode() {
+        return 999;
+    }
+
+    @Override
+    public String[] getPermissions() {
+        return new String[]{
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.CAMERA,
+                Manifest.permission.ACCESS_FINE_LOCATION
+        };
+    }
+
+    @Override
+    public void requestPermissionsSuccess() {
+        startLocaion();
+    }
+
+    @Override
+    public void requestPermissionsFail() {
+        showSnackBar("权限被拒绝");
+    }
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
+                                           @NonNull int[]
+                                                   grantResults) {
+        if (mPermissionHelper.requestPermissionsResult(requestCode, permissions, grantResults)) {
+            //权限请求结果,并已经处理了该回调
+            return;
+        }
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+    }
+}

+ 150 - 0
app/src/main/java/com/tjzhxx/union/MyFragment.java

@@ -0,0 +1,150 @@
+package com.tjzhxx.union;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.tjzhxx.union.activity.LoginActivity;
+import com.tjzhxx.union.activity.SetActivity;
+import com.tjzhxx.union.entity.UserInfo;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.system.BaseFragment;
+import com.tjzhxx.union.system.WebviewActivity;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import io.reactivex.annotations.Nullable;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2021/9/1 11:44 AM
+ */
+
+public class MyFragment extends BaseFragment {
+    @BindView(R.id.avator)
+    ImageView avator;
+    @BindView(R.id.name)
+    TextView name;
+    @BindView(R.id.image_member)
+    ImageView imageMember;
+    @BindView(R.id.image_member2)
+    ImageView imageMember2;
+    private UserInfo userInfo;
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        setHasOptionsMenu(true);
+        View view = inflater.inflate(R.layout.fragment_my, container, false);
+        ButterKnife.bind(this, view);
+        return view;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        userInfo = ConstDefine.userInfo;
+        if (userInfo != null){
+            name.setText(ConstDefine.userInfo.getWname());
+            if (userInfo.getIsactive().equals("1")) {
+                imageMember.setVisibility(View.VISIBLE);
+            }else {
+                imageMember.setVisibility(View.GONE);
+            }
+        }else {
+            name.setText("点击登录/注册");
+            imageMember.setVisibility(View.GONE);
+        }
+    }
+
+    @OnClick({R.id.image_member, R.id.image_member2, R.id.set, R.id.personal, R.id.jz, R.id.px, R.id.js, R.id.wt, R.id.fl})
+    public void onClick(View view) {
+        Intent intent = new Intent();
+        switch (view.getId()) {
+            case R.id.image_member:
+                imageMember.setVisibility(View.GONE);
+                imageMember2.setVisibility(View.VISIBLE);
+                break;
+            case R.id.image_member2:
+                imageMember.setVisibility(View.VISIBLE);
+                imageMember2.setVisibility(View.GONE);
+                break;
+            case R.id.set:
+                intent.setClass(getActivity(), SetActivity.class);
+                startActivity(intent);
+                break;
+            case R.id.personal:
+                if (userInfo == null){
+                    intent.setClass(getActivity(), LoginActivity.class);
+                    startActivity(intent);
+                }
+                break;
+            case R.id.jz:
+                if (userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/userrescuelist");
+                intent.putExtra("title", "我的救助");
+                intent.putExtra("UserInfo",userInfo);
+                startActivity(intent);
+                break;
+            case R.id.px:
+                if (userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/usertrainlist?type=jnpx");
+                intent.putExtra("title", "我的培训");
+                intent.putExtra("UserInfo",userInfo);
+                startActivity(intent);
+                break;
+            case R.id.js:
+                if (userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/usertrainlist?type=ldjs");
+                intent.putExtra("title", "我的竞赛");
+                intent.putExtra("UserInfo",userInfo);
+                startActivity(intent);
+                break;
+            case R.id.wt:
+                if (userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/usertrainlist?type=wthd");
+                intent.putExtra("title", "我的文体活动");
+                intent.putExtra("UserInfo",userInfo);
+                startActivity(intent);
+                break;
+            case R.id.fl:
+                if (userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/usertrainlist?type=flyz");
+                intent.putExtra("title", "我的法律援助");
+                intent.putExtra("UserInfo",userInfo);
+                startActivity(intent);
+                break;
+        }
+    }
+}

+ 140 - 0
app/src/main/java/com/tjzhxx/union/UnionFragment.java

@@ -0,0 +1,140 @@
+package com.tjzhxx.union;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.tjzhxx.union.activity.PolicyListActivity;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.system.BaseFragment;
+import com.tjzhxx.union.system.WebviewActivity;
+
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import io.reactivex.annotations.Nullable;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2021/9/1 11:44 AM
+ */
+public class UnionFragment extends BaseFragment {
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        setHasOptionsMenu(true);
+        View view = inflater.inflate(R.layout.fragment_union, container, false);
+        ButterKnife.bind(this, view);
+        return view;
+    }
+
+
+    @OnClick({R.id.union01, R.id.union02, R.id.union03, R.id.union04, R.id.union05, R.id.union06, R.id.union07, R.id.union08, R.id.union09, R.id.union10, R.id.union11, R.id.union12})
+    public void onClick(View view) {
+        Intent intent = new Intent();
+        switch (view.getId()) {
+            case R.id.union01:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=1");
+                intent.putExtra("title", "职工现场救助");
+                startActivity(intent);
+                break;
+            case R.id.union02:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=2");
+                intent.putExtra("title", "住院慰问资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union03:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=3");
+                intent.putExtra("title", "大病救助资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union04:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=4");
+                intent.putExtra("title", "五种重疾资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union05:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=6");
+                intent.putExtra("title", "家庭财产损失资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union06:
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=5");
+                intent.putExtra("title", "意外事故资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union07:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/sportList?type=jnpx");
+                intent.putExtra("title", "技能培训");
+                intent.putExtra("UserInfo",ConstDefine.userInfo);
+                startActivity(intent);
+                break;
+            case R.id.union08:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/trainonlinelist");
+                intent.putExtra("title", "线上培训");
+                startActivity(intent);
+                break;
+            case R.id.union09:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/sportList?type=ldjs");
+                intent.putExtra("title", "技能大赛");
+                intent.putExtra("UserInfo",ConstDefine.userInfo);
+                startActivity(intent);
+                break;
+            case R.id.union10:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/sportList?type=wthd");
+                intent.putExtra("title", "文体活动");
+                intent.putExtra("UserInfo",ConstDefine.userInfo);
+                startActivity(intent);
+                break;
+            case R.id.union11:
+                intent.setClass(getActivity(), PolicyListActivity.class);
+                startActivity(intent);
+                break;
+            case R.id.union12:
+                if (ConstDefine.userInfo == null){
+                    showSnackBar("请先登录");
+                    return;
+                }
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/legalAid");
+                intent.putExtra("title", "法律援助");
+                intent.putExtra("UserInfo",ConstDefine.userInfo);
+                startActivity(intent);
+                break;
+        }
+    }
+}

+ 34 - 0
app/src/main/java/com/tjzhxx/union/WellcomActivity.java

@@ -0,0 +1,34 @@
+package com.tjzhxx.union;
+
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.tjzhxx.union.system.BaseActivity;
+
+import butterknife.OnClick;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/11  9:32 PM
+ */
+public class WellcomActivity extends BaseActivity {
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_wellcom;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+
+    }
+
+
+    @OnClick(R.id.into)
+    public void onClick() {
+        Intent intent = new Intent(this,MainActivity.class);
+        startActivity(intent);
+        finish();
+    }
+}

+ 292 - 0
app/src/main/java/com/tjzhxx/union/activity/AuthenticationActivity.java

@@ -0,0 +1,292 @@
+package com.tjzhxx.union.activity;
+
+import android.Manifest;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.Lifecycle;
+
+import com.bumptech.glide.Glide;
+import com.huantansheng.easyphotos.EasyPhotos;
+import com.huantansheng.easyphotos.callback.SelectCallback;
+import com.huantansheng.easyphotos.models.album.entity.Photo;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.entity.AuthenticationInfo;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Faceid;
+import com.tjzhxx.union.entity.UserInfo;
+import com.tjzhxx.union.entity.request.FaceidRequest;
+import com.tjzhxx.union.entity.request.IsRepeatRequest;
+import com.tjzhxx.union.permission.PermissionHelper;
+import com.tjzhxx.union.permission.PermissionInterface;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.FileUtils;
+import com.tjzhxx.union.public_store.GlideEngine;
+import com.tjzhxx.union.public_store.ImageUtils;
+import com.tjzhxx.union.public_store.SpUtils;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.system.WebviewActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/2  8:57 AM
+ */
+public class AuthenticationActivity extends BaseActivity implements PermissionInterface {
+
+
+    @BindView(R.id.name)
+    TextView name;
+    @BindView(R.id.sex)
+    TextView sex;
+    @BindView(R.id.national)
+    TextView national;
+    @BindView(R.id.idcard)
+    TextView idcard;
+    @BindView(R.id.positive)
+    ImageView positive;
+    @BindView(R.id.reverse)
+    ImageView reverse;
+    private UnionServices services;
+    private PermissionHelper mPermissionHelper;
+    private Boolean isPositive = true;
+    private AuthenticationInfo info;
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_authentication;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("实名认证");
+        info = new AuthenticationInfo();
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        mPermissionHelper = new PermissionHelper(this, this);
+    }
+
+
+    @OnClick({R.id.positive, R.id.positive_close, R.id.reverse, R.id.reverse_close, R.id.next})
+    public void onClick(View view) {
+        Intent intent = new Intent();
+        switch (view.getId()) {
+            case R.id.positive:
+                isPositive = true;
+                mPermissionHelper.requestPermissions();
+                break;
+            case R.id.positive_close:
+
+                break;
+            case R.id.reverse:
+                isPositive = false;
+                mPermissionHelper.requestPermissions();
+                break;
+            case R.id.reverse_close:
+                break;
+            case R.id.next:
+                if (TextUtils.isEmpty(info.getFrontsfzurl())){
+                    showSnackBar("请上传正确的身份证正面");
+                    return;
+                }else  if (TextUtils.isEmpty(info.getBacksfzurl())){
+                    showSnackBar("请上传正确的身份证反面");
+                    return;
+                }
+                querysfzrepeatfromapp(info.getSfzid());
+                break;
+        }
+    }
+
+    //上传图片
+    private void uploadImage(String path) {
+        File file = new File(path);
+        RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+        MultipartBody.Part imageBodyPart = MultipartBody.Part.createFormData("file", file.getName(), imageBody);
+        services.uploadImage(imageBodyPart)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<String>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<String>>(this) {
+                    @Override
+                    public void success(BaseResponse<String> value) {
+                        faceid(value.getData());
+                    }
+
+                });
+    }
+
+    //获取身份证信息
+    private void faceid(String imgurl) {
+        FaceidRequest request = new FaceidRequest();
+        request.setImgurl(imgurl);
+        if (isPositive) {
+            request.setCardSide("FRONT");
+        }else {
+            request.setCardSide("BACK");
+        }
+        services.faceid(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<Faceid>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse<Faceid>>(this) {
+                    @Override
+                    public void success(BaseResponse<Faceid> value) {
+                        if (value.getData() != null){
+                            Faceid faceid = value.getData();
+                            if (isPositive) {
+                                name.setText(faceid.getName());
+                                sex.setText(faceid.getSex());
+                                national.setText(faceid.getNation());
+                                idcard.setText(faceid.getIdNum());
+                                info.setWname(faceid.getName());
+                                info.setAddress(faceid.getAddress());
+                                info.setFrontsfzurl(imgurl);
+                                info.setGender(faceid.getSex());
+                                info.setNation(faceid.getNation());
+                                info.setSfzid(faceid.getIdNum());
+                            }else {
+                                info.setBacksfzurl(imgurl);
+                                info.setSfzenddate(faceid.getValidDate());
+                            }
+                        }else {
+                            showSnackBar(value.getMsg());
+                        }
+                    }
+                });
+    }
+
+    //查询身份证是否重复
+    private void querysfzrepeatfromapp(String idNum) {
+        IsRepeatRequest request = new IsRepeatRequest();
+        request.setSfzid(idNum);
+        services.querysfzrepeatfromapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<UserInfo>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse<UserInfo>>(this) {
+                    @Override
+                    public void success(BaseResponse<UserInfo> value) {
+                        if (value.getData() ==  null){
+                            Intent intent = new Intent();
+                            intent.setClass(AuthenticationActivity.this, WebviewActivity.class);
+                            intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/memberFrom");
+                            intent.putExtra("title", "填写资料");
+                            intent.putExtra("AuthenticationInfo",info);
+                            startActivity(intent);
+                            finish();
+                        }else {
+                            ConstDefine.userInfo = value.getData();
+                            SpUtils.putUserInfo(AuthenticationActivity.this, value.getData());
+                            if (value.getData().getIsactive().equals("1")) {
+                                showSnackBar("身份证重复,不能继续申请");
+                            }else {
+                                Intent intent = new Intent();
+                                intent.setClass(AuthenticationActivity.this, PayActivity.class);
+                                startActivity(intent);
+                                finish();
+                            }
+                        }
+                    }
+                });
+    }
+    @Override
+    public int getPermissionsRequestCode() {
+        return 999;
+    }
+
+    @Override
+    public String[] getPermissions() {
+        return new String[]{
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.CAMERA
+        };
+    }
+
+    @Override
+    public void requestPermissionsSuccess() {
+        EasyPhotos.createAlbum(this, true, false, GlideEngine.getInstance())
+                .setFileProviderAuthority("com.tjzhxx.union.FileProvider")
+                .setCount(1)
+                .setPuzzleMenu(false)
+                .setCleanMenu(false)
+                .start(new SelectCallback() {
+                    @Override
+                    public void onResult(ArrayList<Photo> photos, boolean isOriginal) {
+                        if (isPositive) {
+                            Glide.with(mContext)
+                                    .load(photos.get(0).path)
+                                    .error(R.mipmap.loading)
+                                    .placeholder(R.mipmap.loading)
+                                    .into(positive);
+                        } else {
+                            Glide.with(mContext)
+                                    .load(photos.get(0).path)
+                                    .error(R.mipmap.loading)
+                                    .placeholder(R.mipmap.loading)
+                                    .into(reverse);
+                        }
+                        String compressPath = FileUtils.getCompressFilePath(AuthenticationActivity.this) + "/" + photos.get(0).name;
+                        new Thread(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (photos.get(0).size > 2*1024) {
+                                    File file = new File(photos.get(0).path);
+                                    ImageUtils.compressBmp(AuthenticationActivity.this, file, compressPath, 2 * 1024);
+                                    runOnUiThread(new Runnable() {
+                                        @Override
+                                        public void run() {
+                                            uploadImage(compressPath);
+                                        }
+                                    });
+                                }else {
+                                    uploadImage(photos.get(0).path);
+                                }
+
+                            }
+                        }).start();
+
+                    }
+
+                    @Override
+                    public void onCancel() {
+                    }
+                });
+    }
+
+    @Override
+    public void requestPermissionsFail() {
+        showSnackBar("权限被拒绝");
+    }
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
+                                           @NonNull int[]
+                                                   grantResults) {
+        if (mPermissionHelper.requestPermissionsResult(requestCode, permissions, grantResults)) {
+            //权限请求结果,并已经处理了该回调
+            return;
+        }
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+    }
+}

+ 164 - 0
app/src/main/java/com/tjzhxx/union/activity/DataEditeDbjzActivity.java

@@ -0,0 +1,164 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.View;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.RescuestyleAdapter;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Doclist;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.Resucekey;
+import com.tjzhxx.union.entity.request.DataDbqzPhotoRequest;
+import com.tjzhxx.union.entity.request.DataDbqzRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.LogUtils;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class DataEditeDbjzActivity extends BaseActivity {
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    private List<Rescuestyle> list = new ArrayList<>();
+    private List<Resucekey> resucekeys = new ArrayList<>();
+    private List<Doclist> doclist = new ArrayList<>();
+    private String applyid;
+    private RescuestyleAdapter adapter;
+    private UnionServices services;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_data_edite_dbqz;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("大病救助资料填写");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        adapter = new RescuestyleAdapter(this, list);
+        recyclerView.setAdapter(adapter);
+        String json = getIntent().getStringExtra("json");
+        Gson gson = new Gson();
+        Type type = new TypeToken<List<Resucekey>>() {
+        }.getType();
+        resucekeys =  gson.fromJson(json, type);
+        DataDbqzRequest request = new DataDbqzRequest();
+        request.setApplytelno(ConstDefine.userInfo.getTelno());
+        request.setWid(ConstDefine.userInfo.getWid());
+        request.setRescuestyle("3");
+        request.setValuelist(new Gson().toJson(resucekeys));
+        LogUtils.e("TAG",request.toString());
+        subapplywithinfoforapp(request);
+        queryrescuelistforapp();
+    }
+
+
+    @OnClick({R.id.submit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.submit:
+                submit();
+                break;
+        }
+    }
+
+    public void submit() {
+        doclist.clear();
+        for (Rescuestyle rescuestyle:list){
+            if (rescuestyle.getIsmust().equals("1") && TextUtils.isEmpty(rescuestyle.getImageUrl())){
+                showSnackBar("请上传"+rescuestyle.getDockind());
+                return;
+            }else {
+                Doclist bean = new Doclist();
+                bean.setDocstyle(rescuestyle.getDockind());
+                bean.setDocurl(rescuestyle.getImageUrl());
+                doclist.add(bean);
+            }
+        }
+        DataDbqzPhotoRequest request = new DataDbqzPhotoRequest();
+        request.setApplyid(applyid);
+        request.setDoclist(new Gson().toJson(doclist));
+        subdocbyapplyidforapp(request);
+    }
+
+    private void queryrescuelistforapp() {
+        services.queryrescuelistforapp(3)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<Rescuestyle>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<Rescuestyle>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<Rescuestyle>> value) {
+                        if (value.getData() != null) {
+                            list.clear();
+                            list.addAll(value.getData());
+                            adapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+
+    private void subapplywithinfoforapp(DataDbqzRequest request) {
+        services.subapplywithinfoforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<String>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<String>>(this) {
+                    @Override
+                    public void success(BaseResponse<String> value) {
+                        applyid = value.getData();
+                    }
+
+                });
+    }
+
+    private void subdocbyapplyidforapp(DataDbqzPhotoRequest request) {
+        services.subdocbyapplyidforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        showSnackBar("提交成功");
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                finish();
+                            }
+                        }, 1500);
+                    }
+
+                });
+    }
+}

+ 204 - 0
app/src/main/java/com/tjzhxx/union/activity/DataEditeJtccActivity.java

@@ -0,0 +1,204 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.RescuestyleAdapter;
+import com.tjzhxx.union.custom_view.CustomDatePicker;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Doclist;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.Resucekey;
+import com.tjzhxx.union.entity.request.DataZywwRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.TimeUtil;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class DataEditeJtccActivity extends BaseActivity {
+    @BindView(R.id.price)
+    EditText price;
+    @BindView(R.id.date)
+    TextView date;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    private List<Rescuestyle> list = new ArrayList<>();
+    private List<Resucekey> resucekeys = new ArrayList<>();
+    private List<Doclist> doclist = new ArrayList<>();
+    private RescuestyleAdapter adapter;
+    private UnionServices services;
+    private Resucekey key1;
+    private Resucekey key2;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_data_edite_jtcc;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("家庭财产损失资料填写");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        adapter = new RescuestyleAdapter(this, list);
+        recyclerView.setAdapter(adapter);
+        queryrescuelistforapp();
+        initDate();
+    }
+
+    private void initDate() {
+        key1 = new Resucekey();
+        key1.setInfokey("firemoney");
+        key1.setInfodisstr("火灾损失金额");
+        key1.setIsmust(1);
+        key1.setIsuseauditing(1);
+
+        key2 = new Resucekey();
+        key2.setInfokey("firedate");
+        key2.setInfodisstr("火灾时间");
+        key2.setIsmust(1);
+        key2.setIsuseauditing(1);
+
+
+
+
+    }
+
+    @OnClick({R.id.date, R.id.submit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.date:
+                showTimeDialog();
+                break;
+            case R.id.submit:
+                submit();
+                break;
+        }
+    }
+
+    public void submit() {
+        doclist.clear();
+        resucekeys.clear();
+        if (key1.getIsmust() == 1){
+            if (TextUtils.isEmpty(price.getText().toString())){
+                showSnackBar("请输入火灾损失金额");
+                return;
+            }
+        }
+        if (key2.getIsmust() == 1){
+            if (TextUtils.isEmpty(date.getText().toString())){
+                showSnackBar("请选择火灾时间");
+                return;
+            }
+        }
+        key1.setInfovalue(price.getText().toString());
+        key2.setInfovalue(date.getText().toString());
+        resucekeys.add(key1);
+        resucekeys.add(key2);
+        for (Rescuestyle rescuestyle : list) {
+            if (rescuestyle.getIsmust().equals("1") && TextUtils.isEmpty(rescuestyle.getImageUrl())) {
+                showSnackBar("请上传" + rescuestyle.getDockind());
+                return;
+            } else {
+                Doclist bean = new Doclist();
+                bean.setDocstyle(rescuestyle.getDockind());
+                bean.setDocurl(rescuestyle.getImageUrl());
+                doclist.add(bean);
+            }
+        }
+
+        DataZywwRequest request = new DataZywwRequest();
+        request.setApplytelno(ConstDefine.userInfo.getTelno());
+        request.setWid(ConstDefine.userInfo.getWid());
+        request.setRescuestyle("6");
+        request.setDoclist(new Gson().toJson(doclist));
+        request.setValuelist(new Gson().toJson(resucekeys));
+        subapplywithdocandinfoforapp(request);
+    }
+
+    private void queryrescuelistforapp() {
+        services.queryrescuelistforapp(6)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<Rescuestyle>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<Rescuestyle>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<Rescuestyle>> value) {
+                        if (value.getData() != null) {
+                            list.clear();
+                            list.addAll(value.getData());
+                            adapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+
+    private void subapplywithdocandinfoforapp(DataZywwRequest request) {
+        services.subapplywithdocandinfoforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        showSnackBar("提交成功");
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                finish();
+                            }
+                        }, 1500);
+                    }
+
+                });
+    }
+    private void showTimeDialog() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
+        String endSong = sdf.format(new Date());
+        String nowSong = TimeUtil.getDateByYear(endSong, -20, "yyyy-MM-dd HH:mm");
+
+        CustomDatePicker customDatePicker = new CustomDatePicker(mContext, new CustomDatePicker.ResultHandler() {
+            @Override
+            public void handle(String time) { // 回调接口,获得选中的时间
+                date.setText(time.split(" ")[0]);
+            }
+        }, nowSong, endSong); // 初始化日期格式请用:yyyy-MM-dd HH:mm,否则不能正常运行
+        customDatePicker.showSpecificTime(false); // 显示时和分
+        customDatePicker.setIsLoop(true); // 允许循环滚动
+        customDatePicker.show(nowSong);
+    }
+
+}

+ 209 - 0
app/src/main/java/com/tjzhxx/union/activity/DataEditeWzzjActivity.java

@@ -0,0 +1,209 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.RescuestyleAdapter;
+import com.tjzhxx.union.custom_view.CustomDatePicker;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Doclist;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.Resucekey;
+import com.tjzhxx.union.entity.request.DataZywwRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.TimeUtil;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class DataEditeWzzjActivity extends BaseActivity {
+    @BindView(R.id.spiner)
+    Spinner spiner;
+    @BindView(R.id.date)
+    TextView date;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    private List<Rescuestyle> list = new ArrayList<>();
+    private List<Resucekey> resucekeys = new ArrayList<>();
+    private List<Doclist> doclist = new ArrayList<>();
+    private RescuestyleAdapter adapter;
+    private UnionServices services;
+    private Resucekey key1;
+    private Resucekey key2;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_data_edite_wzzj;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("五种重疾资料填写");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        adapter = new RescuestyleAdapter(this, list);
+        recyclerView.setAdapter(adapter);
+        final String[] type = getResources().getStringArray(R.array.wzzj);
+        spiner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                key1.setInfovalue(type[position]);
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+        queryrescuelistforapp();
+        initDate();
+    }
+
+    private void initDate() {
+        key1 = new Resucekey();
+        key1.setInfokey("illness");
+        key1.setInfodisstr("所患重疾");
+        key1.setIsmust(1);
+        key1.setIsuseauditing(1);
+
+        key2 = new Resucekey();
+        key2.setInfokey("illdate");
+        key2.setInfodisstr("确诊时间或首次手术时间");
+        key2.setIsmust(1);
+        key2.setIsuseauditing(1);
+
+
+
+
+    }
+
+    @OnClick({R.id.date, R.id.submit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.date:
+                showTimeDialog();
+                break;
+            case R.id.submit:
+                submit();
+                break;
+        }
+    }
+
+    public void submit() {
+        doclist.clear();
+        resucekeys.clear();
+        if (key2.getIsmust() == 1){
+            if (TextUtils.isEmpty(date.getText().toString())){
+                showSnackBar("请选择首次确诊时间");
+                return;
+            }
+        }
+        key2.setInfovalue(date.getText().toString());
+        resucekeys.add(key1);
+        resucekeys.add(key2);
+        for (Rescuestyle rescuestyle : list) {
+            if (rescuestyle.getIsmust().equals("1") && TextUtils.isEmpty(rescuestyle.getImageUrl())) {
+                showSnackBar("请上传" + rescuestyle.getDockind());
+                return;
+            } else {
+                Doclist bean = new Doclist();
+                bean.setDocstyle(rescuestyle.getDockind());
+                bean.setDocurl(rescuestyle.getImageUrl());
+                doclist.add(bean);
+            }
+        }
+
+        DataZywwRequest request = new DataZywwRequest();
+        request.setApplytelno(ConstDefine.userInfo.getTelno());
+        request.setWid(ConstDefine.userInfo.getWid());
+        request.setRescuestyle("4");
+        request.setDoclist(new Gson().toJson(doclist));
+        request.setValuelist(new Gson().toJson(resucekeys));
+        subapplywithdocandinfoforapp(request);
+    }
+
+    private void queryrescuelistforapp() {
+        services.queryrescuelistforapp(4)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<Rescuestyle>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<Rescuestyle>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<Rescuestyle>> value) {
+                        if (value.getData() != null) {
+                            list.clear();
+                            list.addAll(value.getData());
+                            adapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+
+    private void subapplywithdocandinfoforapp(DataZywwRequest request) {
+        services.subapplywithdocandinfoforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        showSnackBar("提交成功");
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                finish();
+                            }
+                        }, 1500);
+                    }
+
+                });
+    }
+    private void showTimeDialog() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
+        String endSong = sdf.format(new Date());
+        String nowSong = TimeUtil.getDateByYear(endSong, -20, "yyyy-MM-dd HH:mm");
+
+        CustomDatePicker customDatePicker = new CustomDatePicker(mContext, new CustomDatePicker.ResultHandler() {
+            @Override
+            public void handle(String time) { // 回调接口,获得选中的时间
+                date.setText(time.split(" ")[0]);
+            }
+        }, nowSong, endSong); // 初始化日期格式请用:yyyy-MM-dd HH:mm,否则不能正常运行
+        customDatePicker.showSpecificTime(false); // 显示时和分
+        customDatePicker.setIsLoop(true); // 允许循环滚动
+        customDatePicker.show(nowSong);
+    }
+
+}

+ 136 - 0
app/src/main/java/com/tjzhxx/union/activity/DataEditeXcjzActivity.java

@@ -0,0 +1,136 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.RescuestyleAdapter;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Doclist;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.request.DataXcjzRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class DataEditeXcjzActivity extends BaseActivity {
+
+    @BindView(R.id.name)
+    EditText name;
+    @BindView(R.id.unit)
+    EditText unit;
+    @BindView(R.id.price)
+    EditText price;
+    @BindView(R.id.income)
+    EditText income;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    @BindView(R.id.submit)
+    TextView submit;
+    private List<Rescuestyle> list = new ArrayList<>();
+    private List<Doclist> doclist = new ArrayList<>();
+    private RescuestyleAdapter adapter;
+    private UnionServices services;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_data_edite_xcjz;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("现场救助资料填写");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        adapter = new RescuestyleAdapter(this, list);
+        recyclerView.setAdapter(adapter);
+        queryrescuelistforapp();
+    }
+    @OnClick(R.id.submit)
+    public void onClick() {
+        doclist.clear();
+        for (Rescuestyle rescuestyle:list){
+            if (rescuestyle.getIsmust().equals("1") && TextUtils.isEmpty(rescuestyle.getImageUrl())){
+                showSnackBar("请上传"+rescuestyle.getDockind());
+                return;
+            }else {
+                Doclist bean = new Doclist();
+                bean.setDocstyle(rescuestyle.getDockind());
+                bean.setDocurl(rescuestyle.getImageUrl());
+                doclist.add(bean);
+            }
+        }
+        DataXcjzRequest request = new DataXcjzRequest();
+        request.setApplytelno(ConstDefine.userInfo.getTelno());
+        request.setWid(ConstDefine.userInfo.getWid());
+        request.setRescuestyle("1");
+        request.setDoclist(new Gson().toJson(doclist));
+        subapplywithdocbywidforapp(request);
+    }
+    private void queryrescuelistforapp() {
+        services.queryrescuelistforapp(1)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<Rescuestyle>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<Rescuestyle>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<Rescuestyle>> value) {
+                        if (value.getData() != null) {
+                            list.clear();
+                            list.addAll(value.getData());
+                            adapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+
+    private void subapplywithdocbywidforapp(DataXcjzRequest request) {
+        services.subapplywithdocbywidforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        showSnackBar("提交成功");
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                finish();
+                            }
+                        }, 1500);
+                    }
+
+                });
+    }
+
+
+}

+ 204 - 0
app/src/main/java/com/tjzhxx/union/activity/DataEditeYwsgActivity.java

@@ -0,0 +1,204 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.RescuestyleAdapter;
+import com.tjzhxx.union.custom_view.CustomDatePicker;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Doclist;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.Resucekey;
+import com.tjzhxx.union.entity.request.DataZywwRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.TimeUtil;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class DataEditeYwsgActivity extends BaseActivity {
+    @BindView(R.id.name)
+    EditText name;
+    @BindView(R.id.date)
+    TextView date;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    private List<Rescuestyle> list = new ArrayList<>();
+    private List<Resucekey> resucekeys = new ArrayList<>();
+    private List<Doclist> doclist = new ArrayList<>();
+    private RescuestyleAdapter adapter;
+    private UnionServices services;
+    private Resucekey key1;
+    private Resucekey key2;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_data_edite_ywsg;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("意外事故资料填写");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        adapter = new RescuestyleAdapter(this, list);
+        recyclerView.setAdapter(adapter);
+        queryrescuelistforapp();
+        initDate();
+    }
+
+    private void initDate() {
+        key1 = new Resucekey();
+        key1.setInfokey("accident");
+        key1.setInfodisstr("意外事故");
+        key1.setIsmust(1);
+        key1.setIsuseauditing(1);
+
+        key2 = new Resucekey();
+        key2.setInfokey("accidentdate");
+        key2.setInfodisstr("事故时间");
+        key2.setIsmust(1);
+        key2.setIsuseauditing(1);
+
+
+
+
+    }
+
+    @OnClick({R.id.date, R.id.submit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.date:
+                showTimeDialog();
+                break;
+            case R.id.submit:
+                submit();
+                break;
+        }
+    }
+
+    public void submit() {
+        doclist.clear();
+        resucekeys.clear();
+        if (key1.getIsmust() == 1){
+            if (TextUtils.isEmpty(name.getText().toString())){
+                showSnackBar("请输入意外事故");
+                return;
+            }
+        }
+        if (key2.getIsmust() == 1){
+            if (TextUtils.isEmpty(date.getText().toString())){
+                showSnackBar("请选择事故时间");
+                return;
+            }
+        }
+        key1.setInfovalue(name.getText().toString());
+        key2.setInfovalue(date.getText().toString());
+        resucekeys.add(key1);
+        resucekeys.add(key2);
+        for (Rescuestyle rescuestyle : list) {
+            if (rescuestyle.getIsmust().equals("1") && TextUtils.isEmpty(rescuestyle.getImageUrl())) {
+                showSnackBar("请上传" + rescuestyle.getDockind());
+                return;
+            } else {
+                Doclist bean = new Doclist();
+                bean.setDocstyle(rescuestyle.getDockind());
+                bean.setDocurl(rescuestyle.getImageUrl());
+                doclist.add(bean);
+            }
+        }
+
+        DataZywwRequest request = new DataZywwRequest();
+        request.setApplytelno(ConstDefine.userInfo.getTelno());
+        request.setWid(ConstDefine.userInfo.getWid());
+        request.setRescuestyle("5");
+        request.setDoclist(new Gson().toJson(doclist));
+        request.setValuelist(new Gson().toJson(resucekeys));
+        subapplywithdocandinfoforapp(request);
+    }
+
+    private void queryrescuelistforapp() {
+        services.queryrescuelistforapp(5)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<Rescuestyle>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<Rescuestyle>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<Rescuestyle>> value) {
+                        if (value.getData() != null) {
+                            list.clear();
+                            list.addAll(value.getData());
+                            adapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+
+    private void subapplywithdocandinfoforapp(DataZywwRequest request) {
+        services.subapplywithdocandinfoforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        showSnackBar("提交成功");
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                finish();
+                            }
+                        }, 1500);
+                    }
+
+                });
+    }
+    private void showTimeDialog() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
+        String endSong = sdf.format(new Date());
+        String nowSong = TimeUtil.getDateByYear(endSong, -20, "yyyy-MM-dd HH:mm");
+
+        CustomDatePicker customDatePicker = new CustomDatePicker(mContext, new CustomDatePicker.ResultHandler() {
+            @Override
+            public void handle(String time) { // 回调接口,获得选中的时间
+                date.setText(time.split(" ")[0]);
+            }
+        }, nowSong, endSong); // 初始化日期格式请用:yyyy-MM-dd HH:mm,否则不能正常运行
+        customDatePicker.showSpecificTime(false); // 显示时和分
+        customDatePicker.setIsLoop(true); // 允许循环滚动
+        customDatePicker.show(nowSong);
+    }
+
+}

+ 295 - 0
app/src/main/java/com/tjzhxx/union/activity/DataEditeZywwActivity.java

@@ -0,0 +1,295 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.RescuestyleAdapter;
+import com.tjzhxx.union.custom_view.CustomDatePicker;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Doclist;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.Resucekey;
+import com.tjzhxx.union.entity.request.DataZywwRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.TimeUtil;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class DataEditeZywwActivity extends BaseActivity {
+    @BindView(R.id.iv_type1)
+    ImageView ivType1;
+    @BindView(R.id.iv_type2)
+    ImageView ivType2;
+    @BindView(R.id.iv_type3)
+    ImageView ivType3;
+    @BindView(R.id.name)
+    EditText name;
+    @BindView(R.id.spiner)
+    Spinner spiner;
+    @BindView(R.id.hosiptial)
+    EditText hosiptial;
+    @BindView(R.id.date)
+    TextView date;
+    @BindView(R.id.unit)
+    EditText unit;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    private List<Rescuestyle> list = new ArrayList<>();
+    private List<Resucekey> resucekeys = new ArrayList<>();
+    private List<Doclist> doclist = new ArrayList<>();
+    private RescuestyleAdapter adapter;
+    private UnionServices services;
+    private Resucekey key1;
+    private Resucekey key2;
+    private Resucekey key3;
+    private Resucekey key4;
+    private Resucekey key5;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_data_edite_zyww;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("住院慰问资料填写");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        adapter = new RescuestyleAdapter(this, list);
+        recyclerView.setAdapter(adapter);
+        final String[] type = getResources().getStringArray(R.array.type);
+        spiner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                key2.setInfovalue(type[position]);
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
+        queryrescuelistforapp();
+        initDate();
+    }
+
+    private void initDate() {
+        key1 = new Resucekey();
+        key1.setInfokey("illnesskind");
+        key1.setInfodisstr("患病类型");
+        key1.setIsmust(1);
+        key1.setInfovalue("工伤(职业病)");//默认值
+        key1.setIsuseauditing(1);
+
+        key2 = new Resucekey();
+        key2.setInfokey("illness");
+        key2.setInfodisstr("患病名称");
+        key2.setIsmust(1);
+        key2.setIsuseauditing(1);
+
+
+        key3 = new Resucekey();
+        key3.setInfokey("inhospital");
+        key3.setInfodisstr("入住医院");
+        key3.setIsmust(1);
+        key3.setIsuseauditing(1);
+
+
+        key4 = new Resucekey();
+        key4.setInfokey("inhospitaldate");
+        key4.setInfodisstr("入院日期");
+        key4.setIsmust(1);
+        key4.setIsuseauditing(1);
+
+        key5 = new Resucekey();
+        key5.setInfokey("employeeinfo");
+        key5.setInfodisstr("单位及职务");
+        key5.setIsmust(0);
+        key5.setIsuseauditing(1);
+
+
+    }
+
+    @OnClick({R.id.type1, R.id.type2, R.id.type3, R.id.date, R.id.submit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.type1:
+                key1.setInfovalue("工伤(职业病)");
+                ivType1.setImageResource(R.mipmap.icon_checkbox_select);
+                ivType2.setImageResource(R.mipmap.icon_checkbox_normal);
+                ivType3.setImageResource(R.mipmap.icon_checkbox_normal);
+                name.setVisibility(View.VISIBLE);
+                spiner.setVisibility(View.GONE);
+                break;
+            case R.id.type2:
+                key1.setInfovalue("指定重病");
+                ivType1.setImageResource(R.mipmap.icon_checkbox_normal);
+                ivType2.setImageResource(R.mipmap.icon_checkbox_select);
+                ivType3.setImageResource(R.mipmap.icon_checkbox_normal);
+                name.setVisibility(View.GONE);
+                spiner.setVisibility(View.VISIBLE);
+                break;
+            case R.id.type3:
+                key1.setInfovalue("其他");
+                ivType1.setImageResource(R.mipmap.icon_checkbox_normal);
+                ivType2.setImageResource(R.mipmap.icon_checkbox_normal);
+                ivType3.setImageResource(R.mipmap.icon_checkbox_select);
+                name.setVisibility(View.VISIBLE);
+                spiner.setVisibility(View.GONE);
+                break;
+            case R.id.date:
+                showTimeDialog();
+                break;
+            case R.id.submit:
+                submit();
+                break;
+        }
+    }
+
+    public void submit() {
+        doclist.clear();
+        resucekeys.clear();
+        if (key2.getIsmust() == 1){
+            if (name.getVisibility() == View.VISIBLE && TextUtils.isEmpty(name.getText().toString())){
+                showSnackBar("请输入患病名称");
+                return;
+            }
+        }
+
+        if (key3.getIsmust() == 1){
+            if (TextUtils.isEmpty(hosiptial.getText().toString())){
+                showSnackBar("请输入入住医院");
+                return;
+            }
+        }
+        if (key4.getIsmust() == 1){
+            if (TextUtils.isEmpty(date.getText().toString())){
+                showSnackBar("请选择入院时间");
+                return;
+            }
+        }
+        if (key5.getIsmust() == 1){
+            if (TextUtils.isEmpty(unit.getText().toString())){
+                showSnackBar("请输入单位及职务");
+                return;
+            }
+        }
+        key2.setInfovalue(name.getText().toString());
+        key3.setInfovalue(hosiptial.getText().toString());
+        key4.setInfovalue(date.getText().toString());
+        key5.setInfovalue(unit.getText().toString());
+        resucekeys.add(key1);
+        resucekeys.add(key2);
+        resucekeys.add(key3);
+        resucekeys.add(key4);
+        resucekeys.add(key5);
+
+        for (Rescuestyle rescuestyle : list) {
+            if (rescuestyle.getIsmust().equals("1") && TextUtils.isEmpty(rescuestyle.getImageUrl())) {
+                showSnackBar("请上传" + rescuestyle.getDockind());
+                return;
+            } else {
+                Doclist bean = new Doclist();
+                bean.setDocstyle(rescuestyle.getDockind());
+                bean.setDocurl(rescuestyle.getImageUrl());
+                doclist.add(bean);
+            }
+        }
+
+        DataZywwRequest request = new DataZywwRequest();
+        request.setApplytelno(ConstDefine.userInfo.getTelno());
+        request.setWid(ConstDefine.userInfo.getWid());
+        request.setRescuestyle("2");
+        request.setDoclist(new Gson().toJson(doclist));
+        request.setValuelist(new Gson().toJson(resucekeys));
+        subapplywithdocandinfoforapp(request);
+    }
+
+    private void queryrescuelistforapp() {
+        services.queryrescuelistforapp(2)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<Rescuestyle>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<Rescuestyle>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<Rescuestyle>> value) {
+                        if (value.getData() != null) {
+                            list.clear();
+                            list.addAll(value.getData());
+                            adapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+
+    private void subapplywithdocandinfoforapp(DataZywwRequest request) {
+        services.subapplywithdocandinfoforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        showSnackBar("提交成功");
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                finish();
+                            }
+                        }, 1500);
+                    }
+
+                });
+    }
+    private void showTimeDialog() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
+        String endSong = sdf.format(new Date());
+        String nowSong = TimeUtil.getDateByYear(endSong, -20, "yyyy-MM-dd HH:mm");
+
+        CustomDatePicker customDatePicker = new CustomDatePicker(mContext, new CustomDatePicker.ResultHandler() {
+            @Override
+            public void handle(String time) { // 回调接口,获得选中的时间
+                date.setText(time.split(" ")[0]);
+            }
+        }, nowSong, endSong); // 初始化日期格式请用:yyyy-MM-dd HH:mm,否则不能正常运行
+        customDatePicker.showSpecificTime(false); // 显示时和分
+        customDatePicker.setIsLoop(true); // 允许循环滚动
+        customDatePicker.show(nowSong);
+    }
+
+}

+ 76 - 0
app/src/main/java/com/tjzhxx/union/activity/HomeGuanaiActivity.java

@@ -0,0 +1,76 @@
+package com.tjzhxx.union.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.system.WebviewActivity;
+
+import butterknife.OnClick;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class HomeGuanaiActivity extends BaseActivity {
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_guanai;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("关爱救助");
+    }
+
+
+    
+    @OnClick({R.id.union01, R.id.union02, R.id.union03, R.id.union04, R.id.union05, R.id.union06})
+    public void onClick(View view) {
+        Intent intent = new Intent();
+        switch (view.getId()) {
+            case R.id.union01:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=1");
+                intent.putExtra("title", "职工现场救助");
+                startActivity(intent);
+                break;
+            case R.id.union02:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=2");
+                intent.putExtra("title", "住院慰问资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union03:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=3");
+                intent.putExtra("title", "大病救助资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union04:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=4");
+                intent.putExtra("title", "五种重疾资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union05:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=6");
+                intent.putExtra("title", "家庭财产损失资料填写");
+                startActivity(intent);
+                break;
+            case R.id.union06:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", ConstDefine.HttpAdressH5+"/index.html#/salvation?type=5");
+                intent.putExtra("title", "意外事故资料填写");
+                startActivity(intent);
+                break;
+        }
+    }
+}

+ 154 - 0
app/src/main/java/com/tjzhxx/union/activity/LoginActivity.java

@@ -0,0 +1,154 @@
+package com.tjzhxx.union.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.UserInfo;
+import com.tjzhxx.union.entity.request.SmsCodeRequest;
+import com.tjzhxx.union.entity.request.SmsLoginRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.SpUtils;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.system.WebviewActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class LoginActivity extends BaseActivity {
+    @BindView(R.id.phone)
+    EditText phone;
+    @BindView(R.id.code)
+    EditText code;
+    @BindView(R.id.get_code)
+    TextView getCode;
+    @BindView(R.id.check)
+    ImageView check;
+    @BindView(R.id.login)
+    TextView login;
+    @BindView(R.id.new_login)
+    TextView newLogin;
+    @BindView(R.id.wx)
+    ImageView wx;
+    private UnionServices services;
+    private static int m = 60;
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_login;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+    }
+
+
+    @OnClick({R.id.icon_back, R.id.get_code, R.id.login, R.id.new_login, R.id.wx})
+    public void onClick(View view) {
+        Intent intent = new Intent();
+        switch (view.getId()) {
+            case R.id.icon_back:
+                finish();
+                break;
+            case R.id.get_code:
+                if (getCode.getText().equals("获取验证码")) {
+                    if (TextUtils.isEmpty(phone.getText().toString())) {
+                        showSnackBar("请输入手机号");
+                        return;
+                    }
+                    sendSmsCode();
+                }
+                break;
+            case R.id.login:
+                if (TextUtils.isEmpty(code.getText().toString())){
+                    showSnackBar("请输入验证码");
+                    return;
+                }
+                smsLogin();
+                break;
+            case R.id.new_login:
+                intent.setClass(this, WebviewActivity.class);
+                intent.putExtra("url", "http://47.94.42.74:9100/zhghsjd/index.html#/guidepage");
+                intent.putExtra("title", "会员入会");
+                startActivity(intent);
+                break;
+            case R.id.wx:
+                break;
+        }
+    }
+    private void sendSmsCode() {
+        SmsCodeRequest request = new SmsCodeRequest();
+        request.setTel(phone.getText().toString());
+        services.sendSmsCode(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse>(this) {
+                    @Override
+                    public void success(BaseResponse value) {
+                        new Timer().schedule(new TimerTask() {
+                            @Override
+                            public void run() {
+                                runOnUiThread(new Runnable() {
+                                    @Override
+                                    public void run() {
+                                        m--;
+                                        if (m <= 0) {
+                                            getCode.setText("获取验证码");
+                                            cancel();
+                                            m = 60;
+                                            return;
+                                        }
+                                        getCode.setText(m + "秒");
+                                    }
+                                });
+                            }
+                        }, 10, 1000);
+                    }
+
+                });
+    }
+
+    private void smsLogin() {
+        SmsLoginRequest request = new SmsLoginRequest();
+        request.setTel(phone.getText().toString());
+        request.setSmscode(code.getText().toString());
+        services.smsLogin(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<UserInfo>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse<UserInfo>>(this) {
+                    @Override
+                    public void success(BaseResponse<UserInfo> value) {
+                        ConstDefine.userInfo = value.getData();
+                        SpUtils.putUserInfo(LoginActivity.this,value.getData());
+                        finish();
+                    }
+
+                });
+    }
+}

+ 220 - 0
app/src/main/java/com/tjzhxx/union/activity/NewListActivity.java

@@ -0,0 +1,220 @@
+package com.tjzhxx.union.activity;
+
+import android.content.Intent;
+import android.graphics.Matrix;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.TranslateAnimation;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.entity.BannerEntity;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.fragment.ActivityListFragment;
+import com.tjzhxx.union.fragment.NewListFragment;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.ScreenUtils;
+import com.tjzhxx.union.public_store.fragment.FragmentPager;
+import com.tjzhxx.union.public_store.fragment.FragmentTab;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.system.WebviewActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import cn.bingoogolapple.bgabanner.BGABanner;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/2  8:57 AM
+ */
+public class NewListActivity extends BaseActivity implements FragmentPager.FragmentPagerListener {
+
+    @BindView(R.id.bga_banner)
+    BGABanner bgaBanner;
+    @BindView(R.id.news)
+    TextView news;
+    @BindView(R.id.activity)
+    TextView activity;
+    @BindView(R.id.iv_header_cursor)
+    ImageView ivCursor;
+    @BindView(R.id.fragment_continer)
+    FragmentPager fragmentPager;
+    private FragmentTab fragmentTab;
+    private List<BannerEntity> bannerEntities = new ArrayList<>();
+    public int currIndex = 0;
+    private FragmentTab[] majorTabs;
+    private Class<? extends Fragment>[] fragments;
+    private float offset = 0;
+    private UnionServices services;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_new_list;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("工会新闻");
+        fragmentTab = new FragmentTab(this);
+        majorTabs = new FragmentTab[]{fragmentTab, fragmentTab};
+        fragments = new Class[]{NewListFragment.class, ActivityListFragment.class};
+        fragmentPager.init(this.getSupportFragmentManager(), this)
+                .setTabAndFragmentData(majorTabs, fragments)
+                .setCanScroll(true);
+        initCursor();
+        fragmentPager.setOffscreenPageLimit(5);
+        fragmentPager.setCurrentItem(0);
+        init();
+    }
+
+
+    private void init() {
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        bgaBanner.setAdapter(new BGABanner.Adapter<ImageView, String>() {
+            @Override
+            public void fillBannerItem(BGABanner banner, ImageView itemView, String model, int position) {
+                Glide.with(NewListActivity.this)
+                        .load(model)
+                        .placeholder(R.mipmap.bg_placeholder)
+                        .error(R.mipmap.bg_placeholder)
+                        .diskCacheStrategy(DiskCacheStrategy.ALL)
+                        .centerCrop()
+                        .dontAnimate()
+                        .into(itemView);
+            }
+        });
+        bgaBanner.setDelegate(new BGABanner.Delegate() {
+            @Override
+            public void onBannerItemClick(BGABanner banner, View itemView, Object model, int position) {
+                if (bannerEntities != null && bannerEntities.size() > 0) {
+                    BannerEntity entity = bannerEntities.get(position);
+                    Intent intent = new Intent();
+                    intent.setClass(NewListActivity.this, WebviewActivity.class);
+                    intent.putExtra("url", entity.getWxurl());
+                    intent.putExtra("title", "工会新闻");
+                    startActivity(intent);
+                }
+            }
+        });
+        getBanners();
+    }
+    /**
+     * 加载广告
+     */
+    private void getBanners() {
+        services.querytitlelist()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<BannerEntity>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<BannerEntity>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<BannerEntity>> value) {
+                        bannerEntities = value.getData();
+                        List<String> urls = new ArrayList<>();
+                        List<String> titles = new ArrayList<>();
+                        if (value.getData() != null) {
+                            for (BannerEntity entity : value.getData()) {
+                                if (!TextUtils.isEmpty(entity.getPicurl())) {
+                                    urls.add(entity.getPicurl());
+                                    titles.add(entity.getWxtitle());
+                                }
+                            }
+                            bgaBanner.setData(urls, titles);
+                        }
+                    }
+
+                });
+    }
+
+    @OnClick({R.id.news, R.id.activity})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.news:
+                fragmentPager.setCurrentItem(0);
+                break;
+            case R.id.activity:
+                fragmentPager.setCurrentItem(1);
+                break;
+        }
+    }
+
+    private void setTab(int olditem, int index) {
+        if (index == 0) {
+            initTab();
+            news.setTextColor(getResources().getColor(R.color.red));
+            news.setTextSize(ScreenUtils.sp2px(this,7));
+        } else if (index == 1) {
+            initTab();
+            activity.setTextColor(getResources().getColor(R.color.red));
+            activity.setTextSize(ScreenUtils.sp2px(this,7));
+        }
+        anim(olditem, index);
+    }
+
+    private void initTab() {
+        news.setTextColor(getResources().getColor(R.color.text_black_333));
+        news.setTextSize(ScreenUtils.sp2px(this,6));
+        activity.setTextColor(getResources().getColor(R.color.text_black_333));
+        activity.setTextSize(ScreenUtils.sp2px(this,6));
+    }
+
+    private void anim(int olditem, int newitem) {
+        Animation animation = null;
+        animation = new TranslateAnimation(olditem * offset, newitem * offset, 0, 0);
+        animation.setFillAfter(true);// True:图片停在动画结束位置
+        animation.setDuration(200);
+        ivCursor.startAnimation(animation);
+    }
+
+    private void initCursor() {
+        DisplayMetrics dm = new DisplayMetrics();
+        getWindowManager().getDefaultDisplay().getMetrics(dm);
+        int screenW = dm.widthPixels;// 获取分辨率宽度
+        offset = screenW / 2;// 计算偏移量
+        Matrix matrix = new Matrix();
+        matrix.postTranslate(offset, 0);
+        ivCursor.setImageMatrix(matrix);// 设置动画初始位置
+        LinearLayout.LayoutParams lp_ivcursor = (LinearLayout.LayoutParams) ivCursor.getLayoutParams();
+        int width = lp_ivcursor.width;
+        lp_ivcursor.setMargins((int) (offset - width) / 2, 0, 0, 0);
+        ivCursor.setLayoutParams(lp_ivcursor);
+    }
+
+    @Override
+    public void onItemChanged(int oldItem, int newItem, String tabDiscription) {
+        currIndex = newItem;
+        setTab(oldItem, newItem);
+    }
+
+    @Override
+    public boolean boforeItemChangedItemEnable(int currentItem) {
+        return true;
+    }
+
+    @Override
+    public void controlItemEnable(int item, boolean enable) {
+
+    }
+}

+ 88 - 0
app/src/main/java/com/tjzhxx/union/activity/PayActivity.java

@@ -0,0 +1,88 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.request.GetPayInfoRequest;
+import com.tjzhxx.union.entity.request.WxPayReq;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.weixinapi.WxPay;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/11  8:58 PM
+ */
+public class PayActivity extends BaseActivity {
+    private WxPayReq wxPayReq;
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_pay;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("缴纳会费");
+        getOrderInfoForApp();
+    }
+
+
+    @OnClick(R.id.pay)
+    public void onClick() {
+        WxPay wxPay = new WxPay(this);
+        wxPay.setOnPayResultListener(new WxPay.OnPayResultListener() {
+            @Override
+            public void onSuccess() {
+                showSnackBar("支付成功");
+                new Timer().schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        PayActivity.this.finish();
+                        cancel();
+                        ConstDefine.userInfo.setIsactive("1");
+                    }
+                }, 1000);
+
+            }
+
+            @Override
+            public void onError() {
+                    showSnackBar("支付失败");
+            }
+        });
+        wxPay.pay(wxPayReq);
+    }
+
+    private void getOrderInfoForApp() {
+        GetPayInfoRequest request = new GetPayInfoRequest();
+        request.setWid(ConstDefine.userInfo.getWid());
+        UnionServices services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        services.getOrderInfoForApp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<WxPayReq>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse<WxPayReq>>(this) {
+                    @Override
+                    public void success(BaseResponse<WxPayReq> value) {
+                        wxPayReq = value.getData();
+                    }
+                });
+    }
+}

+ 48 - 0
app/src/main/java/com/tjzhxx/union/activity/PhotoPreviewActivity.java

@@ -0,0 +1,48 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.github.chrisbanes.photoview.PhotoView;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.system.BaseActivity;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/8  11:54 PM
+ */
+public class PhotoPreviewActivity extends BaseActivity {
+    @BindView(R.id.photoview)
+    PhotoView photoview;
+    @BindView(R.id.remark)
+    TextView remark;
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_photo_preview;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        String url = getIntent().getStringExtra("url");
+        Glide.with(this)
+                .load(url)
+                .fitCenter()
+                .error(R.mipmap.loading)
+                .placeholder(R.mipmap.loading)
+                .into(photoview);
+    }
+
+
+
+    @OnClick(R.id.close)
+    public void onClick() {
+        finish();
+    }
+}

+ 149 - 0
app/src/main/java/com/tjzhxx/union/activity/PolicyListActivity.java

@@ -0,0 +1,149 @@
+package com.tjzhxx.union.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.NewAdapter;
+import com.tjzhxx.union.entity.BannerEntity;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.NewBean;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.system.WebviewActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import cn.bingoogolapple.bgabanner.BGABanner;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/13  11:54 PM
+ */
+public class PolicyListActivity extends BaseActivity {
+    @BindView(R.id.bga_banner)
+    BGABanner bgaBanner;
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    private NewAdapter mAdapter;
+    private List<NewBean> newBeans = new ArrayList<>();
+    private UnionServices services;
+    private List<BannerEntity> bannerEntities = new ArrayList<>();
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_new_policy;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("政策咨询");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        bgaBanner.setAdapter(new BGABanner.Adapter<ImageView, String>() {
+            @Override
+            public void fillBannerItem(BGABanner banner, ImageView itemView, String model, int position) {
+                Glide.with(PolicyListActivity.this)
+                        .load(model)
+                        .placeholder(R.mipmap.bg_placeholder)
+                        .error(R.mipmap.bg_placeholder)
+                        .diskCacheStrategy(DiskCacheStrategy.ALL)
+                        .centerCrop()
+                        .dontAnimate()
+                        .into(itemView);
+            }
+        });
+        bgaBanner.setDelegate(new BGABanner.Delegate() {
+            @Override
+            public void onBannerItemClick(BGABanner banner, View itemView, Object model, int position) {
+                if (bannerEntities != null && bannerEntities.size() > 0) {
+                    BannerEntity entity = bannerEntities.get(position);
+                    Intent intent = new Intent();
+                    intent.setClass(PolicyListActivity.this, WebviewActivity.class);
+                    intent.putExtra("url", entity.getWxurl());
+                    intent.putExtra("title", "政策咨询");
+                    startActivity(intent);
+                }
+            }
+        });
+
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        mAdapter = new NewAdapter(this, newBeans);
+        mAdapter.setOnItemClickListener(new NewAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(View view, NewBean entity) {
+                Intent intent = new Intent();
+                intent.setClass(PolicyListActivity.this, WebviewActivity.class);
+                intent.putExtra("url", entity.getWxurl());
+                intent.putExtra("title", "政策咨询");
+                startActivity(intent);
+            }
+        });
+        recyclerView.setAdapter(mAdapter);
+        getBanners();
+        loadDate();
+    }
+    /**
+     * 加载广告
+     */
+    private void getBanners() {
+        services.querytitlelist()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<BannerEntity>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<BannerEntity>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<BannerEntity>> value) {
+                        bannerEntities = value.getData();
+                        List<String> urls = new ArrayList<>();
+                        List<String> titles = new ArrayList<>();
+                        if (value.getData() != null) {
+                            for (BannerEntity entity : value.getData()) {
+                                if (!TextUtils.isEmpty(entity.getPicurl())) {
+                                    urls.add(entity.getPicurl());
+                                    titles.add(entity.getWxtitle());
+                                }
+                            }
+                            bgaBanner.setData(urls, titles);
+                        }
+                    }
+
+                });
+    }
+
+    private void loadDate() {
+        services.querypoliticallistforapp()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<NewBean>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse<List<NewBean>>>(this) {
+                    @Override
+                    public void success(BaseResponse<List<NewBean>> value) {
+                        if (value.getData() != null) {
+                            newBeans.addAll(value.getData());
+                            mAdapter.notifyDataSetChanged();
+                        }
+                    }
+
+                });
+    }
+}

+ 52 - 0
app/src/main/java/com/tjzhxx/union/activity/SetActivity.java

@@ -0,0 +1,52 @@
+package com.tjzhxx.union.activity;
+
+import android.os.Bundle;
+import android.view.View;
+
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.SpUtils;
+import com.tjzhxx.union.system.BaseActivity;
+
+import butterknife.OnClick;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  11:45 PM
+ */
+public class SetActivity extends BaseActivity {
+
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_set;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+      initTitle("设置");
+    }
+
+
+    @OnClick({R.id.personal, R.id.aq, R.id.phone, R.id.wq, R.id.about, R.id.exit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.personal:
+                break;
+            case R.id.aq:
+                break;
+            case R.id.phone:
+                break;
+            case R.id.wq:
+                break;
+            case R.id.about:
+                break;
+            case R.id.exit:
+                SpUtils.remove(this,"UserInfo");
+                ConstDefine.userInfo = null;
+                finish();
+                break;
+        }
+    }
+}

+ 141 - 0
app/src/main/java/com/tjzhxx/union/activity/SignatureSureActivity.java

@@ -0,0 +1,141 @@
+package com.tjzhxx.union.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.custom_view.LinePathView;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.UserInfo;
+import com.tjzhxx.union.entity.request.SubnewworkerRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.FileUtils;
+import com.tjzhxx.union.public_store.LogUtils;
+import com.tjzhxx.union.public_store.SpUtils;
+import com.tjzhxx.union.public_store.TimeUtil;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/2  8:57 AM
+ */
+public class SignatureSureActivity extends BaseActivity {
+
+    @BindView(R.id.name)
+    TextView name;
+    @BindView(R.id.time)
+    TextView time;
+    @BindView(R.id.phone)
+    TextView phone;
+    @BindView(R.id.idcard)
+    TextView idcard;
+    @BindView(R.id.linepath)
+    LinePathView linepath;
+    private SubnewworkerRequest request;
+    private UnionServices services;
+    @Override
+    public int getContentViewLayoutID() {
+        return R.layout.activity_signature_sure;
+    }
+
+    @Override
+    public void bindViewAndEvent(Bundle savedInstanceState) {
+        initTitle("签名确认");
+        request = (SubnewworkerRequest)getIntent().getSerializableExtra("SubnewworkerRequest");
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        name.setText(request.getWname());
+        time.setText(TimeUtil.getCurrentDayStr(TimeUtil.TIME_YYYY_MM_DD));
+        phone.setText(request.getTelno());
+        idcard.setText(request.getSfzid());
+
+    }
+
+    @OnClick({R.id.clear, R.id.sure})
+    public void onClick(View view) {
+
+        switch (view.getId()) {
+            case R.id.clear:
+                linepath.clear();
+                break;
+            case R.id.sure:
+                if (!linepath.getTouched()){
+                    showSnackBar("请输入签名");
+                    return;
+                }
+                try {
+                    String tiemStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
+                    String path = FileUtils.getCompressFilePath(SignatureSureActivity.this)  + "/" + tiemStamp + ".png";
+                    linepath.save(path);
+                    uploadImage(path);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                break;
+        }
+    }
+
+    //上传图片
+    private void uploadImage(String path) {
+        File file = new File(path);
+        RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+        MultipartBody.Part imageBodyPart = MultipartBody.Part.createFormData("file", file.getName(), imageBody);
+        services.uploadImage(imageBodyPart)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<String>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<String>>(this) {
+                    @Override
+                    public void success(BaseResponse<String> value) {
+                        request.setSignurl(value.getData());
+                        subnewworkerfromapp();
+                    }
+
+                });
+    }
+
+    //提交会员入会资料
+    private void subnewworkerfromapp() {
+        LogUtils.e("TAG",request.toString());
+        request.setCity(ConstDefine.city);
+        request.setDisc(ConstDefine.district);
+        services.subnewworkerfromapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<UserInfo>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<UserInfo>>(this) {
+                    @Override
+                    public void success(BaseResponse<UserInfo> value) {
+                        ConstDefine.userInfo = value.getData();
+                        SpUtils.putUserInfo(SignatureSureActivity.this,value.getData());
+                        Intent intent = new Intent(SignatureSureActivity.this,PayActivity.class);
+                        startActivity(intent);
+                        finish();
+                    }
+
+                });
+    }
+}

+ 4 - 4
app/src/main/java/com/yhx/union/adapter/NewAdapter.java → app/src/main/java/com/tjzhxx/union/adapter/NewAdapter.java

@@ -1,4 +1,4 @@
-package com.yhx.union.adapter;
+package com.tjzhxx.union.adapter;
 
 import android.content.Context;
 import android.view.LayoutInflater;
@@ -9,9 +9,9 @@ import android.widget.TextView;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.bumptech.glide.Glide;
-import com.yhx.union.R;
-import com.yhx.union.custom_view.RoundImageView;
-import com.yhx.union.entity.NewBean;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.custom_view.RoundImageView;
+import com.tjzhxx.union.entity.NewBean;
 
 import java.util.ArrayList;
 import java.util.List;

+ 186 - 0
app/src/main/java/com/tjzhxx/union/adapter/RescuestyleAdapter.java

@@ -0,0 +1,186 @@
+package com.tjzhxx.union.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bumptech.glide.Glide;
+import com.huantansheng.easyphotos.EasyPhotos;
+import com.huantansheng.easyphotos.callback.SelectCallback;
+import com.huantansheng.easyphotos.models.album.entity.Photo;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.activity.PhotoPreviewActivity;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.FileUtils;
+import com.tjzhxx.union.public_store.GlideEngine;
+import com.tjzhxx.union.public_store.ImageUtils;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.ProgressSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2018/5/3 下午4:40
+ */
+public class RescuestyleAdapter extends RecyclerView.Adapter<RescuestyleAdapter.ViewHolder> {
+
+    Context mContext;
+    List<Rescuestyle> mList;
+    OnItemClickListener mOnItemClickListener;
+
+
+    public void setOnItemClickListener(OnItemClickListener listener) {
+        this.mOnItemClickListener = listener;
+    }
+
+    public RescuestyleAdapter(Context mContext, List<Rescuestyle> list) {
+        this.mContext = mContext;
+        this.mList = (list == null ? new ArrayList<Rescuestyle>() : list);
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.photo_select, parent, false);
+        v.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (mOnItemClickListener != null)
+                    mOnItemClickListener.onItemClick(view, (Rescuestyle) view.getTag());
+            }
+        });
+        return new ViewHolder(v);
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        Rescuestyle bean = mList.get(position);
+        holder.itemView.setTag(bean);
+        Glide.with(mContext)
+                .load(bean.getDemourl())
+                .placeholder(R.mipmap.icon_camera)
+                .error(R.mipmap.icon_camera)
+                .into(holder.imageRemark);
+        holder.title.setText(bean.getDockind());
+        holder.image.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                EasyPhotos.createAlbum((BaseActivity) mContext, true, false, GlideEngine.getInstance())
+                        .setFileProviderAuthority("com.tjzhxx.union.FileProvider")
+                        .setCount(1)
+                        .setPuzzleMenu(false)
+                        .setCleanMenu(false)
+                        .start(new SelectCallback() {
+                            @Override
+                            public void onResult(ArrayList<Photo> photos, boolean isOriginal) {
+                                Glide.with(mContext)
+                                        .load(photos.get(0).path)
+                                        .error(R.mipmap.loading)
+                                        .placeholder(R.mipmap.loading)
+                                        .into(holder.image);
+                                String compressPath = FileUtils.getCompressFilePath(mContext) + "/" + photos.get(0).name;
+                                new Thread(new Runnable() {
+                                    @Override
+                                    public void run() {
+                                        if (photos.get(0).size > 2 * 1024) {
+                                            File file = new File(photos.get(0).path);
+                                            ImageUtils.compressBmp(mContext, file, compressPath, 2 * 1024);
+                                            ((BaseActivity) mContext).runOnUiThread(new Runnable() {
+                                                @Override
+                                                public void run() {
+                                                    uploadImage(compressPath,bean);
+                                                }
+                                            });
+                                        } else {
+                                            uploadImage(photos.get(0).path,bean);
+                                        }
+
+                                    }
+                                }).start();
+
+                            }
+
+                            @Override
+                            public void onCancel() {
+                            }
+                        });
+            }
+        });
+        holder.imageRemark.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                Intent intent = new Intent(mContext, PhotoPreviewActivity.class);
+                intent.putExtra("url",bean.getDemourl());
+                mContext.startActivity(intent);
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList.size();
+    }
+
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        @BindView(R.id.title)
+        TextView title;
+        @BindView(R.id.image)
+        ImageView image;
+        @BindView(R.id.image_remark)
+        ImageView imageRemark;
+
+
+        public ViewHolder(View itemView) {
+            super(itemView);
+            ButterKnife.bind(this, itemView);
+        }
+    }
+
+    public interface OnItemClickListener {
+        void onItemClick(View view, Rescuestyle entity);
+    }
+    //上传图片
+    private void uploadImage(String path,Rescuestyle rescuestyle) {
+        UnionServices services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        File file = new File(path);
+        RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+        MultipartBody.Part imageBodyPart = MultipartBody.Part.createFormData("file", file.getName(), imageBody);
+        services.uploadImage(imageBodyPart)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<String>>autoDisposable(AndroidLifecycleScopeProvider.from((BaseActivity)mContext, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new ProgressSubscriber<BaseResponse<String>>((BaseActivity)mContext) {
+                    @Override
+                    public void success(BaseResponse<String> value) {
+                        rescuestyle.setImageUrl(value.getData());
+                    }
+
+                });
+    }
+
+}

+ 1 - 1
app/src/main/java/com/yhx/union/custom_view/CusItemDecoration.java → app/src/main/java/com/tjzhxx/union/custom_view/CusItemDecoration.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.content.Context;
 import android.content.res.TypedArray;

+ 2 - 2
app/src/main/java/com/yhx/union/custom_view/CustomDatePicker.java → app/src/main/java/com/tjzhxx/union/custom_view/CustomDatePicker.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
@@ -11,7 +11,7 @@ import android.view.Window;
 import android.view.WindowManager;
 import android.widget.TextView;
 
-import com.yhx.union.R;
+import com.tjzhxx.union.R;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;

+ 2 - 2
app/src/main/java/com/yhx/union/custom_view/DatePickerView.java → app/src/main/java/com/tjzhxx/union/custom_view/DatePickerView.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.content.Context;
 import android.graphics.Canvas;
@@ -14,7 +14,7 @@ import android.view.View;
 
 import androidx.core.content.ContextCompat;
 
-import com.yhx.union.R;
+import com.tjzhxx.union.R;
 
 import java.util.ArrayList;
 import java.util.List;

+ 352 - 0
app/src/main/java/com/tjzhxx/union/custom_view/LinePathView.java

@@ -0,0 +1,352 @@
+package com.tjzhxx.union.custom_view;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PorterDuff;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+import androidx.annotation.ColorInt;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * Created by Administrator on 2017/8/7/007.
+ */
+public class LinePathView extends View {
+
+    private Context mContext;
+
+    /**
+     * 笔画X坐标起点
+     */
+    private float mX;
+    /**
+     * 笔画Y坐标起点
+     */
+    private float mY;
+    /**
+     * 手写画笔
+     */
+    private final Paint mGesturePaint = new Paint();
+    /**
+     * 路径
+     */
+    private final Path mPath = new Path();
+    /**
+     * 签名画笔
+     */
+    private Canvas cacheCanvas;
+    /**
+     * 签名画布
+     */
+    private Bitmap cachebBitmap;
+    /**
+     * 是否已经签名
+     */
+    private boolean isTouched = false;
+    /**
+     * 画笔宽度 px;
+     */
+    private int mPaintWidth = 10;
+    /**
+     * 前景色
+     */
+    private int mPenColor = Color.BLACK;
+    /**
+     * 背景色(指最终签名结果文件的背景颜色,默认为透明色)
+     */
+    private int mBackColor= Color.WHITE;
+    public LinePathView(Context context) {
+        super(context);
+        init(context);
+    }
+
+    public LinePathView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context);
+    }
+
+    public LinePathView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context);
+    }
+
+    public void init(Context context) {
+        this.mContext = context;
+        //设置抗锯齿
+        mGesturePaint.setAntiAlias(true);
+        //设置签名笔画样式
+        mGesturePaint.setStyle(Paint.Style.STROKE);
+        //设置笔画宽度
+        mGesturePaint.setStrokeWidth(mPaintWidth);
+        //设置签名颜色
+        mGesturePaint.setColor(mPenColor);
+    }
+
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        super.onSizeChanged(w, h, oldw, oldh);
+        //创建跟view一样大的bitmap,用来保存签名
+        cachebBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
+        cacheCanvas = new Canvas(cachebBitmap);
+        cacheCanvas.drawColor(mBackColor);
+        isTouched=false;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                touchDown(event);
+                break;
+            case MotionEvent.ACTION_MOVE:
+                isTouched = true;
+                touchMove(event);
+                break;
+            case MotionEvent.ACTION_UP:
+                //将路径画到bitmap中,即一次笔画完成才去更新bitmap,而手势轨迹是实时显示在画板上的。
+                cacheCanvas.drawPath(mPath, mGesturePaint);
+                mPath.reset();
+                break;
+        }
+        // 更新绘制
+        invalidate();
+        return true;
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        //画此次笔画之前的签名
+        canvas.drawBitmap(cachebBitmap, 0, 0, mGesturePaint);
+        // 通过画布绘制多点形成的图形
+        canvas.drawPath(mPath, mGesturePaint);
+    }
+
+    // 手指点下屏幕时调用
+    private void touchDown(MotionEvent event) {
+        // 重置绘制路线
+        mPath.reset();
+        float x = event.getX();
+        float y = event.getY();
+        mX = x;
+        mY = y;
+        // mPath绘制的绘制起点
+        mPath.moveTo(x, y);
+    }
+
+    // 手指在屏幕上滑动时调用
+    private void touchMove(MotionEvent event) {
+        final float x = event.getX();
+        final float y = event.getY();
+        final float previousX = mX;
+        final float previousY = mY;
+        final float dx = Math.abs(x - previousX);
+        final float dy = Math.abs(y - previousY);
+        // 两点之间的距离大于等于3时,生成贝塞尔绘制曲线
+        if (dx >= 3 || dy >= 3) {
+            // 设置贝塞尔曲线的操作点为起点和终点的一半
+            float cX = (x + previousX) / 2;
+            float cY = (y + previousY) / 2;
+            // 二次贝塞尔,实现平滑曲线;previousX, previousY为操作点,cX, cY为终点
+            mPath.quadTo(previousX, previousY, cX, cY);
+            // 第二次执行时,第一次结束调用的坐标值将作为第二次调用的初始坐标值
+            mX = x;
+            mY = y;
+        }
+    }
+    /**
+     * 清除画板
+     */
+    public void clear() {
+        if (cacheCanvas != null) {
+            isTouched = false;
+            //更新画板信息
+            mGesturePaint.setColor(mPenColor);
+            cacheCanvas.drawColor(mBackColor, PorterDuff.Mode.CLEAR);
+            mGesturePaint.setColor(mPenColor);
+            invalidate();
+        }
+    }
+
+
+    /**
+     * 保存画板
+     * @param path 保存到路径
+     */
+    public void save(String path)  throws IOException {
+        save(path, false, 0);
+    }
+
+    /**
+     * 保存画板
+     * @param path       保存到路径
+     * @param clearBlank 是否清除边缘空白区域
+     * @param blank  要保留的边缘空白距离
+     */
+    public void save(String path, boolean clearBlank, int blank) throws IOException {
+
+        Bitmap bitmap=cachebBitmap;
+        //  BitmapUtil.createScaledBitmapByHeight(srcBitmap, 300);//  压缩图片
+        if (clearBlank) {
+            bitmap = clearBlank(bitmap, blank);
+        }
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
+        byte[] buffer = bos.toByteArray();
+        if (buffer != null) {
+            File file = new File(path);
+            if (file.exists()) {
+                file.delete();
+            }
+            OutputStream outputStream = new FileOutputStream(file);
+            outputStream.write(buffer);
+            outputStream.close();
+        }
+    }
+
+    /**
+     * 获取画板的bitmap
+     * @return
+     */
+    public Bitmap getBitMap()
+    {
+        setDrawingCacheEnabled(true);
+        buildDrawingCache();
+        Bitmap bitmap=getDrawingCache();
+        setDrawingCacheEnabled(false);
+        return bitmap;
+    }
+    /**
+     * 逐行扫描 清楚边界空白。
+     *
+     * @param bp
+     * @param blank 边距留多少个像素
+     * @return
+     */
+    private Bitmap clearBlank(Bitmap bp, int blank) {
+        int HEIGHT = bp.getHeight();
+        int WIDTH = bp.getWidth();
+        int top = 0, left = 0, right = 0, bottom = 0;
+        int[] pixs = new int[WIDTH];
+        boolean isStop;
+        //扫描上边距不等于背景颜色的第一个点
+        for (int y = 0; y < HEIGHT; y++) {
+            bp.getPixels(pixs, 0, WIDTH, 0, y, WIDTH, 1);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    top = y;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        //扫描下边距不等于背景颜色的第一个点
+        for (int y = HEIGHT - 1; y >= 0; y--) {
+            bp.getPixels(pixs, 0, WIDTH, 0, y, WIDTH, 1);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    bottom = y;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        pixs = new int[HEIGHT];
+        //扫描左边距不等于背景颜色的第一个点
+        for (int x = 0; x < WIDTH; x++) {
+            bp.getPixels(pixs, 0, 1, x, 0, 1, HEIGHT);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    left = x;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        //扫描右边距不等于背景颜色的第一个点
+        for (int x = WIDTH - 1; x > 0; x--) {
+            bp.getPixels(pixs, 0, 1, x, 0, 1, HEIGHT);
+            isStop = false;
+            for (int pix : pixs) {
+                if (pix != mBackColor) {
+                    right = x;
+                    isStop = true;
+                    break;
+                }
+            }
+            if (isStop) {
+                break;
+            }
+        }
+        if (blank < 0) {
+            blank = 0;
+        }
+        //计算加上保留空白距离之后的图像大小
+        left = left - blank > 0 ? left - blank : 0;
+        top = top - blank > 0 ? top - blank : 0;
+        right = right + blank > WIDTH - 1 ? WIDTH - 1 : right + blank;
+        bottom = bottom + blank > HEIGHT - 1 ? HEIGHT - 1 : bottom + blank;
+        return Bitmap.createBitmap(bp, left, top, right - left, bottom - top);
+    }
+
+    /**
+     * 设置画笔宽度 默认宽度为10px
+     *
+     * @param mPaintWidth
+     */
+    public void setPaintWidth(int mPaintWidth) {
+        mPaintWidth = mPaintWidth > 0 ? mPaintWidth : 10;
+        this.mPaintWidth = mPaintWidth;
+        mGesturePaint.setStrokeWidth(mPaintWidth);
+
+    }
+
+
+    public void setBackColor(@ColorInt int backColor)
+    {
+        mBackColor=backColor;
+    }
+
+
+    /**
+     * 设置画笔颜色
+     *
+     * @param mPenColor
+     */
+    public void setPenColor(int mPenColor) {
+        this.mPenColor = mPenColor;
+        mGesturePaint.setColor(mPenColor);
+    }
+
+    /**
+     * 是否有签名
+     *
+     * @return
+     */
+    public boolean getTouched() {
+        return isTouched;
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/custom_view/NeverScrollGridView.java → app/src/main/java/com/tjzhxx/union/custom_view/NeverScrollGridView.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 1 - 1
app/src/main/java/com/yhx/union/custom_view/NeverScrollListView.java → app/src/main/java/com/tjzhxx/union/custom_view/NeverScrollListView.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 186 - 0
app/src/main/java/com/tjzhxx/union/custom_view/PhotoSelectLayout.java

@@ -0,0 +1,186 @@
+package com.tjzhxx.union.custom_view;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.bumptech.glide.Glide;
+import com.huantansheng.easyphotos.EasyPhotos;
+import com.huantansheng.easyphotos.callback.SelectCallback;
+import com.huantansheng.easyphotos.models.album.entity.Photo;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.permission.PermissionHelper;
+import com.tjzhxx.union.permission.PermissionInterface;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.FileUtils;
+import com.tjzhxx.union.public_store.GlideEngine;
+import com.tjzhxx.union.public_store.ImageUtils;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.system.BaseActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2021/9/8 10:23 PM
+ */
+public class PhotoSelectLayout extends LinearLayout implements PermissionInterface {
+    private TextView title;
+    private ImageView image;
+    private ImageView remark;
+    private String imageUrl;
+    private String remarkUrl;
+    private Context context;
+    private PermissionHelper mPermissionHelper;
+
+    public PhotoSelectLayout(Context context) {
+        this(context, null);
+    }
+
+    public PhotoSelectLayout(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public PhotoSelectLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        this.context = context;
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PhotoSelectLayout);
+        LayoutInflater.from(context).inflate(R.layout.photo_select, this);
+        image = (ImageView) findViewById(R.id.image);
+        mPermissionHelper = new PermissionHelper((BaseActivity)context, this);
+        image.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mPermissionHelper.requestPermissions();
+            }
+        });
+        remark = (ImageView) findViewById(R.id.image_remark);
+        title = (TextView) findViewById(R.id.title);
+        title.setText(a.getText(R.styleable.PhotoSelectLayout_title));
+    }
+
+    public String getImageUrl() {
+        return imageUrl;
+    }
+
+    public void setImageUrl(String imageUrl) {
+        this.imageUrl = imageUrl;
+
+    }
+
+    public String getRemarkUrl() {
+        return remarkUrl;
+    }
+
+    public void setRemarkUrl(String remarkUrl) {
+        this.remarkUrl = remarkUrl;
+        Glide.with(context)
+                .load(remarkUrl)
+                .placeholder(R.mipmap.icon_camera)
+                .error(R.mipmap.icon_camera)
+                .centerCrop()
+                .into(remark);
+    }
+    //上传图片
+    private void uploadImage(String path) {
+        UnionServices services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        File file = new File(path);
+        RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+        MultipartBody.Part imageBodyPart = MultipartBody.Part.createFormData("file", file.getName(), imageBody);
+        services.uploadImage(imageBodyPart)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<String>>autoDisposable(AndroidLifecycleScopeProvider.from((BaseActivity)context, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<String>>((BaseActivity)context) {
+                    @Override
+                    public void success(BaseResponse<String> value) {
+                       imageUrl = value.getData();
+                    }
+
+                });
+    }
+
+    @Override
+    public int getPermissionsRequestCode() {
+        return 999;
+    }
+
+    @Override
+    public String[] getPermissions() {
+        return new String[]{
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.CAMERA
+        };
+    }
+
+    @Override
+    public void requestPermissionsSuccess() {
+        EasyPhotos.createAlbum((BaseActivity) context, true, false, GlideEngine.getInstance())
+                .setFileProviderAuthority("com.tjzhxx.union.FileProvider")
+                .setCount(1)
+                .setPuzzleMenu(false)
+                .setCleanMenu(false)
+                .start(new SelectCallback() {
+                    @Override
+                    public void onResult(ArrayList<Photo> photos, boolean isOriginal) {
+                        Glide.with(context)
+                                .load(photos.get(0).path)
+                                .error(R.mipmap.loading)
+                                .placeholder(R.mipmap.loading)
+                                .into(image);
+                        String compressPath = FileUtils.getCompressFilePath(context) + "/" + photos.get(0).name;
+                        new Thread(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (photos.get(0).size > 2 * 1024) {
+                                    File file = new File(photos.get(0).path);
+                                    ImageUtils.compressBmp(context, file, compressPath, 2 * 1024);
+                                    ((BaseActivity) context).runOnUiThread(new Runnable() {
+                                        @Override
+                                        public void run() {
+                                            uploadImage(compressPath);
+                                        }
+                                    });
+                                } else {
+                                    uploadImage(photos.get(0).path);
+                                }
+
+                            }
+                        }).start();
+
+                    }
+
+                    @Override
+                    public void onCancel() {
+                    }
+                });
+    }
+
+    @Override
+    public void requestPermissionsFail() {
+
+    }
+}

+ 2 - 2
app/src/main/java/com/yhx/union/custom_view/RatingBarView.java → app/src/main/java/com/tjzhxx/union/custom_view/RatingBarView.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -9,7 +9,7 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
-import com.yhx.union.R;
+import com.tjzhxx.union.R;
 
 
 /**

+ 2 - 2
app/src/main/java/com/yhx/union/custom_view/RoundImageView.java → app/src/main/java/com/tjzhxx/union/custom_view/RoundImageView.java

@@ -1,4 +1,4 @@
-package com.yhx.union.custom_view;
+package com.tjzhxx.union.custom_view;
 
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -16,7 +16,7 @@ import android.util.TypedValue;
 
 import androidx.appcompat.widget.AppCompatImageView;
 
-import com.yhx.union.R;
+import com.tjzhxx.union.R;
 
 
 /**

+ 80 - 0
app/src/main/java/com/tjzhxx/union/dialog/DialogNoMemberDialog.java

@@ -0,0 +1,80 @@
+package com.tjzhxx.union.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.Display;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+
+import com.tjzhxx.union.R;
+
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2018/6/8  下午4:29
+ */
+public class DialogNoMemberDialog extends Dialog {
+    private Context context;
+    private OnSureListener onSureListener;
+
+    public void setOnSureListener(OnSureListener onSureListener) {
+        this.onSureListener = onSureListener;
+    }
+
+    public DialogNoMemberDialog(@NonNull final Context context) {
+        super(context, R.style.cp_dialogNoTitle);
+        this.context = context;
+        super.setContentView(R.layout.dialog_no_member_prompt);
+        findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                dismiss();
+            }
+        });
+        findViewById(R.id.sure).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (onSureListener != null) {
+                    onSureListener.onSureListener();
+                }
+                dismiss();
+            }
+        });
+        setCancelAble(false);
+    }
+
+    public DialogNoMemberDialog setCancelAble(boolean cancelAble) {
+        setCancelable(cancelAble);
+        return this;
+    }
+
+
+    @SuppressWarnings("deprecation")
+    @Override
+    public void show() {
+        Window dialogWindow = this.getWindow();
+//        dialogWindow.setWindowAnimations(R.style.cp_dialogWindowAnim);
+        WindowManager windowManager = dialogWindow.getWindowManager();
+        Display display = windowManager.getDefaultDisplay();
+        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
+        dialogWindow.setGravity(Gravity.CENTER_HORIZONTAL
+                | Gravity.CENTER_VERTICAL);
+        lp.width = (display.getWidth() * 1);
+        int height = lp.height;
+        if (height > display.getWidth() * 0.9) {
+            lp.height = (int) (display.getWidth() * 0.9);
+        }
+        dialogWindow.setAttributes(lp);
+        super.show();
+    }
+
+    public interface OnSureListener {
+        void onSureListener();
+    }
+}

+ 3 - 3
app/src/main/java/com/yhx/union/dialog/SessionPromptDialog.java → app/src/main/java/com/tjzhxx/union/dialog/SessionPromptDialog.java

@@ -1,4 +1,4 @@
-package com.yhx.union.dialog;
+package com.tjzhxx.union.dialog;
 
 import android.app.Dialog;
 import android.content.Context;
@@ -10,8 +10,8 @@ import android.view.WindowManager;
 
 import androidx.annotation.NonNull;
 
-import com.yhx.union.R;
-import com.yhx.union.system.MyApplication;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.system.MyApplication;
 
 
 /**

+ 98 - 0
app/src/main/java/com/tjzhxx/union/entity/AuthenticationInfo.java

@@ -0,0 +1,98 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/7  10:26 AM
+ */
+public class AuthenticationInfo implements Serializable {
+    private String wname;
+    private String gender;
+    private String nation;
+    private String sfzid;
+    private String address;
+    private String frontsfzurl;
+    private String backsfzurl;
+    private String sfzenddate;
+
+    public String getWname() {
+        return wname;
+    }
+
+    public void setWname(String wname) {
+        this.wname = wname;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getNation() {
+        return nation;
+    }
+
+    public void setNation(String nation) {
+        this.nation = nation;
+    }
+
+    public String getSfzid() {
+        return sfzid;
+    }
+
+    public void setSfzid(String sfzid) {
+        this.sfzid = sfzid;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getFrontsfzurl() {
+        return frontsfzurl;
+    }
+
+    public void setFrontsfzurl(String frontsfzurl) {
+        this.frontsfzurl = frontsfzurl;
+    }
+
+    public String getBacksfzurl() {
+        return backsfzurl;
+    }
+
+    public void setBacksfzurl(String backsfzurl) {
+        this.backsfzurl = backsfzurl;
+    }
+
+    public String getSfzenddate() {
+        return sfzenddate;
+    }
+
+    public void setSfzenddate(String sfzenddate) {
+        this.sfzenddate = sfzenddate;
+    }
+
+    @Override
+    public String toString() {
+        return "AuthenticationInfo{" +
+                "wname='" + wname + '\'' +
+                ", gender='" + gender + '\'' +
+                ", nation='" + nation + '\'' +
+                ", sfzid='" + sfzid + '\'' +
+                ", address='" + address + '\'' +
+                ", frontsfzurl='" + frontsfzurl + '\'' +
+                ", backsfzurl='" + backsfzurl + '\'' +
+                ", sfzenddate='" + sfzenddate + '\'' +
+                '}';
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/entity/BannerEntity.java → app/src/main/java/com/tjzhxx/union/entity/BannerEntity.java

@@ -1,4 +1,4 @@
-package com.yhx.union.entity;
+package com.tjzhxx.union.entity;
 
 import java.io.Serializable;
 /**

+ 15 - 17
app/src/main/java/com/yhx/union/entity/BaseResponse.java → app/src/main/java/com/tjzhxx/union/entity/BaseResponse.java

@@ -1,4 +1,4 @@
-package com.yhx.union.entity;
+package com.tjzhxx.union.entity;
 
 import java.io.Serializable;
 
@@ -9,24 +9,18 @@ import java.io.Serializable;
  * 
  */
 public class BaseResponse<T> implements Serializable {
-    /**
-     * "code": 0,
-     * "succeed": true,
-     * "msg": "成功",
-     * "data":""
-     */
-    
-    private boolean succeed;
+    private int status;
     private int code;
     private String msg;
     private T resultData;
+    private T data;
 
-    public boolean isSucceed() {
-        return succeed;
+    public int getStatus() {
+        return status;
     }
 
-    public void setSucceed(boolean succeed) {
-        this.succeed = succeed;
+    public void setStatus(int status) {
+        this.status = status;
     }
 
     public int getCode() {
@@ -49,11 +43,15 @@ public class BaseResponse<T> implements Serializable {
         return resultData;
     }
 
-    public void setResultData(T data) {
+    public void setResultData(T resultData) {
         this.resultData = resultData;
     }
-    
-    public boolean isOK() {
-        return code == 0 && resultData != null;
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
     }
 }

+ 46 - 0
app/src/main/java/com/tjzhxx/union/entity/BaseResponse2.java

@@ -0,0 +1,46 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2018/4/10 下午2:41
+ * 
+ */
+public class BaseResponse2<T> implements Serializable {
+    /**
+     * "code": 0,
+     * "succeed": true,
+     * "msg": "成功",
+     * "data":""
+     */
+
+    private int status;
+    private String msg;
+    private T data;
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+}

+ 31 - 0
app/src/main/java/com/tjzhxx/union/entity/Doclist.java

@@ -0,0 +1,31 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/9  11:15 PM
+ */
+public class Doclist implements Serializable {
+
+    private String docstyle;
+    private String docurl;
+
+    public String getDocstyle() {
+        return docstyle;
+    }
+
+    public void setDocstyle(String docstyle) {
+        this.docstyle = docstyle;
+    }
+
+    public String getDocurl() {
+        return docurl;
+    }
+
+    public void setDocurl(String docurl) {
+        this.docurl = docurl;
+    }
+}

+ 116 - 0
app/src/main/java/com/tjzhxx/union/entity/Faceid.java

@@ -0,0 +1,116 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/6  5:49 PM
+ */
+public class Faceid implements Serializable {
+
+    /**
+     * Name : 程佳伟
+     * Sex : 男
+     * Nation : 汉
+     * Birth : 1991/5/19
+     * Address : 河北省邯郸市魏县双井镇木西村程大街0242号
+     * IdNum : 130434199105193917
+     * Authority :
+     * ValidDate :
+     * AdvancedInfo : {}
+     * RequestId : dcda4f75-a6ac-40f0-9660-b366e8e71d7f
+     */
+
+    private String Name;
+    private String Sex;
+    private String Nation;
+    private String Birth;
+    private String Address;
+    private String IdNum;
+    private String Authority;
+    private String ValidDate;
+    private String AdvancedInfo;
+    private String RequestId;
+
+    public String getName() {
+        return Name;
+    }
+
+    public void setName(String Name) {
+        this.Name = Name;
+    }
+
+    public String getSex() {
+        return Sex;
+    }
+
+    public void setSex(String Sex) {
+        this.Sex = Sex;
+    }
+
+    public String getNation() {
+        return Nation;
+    }
+
+    public void setNation(String Nation) {
+        this.Nation = Nation;
+    }
+
+    public String getBirth() {
+        return Birth;
+    }
+
+    public void setBirth(String Birth) {
+        this.Birth = Birth;
+    }
+
+    public String getAddress() {
+        return Address;
+    }
+
+    public void setAddress(String Address) {
+        this.Address = Address;
+    }
+
+    public String getIdNum() {
+        return IdNum;
+    }
+
+    public void setIdNum(String IdNum) {
+        this.IdNum = IdNum;
+    }
+
+    public String getAuthority() {
+        return Authority;
+    }
+
+    public void setAuthority(String Authority) {
+        this.Authority = Authority;
+    }
+
+    public String getValidDate() {
+        return ValidDate;
+    }
+
+    public void setValidDate(String ValidDate) {
+        this.ValidDate = ValidDate;
+    }
+
+    public String getAdvancedInfo() {
+        return AdvancedInfo;
+    }
+
+    public void setAdvancedInfo(String AdvancedInfo) {
+        this.AdvancedInfo = AdvancedInfo;
+    }
+
+    public String getRequestId() {
+        return RequestId;
+    }
+
+    public void setRequestId(String RequestId) {
+        this.RequestId = RequestId;
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/entity/NewBean.java → app/src/main/java/com/tjzhxx/union/entity/NewBean.java

@@ -1,4 +1,4 @@
-package com.yhx.union.entity;
+package com.tjzhxx.union.entity;
 
 import java.io.Serializable;
 

+ 94 - 0
app/src/main/java/com/tjzhxx/union/entity/Rescuestyle.java

@@ -0,0 +1,94 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/2  8:11 AM
+ */
+public class Rescuestyle implements Serializable {
+
+    /**
+     * id : 1
+     * rescuestyle : 1
+     * dockind : 病历
+     * docindex : 1
+     * maxlength : 1
+     * ismust : 1
+     * demourl : https://app.tjzhxx.com/Uploads/rescuedemo/bl.png
+     */
+
+    private String id;
+    private String rescuestyle;
+    private String dockind;
+    private String docindex;
+    private String maxlength;
+    private String ismust;
+    private String demourl;
+    private String imageUrl;
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getRescuestyle() {
+        return rescuestyle;
+    }
+
+    public void setRescuestyle(String rescuestyle) {
+        this.rescuestyle = rescuestyle;
+    }
+
+    public String getDockind() {
+        return dockind;
+    }
+
+    public void setDockind(String dockind) {
+        this.dockind = dockind;
+    }
+
+    public String getDocindex() {
+        return docindex;
+    }
+
+    public void setDocindex(String docindex) {
+        this.docindex = docindex;
+    }
+
+    public String getMaxlength() {
+        return maxlength;
+    }
+
+    public void setMaxlength(String maxlength) {
+        this.maxlength = maxlength;
+    }
+
+    public String getIsmust() {
+        return ismust;
+    }
+
+    public void setIsmust(String ismust) {
+        this.ismust = ismust;
+    }
+
+    public String getDemourl() {
+        return demourl;
+    }
+
+    public void setDemourl(String demourl) {
+        this.demourl = demourl;
+    }
+
+    public String getImageUrl() {
+        return imageUrl;
+    }
+
+    public void setImageUrl(String imageUrl) {
+        this.imageUrl = imageUrl;
+    }
+}

+ 77 - 0
app/src/main/java/com/tjzhxx/union/entity/Resucekey.java

@@ -0,0 +1,77 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/9  11:15 PM
+ */
+public class Resucekey implements Serializable {
+
+    /**
+     * infokey : enterprisename
+     * infodisstr : 单位名称
+     * infovalue :
+     * isuseauditing : 1
+     * ismust : 0
+     */
+
+    private String infokey;
+    private String infodisstr;
+    private String infovalue;
+    private int isuseauditing;
+    private int ismust;
+
+    public String getInfokey() {
+        return infokey;
+    }
+
+    public void setInfokey(String infokey) {
+        this.infokey = infokey;
+    }
+
+    public String getInfodisstr() {
+        return infodisstr;
+    }
+
+    public void setInfodisstr(String infodisstr) {
+        this.infodisstr = infodisstr;
+    }
+
+    public String getInfovalue() {
+        return infovalue;
+    }
+
+    public void setInfovalue(String infovalue) {
+        this.infovalue = infovalue;
+    }
+
+    public int getIsuseauditing() {
+        return isuseauditing;
+    }
+
+    public void setIsuseauditing(int isuseauditing) {
+        this.isuseauditing = isuseauditing;
+    }
+
+    public int getIsmust() {
+        return ismust;
+    }
+
+    public void setIsmust(int ismust) {
+        this.ismust = ismust;
+    }
+
+    @Override
+    public String toString() {
+        return "Resucekey{" +
+                "infokey='" + infokey + '\'' +
+                ", infodisstr='" + infodisstr + '\'' +
+                ", infovalue='" + infovalue + '\'' +
+                ", isuseauditing=" + isuseauditing +
+                ", ismust=" + ismust +
+                '}';
+    }
+}

+ 64 - 0
app/src/main/java/com/tjzhxx/union/entity/UserInfo.java

@@ -0,0 +1,64 @@
+package com.tjzhxx.union.entity;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/8  7:20 PM
+ */
+public class UserInfo implements Serializable {
+
+    /**
+     * wid : 61
+     * gender : 男
+     * telno : 13512442396
+     * isactive : 0
+     */
+    private String wname;
+    private String wid;
+    private String gender;
+    private String telno;
+    private String isactive;
+
+    public String getWid() {
+        return wid;
+    }
+
+    public void setWid(String wid) {
+        this.wid = wid;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getTelno() {
+        return telno;
+    }
+
+    public void setTelno(String telno) {
+        this.telno = telno;
+    }
+
+    public String getIsactive() {
+        return isactive;
+    }
+
+    public void setIsactive(String isactive) {
+        this.isactive = isactive;
+    }
+
+    public String getWname() {
+        return wname;
+    }
+
+    public void setWname(String wname) {
+        this.wname = wname;
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/entity/request/BaseRequest.java → app/src/main/java/com/tjzhxx/union/entity/request/BaseRequest.java

@@ -1,4 +1,4 @@
-package com.yhx.union.entity.request;
+package com.tjzhxx.union.entity.request;
 
 
 import com.google.gson.annotations.SerializedName;

+ 30 - 0
app/src/main/java/com/tjzhxx/union/entity/request/DataDbqzPhotoRequest.java

@@ -0,0 +1,30 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/9  12:00 AM
+ */
+public class DataDbqzPhotoRequest implements Serializable {
+    private String applyid;
+    private String doclist;
+
+    public String getApplyid() {
+        return applyid;
+    }
+
+    public void setApplyid(String applyid) {
+        this.applyid = applyid;
+    }
+
+    public String getDoclist() {
+        return doclist;
+    }
+
+    public void setDoclist(String doclist) {
+        this.doclist = doclist;
+    }
+}

+ 58 - 0
app/src/main/java/com/tjzhxx/union/entity/request/DataDbqzRequest.java

@@ -0,0 +1,58 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/9  12:00 AM
+ */
+public class DataDbqzRequest implements Serializable {
+    private String applytelno;
+    private String wid;
+    private String rescuestyle;
+    private String valuelist;
+
+    public String getApplytelno() {
+        return applytelno;
+    }
+
+    public void setApplytelno(String applytelno) {
+        this.applytelno = applytelno;
+    }
+
+    public String getWid() {
+        return wid;
+    }
+
+    public void setWid(String wid) {
+        this.wid = wid;
+    }
+
+    public String getRescuestyle() {
+        return rescuestyle;
+    }
+
+    public void setRescuestyle(String rescuestyle) {
+        this.rescuestyle = rescuestyle;
+    }
+
+    public String getValuelist() {
+        return valuelist;
+    }
+
+    public void setValuelist(String valuelist) {
+        this.valuelist = valuelist;
+    }
+
+    @Override
+    public String toString() {
+        return "DataDbqzRequest{" +
+                "applytelno='" + applytelno + '\'' +
+                ", wid='" + wid + '\'' +
+                ", rescuestyle='" + rescuestyle + '\'' +
+                ", valuelist='" + valuelist + '\'' +
+                '}';
+    }
+}

+ 50 - 0
app/src/main/java/com/tjzhxx/union/entity/request/DataXcjzRequest.java

@@ -0,0 +1,50 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/9  12:00 AM
+ */
+public class DataXcjzRequest implements Serializable {
+    private String applytelno;
+    private String wid;
+    private String rescuestyle;
+    private String doclist;
+
+    public String getApplytelno() {
+        return applytelno;
+    }
+
+    public void setApplytelno(String applytelno) {
+        this.applytelno = applytelno;
+    }
+
+    public String getWid() {
+        return wid;
+    }
+
+    public void setWid(String wid) {
+        this.wid = wid;
+    }
+
+    public String getRescuestyle() {
+        return rescuestyle;
+    }
+
+    public void setRescuestyle(String rescuestyle) {
+        this.rescuestyle = rescuestyle;
+    }
+
+    public String getDoclist() {
+        return doclist;
+    }
+
+    public void setDoclist(String doclist) {
+        this.doclist = doclist;
+    }
+
+
+}

+ 57 - 0
app/src/main/java/com/tjzhxx/union/entity/request/DataZywwRequest.java

@@ -0,0 +1,57 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/9  12:00 AM
+ */
+public class DataZywwRequest implements Serializable {
+    private String applytelno;
+    private String wid;
+    private String rescuestyle;
+    private String doclist;
+    private String valuelist;
+    public String getApplytelno() {
+        return applytelno;
+    }
+
+    public void setApplytelno(String applytelno) {
+        this.applytelno = applytelno;
+    }
+
+    public String getWid() {
+        return wid;
+    }
+
+    public void setWid(String wid) {
+        this.wid = wid;
+    }
+
+    public String getRescuestyle() {
+        return rescuestyle;
+    }
+
+    public void setRescuestyle(String rescuestyle) {
+        this.rescuestyle = rescuestyle;
+    }
+
+    public String getDoclist() {
+        return doclist;
+    }
+
+    public void setDoclist(String doclist) {
+        this.doclist = doclist;
+    }
+
+    public String getValuelist() {
+        return valuelist;
+    }
+
+    public void setValuelist(String valuelist) {
+        this.valuelist = valuelist;
+    }
+
+}

+ 32 - 0
app/src/main/java/com/tjzhxx/union/entity/request/FaceidRequest.java

@@ -0,0 +1,32 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ * 
+ */
+public class FaceidRequest implements Serializable {
+    
+    private String imgurl;
+
+    private String cardSide;
+
+    public String getImgurl() {
+        return imgurl;
+    }
+
+    public void setImgurl(String imgurl) {
+        this.imgurl = imgurl;
+    }
+
+    public String getCardSide() {
+        return cardSide;
+    }
+
+    public void setCardSide(String cardSide) {
+        this.cardSide = cardSide;
+    }
+}

+ 22 - 0
app/src/main/java/com/tjzhxx/union/entity/request/GetPayInfoRequest.java

@@ -0,0 +1,22 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ * 
+ */
+public class GetPayInfoRequest implements Serializable {
+    
+    private String wid;
+
+    public String getWid() {
+        return wid;
+    }
+
+    public void setWid(String wid) {
+        this.wid = wid;
+    }
+}

+ 22 - 0
app/src/main/java/com/tjzhxx/union/entity/request/IsRepeatRequest.java

@@ -0,0 +1,22 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ * 
+ */
+public class IsRepeatRequest implements Serializable {
+    
+    private String sfzid;
+
+    public String getSfzid() {
+        return sfzid;
+    }
+
+    public void setSfzid(String sfzid) {
+        this.sfzid = sfzid;
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/entity/request/NewListRequest.java → app/src/main/java/com/tjzhxx/union/entity/request/NewListRequest.java

@@ -1,4 +1,4 @@
-package com.yhx.union.entity.request;
+package com.tjzhxx.union.entity.request;
 
 import java.io.Serializable;
 /**

+ 1 - 1
app/src/main/java/com/yhx/union/entity/request/Request.java → app/src/main/java/com/tjzhxx/union/entity/request/Request.java

@@ -1,4 +1,4 @@
-package com.yhx.union.entity.request;
+package com.tjzhxx.union.entity.request;
 
 import java.io.Serializable;
 

+ 15 - 0
app/src/main/java/com/tjzhxx/union/entity/request/RescuestyleRequest.java

@@ -0,0 +1,15 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ * 
+ */
+public class RescuestyleRequest implements Serializable {
+    
+    private int rescuestyle;//救助类型1、现场慰问、2住院慰问、3大病救助、4持卡专享五项重疾、5非工意外、6家庭财税
+
+}

+ 22 - 0
app/src/main/java/com/tjzhxx/union/entity/request/SmsCodeRequest.java

@@ -0,0 +1,22 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ * 
+ */
+public class SmsCodeRequest implements Serializable {
+    
+    private String tel;
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+}

+ 30 - 0
app/src/main/java/com/tjzhxx/union/entity/request/SmsLoginRequest.java

@@ -0,0 +1,30 @@
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ * 
+ */
+public class SmsLoginRequest implements Serializable {
+    
+    private String tel;
+    private String smscode;
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getSmscode() {
+        return smscode;
+    }
+
+    public void setSmscode(String smscode) {
+        this.smscode = smscode;
+    }
+}

+ 230 - 0
app/src/main/java/com/tjzhxx/union/entity/request/SubnewworkerRequest.java

@@ -0,0 +1,230 @@
+
+package com.tjzhxx.union.entity.request;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2021/9/2 8:07 AM
+ */
+public class SubnewworkerRequest implements Serializable {
+
+    private String address;
+    private String backsfzurl;
+    private String census;
+    private String city;
+    private String disc;
+    private String enterprisename;
+    private String frontsfzurl;
+    private String gender;
+    private String iseightgroup;
+    private String ismigrant;
+    private String isstable;
+    private String jobstatus;
+    private String nation;
+    private String openid;
+    private String unionid;
+    private String politic;
+    private String sfzenddate;
+    private String sfzid;
+    private String signurl;
+    private String telno;
+    private String wname;
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getBacksfzurl() {
+        return backsfzurl;
+    }
+
+    public void setBacksfzurl(String backsfzurl) {
+        this.backsfzurl = backsfzurl;
+    }
+
+    public String getCensus() {
+        return census;
+    }
+
+    public void setCensus(String census) {
+        this.census = census;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getDisc() {
+        return disc;
+    }
+
+    public void setDisc(String disc) {
+        this.disc = disc;
+    }
+
+    public String getEnterprisename() {
+        return enterprisename;
+    }
+
+    public void setEnterprisename(String enterprisename) {
+        this.enterprisename = enterprisename;
+    }
+
+    public String getFrontsfzurl() {
+        return frontsfzurl;
+    }
+
+    public void setFrontsfzurl(String frontsfzurl) {
+        this.frontsfzurl = frontsfzurl;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getIseightgroup() {
+        return iseightgroup;
+    }
+
+    public void setIseightgroup(String iseightgroup) {
+        this.iseightgroup = iseightgroup;
+    }
+
+    public String getIsmigrant() {
+        return ismigrant;
+    }
+
+    public void setIsmigrant(String ismigrant) {
+        this.ismigrant = ismigrant;
+    }
+
+    public String getIsstable() {
+        return isstable;
+    }
+
+    public void setIsstable(String isstable) {
+        this.isstable = isstable;
+    }
+
+    public String getJobstatus() {
+        return jobstatus;
+    }
+
+    public void setJobstatus(String jobstatus) {
+        this.jobstatus = jobstatus;
+    }
+
+    public String getNation() {
+        return nation;
+    }
+
+    public void setNation(String nation) {
+        this.nation = nation;
+    }
+
+    public String getOpenid() {
+        return openid;
+    }
+
+    public void setOpenid(String openid) {
+        this.openid = openid;
+    }
+
+    public String getUnionid() {
+        return unionid;
+    }
+
+    public void setUnionid(String unionid) {
+        this.unionid = unionid;
+    }
+
+    public String getPolitic() {
+        return politic;
+    }
+
+    public void setPolitic(String politic) {
+        this.politic = politic;
+    }
+
+    public String getSfzenddate() {
+        return sfzenddate;
+    }
+
+    public void setSfzenddate(String sfzenddate) {
+        this.sfzenddate = sfzenddate;
+    }
+
+    public String getSfzid() {
+        return sfzid;
+    }
+
+    public void setSfzid(String sfzid) {
+        this.sfzid = sfzid;
+    }
+
+    public String getSignurl() {
+        return signurl;
+    }
+
+    public void setSignurl(String signurl) {
+        this.signurl = signurl;
+    }
+
+    public String getTelno() {
+        return telno;
+    }
+
+    public void setTelno(String telno) {
+        this.telno = telno;
+    }
+
+    public String getWname() {
+        return wname;
+    }
+
+    public void setWname(String wname) {
+        this.wname = wname;
+    }
+
+    @Override
+    public String toString() {
+        return "SubnewworkerRequest{" +
+                "address='" + address + '\'' +
+                ", backsfzurl='" + backsfzurl + '\'' +
+                ", census='" + census + '\'' +
+                ", city='" + city + '\'' +
+                ", disc='" + disc + '\'' +
+                ", enterprisename='" + enterprisename + '\'' +
+                ", frontsfzurl='" + frontsfzurl + '\'' +
+                ", gender='" + gender + '\'' +
+                ", iseightgroup='" + iseightgroup + '\'' +
+                ", ismigrant='" + ismigrant + '\'' +
+                ", isstable='" + isstable + '\'' +
+                ", jobstatus='" + jobstatus + '\'' +
+                ", nation='" + nation + '\'' +
+                ", openid='" + openid + '\'' +
+                ", unionid='" + unionid + '\'' +
+                ", politic='" + politic + '\'' +
+                ", sfzenddate='" + sfzenddate + '\'' +
+                ", sfzid='" + sfzid + '\'' +
+                ", signurl='" + signurl + '\'' +
+                ", telno='" + telno + '\'' +
+                ", wname='" + wname + '\'' +
+                '}';
+    }
+}

+ 90 - 0
app/src/main/java/com/tjzhxx/union/entity/request/WxPayReq.java

@@ -0,0 +1,90 @@
+package com.tjzhxx.union.entity.request;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.io.Serializable;
+
+/**
+ * 描述:
+ *
+ * @author yanghuaxiong
+ * @create 2018/8/15  上午11:40
+ */
+public class WxPayReq implements Serializable {
+
+
+    /**
+     * package : Sign=WXPay
+     * appid : wxe917ed08edd31c18
+     * sign : C1E2A0440E3D195617B9A7AAB2501C37
+     * partnerid : 1510043531
+     * prepayid : wx23143512851804cb234a57e71663284657
+     * noncestr : 8d1c5f6a271d4f22938a0eaffd80cb68
+     * timestamp : 1540276512
+     */
+
+    @SerializedName("package")
+    private String packageX;
+    private String appid;
+    private String sign;
+    private String partnerid;
+    private String prepayid;
+    private String noncestr;
+    private String timestamp;
+
+    public String getPackageX() {
+        return packageX;
+    }
+
+    public void setPackageX(String packageX) {
+        this.packageX = packageX;
+    }
+
+    public String getAppid() {
+        return appid;
+    }
+
+    public void setAppid(String appid) {
+        this.appid = appid;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+    public String getPartnerid() {
+        return partnerid;
+    }
+
+    public void setPartnerid(String partnerid) {
+        this.partnerid = partnerid;
+    }
+
+    public String getPrepayid() {
+        return prepayid;
+    }
+
+    public void setPrepayid(String prepayid) {
+        this.prepayid = prepayid;
+    }
+
+    public String getNoncestr() {
+        return noncestr;
+    }
+
+    public void setNoncestr(String noncestr) {
+        this.noncestr = noncestr;
+    }
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        this.timestamp = timestamp;
+    }
+}

+ 131 - 0
app/src/main/java/com/tjzhxx/union/fragment/ActivityListFragment.java

@@ -0,0 +1,131 @@
+package com.tjzhxx.union.fragment;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Lifecycle;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.NewAdapter;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.NewBean;
+import com.tjzhxx.union.entity.request.NewListRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.system.BaseFragment;
+import com.tjzhxx.union.system.WebviewActivity;
+import com.uber.autodispose.AutoDispose;
+import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2021/9/13  11:32 PM
+ */
+public class ActivityListFragment extends BaseFragment {
+    @BindView(R.id.recyclerView)
+    RecyclerView recyclerView;
+    @BindView(R.id.refreshLayout)
+    SmartRefreshLayout refreshLayout;
+    private NewAdapter mAdapter;
+    private List<NewBean> newBeans = new ArrayList<>();
+    private UnionServices services;
+    private int pageNo = 1, stepSize = 10;
+    private boolean isHasMore = false;
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_new_list, container, false);
+        ButterKnife.bind(this, view);
+        services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
+        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
+        mAdapter = new NewAdapter(getActivity(), newBeans);
+        mAdapter.setOnItemClickListener(new NewAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(View view, NewBean entity) {
+                Intent intent = new Intent();
+                intent.setClass(getActivity(), WebviewActivity.class);
+                intent.putExtra("url", entity.getWxurl());
+                intent.putExtra("title", "活动报道");
+                startActivity(intent);
+            }
+        });
+        recyclerView.setAdapter(mAdapter);
+        refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(RefreshLayout refreshLayout) {
+                pageNo = 1;
+                loadDate();
+            }
+        });
+
+        refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(RefreshLayout refreshLayout) {
+                loadDate();
+            }
+        });
+        loadDate();
+        return view;
+    }
+
+    //加载新闻
+    private void loadDate() {
+        NewListRequest request = new NewListRequest();
+        request.setPageNum(pageNo);
+        request.setPageSize(stepSize);
+        services.queryactivityreportforapp(request)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .as(AutoDispose.<BaseResponse<List<NewBean>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
+                .subscribe(new DefaultSubscriber<BaseResponse<List<NewBean>>>(getActivity()) {
+                    @Override
+                    public void success(BaseResponse<List<NewBean>> value) {
+                        if (value.getData() != null) {
+                            List<NewBean> beanList = value.getData();
+                            if (beanList != null) {
+                                if (pageNo == 1) {
+                                    newBeans.clear();
+                                }
+                                if (beanList.size() == stepSize) {
+                                    isHasMore = true;
+                                    pageNo++;
+                                } else {
+                                    isHasMore = false;
+                                }
+                                newBeans.addAll(beanList);
+                            } else {
+                                isHasMore = false;
+                            }
+                        } else {
+                            showSnackBar("加载失败");
+                        }
+                        mAdapter.notifyDataSetChanged();
+                        refreshComplete(refreshLayout, isHasMore);
+                    }
+
+                });
+    }
+}

+ 32 - 29
app/src/main/java/com/yhx/union/activity/NewListActivity.java → app/src/main/java/com/tjzhxx/union/fragment/NewListFragment.java

@@ -1,9 +1,13 @@
-package com.yhx.union.activity;
+package com.tjzhxx.union.fragment;
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.lifecycle.Lifecycle;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
@@ -12,24 +16,25 @@ import com.scwang.smart.refresh.layout.SmartRefreshLayout;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.adapter.NewAdapter;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.NewBean;
+import com.tjzhxx.union.entity.request.NewListRequest;
+import com.tjzhxx.union.public_store.ConstDefine;
+import com.tjzhxx.union.public_store.retrofit.RetrofitUtils;
+import com.tjzhxx.union.public_store.retrofit.UnionServices;
+import com.tjzhxx.union.public_store.rx.DefaultSubscriber;
+import com.tjzhxx.union.system.BaseFragment;
+import com.tjzhxx.union.system.WebviewActivity;
 import com.uber.autodispose.AutoDispose;
 import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider;
-import com.yhx.union.R;
-import com.yhx.union.adapter.NewAdapter;
-import com.yhx.union.entity.BaseResponse;
-import com.yhx.union.entity.NewBean;
-import com.yhx.union.entity.request.NewListRequest;
-import com.yhx.union.public_store.ConstDefine;
-import com.yhx.union.public_store.retrofit.RetrofitUtils;
-import com.yhx.union.public_store.retrofit.UnionServices;
-import com.yhx.union.public_store.rx.DefaultSubscriber;
-import com.yhx.union.system.BaseActivity;
-import com.yhx.union.system.WebviewActivity;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import butterknife.BindView;
+import butterknife.ButterKnife;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
@@ -37,9 +42,9 @@ import io.reactivex.schedulers.Schedulers;
  * 描述:
  *
  * @author yhx
- * @create 2021/9/2  8:57 AM
+ * @create 2021/9/13  11:32 PM
  */
-public class NewListActivity extends BaseActivity {
+public class NewListFragment extends BaseFragment {
     @BindView(R.id.recyclerView)
     RecyclerView recyclerView;
     @BindView(R.id.refreshLayout)
@@ -49,23 +54,19 @@ public class NewListActivity extends BaseActivity {
     private UnionServices services;
     private int pageNo = 1, stepSize = 10;
     private boolean isHasMore = false;
-
+    @Nullable
     @Override
-    public int getContentViewLayoutID() {
-        return R.layout.activity_new_list;
-    }
-
-    @Override
-    public void bindViewAndEvent(Bundle savedInstanceState) {
-        initTitle("工会新闻");
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_new_list, container, false);
+        ButterKnife.bind(this, view);
         services = RetrofitUtils.createApi(UnionServices.class, ConstDefine.HttpAdress);
-        recyclerView.setLayoutManager(new LinearLayoutManager(this));
-        mAdapter = new NewAdapter(this, newBeans);
+        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
+        mAdapter = new NewAdapter(getActivity(), newBeans);
         mAdapter.setOnItemClickListener(new NewAdapter.OnItemClickListener() {
             @Override
             public void onItemClick(View view, NewBean entity) {
                 Intent intent = new Intent();
-                intent.setClass(NewListActivity.this, WebviewActivity.class);
+                intent.setClass(getActivity(), WebviewActivity.class);
                 intent.putExtra("url", entity.getWxurl());
                 intent.putExtra("title", "工会新闻");
                 startActivity(intent);
@@ -86,18 +87,20 @@ public class NewListActivity extends BaseActivity {
                 loadDate();
             }
         });
-        refreshLayout.autoRefresh();
+        loadDate();
+        return view;
     }
+
     //加载新闻
     private void loadDate() {
         NewListRequest request = new NewListRequest();
-        request.setPageNum(1);
-        request.setPageSize(5);
+        request.setPageNum(pageNo);
+        request.setPageSize(stepSize);
         services.querynewlist(request)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .as(AutoDispose.<BaseResponse<List<NewBean>>>autoDisposable(AndroidLifecycleScopeProvider.from(this, Lifecycle.Event.ON_DESTROY)))
-                .subscribe(new DefaultSubscriber<BaseResponse<List<NewBean>>>(this) {
+                .subscribe(new DefaultSubscriber<BaseResponse<List<NewBean>>>(getActivity()) {
                     @Override
                     public void success(BaseResponse<List<NewBean>> value) {
                         if (value.getResultData() != null) {

+ 63 - 0
app/src/main/java/com/tjzhxx/union/permission/PermissionHelper.java

@@ -0,0 +1,63 @@
+package com.tjzhxx.union.permission;
+
+import android.app.Activity;
+import android.content.pm.PackageManager;
+
+import androidx.annotation.NonNull;
+
+/**
+ * 动态权限帮助类
+ */
+public class PermissionHelper {
+
+    private Activity mActivity;
+    private PermissionInterface mPermissionInterface;
+
+    public PermissionHelper(@NonNull Activity activity, @NonNull PermissionInterface permissionInterface) {
+        mActivity = activity;
+        mPermissionInterface = permissionInterface;
+    }
+
+    /**
+     * 开始请求权限。
+     * 方法内部已经对Android M 或以上版本进行了判断,外部使用不再需要重复判断。
+     * 如果设备还不是M或以上版本,则也会回调到requestPermissionsSuccess方法。
+     */
+    public void requestPermissions(){
+        String[] deniedPermissions = PermissionUtil.getDeniedPermissions(mActivity, mPermissionInterface.getPermissions());
+        if(deniedPermissions != null && deniedPermissions.length > 0){
+            PermissionUtil.requestPermissions(mActivity, deniedPermissions, mPermissionInterface.getPermissionsRequestCode());
+        }else{
+            mPermissionInterface.requestPermissionsSuccess();
+        }
+    }
+
+    /**
+     * 在Activity中的onRequestPermissionsResult中调用
+     * @param requestCode
+     * @param permissions
+     * @param grantResults
+     * @return true 代表对该requestCode感兴趣,并已经处理掉了。false 对该requestCode不感兴趣,不处理。
+     */
+    public boolean requestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){
+        if(requestCode == mPermissionInterface.getPermissionsRequestCode()){
+            boolean isAllGranted = true;//是否全部权限已授权
+            for(int result : grantResults){
+                if(result == PackageManager.PERMISSION_DENIED){
+                    isAllGranted = false;
+                    break;
+                }
+            }
+            if(isAllGranted){
+                //已全部授权
+                mPermissionInterface.requestPermissionsSuccess();
+            }else{
+                //权限有缺失
+                mPermissionInterface.requestPermissionsFail();
+            }
+            return true;
+        }
+        return false;
+    }
+
+}

+ 29 - 0
app/src/main/java/com/tjzhxx/union/permission/PermissionInterface.java

@@ -0,0 +1,29 @@
+package com.tjzhxx.union.permission;
+
+/**
+ * 权限请求接口
+ */
+public interface PermissionInterface {
+
+    /**
+     * 可设置请求权限请求码
+     */
+    int getPermissionsRequestCode();
+
+    /**
+     * 设置需要请求的权限
+     */
+    String[] getPermissions();
+
+    /**
+     * 请求权限成功回调
+     */
+    void requestPermissionsSuccess();
+
+    /**
+     * 请求权限失败回调
+     */
+    void requestPermissionsFail();
+
+
+}

+ 69 - 0
app/src/main/java/com/tjzhxx/union/permission/PermissionUtil.java

@@ -0,0 +1,69 @@
+package com.tjzhxx.union.permission;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+
+import java.util.ArrayList;
+
+/**
+ * 动态权限工具类
+ */
+public class PermissionUtil {
+
+    /**
+     * 判断是否有某个权限
+     *
+     * @param context
+     * @param permission
+     * @return
+     */
+    public static boolean hasPermission(Context context, String permission) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            if (context.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 弹出对话框请求权限
+     *
+     * @param activity
+     * @param permissions
+     * @param requestCode
+     */
+    public static void requestPermissions(Activity activity, String[] permissions, int requestCode) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            activity.requestPermissions(permissions, requestCode);
+        }
+    }
+
+    /**
+     * 返回缺失的权限
+     *
+     * @param context
+     * @param permissions
+     * @return 返回缺少的权限,null 意味着没有缺少权限
+     */
+    public static String[] getDeniedPermissions(Context context, String[] permissions) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            ArrayList<String> deniedPermissionList = new ArrayList<>();
+            for (String permission : permissions) {
+                if (context.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
+                    deniedPermissionList.add(permission);
+                }
+            }
+            int size = deniedPermissionList.size();
+            if (size > 0) {
+                return deniedPermissionList.toArray(new String[deniedPermissionList.size()]);
+            }
+        }
+        return null;
+    }
+
+}
+

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/AppDataFile.java → app/src/main/java/com/tjzhxx/union/public_store/AppDataFile.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.os.Environment;
 

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/AppInfoUitl.java → app/src/main/java/com/tjzhxx/union/public_store/AppInfoUitl.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.content.Context;
 import android.content.pm.PackageInfo;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/BasePreferences.java → app/src/main/java/com/tjzhxx/union/public_store/BasePreferences.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.content.Context;
 import android.content.SharedPreferences;

+ 2 - 2
app/src/main/java/com/yhx/union/public_store/CacheUtils.java → app/src/main/java/com/tjzhxx/union/public_store/CacheUtils.java

@@ -1,7 +1,7 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 
-import com.yhx.union.entity.request.BaseRequest;
+import com.tjzhxx.union.entity.request.BaseRequest;
 
 public class CacheUtils {
     

+ 17 - 0
app/src/main/java/com/tjzhxx/union/public_store/ConstDefine.java

@@ -0,0 +1,17 @@
+package com.tjzhxx.union.public_store;
+
+
+import com.tjzhxx.union.entity.UserInfo;
+
+/**
+ * Created by ynyxmac on 16/2/4.
+ */
+public class ConstDefine {
+//    public static String HttpAdress = "https://app.tjzhxx.com/labphp/";
+    public static String HttpAdress = "https://app.tjzhxx.cn:1443/";//正式环境
+
+    public static String HttpAdressH5 = "http://47.94.42.74:9100/zhghsjd";
+    public static UserInfo userInfo = null;
+    public static String city = "";
+    public static String district = "";
+}

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/CrashHandler.java → app/src/main/java/com/tjzhxx/union/public_store/CrashHandler.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.content.Context;
 import android.content.pm.PackageInfo;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/Des3Util.java → app/src/main/java/com/tjzhxx/union/public_store/Des3Util.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.util.Base64;
 

+ 117 - 0
app/src/main/java/com/tjzhxx/union/public_store/DownloadThread.java

@@ -0,0 +1,117 @@
+package com.tjzhxx.union.public_store;
+
+import android.os.Handler;
+import android.os.Message;
+
+import com.autonavi.base.amap.mapcore.FileUtil;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * 描述:
+ *
+ * @author yhx
+ * @create 2019/5/28  4:12 PM
+ */
+public class DownloadThread extends Thread {
+    private String url;
+    private String path;
+    private String fileName;
+    private Handler mHandler;
+    private int threadId;
+    private int progress;
+    private boolean canceled = false;
+    private int lastRate = 0;
+    private String fileId;
+    /**
+     * 构造方法
+     *
+     * @param url      下载文件的地址
+     * @param path     保存文件的路径
+     * @param threadId 下载文件的线程
+     */
+    public DownloadThread(String url, String path, String fileName, Handler handler, int threadId) {
+        this.url = url;
+        this.path = path;
+        this.threadId = threadId;
+        this.fileName = fileName;
+        mHandler = handler;
+    }
+
+
+    @Override
+    public void run() {
+        try {
+            URL url1 = new URL(url);
+            HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
+            conn.setRequestProperty("Accept-Encoding", "identity");
+            conn.connect();
+            int length = conn.getContentLength();
+            conn.getHeaderField("Content-Length");
+
+            InputStream is = conn.getInputStream();
+            File file = new File(path);
+            if (!file.exists()) {
+                file.mkdirs();
+            }
+            File file1 = new File(path+"/"+fileName);
+            FileOutputStream fos = new FileOutputStream(file1);
+
+            int count = 0;
+            byte buf[] = new byte[1024];
+            do {
+                int numread = is.read(buf);
+                count += numread;
+                progress = (int) (((float) count / length) * 100);
+                // 更新进度
+                Message msg = mHandler.obtainMessage();
+                msg.what = 1;
+                msg.arg1 = progress;
+                msg.arg2 = threadId;
+                msg.obj = file1;
+                if (progress >= lastRate + 1) {
+                    mHandler.sendMessage(msg);
+                    lastRate = progress;
+                }
+                if (numread <= 0) {
+                    // 下载完成通知安装
+                    mHandler.sendEmptyMessage(0);
+                    // 下载完了,cancelled也要设置
+                    canceled = true;
+                    break;
+                }
+                fos.write(buf, 0, numread);
+            } while (!canceled);// 点击取消就停止下载.
+            fos.close();
+            is.close();
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+            Message msg = mHandler.obtainMessage();
+            msg.what = -1;
+            msg.arg2 = threadId;
+            mHandler.sendMessage(msg);
+            FileUtil.deleteFile(new File(path+"/"+fileName));
+        } catch (IOException e) {
+            e.printStackTrace();
+            FileUtil.deleteFile(new File(path+"/"+fileName));
+            Message msg = mHandler.obtainMessage();
+            msg.what = -1;
+            msg.arg2 = threadId;
+            mHandler.sendMessage(msg);
+        } catch (Exception e) {
+            e.printStackTrace();
+            FileUtil.deleteFile(new File(path+"/"+fileName));
+            Message msg = mHandler.obtainMessage();
+            msg.what = -1;
+            msg.arg2 = threadId;
+            mHandler.sendMessage(msg);
+        }
+
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/FNNetwork.java → app/src/main/java/com/tjzhxx/union/public_store/FNNetwork.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.app.Activity;
 import android.content.ComponentName;

+ 525 - 0
app/src/main/java/com/tjzhxx/union/public_store/FileUtils.java

@@ -0,0 +1,525 @@
+package com.tjzhxx.union.public_store;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
+
+import androidx.core.content.FileProvider;
+
+import java.io.File;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by ygs on 2017/6/9.
+ */
+
+public class FileUtils {
+    //咨询文件路径
+    private static String newsFile;
+
+    /**
+     * 判断手机SDCard是否可以
+     *
+     * @return true可用;false 不可用
+     */
+    public static boolean externalMemoryAvailable() {
+        return Environment.getExternalStorageState().equals(
+                Environment.MEDIA_MOUNTED);
+    }
+
+    public static File getCacheDir(Context context) {
+        return externalMemoryAvailable() ? context.getExternalFilesDir(null) : context.getCacheDir();
+    }
+
+    //房源长图文件
+    public static File getHouseImageFile(Context context) {
+        //生成路径
+        String root = getCacheDir(context).getAbsolutePath();
+        String dirName = "house";
+        File appDir = new File(root, dirName);
+        if (!appDir.exists()) {
+            appDir.mkdirs();
+        }
+        File file = new File(appDir, "houseimage.jpg");
+        return file;
+    }
+
+    //所有上传图片压缩保存路径
+    public static String getCompressFilePath(Context context) {
+        //生成路径
+        String root = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath();
+        String dirName = "compress";
+        File appDir = new File(root, dirName);
+        if (!appDir.exists()) {
+            appDir.mkdirs();
+        }
+        return appDir.getAbsolutePath();
+    }
+
+    //所有视频相关缓存路径
+    public static String getCacheFilePath(Context context) {
+        //生成路径
+        String root = getCacheDir(context).getAbsolutePath();
+        String dirName = "small_video";
+        File appDir = new File(root, dirName);
+        if (!appDir.exists()) {
+            appDir.mkdirs();
+        }
+        return appDir.getAbsolutePath();
+    }
+
+
+    /**
+     * 获取存储新闻咨询资料的文件
+     *
+     * @return
+     */
+    public static String getNewsFilePath(Context context) {
+        //生成路径
+        String root = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES).getAbsolutePath();
+        String dirName = "news";
+        File appDir = new File(root, dirName);
+        if (!appDir.exists()) {
+            appDir.mkdirs();
+        }
+        newsFile = appDir.getAbsolutePath();
+        return newsFile;
+    }
+
+    /**
+     * 根据文件后缀名获得对应的MIME类型。
+     *
+     * @param file
+     */
+    public static String getMIMEType(File file) {
+        String type = "*/*";
+        String fName = file.getName();
+        //获取后缀名前的分隔符"."在fName中的位置。
+        int dotIndex = fName.lastIndexOf(".");
+        if (dotIndex < 0) {
+            return type;
+        }
+        /* 获取文件的后缀名 */
+        String end = fName.substring(dotIndex, fName.length()).toLowerCase();
+        if (end == "") return type;
+        //在MIME和文件类型的匹配表中找到对应的MIME类型。
+        for (int i = 0; i < MIME_MapTable.length; i++) {
+            if (end.equals(MIME_MapTable[i][0]))
+                type = MIME_MapTable[i][1];
+        }
+        return type;
+    }
+
+    /**
+     * 打开文件
+     *
+     * @param file
+     */
+    public static void openFile(Context context, File file) {
+        Intent intent = new Intent();
+        intent.addCategory("android.intent.category.DEFAULT");
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        //设置intent的Action属性
+        intent.setAction(Intent.ACTION_VIEW);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//增加读写权限
+        }
+        //获取文件file的MIME类型
+        String type = getMIMEType(file);
+        intent.setDataAndType(getUriForFile(context, file), type);
+        //跳转
+        context.startActivity(intent);
+    }
+
+    //根据文件获取Uri
+    public static Uri getUriForFile(Context context, File file) {
+        Uri fileUri = null;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {//24 android7
+            fileUri = FileProvider.getUriForFile(context, "com.tjzhxx.union.FileProvider", file);
+        } else {
+            fileUri = Uri.fromFile(file);
+        }
+        return fileUri;
+    }
+
+    /**
+     * 删除单个文件
+     *
+     * @param file 要删除的文件对象
+     * @return 文件删除成功则返回true
+     */
+    public static boolean deleteFile(File file) {
+        if (file.exists()) {
+            boolean isDeleted = file.delete();
+            return isDeleted;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 删除单个文件
+     *
+     * @param path     文件所在路径名
+     * @param fileName 文件名
+     * @return 删除成功则返回true
+     */
+    public static boolean deleteFile(String path, String fileName) {
+        File file = new File(path + File.separator + fileName);
+        if (file.exists()) {
+            boolean isDeleted = file.delete();
+            return isDeleted;
+        } else {
+            return false;
+        }
+    }
+
+
+    /**
+     * 根据文件名获得文件的扩展名
+     *
+     * @param fileName 文件名
+     * @return 文件扩展名(不带点)
+     */
+    public static String getFileSuffix(String fileName) {
+        int index = fileName.lastIndexOf(".");
+        String suffix = fileName.substring(index + 1, fileName.length());
+        return suffix;
+    }
+
+
+    /**
+     * 计算某个文件的大小
+     *
+     * @param file 文件对象
+     * @return 文件大小,如果file不是文件,则返回-1
+     */
+    public static long getFileSize(File file) {
+        if (file.isFile()) {
+            return file.length();
+        } else {
+            return -1;
+        }
+    }
+
+    /**
+     * 计算某个文件的大小
+     *
+     * @param path 文件的绝对路径
+     * @return
+     */
+    public static long getFileSize(String path) {
+        File file = new File(path);
+        long size = file.length();
+        return size;
+    }
+
+    /**
+     * 文件大小的格式化
+     *
+     * @param size 文件大小,单位为byte
+     * @return 文件大小格式化后的文本
+     */
+    public static String formatSize(long size) {
+        DecimalFormat df = new DecimalFormat("####.00");
+        if (size < 1024) // 小于1KB
+        {
+            return size + "Byte";
+        } else if (size < 1024 * 1024) // 小于1MB
+        {
+            float kSize = size / 1024f;
+            return df.format(kSize) + "KB";
+        } else if (size < 1024 * 1024 * 1024) // 小于1GB
+        {
+            float mSize = size / 1024f / 1024f;
+            return df.format(mSize) + "MB";
+        } else if (size < 1024L * 1024L * 1024L * 1024L) // 小于1TB
+        {
+            float gSize = size / 1024f / 1024f / 1024f;
+            return df.format(gSize) + "GB";
+        } else {
+            return "size: error";
+        }
+    }
+
+
+    /**
+     * 获取某个路径下的文件列表
+     *
+     * @param path 文件路径
+     * @return 文件列表File[] files
+     */
+    public static File[] getFileList(String path) {
+        File file = new File(path);
+        if (file.isDirectory()) {
+            File[] files = file.listFiles();
+            if (files != null) {
+                return files;
+            } else {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 获取某个目录下的文件列表
+     *
+     * @param directory 目录
+     * @return 文件列表File[] files
+     */
+    public static File[] getFileList(File directory) {
+        File[] files = directory.listFiles();
+        if (files != null) {
+            return files;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 获得根目录文件列表
+     *
+     * @param showHidden
+     * @param showHidden 是否显示隐藏文件
+     * @return
+     */
+    public static List<File> getSDCardFileList(boolean showHidden) {
+        List<File> list = new ArrayList<>();
+        File files[];
+        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+            File extDir = Environment.getExternalStorageDirectory();
+            files = extDir.listFiles();
+            for (File file : files) {
+                list.add(file);
+            }
+            if (showHidden) {
+                //
+            } else {
+                for (int i = 0; i < list.size(); i++) {
+                    File file = list.get(i);
+                    if (file.isHidden() || file.getName().startsWith(".")) {
+                        list.remove(file);
+                    }
+                }
+            }
+        } else {
+        }
+        return list;
+    }
+
+    /**
+     * 新建目录
+     *
+     * @param path 目录的绝对路径
+     * @return 创建成功则返回true
+     */
+    public static boolean createFolder(String path) {
+        File file = new File(path);
+        boolean isCreated = file.mkdir();
+        return isCreated;
+    }
+
+    /**
+     * 新建目录
+     *
+     * @param file
+     * @return
+     */
+    public static boolean createFolder(File file) {
+        boolean isCreated = file.mkdir();
+        return isCreated;
+    }
+
+    /**
+     * 删除文件夹及其包含的所有文件
+     *
+     * @param file
+     * @return
+     */
+    public static boolean deleteFolder(File file) {
+        boolean flag = false;
+        File files[] = file.listFiles();
+        if (files != null && files.length >= 0) // 目录下存在文件列表
+        {
+            for (int i = 0; i < files.length; i++) {
+                File f = files[i];
+                if (f.isFile()) {
+                    // 删除子文件
+                    flag = deleteFile(f);
+                    if (flag == false) {
+                        return flag;
+                    }
+                } else {
+                    // 删除子目录
+                    flag = deleteFolder(f);
+                    if (flag == false) {
+                        return flag;
+                    }
+                }
+            }
+        }
+        flag = file.delete();
+        if (flag == false) {
+            return flag;
+        } else {
+            return true;
+        }
+    }
+
+
+    /**
+     * 获取待复制文件夹的文件夹名
+     *
+     * @param dir
+     * @return String
+     */
+    public static String getDirName(String dir) {
+        if (dir.endsWith(File.separator)) {
+            // 如果文件夹路径以"//"结尾,则先去除末尾的"//"
+            dir = dir.substring(0, dir.lastIndexOf(File.separator));
+        }
+        return dir.substring(dir.lastIndexOf(File.separator) + 1);
+    }
+
+    /**
+     * 计算某个目录包含的文件数量
+     *
+     * @param directory
+     * @return
+     */
+    public static int getFileCount(File directory) {
+        File[] files = directory.listFiles();
+        int count = files.length;
+        return count;
+    }
+
+    /**
+     * 计算某个路径下所包含的文件数量
+     *
+     * @param path
+     * @return
+     */
+    public static int getFileCount(String path) {
+        File file = new File(path);
+        File[] files = file.listFiles();
+        int count = files.length;
+        return count;
+    }
+
+    /**
+     * 计算某个目录的大小
+     *
+     * @return
+     */
+    public static long getFolderSize(File directory) {
+        File[] files = directory.listFiles();
+        if (files != null && files.length >= 0) {
+            long size = 0;
+            for (File f : files) {
+                if (f.isFile()) {
+                    // 获得子文件的大小
+                    size = size + getFileSize(f);
+                } else {
+                    // 获得子目录的大小
+                    size = size + getFolderSize(f);
+                }
+            }
+            return size;
+        }
+        return -1;
+    }
+
+    /**
+     * 获得某个文件或目录的大小
+     *
+     * @param file
+     * @return
+     */
+    public static long getFileOrFolderSize(File file) {
+        long size = 0;
+        if (file.isDirectory()) {
+            size = getFolderSize(file);
+        } else {
+            size = getFileSize(file);
+        }
+        return size;
+    }
+
+    //建立一个MIME类型与文件后缀名的匹配表
+    private static final String[][] MIME_MapTable = {
+            //{后缀名,    MIME类型}
+            {".3gp", "video/3gpp"},
+            {".apk", "application/vnd.android.package-archive"},
+            {".asf", "video/x-ms-asf"},
+            {".avi", "video/x-msvideo"},
+            {".bin", "application/octet-stream"},
+            {".bmp", "image/bmp"},
+            {".c", "text/plain"},
+            {".class", "application/octet-stream"},
+            {".conf", "text/plain"},
+            {".cpp", "text/plain"},
+            {".doc", "application/msword"},
+            {".docx", "application/msword"},
+            {".exe", "application/octet-stream"},
+            {".gif", "image/gif"},
+            {".gtar", "application/x-gtar"},
+            {".gz", "application/x-gzip"},
+            {".h", "text/plain"},
+            {".htm", "text/html"},
+            {".html", "text/html"},
+            {".jar", "application/java-archive"},
+            {".java", "text/plain"},
+            {".jpeg", "image/jpeg"},
+            {".jpg", "image/jpeg"},
+            {".js", "application/x-javascript"},
+            {".log", "text/plain"},
+            {".m3u", "audio/x-mpegurl"},
+            {".m4a", "audio/mp4a-latm"},
+            {".m4b", "audio/mp4a-latm"},
+            {".m4p", "audio/mp4a-latm"},
+            {".m4u", "video/vnd.mpegurl"},
+            {".m4v", "video/x-m4v"},
+            {".mov", "video/quicktime"},
+            {".mp2", "audio/x-mpeg"},
+            {".mp3", "audio/x-mpeg"},
+            {".mp4", "video/*"},
+            {".mpc", "application/vnd.mpohun.certificate"},
+            {".mpe", "video/mpeg"},
+            {".mpeg", "video/mpeg"},
+            {".mpg", "video/mpeg"},
+            {".mpg4", "video/mp4"},
+            {".mpga", "audio/mpeg"},
+            {".msg", "application/vnd.ms-outlook"},
+            {".ogg", "audio/ogg"},
+            {".pdf", "application/pdf"},
+            {".png", "image/png"},
+            {".pps", "application/vnd.ms-powerpoint"},
+            {".ppt", "application/vnd.ms-powerpoint"},
+            {".pptx", "application/vnd.ms-powerpoint"},
+            {".xls", "application/vnd.ms-excel"},
+            {".prop", "text/plain"},
+            {".rar", "application/x-rar-compressed"},
+            {".rc", "text/plain"},
+            {".rmvb", "audio/x-pn-realaudio"},
+            {".rtf", "application/rtf"},
+            {".sh", "text/plain"},
+            {".tar", "application/x-tar"},
+            {".tgz", "application/x-compressed"},
+            {".txt", "text/plain"},
+            {".wav", "audio/x-wav"},
+            {".wma", "audio/x-ms-wma"},
+            {".wmv", "audio/x-ms-wmv"},
+            {".wps", "application/vnd.ms-works"},
+            //{".xml",    "text/xml"},
+            {".xml", "text/plain"},
+            {".z", "application/x-compress"},
+            {".zip", "application/zip"},
+            {"", "*/*"}
+    };
+}

+ 100 - 0
app/src/main/java/com/tjzhxx/union/public_store/GlideEngine.java

@@ -0,0 +1,100 @@
+package com.tjzhxx.union.public_store;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.huantansheng.easyphotos.engine.ImageEngine;
+
+import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
+
+/**
+ * Glide4.x的加载图片引擎实现,单例模式
+ * Glide4.x的缓存机制更加智能,已经达到无需配置的境界。如果使用Glide3.x,需要考虑缓存机制。
+ * Created by huan on 2018/1/15.
+ */
+
+public class GlideEngine implements ImageEngine {
+    //单例
+    private static GlideEngine instance = null;
+    //单例模式,私有构造方法
+    private GlideEngine() {
+    }
+    //获取单例
+    public static GlideEngine getInstance() {
+        if (null == instance) {
+            synchronized (GlideEngine.class) {
+                if (null == instance) {
+                    instance = new GlideEngine();
+                }
+            }
+        }
+        return instance;
+    }
+
+    /**
+     * 加载图片到ImageView
+     *
+     * @param context   上下文
+     * @param uri 图片路径Uri
+     * @param imageView 加载到的ImageView
+     */
+    //安卓10推荐uri,并且path的方式不再可用
+    @Override
+    public void loadPhoto(@NonNull Context context, @NonNull Uri uri, @NonNull ImageView imageView) {
+        Glide.with(context).load(uri).transition(withCrossFade()).into(imageView);
+    }
+
+    /**
+     * 加载gif动图图片到ImageView,gif动图不动
+     *
+     * @param context   上下文
+     * @param gifUri   gif动图路径Uri
+     * @param imageView 加载到的ImageView
+     *                  <p>
+     *                  备注:不支持动图显示的情况下可以不写
+     */
+    //安卓10推荐uri,并且path的方式不再可用
+    @Override
+    public void loadGifAsBitmap(@NonNull Context context, @NonNull Uri gifUri, @NonNull ImageView imageView) {
+        Glide.with(context).asBitmap().load(gifUri).into(imageView);
+    }
+
+    /**
+     * 加载gif动图到ImageView,gif动图动
+     *
+     * @param context   上下文
+     * @param gifUri   gif动图路径Uri
+     * @param imageView 加载动图的ImageView
+     *                  <p>
+     *                  备注:不支持动图显示的情况下可以不写
+     */
+    //安卓10推荐uri,并且path的方式不再可用
+    @Override
+    public void loadGif(@NonNull Context context, @NonNull Uri gifUri, @NonNull ImageView imageView) {
+        Glide.with(context).asGif().load(gifUri).transition(withCrossFade()).into(imageView);
+    }
+
+
+    /**
+     * 获取图片加载框架中的缓存Bitmap,不用拼图功能可以直接返回null
+     *
+     * @param context 上下文
+     * @param uri    图片路径
+     * @param width   图片宽度
+     * @param height  图片高度
+     * @return Bitmap
+     * @throws Exception 异常直接抛出,EasyPhotos内部处理
+     */
+    //安卓10推荐uri,并且path的方式不再可用
+    @Override
+    public Bitmap getCacheBitmap(@NonNull Context context, @NonNull Uri uri, int width, int height) throws Exception {
+        return Glide.with(context).asBitmap().load(uri).submit(width, height).get();
+    }
+
+
+}

+ 483 - 0
app/src/main/java/com/tjzhxx/union/public_store/ImageUtils.java

@@ -0,0 +1,483 @@
+
+package com.tjzhxx.union.public_store;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.PorterDuff.Mode;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.media.ThumbnailUtils;
+import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+import android.provider.MediaStore;
+
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class ImageUtils {
+
+    /**
+     * 转换图片成圆形
+     *
+     * @param bitmap 传入Bitmap对象
+     * @return
+     */
+    public static Bitmap toRoundBitmap(Bitmap bitmap) {
+        int width = bitmap.getWidth();
+        int height = bitmap.getHeight();
+        float roundPx;
+        float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
+        if (width <= height) {
+            roundPx = width / 2;
+            top = 0;
+            bottom = width;
+            left = 0;
+            right = width;
+            height = width;
+            dst_left = 0;
+            dst_top = 0;
+            dst_right = width;
+            dst_bottom = width;
+        } else {
+            roundPx = height / 2;
+            float clip = (width - height) / 2;
+            left = clip;
+            right = width - clip;
+            top = 0;
+            bottom = height;
+            width = height;
+            dst_left = 0;
+            dst_top = 0;
+            dst_right = height;
+            dst_bottom = height;
+        }
+        Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
+        Canvas canvas = new Canvas(output);
+        if (output.isRecycled()) {
+            output.recycle();
+        }
+        final int color = 0xff424242;
+        final Paint paint = new Paint();
+        final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
+        final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
+        final RectF rectF = new RectF(dst);
+
+        paint.setAntiAlias(true);
+
+        canvas.drawARGB(0, 0, 0, 0);
+        paint.setColor(color);
+        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
+
+        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
+        canvas.drawBitmap(bitmap, src, dst, paint);
+        if (bitmap.isRecycled()) {
+            bitmap.recycle();
+        }
+        return output;
+    }
+
+    /**
+     * uri转bitmap类型并旋转为正常图片
+     *
+     * @param context context
+     * @param uri     uri
+     * @return 返回旋转后为正常图片的bitmap类型
+     */
+    private static Bitmap uriToBitmap(Context context, Uri uri, BitmapFactory.Options options) {
+        ParcelFileDescriptor parcelFileDescriptor = null;
+        FileDescriptor fileDescriptor = null;
+//        ExifInterface exifInterface = null;
+        Bitmap tagBitmap = null;
+        try {
+            parcelFileDescriptor = context.getContentResolver().openFileDescriptor(uri, "r");
+            if (parcelFileDescriptor != null && parcelFileDescriptor.getFileDescriptor() != null) {
+
+                fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+                //1.转换uri为bitmap类型
+                tagBitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor, null, options);
+                parcelFileDescriptor.close();
+            }
+        } catch (Exception e) {
+        } finally {
+            try {
+                if (parcelFileDescriptor != null) {
+                    parcelFileDescriptor.close();
+                }
+            } catch (IOException e) {
+            }
+        }
+        return tagBitmap;
+    }
+
+    /**
+     * 质量压缩
+     *
+     * @param bmp
+     * @param file
+     */
+    public static void compressBmpToFile(Bitmap bmp, File file, String outPath, int maxSize) {
+        if (bmp == null) {
+            return;
+        }
+        //设置压缩后图片不超过3M
+        int maxKB = maxSize;
+        //创建一个缓存区
+        ByteArrayOutputStream mByteArrayOutputStream = new ByteArrayOutputStream();
+        //默认压缩质量(不压缩)
+        int options = 100;
+        //压缩后的大小
+        long endKB = file.length();
+        do {
+            //清空缓存区
+            mByteArrayOutputStream.reset();
+            //将数据写入缓存区
+            bmp.compress(Bitmap.CompressFormat.JPEG, options, mByteArrayOutputStream);
+            //降低质量
+            options -= 10;
+            //重新计算缓存区数据大小
+            endKB = mByteArrayOutputStream.toByteArray().length;
+            //如果压缩系数小于0的时候直接跳出循环
+            if (options <= 0) {
+                break;
+            }
+        } while (endKB / 1024 > maxKB);
+        //创建一个输入流
+        FileOutputStream mFileOutputStream = null;
+        BufferedOutputStream mBufferedOutputStream = null;
+        //创建一个空文件
+        try {
+            File outFile = new File(outPath);
+            if (!outFile.exists()) {
+                // 先得到文件的上级目录,并创建上级目录,在创建文件
+                outFile.getParentFile().mkdir();
+                outFile.createNewFile();
+
+            }
+            mFileOutputStream = new FileOutputStream(outFile);
+            mBufferedOutputStream = new BufferedOutputStream(mFileOutputStream);
+            //将压缩后的数据写入都空文件中
+            mBufferedOutputStream.write(mByteArrayOutputStream.toByteArray());
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (mByteArrayOutputStream != null && mBufferedOutputStream != null && mFileOutputStream != null) {
+                    //关闭流
+                    mByteArrayOutputStream.flush();
+                    mBufferedOutputStream.flush();
+                    mFileOutputStream.close();
+                    mBufferedOutputStream.close();
+                    mByteArrayOutputStream.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public static BitMapWH getBitMapWH(File srcPath) {
+        BitmapFactory.Options newOpts = new BitmapFactory.Options();
+        // 开始读入图片,此时把options.inJustDecodeBounds 设回true了
+        newOpts.inJustDecodeBounds = true;
+        Bitmap bitmap = BitmapFactory.decodeFile(srcPath.getAbsolutePath(), newOpts);// 此时返回bm为空
+        int w = newOpts.outWidth;
+        int h = newOpts.outHeight;
+        return new BitMapWH(w, h);
+    }
+
+    public static class BitMapWH {
+        private int w;
+        private int h;
+
+        public BitMapWH(int w, int h) {
+            this.w = w;
+            this.h = h;
+        }
+
+        public int getW() {
+            return w;
+        }
+
+        public void setW(int w) {
+            this.w = w;
+        }
+
+        public int getH() {
+            return h;
+        }
+
+        public void setH(int h) {
+            this.h = h;
+        }
+    }
+
+    /**
+     * 根据path压缩
+     *
+     * @param file
+     */
+    public static void compressBmp(File file, String outPath, int maxSize) {
+        if (!file.exists()) {
+            return;
+        }
+        BitmapFactory.Options newOpts = new BitmapFactory.Options();
+        // 开始读入图片,此时把options.inJustDecodeBounds 设回true了
+        newOpts.inJustDecodeBounds = true;
+        BitmapFactory.decodeFile(file.getAbsolutePath(), newOpts);
+        coundScale(newOpts);
+        newOpts.inJustDecodeBounds = false;
+        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), newOpts);
+        compressBmpToFile(bitmap, file, outPath, maxSize);// 压缩好比例大小后再进行质量压缩
+    }
+
+    /**
+     * 根据path压缩
+     *
+     * @param file
+     */
+
+    public static void compressBmp(Context context, File file, String outPath, int maxSize) {
+        if (!file.exists()) {
+            return;
+        }
+        BitmapFactory.Options newOpts = new BitmapFactory.Options();
+        // 开始读入图片,此时把options.inJustDecodeBounds 设回true了
+        newOpts.inJustDecodeBounds = true;
+        BitmapFactory.decodeFile(file.getAbsolutePath(), newOpts);
+        coundScale(newOpts);
+        newOpts.inJustDecodeBounds = false;
+        //google需要,因为google没有加  android:requestLegacyExternalStorage = "true",所以 BitmapFactory.decodeFile会返回为null
+        Bitmap bitmap = uriToBitmap(context, getImageContentUri(context, file.getAbsolutePath()), newOpts);
+//        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), newOpts);
+        compressBmpToFile(bitmap, file, outPath, maxSize);// 压缩好比例大小后再进行质量压缩
+        if (bitmap != null) {
+            bitmap.recycle();
+        }
+    }
+
+    public static Uri getImageContentUri(Context context, String path) {
+        Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+                new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA + "=? ",
+                new String[]{path}, null);
+        if (cursor != null && cursor.moveToFirst()) {
+            int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
+            Uri baseUri = Uri.parse("content://media/external/images/media");
+            cursor.close();
+            return Uri.withAppendedPath(baseUri, "" + id);
+        } else {
+            // 如果图片不在手机的共享图片数据库,就先把它插入。
+            if (new File(path).exists()) {
+                ContentValues values = new ContentValues();
+                values.put(MediaStore.Images.Media.DATA, path);
+                return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
+            } else {
+                return null;
+            }
+        }
+
+    }
+
+    /**
+     * 计算缩放比例,防止OOM
+     *
+     * @param options BitmapFactory.Options
+     */
+    private static void coundScale(BitmapFactory.Options options) {
+        if (options != null) {
+            //原图的尺寸
+            int orginalWidht = options.outWidth;
+            int orginalHieght = options.outHeight;
+            //如果图片尺寸大于一定尺寸的时候进行缩放
+            if (orginalWidht > 1080 || orginalHieght > 1920) {
+                //缩小倍数
+                int scale = 1;
+
+                if (orginalWidht > orginalHieght) {
+                    //长图片的时候(以宽度为基准缩小)
+                    scale = orginalWidht / 1080;
+                } else if (orginalWidht < orginalHieght) {
+                    //高图的时候(以高度为基准缩小)
+                    scale = orginalHieght / 1920;
+                } else {
+                    //正方形图的时候(以宽度为基准缩小)
+                    scale = orginalWidht / 1080;
+                }
+                options.inSampleSize = scale;
+            }
+        }
+    }
+
+
+    /**
+     * 水平方向模糊度
+     */
+    private static float hRadius = 10;
+    /**
+     * 竖直方向模糊度
+     */
+    private static float vRadius = 10;
+    /**
+     * 模糊迭代度
+     */
+    private static int iterations = 7;
+
+    /**
+     * 高斯模糊
+     */
+    public static Drawable BoxBlurFilter(Bitmap bmp) {
+        int width = bmp.getWidth();
+        int height = bmp.getHeight();
+        int[] inPixels = new int[width * height];
+        int[] outPixels = new int[width * height];
+        Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
+        bmp.getPixels(inPixels, 0, width, 0, 0, width, height);
+        for (int i = 0; i < iterations; i++) {
+            blur(inPixels, outPixels, width, height, hRadius);
+            blur(outPixels, inPixels, height, width, vRadius);
+        }
+        blurFractional(inPixels, outPixels, width, height, hRadius);
+        blurFractional(outPixels, inPixels, height, width, vRadius);
+        bitmap.setPixels(inPixels, 0, width, 0, 0, width, height);
+        Drawable drawable = new BitmapDrawable(bitmap);
+        return drawable;
+    }
+
+    public static void blur(int[] in, int[] out, int width, int height, float radius) {
+        int widthMinus1 = width - 1;
+        int r = (int) radius;
+        int tableSize = 2 * r + 1;
+        int divide[] = new int[256 * tableSize];
+
+        for (int i = 0; i < 256 * tableSize; i++)
+            divide[i] = i / tableSize;
+
+        int inIndex = 0;
+
+        for (int y = 0; y < height; y++) {
+            int outIndex = y;
+            int ta = 0, tr = 0, tg = 0, tb = 0;
+
+            for (int i = -r; i <= r; i++) {
+                int rgb = in[inIndex + clamp(i, 0, width - 1)];
+                ta += (rgb >> 24) & 0xff;
+                tr += (rgb >> 16) & 0xff;
+                tg += (rgb >> 8) & 0xff;
+                tb += rgb & 0xff;
+            }
+
+            for (int x = 0; x < width; x++) {
+                out[outIndex] = (divide[ta] << 24) | (divide[tr] << 16) | (divide[tg] << 8) | divide[tb];
+
+                int i1 = x + r + 1;
+                if (i1 > widthMinus1)
+                    i1 = widthMinus1;
+                int i2 = x - r;
+                if (i2 < 0)
+                    i2 = 0;
+                int rgb1 = in[inIndex + i1];
+                int rgb2 = in[inIndex + i2];
+
+                ta += ((rgb1 >> 24) & 0xff) - ((rgb2 >> 24) & 0xff);
+                tr += ((rgb1 & 0xff0000) - (rgb2 & 0xff0000)) >> 16;
+                tg += ((rgb1 & 0xff00) - (rgb2 & 0xff00)) >> 8;
+                tb += (rgb1 & 0xff) - (rgb2 & 0xff);
+                outIndex += height;
+            }
+            inIndex += width;
+        }
+    }
+
+    public static void blurFractional(int[] in, int[] out, int width, int height, float radius) {
+        radius -= (int) radius;
+        float f = 1.0f / (1 + 2 * radius);
+        int inIndex = 0;
+
+        for (int y = 0; y < height; y++) {
+            int outIndex = y;
+
+            out[outIndex] = in[0];
+            outIndex += height;
+            for (int x = 1; x < width - 1; x++) {
+                int i = inIndex + x;
+                int rgb1 = in[i - 1];
+                int rgb2 = in[i];
+                int rgb3 = in[i + 1];
+
+                int a1 = (rgb1 >> 24) & 0xff;
+                int r1 = (rgb1 >> 16) & 0xff;
+                int g1 = (rgb1 >> 8) & 0xff;
+                int b1 = rgb1 & 0xff;
+                int a2 = (rgb2 >> 24) & 0xff;
+                int r2 = (rgb2 >> 16) & 0xff;
+                int g2 = (rgb2 >> 8) & 0xff;
+                int b2 = rgb2 & 0xff;
+                int a3 = (rgb3 >> 24) & 0xff;
+                int r3 = (rgb3 >> 16) & 0xff;
+                int g3 = (rgb3 >> 8) & 0xff;
+                int b3 = rgb3 & 0xff;
+                a1 = a2 + (int) ((a1 + a3) * radius);
+                r1 = r2 + (int) ((r1 + r3) * radius);
+                g1 = g2 + (int) ((g1 + g3) * radius);
+                b1 = b2 + (int) ((b1 + b3) * radius);
+                a1 *= f;
+                r1 *= f;
+                g1 *= f;
+                b1 *= f;
+                out[outIndex] = (a1 << 24) | (r1 << 16) | (g1 << 8) | b1;
+                outIndex += height;
+            }
+            out[outIndex] = in[width - 1];
+            inIndex += width;
+        }
+    }
+
+    private Bitmap getImageThumbnail(String imagePath, int width, int height) {
+        Bitmap bitmap = null;
+        BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inJustDecodeBounds = true;
+        // 获取这个图片的宽和高,注意此处的bitmap为null
+        BitmapFactory.decodeFile(imagePath, options);
+        options.inJustDecodeBounds = false; // 设为 false
+        // 计算缩放比
+        int h = options.outHeight;
+        int w = options.outWidth;
+        int beWidth = w / width;
+        int beHeight = h / height;
+        int be = 1;
+        if (beWidth < beHeight) {
+            be = beWidth;
+        } else {
+            be = beHeight;
+        }
+        if (be <= 0) {
+            be = 1;
+        }
+        options.inSampleSize = be;
+        // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false
+        bitmap = BitmapFactory.decodeFile(imagePath, options);
+        // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象
+        bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
+                ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
+        return bitmap;
+    }
+
+    public static int clamp(int x, int a, int b) {
+        return (x < a) ? a : (x > b) ? b : x;
+    }
+}

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/LogUtils.java → app/src/main/java/com/tjzhxx/union/public_store/LogUtils.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.util.Log;
 

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/MyAppGlideModule.java → app/src/main/java/com/tjzhxx/union/public_store/MyAppGlideModule.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import com.bumptech.glide.annotation.GlideModule;
 import com.bumptech.glide.module.AppGlideModule;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/PhoneFormatCheckUtils.java → app/src/main/java/com/tjzhxx/union/public_store/PhoneFormatCheckUtils.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/PropertyTypeUtil.java → app/src/main/java/com/tjzhxx/union/public_store/PropertyTypeUtil.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 /**
  * Created by lhk on 2017/1/19.

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/RootUtil.java → app/src/main/java/com/tjzhxx/union/public_store/RootUtil.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import java.io.BufferedReader;
 import java.io.File;

+ 23 - 1
app/src/main/java/com/yhx/union/public_store/ScreenUtils.java → app/src/main/java/com/tjzhxx/union/public_store/ScreenUtils.java

@@ -1,6 +1,7 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.app.Activity;
+import android.content.Context;
 import android.util.DisplayMetrics;
 
 /**
@@ -41,4 +42,25 @@ public class ScreenUtils {
     public static int px2dp(float pxValue) {
         return (int) (pxValue / getScreenDensity() + 0.5f);
     }
+
+    /**
+     * convert px to its equivalent sp
+     *
+     * 将px转换为sp
+     */
+    public static int px2sp(Context context, float pxValue) {
+        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
+        return (int) (pxValue / fontScale + 0.5f);
+    }
+
+
+    /**
+     * convert sp to its equivalent px
+     *
+     * 将sp转换为px
+     */
+    public static int sp2px(Context context, float spValue) {
+        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
+        return (int) (spValue * fontScale + 0.5f);
+    }
 }

+ 39 - 5
app/src/main/java/com/yhx/union/public_store/SPUtils.java → app/src/main/java/com/tjzhxx/union/public_store/SpUtils.java

@@ -1,19 +1,53 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.content.Context;
 import android.content.SharedPreferences;
 
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.tjzhxx.union.entity.UserInfo;
+
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Type;
 import java.util.Map;
 
 /**
  * 描述:
- *
  * @author yanghuaxiong
- * @create 2018/5/31  下午7:22
+ * @create 2021/9/8 9:27 PM
+ * 
  */
-public class SPUtils {
+public class SpUtils {
+    private static SharedPreferences sp;
+
+    public static void putUserInfo(Context ctx, UserInfo desBean) {
+        if (sp == null) {
+            sp = ctx.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
+        }
+        SharedPreferences.Editor editor = sp.edit();
+        Gson gson = new Gson();
+        String json = gson.toJson(desBean);
+        editor.putString("UserInfo", json);
+        editor.commit();
+    }
+
+    public static UserInfo getUserInfo(Context ctx) {
+        if (sp == null) {
+            sp = ctx.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
+        }
+        Gson gson = new Gson();
+        String json = sp.getString("UserInfo", null);
+        Type type = new TypeToken<UserInfo>() {
+        }.getType();
+        UserInfo userInfo = gson.fromJson(json, type);
+        return userInfo;
+    }
+
+ 
+
+  
+
     /**
      * 保存在手机里面的文件名
      */
@@ -170,4 +204,4 @@ public class SPUtils {
             editor.commit();
         }
     }
-}
+}

+ 85 - 4
app/src/main/java/com/yhx/union/public_store/TimeUtil.java → app/src/main/java/com/tjzhxx/union/public_store/TimeUtil.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.annotation.SuppressLint;
 import android.text.TextUtils;
@@ -16,11 +16,12 @@ import java.util.Locale;
  * Created by Dong on 2016/10/20.
  */
 public class TimeUtil {
-
+    public static final String TIME_YYYY_MM = "yyyy-MM";
     public static final String TIME_YYYY_MM_DD = "yyyy-MM-dd";
     public static final String TIME_YYYY_MM_DD2 = "yyyy'/'MM'/'dd";
     public static final String TIME_YYYY_MM_DD3 = "yyyy.MM.dd";
     public static final String TIME_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
+    public static final String TIME_YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
     public static final String TIME_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
     public static final String TIME_MM_DD_HH_MM = "MM-dd HH:mm";
     public static final String TIME_MM_DD_HH_MM_SS = "MM-dd HH:mm:ss";
@@ -37,7 +38,7 @@ public class TimeUtil {
     public static final String BEGIN_ORDER_HH_MM_SS = "00:00:00";
     public static final String END_ORDER_HH_MM_SS = "19:00:00";
     public static final String BEGIN_ORDER_HH_MM_SS_WAIMAI = "00:00:00";
-    public static final String END_ORDER_HH_MM_SS_WAIMAI = "12:00:00";
+    public static final String END_ORDER_HH_MM_SS_WAIMAI = "18:00:00";
     public static final String BEGIN_ORDER_HH_MM_SS_PROPERTY = "00:00:00";
     public static final String END_ORDER_HH_MM_SS_PROPERTY = "18:00:00";
 
@@ -326,6 +327,34 @@ public class TimeUtil {
         calendar.add(Calendar.DAY_OF_MONTH, day);
         return formatDate(calendar.getTimeInMillis(), returnParse);
     }
+    /**
+     * 根据传入date获取前后多少月的日期
+     *
+     * @param date
+     * @param day         正数就是后几月负数就是前几月
+     * @param returnParse 返回时间的格式
+     * @return
+     */
+    public static String getDateByMONTH(String date, int day, String returnParse) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(strToMillis(date));
+        calendar.add(Calendar.MONTH, day);
+        return formatDate(calendar.getTimeInMillis(), returnParse);
+    }
+    /**
+     * 根据传入date获取前后多少年的日期
+     *
+     * @param date
+     * @param year        正数就是后几年 负数就是前几年
+     * @param returnParse 返回时间的格式
+     * @return
+     */
+    public static String getDateByYear(String date, int year, String returnParse) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(strToMillis(date));
+        calendar.add(Calendar.YEAR, year);
+        return formatDate(calendar.getTimeInMillis(), returnParse);
+    }
 
     /**
      * 比较两个日期的大小(前者大 返回true,比较到分钟数)
@@ -479,7 +508,6 @@ public class TimeUtil {
     }
 
 
-
     public static boolean isYesterdayDay(long timeOne, long timeTwo) {
         Date dateOne = new Date(timeOne);
         Date dateTwo = new Date(timeTwo);
@@ -625,9 +653,47 @@ public class TimeUtil {
 
     }
 
+
     /**
      * 判断时间是否在时间段内
      *
+     * @param strDate      当前时间 yyyy-MM-dd HH:mm:ss
+     * @param strDateBegin 开始时间 00:00:00
+     * @param strDateEnd   结束时间 00:05:00
+     * @return
+     */
+    public static boolean isInDate1(String strDate, String strDateBegin, String strDateEnd) {
+        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+        try {
+            Date nowTime = sdf.parse(strDate);
+            Date startTime = sdf.parse(strDateBegin);
+            Date endTime = sdf.parse(strDateEnd);
+            if (nowTime.getTime() == startTime.getTime()
+                    || nowTime.getTime() == endTime.getTime()) {
+                return true;
+            }
+
+            Calendar date = Calendar.getInstance();
+            date.setTime(nowTime);
+
+            Calendar begin = Calendar.getInstance();
+            begin.setTime(startTime);
+
+            Calendar end = Calendar.getInstance();
+            end.setTime(endTime);
+
+            if (date.after(begin) && date.before(end)) {
+                return true;
+            } else {
+                return false;
+            }
+        } catch (Exception e) {
+            return false;
+        }
+    }
+    /**
+     * 判断时间是否在时间段内(测试不对)
+     *
      * @param date         当前时间 new Date()
      * @param strDateBegin 开始时间 00:00:00
      * @param strDateEnd   结束时间 00:05:00
@@ -748,4 +814,19 @@ public class TimeUtil {
         calendar.setTime(daystart);
         return calendar;
     }
+
+    //当前时间属于早中晚
+    public static String getDateString() {
+        String s = "早上好,";
+        Calendar cal = Calendar.getInstance();
+        int hour = cal.get(Calendar.HOUR_OF_DAY);
+        if (hour >= 6 && hour < 11) {
+            s = "早上好,";
+        } else if (hour >= 11 && hour < 18) {
+            s = "中午好,";
+        } else  {
+            s = "晚上好,";
+        }
+        return s;
+    }
 }

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/UtilSD.java → app/src/main/java/com/tjzhxx/union/public_store/UtilSD.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store;
+package com.tjzhxx.union.public_store;
 
 import android.content.Context;
 import android.graphics.Bitmap;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/fragment/FragmentPager.java → app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentPager.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.fragment;
+package com.tjzhxx.union.public_store.fragment;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/fragment/FragmentPagerAdapter.java → app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentPagerAdapter.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.fragment;
+package com.tjzhxx.union.public_store.fragment;
 
 
 import androidx.fragment.app.Fragment;

+ 2 - 2
app/src/main/java/com/yhx/union/public_store/fragment/FragmentTab.java → app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentTab.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.fragment;
+package com.tjzhxx.union.public_store.fragment;
 
 /**
  * Created by Administrator on 2016/2/22.
@@ -15,7 +15,7 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import com.yhx.union.R;
+import com.tjzhxx.union.R;
 
 
 /**

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/fragment/FragmentVisitor.java → app/src/main/java/com/tjzhxx/union/public_store/fragment/FragmentVisitor.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.fragment;/**
+package com.tjzhxx.union.public_store.fragment;/**
  * Created by Administrator on 2016/4/1.
  */
 

+ 3 - 2
app/src/main/java/com/yhx/union/public_store/retrofit/RetrofitUtils.java → app/src/main/java/com/tjzhxx/union/public_store/retrofit/RetrofitUtils.java

@@ -1,7 +1,8 @@
-package com.yhx.union.public_store.retrofit;
+package com.tjzhxx.union.public_store.retrofit;
 
 import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
-import com.yhx.union.public_store.LogUtils;
+import com.tjzhxx.union.public_store.LogUtils;
+
 import java.io.IOException;
 import java.net.CookieManager;
 import java.net.CookiePolicy;

+ 103 - 0
app/src/main/java/com/tjzhxx/union/public_store/retrofit/UnionServices.java

@@ -0,0 +1,103 @@
+package com.tjzhxx.union.public_store.retrofit;
+
+
+import com.tjzhxx.union.entity.BannerEntity;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.entity.Faceid;
+import com.tjzhxx.union.entity.NewBean;
+import com.tjzhxx.union.entity.Rescuestyle;
+import com.tjzhxx.union.entity.UserInfo;
+import com.tjzhxx.union.entity.request.DataDbqzPhotoRequest;
+import com.tjzhxx.union.entity.request.DataDbqzRequest;
+import com.tjzhxx.union.entity.request.DataXcjzRequest;
+import com.tjzhxx.union.entity.request.DataZywwRequest;
+import com.tjzhxx.union.entity.request.FaceidRequest;
+import com.tjzhxx.union.entity.request.GetPayInfoRequest;
+import com.tjzhxx.union.entity.request.IsRepeatRequest;
+import com.tjzhxx.union.entity.request.NewListRequest;
+import com.tjzhxx.union.entity.request.SmsCodeRequest;
+import com.tjzhxx.union.entity.request.SmsLoginRequest;
+import com.tjzhxx.union.entity.request.SubnewworkerRequest;
+import com.tjzhxx.union.entity.request.WxPayReq;
+
+import java.util.List;
+
+import io.reactivex.Observable;
+import okhttp3.MultipartBody;
+import retrofit2.http.Body;
+import retrofit2.http.Multipart;
+import retrofit2.http.POST;
+import retrofit2.http.Part;
+import retrofit2.http.Query;
+
+public interface UnionServices {
+
+
+    //首页轮播图
+    @POST("index.php/index/Political/querytitlelistforapp")
+    Observable<BaseResponse<List<BannerEntity>>> querytitlelist();
+
+    //获取新闻清单
+    @POST("index.php/index/Political/querynewlist")
+    Observable<BaseResponse<List<NewBean>>> querynewlist(@Body NewListRequest request);
+
+
+    //请求政策清单
+    @POST("index.php/index/Political/querypoliticallistforapp")
+    Observable<BaseResponse<List<NewBean>>> querypoliticallistforapp();
+
+    //请求活动类报道清单
+    @POST("index.php/index/Political/queryactivityreportforapp")
+    Observable<BaseResponse<List<NewBean>>> queryactivityreportforapp(@Body NewListRequest request);
+
+    // 上传图片
+    @Multipart
+    @POST("index.php/index/Fileoper/upQuestionsWriteforapp")
+    Observable<BaseResponse<String>> uploadImage(@Part MultipartBody.Part part);
+
+    //获取身份证信息
+    @POST("https://app.tjzhxx.cn:5443/api/tencent_cloud/faceid")
+    Observable<BaseResponse<Faceid>> faceid(@Body FaceidRequest request);
+
+    //验证身份信息
+    @POST("index.php/index/Worker/querysfzrepeatfromapp")
+    Observable<BaseResponse<UserInfo>> querysfzrepeatfromapp(@Body IsRepeatRequest request);
+
+
+    //提交会员入会资料
+    @POST("index.php/index/Worker/subnewworkerfromapp")
+    Observable<BaseResponse<UserInfo>> subnewworkerfromapp(@Body SubnewworkerRequest request);
+
+    //用户验证码发送
+    @POST("https://app.tjzhxx.cn:5443/api/tencent_cloud/sendSmsCode")
+    Observable<BaseResponse> sendSmsCode(@Body SmsCodeRequest request);
+
+    //用户短信验证码登录
+    @POST("index.php/index/weblogin/smsLogin")
+    Observable<BaseResponse<UserInfo>> smsLogin(@Body SmsLoginRequest request);
+
+    //请求需上传的文档清单
+    @POST("index.php/index/Rescue/queryrescuelistforapp")
+    Observable<BaseResponse<List<Rescuestyle>>> queryrescuelistforapp(@Query("rescuestyle") int rescuestyle);
+
+    //提交现场慰问提交救助资料照片
+    @POST("index.php/index/Rescue/subapplywithdocbywidforapp")
+    Observable<BaseResponse> subapplywithdocbywidforapp(@Body DataXcjzRequest request);
+
+
+    //提交住院关爱慰问资料
+    @POST("index.php/index/Rescue/subapplywithdocandinfoforapp")
+    Observable<BaseResponse> subapplywithdocandinfoforapp(@Body DataZywwRequest request);
+
+    //提交大病救助资料接口
+    @POST("index.php/index/Rescue/subapplywithinfoforapp")
+    Observable<BaseResponse<String>> subapplywithinfoforapp(@Body DataDbqzRequest request);
+
+    //提交大病救助照片接口
+    @POST("index.php/index/Rescue/subdocbyapplyidforapp")
+    Observable<BaseResponse> subdocbyapplyidforapp(@Body DataDbqzPhotoRequest request);
+
+    //用户支付入会费接口 使用微信统一下单接口 仅app用
+    @POST("index.php/index/pay/getOrderInfoForApp")
+    Observable<BaseResponse<WxPayReq>> getOrderInfoForApp(@Body GetPayInfoRequest request);
+}

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/rx/ApiThrowableExceptionFunc.java → app/src/main/java/com/tjzhxx/union/public_store/rx/ApiThrowableExceptionFunc.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.rx;
+package com.tjzhxx.union.public_store.rx;
 
 import io.reactivex.Observable;
 import io.reactivex.functions.Function;

+ 10 - 9
app/src/main/java/com/yhx/union/public_store/rx/DefaultSubscriber.java → app/src/main/java/com/tjzhxx/union/public_store/rx/DefaultSubscriber.java

@@ -1,14 +1,14 @@
-package com.yhx.union.public_store.rx;
+package com.tjzhxx.union.public_store.rx;
 
 import android.content.Context;
 
-import com.yhx.union.R;
-import com.yhx.union.dialog.SessionPromptDialog;
-import com.yhx.union.entity.BaseResponse;
-import com.yhx.union.public_store.FNNetwork;
-import com.yhx.union.public_store.LogUtils;
-import com.yhx.union.system.BaseActivity;
-import com.yhx.union.system.MyApplication;
+import com.tjzhxx.union.R;
+import com.tjzhxx.union.dialog.SessionPromptDialog;
+import com.tjzhxx.union.entity.BaseResponse;
+import com.tjzhxx.union.public_store.FNNetwork;
+import com.tjzhxx.union.public_store.LogUtils;
+import com.tjzhxx.union.system.BaseActivity;
+import com.tjzhxx.union.system.MyApplication;
 
 import io.reactivex.Observer;
 import io.reactivex.disposables.Disposable;
@@ -57,10 +57,11 @@ public abstract class DefaultSubscriber<T> implements Observer<T> {
                     SessionPromptDialog sessionPromptDialog = new SessionPromptDialog(mContext);
                     sessionPromptDialog.setCancelAble(false);
                     sessionPromptDialog.show();
-                } else if (((BaseResponse) t).getCode() == 200) {
+                } else if (((BaseResponse) t).getCode() == 200 ||((BaseResponse) t).getStatus() == 1 ) {
                     success(t);
                 } else {
                     onErr(t);
+                    ((BaseActivity) mContext).showSnackBar(((BaseResponse) t).getMsg());
                 }
             }else {
                 success(t);

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/rx/ExceptionHandle.java → app/src/main/java/com/tjzhxx/union/public_store/rx/ExceptionHandle.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.rx;
+package com.tjzhxx.union.public_store.rx;
 
 import com.google.gson.JsonParseException;
 import com.google.gson.stream.MalformedJsonException;

+ 1 - 1
app/src/main/java/com/yhx/union/public_store/rx/NetWorkErrorException.java → app/src/main/java/com/tjzhxx/union/public_store/rx/NetWorkErrorException.java

@@ -1,4 +1,4 @@
-package com.yhx.union.public_store.rx;
+package com.tjzhxx.union.public_store.rx;
 
 /**
  * Created by Dong on 2017/2/27.

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů