diff --git a/app/build.gradle b/app/build.gradle index f57c684..ec713e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,7 +84,7 @@ android { //暂时填写默认值即可. JPUSH_CHANNEL: "developer-n"] buildConfigField("String", "OPEN_AL_URL", "\"https://oapi-staging.alct56.com\"") - buildConfigField("String", "BASE_URL", "\"http://app.test.dahehuoyun.com/api/\"") + buildConfigField("String", "BASE_URL", "\"http://platform.test.v2.dahehuoyun.com/devApi/\"") buildConfigField "boolean", "isTest", "true" //APP名称,可以在androidMainfest中引用 resValue "string", "appName", "审核测试" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b673222..89ff92b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -81,7 +81,6 @@ android:name=".ui.LauncherActivity" android:configChanges="keyboardHidden|orientation|locale" android:exported="true" - android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@style/Theme.Splash" android:windowSoftInputMode="adjustPan|stateHidden"> @@ -102,7 +101,6 @@ diff --git a/app/src/main/java/com/dahe/gldriver/base/App.kt b/app/src/main/java/com/dahe/gldriver/base/App.kt index 9a52edb..c9a228f 100644 --- a/app/src/main/java/com/dahe/gldriver/base/App.kt +++ b/app/src/main/java/com/dahe/gldriver/base/App.kt @@ -6,6 +6,7 @@ import com.dahe.gldriver.BuildConfig import com.dahe.gldriver.base.App import com.dahe.mylibrary.CommonBaseLibrary import com.dahe.gldriver.net.Api +import com.dahe.gldriver.oss.OssServiceUtil import com.github.gzuliyujiang.dialog.DialogConfig import com.github.gzuliyujiang.dialog.DialogStyle import java.lang.Exception @@ -32,7 +33,7 @@ class App : Application() { // SophixManager.getInstance().queryAndLoadNewPatch(); -// OssServiceUtil.getInstance().init(); + OssServiceUtil.getInstance().init(); // PendingIntent pendingIntent = // PendingIntent.getActivity(this, 0, new Intent(this, HomeActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); diff --git a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt index e84135a..d1dc32b 100644 --- a/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt +++ b/app/src/main/java/com/dahe/gldriver/base/AppConfig.kt @@ -10,7 +10,7 @@ object AppConfig { const val BUGLY_APP_ID = "a5b894cef7" const val TIME = "DA_HE_TIME" const val ID = "DA_HE_ID" - const val PWD = "DA_HE_PHONE" + const val PHONE = "DA_HE_PHONE" const val CODE = "DA_HE_PHONE" const val SUCCESS_TYPE = "DA_HE_SUCCESS_TYPE" diff --git a/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt b/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt new file mode 100644 index 0000000..9833bc2 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/OcrBean.kt @@ -0,0 +1,120 @@ +package com.dahe.gldriver.bean + +/** + * @ClassName OcrBean + * @Author john + * @Date 2024/2/27 09:58 + * @Description TODO + */ +data class OcrPersonBean( + val algo_version: String, + val `data`: Data, + val height: Int, + val orgHeight: Int, + val orgWidth: Int, + val width: Int +) + +data class Data( + val face: Face, + val back: Back, + + //银行卡 + val bankName: String, + val cardNumber: String, + + //营业执照 + val creditCode: String,//信用代码 + val companyName: String,//名称 + val companyType: String,//类型 + val businessAddress: String, + val legalPerson: String, + val businessScope: String, + val registeredCapital: String,//注册资本 + val RegistrationDate: String,//成立日期2014年01月07日 + val validFromDate: String,//20140107 + val validToDate: String, + val issueDate: String + + +) + + +data class Back( + val `data`: DataX +) + +data class Face( + val algo_version: String, + val angle: Int, + val `data`: DataX, + val ftype: Int, + val height: Int, + val orgHeight: Int, + val orgWidth: Int, + val prism_keyValueInfo: List, + val sliceRect: SliceRect, + val width: Int, + + + ) + +data class DataX( + val address: String = "", + val birthDate: String = "", + val ethnicity: String = "", + val idNumber: String = "", + val name: String = "", + val sex: String = "", + val issueAuthority: String = "",//哈尔滨市公安局呼兰分局 + val validPeriod: String = "",//2012.07.17-2032.07.17 + + //驾驶证 + val licenseNumber: String = "", + val nationality: String = "", + val initialIssueDate: String = "", + val approvedType: String = "", + val validFromDate: String = "", + + //行驶证 + val issueDate: String = "", + val model: String = "", + val owner: String = "", + val licensePlateNumber: String = "", + val registrationDate: String = "", + val useNature: String = "", + val vehicleType: String = "", + val vinCode: String = "", + val recordNumber: String = "",//档案编号 + val passengerCapacity: String = "", + val curbWeight: String = "",//整备质量 + val totalWeight: String = "",//总质量 + val permittedWeight: String = "",//核定载质量 + val tractionWeight: String = "",//准牵引总质量 + val overallDimension: String = "",//6915×2550×3960mm + val energySign: String = "",//能源类型 +) + +data class PrismKeyValueInfo( + val key: String, + val keyProb: Int, + val value: String, + val valuePos: List, + val valueProb: Int +) + +data class SliceRect( + val x0: Int, + val x1: Int, + val x2: Int, + val x3: Int, + val y0: Int, + val y1: Int, + val y2: Int, + val y3: Int +) + +data class ValuePo( + val x: Int, + val y: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/bean/OssBean.kt b/app/src/main/java/com/dahe/gldriver/bean/OssBean.kt new file mode 100644 index 0000000..f2ce262 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/OssBean.kt @@ -0,0 +1,9 @@ +package com.dahe.gldriver.bean + +/** + * @ClassName OssBean + * @Author john + * @Date 2024/2/27 09:13 + * @Description TODO + */ +data class OssBean(var name: String, var url: String) diff --git a/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt new file mode 100644 index 0000000..afc9607 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/bean/UpInfoBean.kt @@ -0,0 +1,80 @@ +package com.dahe.gldriver.bean + +/** + * @ClassName UpDriverInfoBean + * @Author john + * @Date 2024/2/27 11:09 + * @Description TODO + */ +data class UpPersonInfoBean( + var idcardNo: String = "", + var idcardName: String = "", + var idcardSex: String = "", + var idcardEthnicity: String = "", + var idcardEffectiveStart: String = "", + var idcardEffectiveEnd: String = "", + var idcardIsEndless: String = "", + var idcardFrontUrl: String = "", + var idcardBackUrl: String = "", + var idcardAddress: String = "" +) + +/** +* 上传驾驶证 +* */ +data class UpDriverInfoBean( + var licenseNo: String = "", + var licenseType: String = "", + var licenseName: String = "", + var licenseRecordNumber: String = "", + var licenseEffectiveStart: String = "", + var licenseEffectiveEnd: String = "", + var licensePhotoFaceUrl: String = "", + var licensePhotoBackUrl: String = "", + var licenseFirstGetDate: String = "", + var licenseApproveOrganization: String = "" +) + +/** +* 上传从业资格 +* */ +data class UpQualiInfoBean( + var qualificationCertificateNo: String = "", + var qualificationCertificateEffectiveEnd: String = "", + var qualificationCertificatePhotoUrl: String = "", + var qualificationCertificateExamineDate: String = "" +) + +/** +* 上传银行卡 +* */ +data class UpBankInfoBean( + var driverBankcardNumber: String = "", + var driverBankcardPhotoUrl: String = "", + var driverBankcardAddress: String = "" +) + + + +/** +* 认证车队长bean +* */ +data class AuthTeamBean( + var captainBankcardAddress: String="", + var captainBankcardNumber: String="", + var captainBankcardPhotoUrl: String="", + var captainType: String="",//类型(0=个人,1=企业) + var idcardAddress: String="", + var idcardBackUrl: String="", + var idcardEffectiveEnd: String="", + var idcardEffectiveStart: String="", + var idcardEthnicity: String="", + var idcardFrontUrl: String="", + var idcardIsEndless: String="", + var idcardName: String="", + var idcardNo: String="", + var idcardSex: String="" +){ + constructor(captainType: String) : this() +} + diff --git a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt index c4eea85..4b27a36 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt @@ -7,7 +7,7 @@ package com.dahe.glex.bean * @Description TODO */ data class UserBean( - var token :String, + var access_token :String, var id :String, var roleId :String, var uname :String, @@ -23,5 +23,6 @@ data class UserBean( var qualificationValidity :String, var isCar :String, var qrcodeUrl :String, + var expires_in :Int, var credit :String ) diff --git a/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt b/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt new file mode 100644 index 0000000..07e752d --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/callback/OnOcrPicResultListener.kt @@ -0,0 +1,18 @@ +package com.dahe.gldriver.callback + +import com.dahe.gldriver.bean.OcrPersonBean +import com.luck.picture.lib.entity.LocalMedia + +/** + * @ClassName OnOcrPicResultListener + * @Author john + * @Date 2024/2/28 17:18 + * @Description TODO + */ +fun interface OnOcrPicResultListener { + fun onSuccResult(picPath: PicPath, result: OcrPersonBean) +} + +data class PicPath( + var locPic: String, var picPath: String +) \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/net/Api.kt b/app/src/main/java/com/dahe/gldriver/net/Api.kt index a74a32e..7a05552 100644 --- a/app/src/main/java/com/dahe/gldriver/net/Api.kt +++ b/app/src/main/java/com/dahe/gldriver/net/Api.kt @@ -2,11 +2,22 @@ package com.dahe.gldriver.net import WayBill2 import com.dahe.gldriver.BuildConfig +import com.dahe.gldriver.bean.AuthTeamBean +import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.bean.OssBean +import com.dahe.gldriver.bean.UpBankInfoBean +import com.dahe.gldriver.bean.UpDriverInfoBean +import com.dahe.gldriver.bean.UpPersonInfoBean +import com.dahe.gldriver.bean.UpQualiInfoBean import com.dahe.glex.bean.* import com.dahe.mylibrary.net.CommonResponseBean import io.reactivex.rxjava3.core.Observable +import okhttp3.MultipartBody import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.Multipart import retrofit2.http.POST +import retrofit2.http.Part import retrofit2.http.Query @@ -27,6 +38,107 @@ interface Api { fun getExecuteWaybill(@Body bean: WayBillBean?): Observable> fun getExecuteWaybill2(@Query("waybillId") waybillId: String?): Observable> + @GET(BASE_URL + "auth/driver/login") + fun login( + @Query("contactPhone") contactPhone: String, + @Query("code") code: String + ): Observable> + + + /** + * 获取验证码 + * */ + @GET(BASE_URL + "auth/driver/code") + fun getCode(@Query("contactPhone") contactPhone: String): Observable> + + /** + * 上传到oss + * */ + @Multipart + @POST(BASE_URL + "file/uploadToOss") + fun uploadToOss( + @Part file: MultipartBody.Part + ): Observable> + + /** + * 个人身份证识别 + * */ + @GET(BASE_URL + "ocr/aliyunOcr/recognizeIdcard") + fun recognizeIdcard( + @Query("imgUrl") imgUrl: String + ): Observable> + + /** + * 驾驶证识别 + * */ + @GET(BASE_URL + "ocr/aliyunOcr/recognizeDrivingLicense") + fun recognizeDrivingLicense( + @Query("imgUrl") imgUrl: String + ): Observable> + + /** + * 银行卡识别 + * */ + @GET(BASE_URL + "ocr/aliyunOcr/recognizeBankCard") + fun recognizeBankCard( + @Query("imgUrl") imgUrl: String + ): Observable> + + /** + * 行驶证识别 + * */ + @GET(BASE_URL + "ocr/aliyunOcr/recognizeVehicleLicense") + fun recognizeVehicleLicense( + @Query("imgUrl") imgUrl: String + ): Observable> + + /** + * 营业执照识别 + * */ + @GET(BASE_URL + "ocr/aliyunOcr/recognizeBusinessLicense") + fun recognizeBusinessLicense( + @Query("imgUrl") imgUrl: String + ): Observable> + + /** + * 获取用户信息 + * */ + @GET(BASE_URL + "driver/driver/getUserInfo") + fun getUserInfo(): Observable> + + /** + * 司机上传身份证 + * */ + @POST(BASE_URL + "driver/driver/setUpDriverIdCard") + fun setUpDriverIdCard(@Body carBean: UpPersonInfoBean): Observable> + + + /** + * 司机上传驾驶证 + * */ + @POST(BASE_URL + "driver/driver/setUpDriverLicense") + fun setUpDriverLicense(@Body driverBean: UpDriverInfoBean): Observable> + + /** + * 司机上传从业资格证 + * */ + @POST(BASE_URL + "driver/driver/setUpDriverQualificationCertificate") + fun setUpDriverQualificationCertificate(@Body qualiBean: UpQualiInfoBean): Observable> + + /** + * 司机上传银行卡 + * */ + @POST(BASE_URL + "driver/driver/setUpDriverBankCard") + fun setUpDriverBankCard(@Body bankBean: UpBankInfoBean): Observable> + + + /** + * 司机认证成为车队长 + * */ + @POST(BASE_URL + "driver/driver/authenticationCaptain") + fun authenticationCaptain(@Body bankBean: AuthTeamBean): Observable> + + companion object { // String BASE_URL = "https://tmstest.dahehuoyun.com/"; const val BASE_URL = BuildConfig.BASE_URL diff --git a/app/src/main/java/com/dahe/gldriver/net/DataManager.kt b/app/src/main/java/com/dahe/gldriver/net/DataManager.kt index 05b19e4..e94d2cb 100644 --- a/app/src/main/java/com/dahe/gldriver/net/DataManager.kt +++ b/app/src/main/java/com/dahe/gldriver/net/DataManager.kt @@ -3,6 +3,9 @@ package com.dahe.gldriver.net import com.dahe.mylibrary.CommonBaseLibrary import com.dahe.mylibrary.base.BaseSingNoParam import com.dahe.mylibrary.net.JsonInterceptor +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.ObservableTransformer +import io.reactivex.rxjava3.schedulers.Schedulers import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -23,11 +26,17 @@ class DataManager private constructor(){ .connectTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) - .addInterceptor(JsonInterceptor()) .addInterceptor(RequestHeadInterceptor()) + .addInterceptor(JsonInterceptor()) .build()) // .addNetworkInterceptor(new TokenInterceptor()) .build().create(Api::class.java) } } + open fun setThread(): ObservableTransformer? { + return ObservableTransformer { upstream -> + upstream.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/net/RequestHeadInterceptor.kt b/app/src/main/java/com/dahe/gldriver/net/RequestHeadInterceptor.kt index 9444f66..3ff8836 100644 --- a/app/src/main/java/com/dahe/gldriver/net/RequestHeadInterceptor.kt +++ b/app/src/main/java/com/dahe/gldriver/net/RequestHeadInterceptor.kt @@ -20,11 +20,13 @@ class RequestHeadInterceptor : Interceptor { @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { val builder: Request.Builder = chain.request().newBuilder() - if (BaseSPUtils.hasUserInfo(App.app) && !TextUtils.isEmpty(SPUtils.instance.getUserInfo(App.app)?.token)) { + var tokken = SPUtils.instance.getUserInfo(App.app)?.access_token + + if (BaseSPUtils.hasUserInfo(App.app) && !TextUtils.isEmpty(SPUtils.instance.getUserInfo(App.app)?.access_token)) { // builder.addHeader("Authorization", SPUtils.getUserInfo(App.getApp()).getToken()); builder.addHeader("Authorization", - "Bearer " + SPUtils.instance.getUserInfo(App.app)?.token) + "Bearer " + SPUtils.instance.getUserInfo(App.app)?.access_token) } val request: Request = builder .addHeader("versionCode", AppUtils.getAppVersionCode().toString() + "") diff --git a/app/src/main/java/com/dahe/gldriver/net/RxHttpCallBack.kt b/app/src/main/java/com/dahe/gldriver/net/RxHttpCallBack.kt index 5874cf1..7055cec 100644 --- a/app/src/main/java/com/dahe/gldriver/net/RxHttpCallBack.kt +++ b/app/src/main/java/com/dahe/gldriver/net/RxHttpCallBack.kt @@ -1,15 +1,15 @@ package com.dahe.gldriver.net import android.accounts.NetworkErrorException -import android.app.Activity -import android.app.ProgressDialog -import com.dahe.gldriver.utils.UserUtils.Companion.instance import android.content.Context import android.text.TextUtils -import android.view.Window +import androidx.appcompat.app.AppCompatActivity +import com.dahe.gldriver.utils.UserUtils.Companion.instance import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.net.ResultException +import com.dahe.mylibrary.utils.LoadingUtils import com.dahe.mylibrary.utils.ToastUtils +import com.lxj.xpopup.impl.LoadingPopupView import java.net.ConnectException import java.net.SocketTimeoutException import java.net.UnknownHostException @@ -20,21 +20,27 @@ import javax.net.ssl.SSLException * 统一的网络回调 */ abstract class RxHttpCallBack { - private var dialog: ProgressDialog? = null - private fun initDialog(activity: Activity, dialogMessage: String) { - dialog = ProgressDialog(activity) - dialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE) - dialog!!.setCanceledOnTouchOutside(false) - dialog!!.setProgressStyle(ProgressDialog.STYLE_SPINNER) - dialog!!.setMessage(dialogMessage) + // private var dialog: ProgressDialog? = null + private var dialog: LoadingPopupView? = null + private fun initDialog(activity: AppCompatActivity, dialogMessage: String) { +// dialog = ProgressDialog(activity) +// dialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE) +// dialog!!.setCanceledOnTouchOutside(false) +// dialog!!.setProgressStyle(ProgressDialog.STYLE_SPINNER) +// dialog!!.setMessage(dialogMessage) + + + dialog = LoadingUtils.instance.init(activity) } - constructor(activity: Activity, dialogMessage: String?) { - initDialog(activity, - (if (TextUtils.isEmpty(dialogMessage)) "网络请求中......" else dialogMessage)!!) + constructor(activity: AppCompatActivity, dialogMessage: String?) { + initDialog( + activity, + (if (TextUtils.isEmpty(dialogMessage)) "网络请求中......" else dialogMessage)!! + ) } - constructor(activity: Activity) { + constructor(activity: AppCompatActivity) { initDialog(activity, "网络请求中......") } @@ -44,13 +50,13 @@ abstract class RxHttpCallBack { * 订阅成功 */ fun onStart() { - if (dialog != null && !dialog!!.isShowing) { + if (dialog != null && !dialog!!.isShow) { dialog!!.show() } } fun onStop() { - if (dialog != null && dialog!!.isShowing) { + if (dialog != null && dialog!!.isShow) { dialog!!.dismiss() } } @@ -61,8 +67,8 @@ abstract class RxHttpCallBack { * @param t * @throws Exception */ - fun onSuccess(t: CommonResponseBean) { - if (dialog != null && dialog!!.isShowing) { + open fun onSuccess(t: CommonResponseBean) { + if (dialog != null && dialog!!.isShow) { dialog!!.dismiss() } } @@ -73,8 +79,8 @@ abstract class RxHttpCallBack { * @param t * @throws Exception */ - fun onCodeError(mContext: Context?, t: CommonResponseBean) { - if (dialog != null && dialog!!.isShowing) { + open fun onCodeError(mContext: Context?, t: CommonResponseBean) { + if (dialog != null && dialog!!.isShow) { dialog!!.dismiss() } if (t.code == 401) { @@ -100,8 +106,8 @@ abstract class RxHttpCallBack { * @param e * @throws Exception */ - fun onFailure(mContext: Context?, e: Throwable) { - if (dialog != null && dialog!!.isShowing) { + open fun onFailure(mContext: Context?, e: Throwable) { + if (dialog != null && dialog!!.isShow) { dialog!!.dismiss() } if (e is ConnectException diff --git a/app/src/main/java/com/dahe/gldriver/oss/OssConfigBean.java b/app/src/main/java/com/dahe/gldriver/oss/OssConfigBean.java new file mode 100644 index 0000000..692611e --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/oss/OssConfigBean.java @@ -0,0 +1,25 @@ +package com.dahe.gldriver.oss; + +/** + * @ClassName OssConfigBean + * @Author 用户 + * @Date 2021/9/30 9:11 + * @Description TODO + */ +public class OssConfigBean { + +// public static final String endpoint = "oss-cn-beijing.aliyuncs.com"; + public static final String endpoint = "https://oss-cn-beijing.aliyuncs.com"; + public static final String region = "oss-cn-beijing"; + public static final String accessKeyId = "LTAI5tSR2Ketbc32wuokWZgF"; + public static final String accessKeySecret = "TuumKEyXiZ3Rdfudcir7qJZenK2wCE"; + public static final String bucket = "dh-tms"; + public static final String BUCKET_OBJECT = "tms/user-cert/"; + public static final String BUCKET_OBJECT_TEXT = "tms/tms-test/user-cert/"; + public static final String BUCKET_BASE_URL = "https://dh-tms.oss-cn-beijing.aliyuncs.com/"; + public static final String BUCKET_BASE_URL_UP = "https://dahehuodongbao.com/"; + public static final String ARN = "acs:ram::1864711654174879:role/aliyunactiontraildefaultrole"; + //callback 测试地址 + public static final String OSS_CALLBACK_URL = "http://oss-demo.aliyuncs.com:23450"; +// public static final String OSS_CALLBACK_URL = "http://tms.api.test.dahehuodongbao.com:8081/sts/getsts"; +} diff --git a/app/src/main/java/com/dahe/gldriver/oss/OssServiceUtil.java b/app/src/main/java/com/dahe/gldriver/oss/OssServiceUtil.java new file mode 100644 index 0000000..f883321 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/oss/OssServiceUtil.java @@ -0,0 +1,352 @@ +package com.dahe.gldriver.oss; + +import android.graphics.Bitmap; +import android.util.Log; +import android.widget.ImageView; +import android.widget.ProgressBar; + +import androidx.appcompat.app.AppCompatActivity; + +import com.alibaba.sdk.android.oss.ClientConfiguration; +import com.alibaba.sdk.android.oss.ClientException; +import com.alibaba.sdk.android.oss.OSS; +import com.alibaba.sdk.android.oss.OSSClient; +import com.alibaba.sdk.android.oss.ServiceException; +import com.alibaba.sdk.android.oss.callback.OSSCompletedCallback; +import com.alibaba.sdk.android.oss.callback.OSSProgressCallback; +import com.alibaba.sdk.android.oss.common.auth.OSSAuthCredentialsProvider; +import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider; +import com.alibaba.sdk.android.oss.internal.OSSAsyncTask; +import com.alibaba.sdk.android.oss.model.OSSRequest; +import com.alibaba.sdk.android.oss.model.PutObjectRequest; +import com.alibaba.sdk.android.oss.model.PutObjectResult; +import com.dahe.gldriver.base.App; +import com.dahe.mylibrary.utils.LoadingUtils; +import com.lxj.xpopup.impl.LoadingPopupView; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.functions.Consumer; + +/** + * @ClassName OssServiceUtil + * @Author 用户 + * @Date 2021/9/29 17:53 + * @Description TODO + */ +public class OssServiceUtil { + + private static OSS oss; + private static OSSCredentialProvider credentialProvider; + private static ClientConfiguration conf; + private String bucket; + private picResultCallback callback;//回调接口 + private String path = "tms/user-cert/"; + private LoadingPopupView dialog; + + private OssServiceUtil() { + } + + private static volatile OssServiceUtil ossUtils; + + public static OssServiceUtil getInstance() { + if (ossUtils == null) { + synchronized (OssServiceUtil.class) { + if (ossUtils == null) { + ossUtils = new OssServiceUtil(); + } + } + } + return ossUtils; + } + + private void initDialog(AppCompatActivity activity) { + dialog = LoadingUtils.Companion.getInstance().init(activity,"网络请求中......"); + } + + //初始化使用参数 + public void init() { + bucket = OssConfigBean.bucket; + String stsServer = "http://platform.test.v2.dahehuoyun.com/devApi/file/aliyun/oss/getToken"; + credentialProvider = new OSSAuthCredentialsProvider(stsServer); + conf = new ClientConfiguration(); + conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒 + conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒 + conf.setMaxConcurrentRequest(5); // 最大并发请求书,默认5个 + conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次 + + oss = new OSSClient(App.Companion.getApp(), OssConfigBean.endpoint, credentialProvider, conf); + + + System.out.println("ffff"); +// initDialog(activity); + } + + public void setResultCallBack(picResultCallback callback) { + this.callback = callback; + } + + /** + * 图片以路径的方式上传 + *

+ * // * @param 图片的上传地址(更后台要) + * // * @param 图片本地地址 + * // * @param 进度条 + */ + public void asyncPutImage(final String localFile, final AppCompatActivity activity) { +// if (object.equals("")) { +// return; +// } + if (activity!=null){ + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + initDialog(activity); + } + }); + } + + File file = new File(localFile); + if (!file.exists()) { + return; + } + + + Calendar instance = Calendar.getInstance(); + String year = String.valueOf(instance.get(Calendar.YEAR)); + String month = String.valueOf(instance.get(Calendar.MONTH) + 1); + String day = String.valueOf(instance.get(Calendar.DAY_OF_MONTH)); + String name = file.getName(); + // 构造上传请求 +// PutObjectRequest put = new PutObjectRequest(OssConfigBean.bucket, year + "/" + month + "/" + day + name, localFile); + PutObjectRequest put = new PutObjectRequest(OssConfigBean.bucket, OssConfigBean.BUCKET_OBJECT + name, localFile); + + put.setCRC64(OSSRequest.CRC64Config.YES); + String mCallbackAddress = OssConfigBean.OSS_CALLBACK_URL; +// if (mCallbackAddress != null) { +// // 传入对应的上传回调参数,这里默认使用OSS提供的公共测试回调服务器地址 +// put.setCallbackParam(new HashMap() { +// { +// put("callbackUrl", mCallbackAddress); +// //callbackBody可以自定义传入的信息 +// put("callbackBody", "filename=${object}"); +// } +// }); +// } + + //上传后回调通知 + // 异步上传时可以设置进度回调 + put.setProgressCallback(new OSSProgressCallback() { + @Override + public void onProgress(PutObjectRequest request, long currentSize, long totalSize) { +// int progress = (int) (100 * currentSize / totalSize); +// if (mProgress != null) { +// mProgress.setProgress(progress); +// } + activity.runOnUiThread(() -> { + if (dialog != null&&!dialog.isShow()) { + dialog.show(); + } + }); + + } + }); + + OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback() { + @Override + public void onSuccess(PutObjectRequest request, final PutObjectResult result) { + activity.runOnUiThread(() -> { + if (dialog != null) { + dialog.dismiss(); + } + }); + + String serverCallbackReturnBody = result.getServerCallbackReturnBody(); + callback.getPicData(result, OssConfigBean.BUCKET_BASE_URL + OssConfigBean.BUCKET_OBJECT + name); + } + + @Override + public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { + activity.runOnUiThread(() -> { + if (dialog != null) { + dialog.dismiss(); + } + }); + String info = ""; + // 请求异常 + if (clientExcepion != null) { + // 本地异常如网络异常等 + clientExcepion.printStackTrace(); + info = clientExcepion.toString(); + } + if (serviceException != null) { + // 服务异常 + Log.e("ErrorCode", serviceException.getErrorCode()); + Log.e("RequestId", serviceException.getRequestId()); + Log.e("HostId", serviceException.getHostId()); + Log.e("RawMessage", serviceException.getRawMessage()); + info = serviceException.toString(); + } +// task.cancel(); + } + }); + } + + + + /** + * 上传次数 + */ + int number; + /** + * 成功上传(本地文件名作为key,阿里云地址为value) + */ + List success = new ArrayList<>(); + /** + * 失败上传(返回失败文件的本地地址) + */ + List failure = new ArrayList<>(); + + /** + * 批量上传图片 + * + * @param localFiles + */ + public void asyncPutImages(final List localFiles, PicsResultCallback callback) { + //初始化 + number = 1; + success.clear(); + for (int i = 0; i < localFiles.size(); i++) { + File file = new File(localFiles.get(i)); + if (!file.exists()) { + return; + } + String name = file.getName(); + // 构造上传请求 + PutObjectRequest put = new PutObjectRequest(OssConfigBean.bucket, OssConfigBean.BUCKET_OBJECT + name, localFiles.get(i)); + + put.setCRC64(OSSRequest.CRC64Config.YES); + + oss.asyncPutObject(put, new OSSCompletedCallback() { + @Override + public void onSuccess(PutObjectRequest request, final PutObjectResult result) { + + String aliPath = OssConfigBean.BUCKET_BASE_URL + OssConfigBean.BUCKET_OBJECT + name; + success.add(aliPath); + if (number == localFiles.size()) { + //返回 上传路径,以及失败的路径 + callback.onOssSuccess(success, failure); + } + number++; + } + + @Override + public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { + number++; + String aliPath = OssConfigBean.BUCKET_BASE_URL + OssConfigBean.BUCKET_OBJECT + name; + failure.add(aliPath); + if (number == localFiles.size()) { + callback.onOssSuccess(success, failure); + } + } + }); + } + + } + + /** + * 图片以bitmap的形式上传 + * + * @param object + * @param localFile + * @param mProgress + * @param img + * @param type + */ + public void asyncPutImage(String object, final Bitmap localFile, final ProgressBar mProgress, final ImageView img, String type) { + if (object.equals("")) { + Log.w("AsyncPutImage", "ObjectNull"); + return; + } + if (localFile == null) { + Log.w("AsyncPutImage", "bitmapNull"); + return; + } + + // 构造上传请求 + PutObjectRequest put = new PutObjectRequest(bucket, object, getBitmapByte(localFile)); + //上传后回调通知 + // 客户端在上传Object时可以指定OSS服务端在处理完上传请求后,通知您的业务服务器,在该服务器确认接收了该回调后将回调的结果返回给客户端。 + put.setCallbackParam(new HashMap() { + { + put("callbackUrl", path); + put("callbackBody", +//参数跟后台商议 + "filename=${object}&size=${size}&action=${x:action}}"); + } + }); + HashMap hashMap = new HashMap<>(); + hashMap.put("x:action", type); + put.setCallbackVars(hashMap); + OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback() { + @Override + public void onSuccess(PutObjectRequest request, final PutObjectResult result) { + + Observable.just(result).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { + @Override + public void accept(PutObjectResult putObjectResult) throws Throwable { + callback.getPicData(result, ""); + } + }); +// Observable.just(result).observeOn(AndroidSchedulers.mainThread()).subscribe(putObjectResult -> callback.getPicData(result, "")); + } + + @Override + public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { + String info = ""; + // 请求异常 + if (clientExcepion != null) { + // 本地异常如网络异常等 + clientExcepion.printStackTrace(); + info = clientExcepion.toString(); + } + if (serviceException != null) { + // 服务异常 + Log.e("ErrorCode", serviceException.getErrorCode()); + Log.e("RequestId", serviceException.getRequestId()); + Log.e("HostId", serviceException.getHostId()); + Log.e("RawMessage", serviceException.getRawMessage()); + info = serviceException.toString(); + } + } + }); + } + + public byte[] getBitmapByte(Bitmap bitmap) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); + try { + out.flush(); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return out.toByteArray(); + } + + public interface picResultCallback { + void getPicData(PutObjectResult data, String oldPath); + } + + public interface PicsResultCallback { + void onOssSuccess(List success, List failure); + } +} diff --git a/app/src/main/java/com/dahe/gldriver/ui/LauncherActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/LauncherActivity.kt index 85cf5d2..7e0f588 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/LauncherActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/LauncherActivity.kt @@ -6,7 +6,9 @@ import com.dahe.gldriver.databinding.ActivityLauncherBinding import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.gldriver.ui.account.LoginActivity +import com.dahe.gldriver.ui.account.SelectRoleActivity import com.dahe.gldriver.utils.SPUtils +import com.dahe.mylibrary.utils.StringUtils import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.disposables.Disposable @@ -22,17 +24,14 @@ class LauncherActivity : BaseActivity() { binding.llCount.setOnClickListener { mDisposable?.dispose() //已登录,直接跳转首页 -// val userInfo = SPUtils.getUserInfo(mContext) + val userInfo = SPUtils.instance.getUserInfo(mContext) // -// if (userInfo != null && StringUtils.isNotEmpty(userInfo.token)) { -// ActivityUtils.startActivity(mContext, HomeActivity::class.java,intent.extras) -// } else { -// ActivityUtils.startActivity(this@LauncherActivity, LoginActivity::class.java) -// } -// window.setFlags( -// WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, -// WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); - ActivityUtils.startActivity(this@LauncherActivity, LoginActivity::class.java) + if (userInfo != null && StringUtils.isNotEmpty(userInfo.access_token)) { + ActivityUtils.startActivity(mContext, LoginActivity::class.java, intent.extras) + } else { + ActivityUtils.startActivity(this@LauncherActivity, LoginActivity::class.java) + } +// ActivityUtils.startActivity(this@LauncherActivity, LoginActivity::class.java) finish() } val count = 3 @@ -45,17 +44,19 @@ class LauncherActivity : BaseActivity() { mDisposable?.dispose() //已登录,直接跳转首页 //已登录,直接跳转首页 -// val userInfo: UserBean? = SPUtils.getUserInfo(mContext) -// -// if (userInfo != null && !TextUtils.isEmpty(userInfo.getToken())) { -// ActivityUtils.startActivity(mContext, HomeActivity::class.java,intent.extras) -// } else { -// ActivityUtils.startActivity( -// this@LauncherActivity, -// LoginActivity::class.java -// ) -// -// } + val userInfo = SPUtils.instance.getUserInfo(mContext) + if (userInfo != null && StringUtils.isNotEmpty(userInfo.access_token)) { + ActivityUtils.startActivity( + mContext, + SelectRoleActivity::class.java, + intent.extras + ) + } else { + ActivityUtils.startActivity( + this@LauncherActivity, + LoginActivity::class.java + ) + } // ActivityUtils.startActivity( // this@LauncherActivity, diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt index 0d67b16..5637c18 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/CodeLoginActivity.kt @@ -1,14 +1,22 @@ package com.dahe.gldriver.ui.account +import android.content.Intent import android.os.Bundle import android.view.View +import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.databinding.ActivityCodeBinding -import com.dahe.gldriver.databinding.ActivityLoginBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack import com.dahe.gldriver.ui.HomeActivity +import com.dahe.gldriver.utils.SPUtils +import com.dahe.glex.bean.UserBean import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils -import com.dahe.mylibrary.utils.SmsTimeUtils -import kotlin.math.log +import com.google.gson.Gson +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName LoginActivity @@ -17,23 +25,57 @@ import kotlin.math.log * @Description TODO */ class CodeLoginActivity : BaseActivity(), View.OnClickListener { + lateinit var phone: String override fun initView(savedInstanceState: Bundle?) { - - + phone = intent.extras!!.getString(AppConfig.PHONE, "") binding.tvLoginType.setOnClickListener(this) + binding.ok.setOnClickListener(this) } override fun initDate() { + DataManager.getInstance().getCode(phone) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + } + })) } override fun onClick(view: View?) { super.onClick(view) + when (view?.id) { + binding.tvLoginType.id -> {} + binding.ok.id -> { +// setResult(RESULT_OK, Intent().apply { putExtra(AppConfig.CODE, "2024") }) +// finish() + DataManager.getInstance().login(phone, "2024") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + SPUtils.instance.setUserInfo(mContext, Gson().toJson(t.data)) + + + ActivityUtils.startActivity( + mContext, + SelectRoleActivity::class.java + ) + finish() + ActivityUtils.finishActivity(LoginActivity::class.java) + } + })) + + } + } } private fun changeLoginType() { } - private fun login(){ + private fun login() { } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt index e3db6ac..84a0b40 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/LoginActivity.kt @@ -1,11 +1,14 @@ package com.dahe.gldriver.ui.account +import android.content.Intent import android.os.Bundle import android.view.View +import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.databinding.ActivityLoginBinding import com.dahe.gldriver.ui.HomeActivity import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ToastUtils /** * @ClassName LoginActivity @@ -72,10 +75,29 @@ class LoginActivity : BaseActivity(), View.OnClickListener private fun login() { if ("获取验证码" == binding.ok.text) { - ActivityUtils.startActivity(mContext, CodeLoginActivity::class.java) - }else{ + var phone = binding.etPhone.text.toString().trim() + if (phone.length == 11) { + + ActivityUtils.startActivityForResult( + LoginActivity@ this, + CodeLoginActivity::class.java, + Bundle().apply { putString(AppConfig.PHONE, binding.etPhone.text.toString()) }, + 1 + ) + } else { + ToastUtils.showToast(mContext, "请输入正确手机号") + } + + } else { ActivityUtils.startActivity(mContext, SelectRoleActivity::class.java) } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK && requestCode == 1) { + var code = data?.getStringExtra(AppConfig.CODE) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt index be793ac..82759c5 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/SelectRoleActivity.kt @@ -3,7 +3,11 @@ package com.dahe.gldriver.ui.account import android.os.Bundle import com.dahe.gldriver.R import com.dahe.gldriver.databinding.ActivitySelectRoleBinding +import com.dahe.gldriver.ui.account.authperson.AuthBankCardActivity +import com.dahe.gldriver.ui.account.authperson.AuthDriverActivity +import com.dahe.gldriver.ui.account.authperson.AuthDrivingActivity import com.dahe.gldriver.ui.account.authperson.AuthPersonActivity +import com.dahe.gldriver.ui.account.authperson.AuthQualificationActivity import com.dahe.gldriver.ui.account.authteam.AuthTeamActivity import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils @@ -19,7 +23,8 @@ class SelectRoleActivity : BaseActivity() { setStatusBarColor(R.color.white) setTitleBar("选择角色",true) binding.rlPerson.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java) + ActivityUtils.startActivity(mContext, AuthDriverActivity::class.java) +// ActivityUtils.startActivity(mContext, AuthPersonActivity::class.java) } binding.rlCom.setOnClickListener { ActivityUtils.startActivity(mContext, AuthTeamActivity::class.java) diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthBankCardActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthBankCardActivity.kt index 08716b8..d2effa6 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthBankCardActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthBankCardActivity.kt @@ -2,11 +2,20 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R +import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.bean.UpBankInfoBean import com.dahe.gldriver.databinding.ActivityAuthBankcardBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.PopsUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName AuthBankCardActivity @@ -15,22 +24,75 @@ import com.dahe.mylibrary.utils.PopsUtils * @Description TODO */ class AuthBankCardActivity : BaseActivity() { + private var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() + + private var bankInfo = UpBankInfoBean() + override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证", true) binding.run { btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthFaceActivity::class.java) + subMit() } ivFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivFront) - } + selBankPic() } } } override fun initDate() { } + + + private fun selBankPic() { + PopsUtils.getInstance().showSimSelPic(mContext) { it -> + var data = it[0] + ossServiceUtil.asyncPutImage(data.realPath, this@AuthBankCardActivity) + ossServiceUtil.setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeBankCard(oldPath) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack(this) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data?.run { + bankInfo.driverBankcardPhotoUrl = oldPath + + binding.let { + it.etId.setText(cardNumber) + it.tvBankName.text = bankName + } + } + + } + }) + ) + + } + + ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivFront) + } + } + + private fun subMit() { + bankInfo.run { + + bankInfo.driverBankcardNumber = binding.etId.text.toString() + bankInfo.driverBankcardAddress = binding.tvBankName.text.toString() + + DataManager.getInstance().setUpDriverBankCard(this) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + ActivityUtils.startActivity(mContext, AuthFaceActivity::class.java) + } + })) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt index e55255c..f064a2b 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt @@ -1,13 +1,27 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle +import android.view.View +import androidx.core.widget.ContentLoadingProgressBar import com.dahe.gldriver.R +import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.bean.UpDriverInfoBean +import com.dahe.gldriver.bean.UpPersonInfoBean +import com.dahe.gldriver.callback.OnOcrPicResultListener import com.dahe.gldriver.databinding.ActivityAuthDriverBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil +import com.dahe.gldriver.utils.OcrUtils import com.dahe.mylibrary.utils.PickerUtils import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.PopsUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName AuthRoleActivity @@ -16,13 +30,18 @@ import com.dahe.mylibrary.utils.PopsUtils * @Description 驾驶证认证 */ class AuthDriverActivity : BaseActivity() { + + var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() + + var driverInfoBean: UpDriverInfoBean = UpDriverInfoBean() + override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证", true) binding.run { btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthQualificationActivity::class.java) + subMit() } tvStart.run { @@ -41,27 +60,19 @@ class AuthDriverActivity : BaseActivity() { } } } - tvCarType.run { - setOnClickListener { - PickerUtils.getInstance() - .showSelectCarType(this@AuthDriverActivity, "选择准驾车型") { _, item -> - this.text = item.toString() - } - } + tvCarType.setOnClickListener { + PickerUtils.getInstance() + .showSelectCarType(this@AuthDriverActivity, "选择准驾车型") { _, item -> + tvCarType.text = item.toString() + } } ivFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext){ - var data = it[0] - ImageLoader.getInstance().loadRoundImage(mContext,data.path,12,ivFront) - } + selFrontPic() } ivBack.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext){ - var data = it[0] - ImageLoader.getInstance().loadRoundImage(mContext,data.path,12,ivBack) - } + selBackPic() } } @@ -69,4 +80,144 @@ class AuthDriverActivity : BaseActivity() { override fun initDate() { } + + private fun subMit() { + binding.run { + driverInfoBean.run { + licenseNo = etId.text.toString() + licenseType = tvCarType.text.toString() + licenseEffectiveStart = tvStart.text.toString() + licenseEffectiveEnd = tvEnd.text.toString() + } + + DataManager.getInstance().setUpDriverLicense(driverInfoBean) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + ActivityUtils.startActivity( + mContext, + AuthQualificationActivity::class.java + ) + } + })) + } + } + + private fun selFrontPic() { + OcrUtils.getInstance().ocrDriver(mContext, this@AuthDriverActivity) { picPath, result -> + result.data.face?.data.let { + ImageLoader.getInstance().loadRoundImage(mContext, picPath, 12, binding.ivFront) + driverInfoBean.licensePhotoFaceUrl = picPath.picPath + it?.run { + driverInfoBean.run { + licenseApproveOrganization = + issueAuthority //发证机关 + } + binding.run { + etName.setText(it.name) + etId.setText(it.licenseNumber) + tvCarType.text = it.approvedType + if (validPeriod.contains("至")) { + val split = validPeriod.split("至") + tvStart.text = split[0] + tvEnd.text = + if (split.size == 2) split[1] else "" + } + } + } + } + } + + +// PopsUtils.getInstance().showSimSelPic(mContext) { +// var data = it[0] +// ossServiceUtil.asyncPutImage(data.realPath, this@AuthDriverActivity) +// ossServiceUtil.setResultCallBack { data, oldPath -> +// DataManager.getInstance().recognizeDrivingLicense(oldPath) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe( +// BaseObserver(mContext, +// object : RxHttpCallBack() { +// override fun onSuccess(t: CommonResponseBean) { +// super.onSuccess(t) +// t.data.data.face?.data.let { +// driverInfoBean.licensePhotoFaceUrl = oldPath +// it?.run { +// driverInfoBean.run { +// licenseApproveOrganization = +// issueAuthority //发证机关 +// } +// +// +// binding.run { +// etName.setText(it.name) +// etId.setText(it.licenseNumber) +// tvCarType.text = it.approvedType +// if (validPeriod.contains("至")) { +// val split = validPeriod.split("至") +// tvStart.text = split[0] +// tvEnd.text = +// if (split.size == 2) split[1] else "" +// } +// } +// } +// } +// } +// }) +// ) +// +// } +// +// ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivFront) +// } + } + + private fun selBackPic() { + PopsUtils.getInstance().showSimSelPic(mContext) { + var data = it[0] + ossServiceUtil.asyncPutImage(data.realPath, this@AuthDriverActivity) + ossServiceUtil.setResultCallBack { data, oldPath -> + run { + DataManager.getInstance().recognizeDrivingLicense(oldPath) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data.back?.data.let { + driverInfoBean.licensePhotoBackUrl = oldPath +// it?.run { +// driverInfoBean.run { +// licenseApproveOrganization = +// issueAuthority //发证机关 +// } +// binding.run { +// etName.setText(it.name) +// etId.setText(it.licenseNumber) +// tvCarType.text = it.approvedType +// if (validPeriod.contains("至")) { +// val split = validPeriod.split("至") +// tvStart.text = split[0] +// tvEnd.text = +// if (split.size == 2) split[1] else "" +// } +// } +// } + } + } + }) + ) + + } + } + + + ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivBack) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt index 860ddf9..f546e5d 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDrivingActivity.kt @@ -2,11 +2,19 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R +import com.dahe.gldriver.bean.OcrPersonBean import com.dahe.gldriver.databinding.ActivityAuthDrivingBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.PopsUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName AuthRoleActivity @@ -15,6 +23,8 @@ import com.dahe.mylibrary.utils.PopsUtils * @Description 行驶证认证 */ class AuthDrivingActivity : BaseActivity() { + + var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证", true) @@ -23,15 +33,17 @@ class AuthDrivingActivity : BaseActivity() { } binding.run { ivFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivFront) - } + selFrontPic() +// PopsUtils.getInstance().showSimSelPic(mContext) { +// ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivFront) +// } } ivBack.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivBack) - } + selBackPic() +// PopsUtils.getInstance().showSimSelPic(mContext) { +// ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivBack) +// } } ivCar.setOnClickListener { PopsUtils.getInstance().showSimSelPic(mContext) { @@ -43,4 +55,88 @@ class AuthDrivingActivity : BaseActivity() { override fun initDate() { } + + private fun selFrontPic() { + PopsUtils.getInstance().showSimSelPic(mContext) { + var data = it[0] + ossServiceUtil.asyncPutImage(data.realPath, this@AuthDrivingActivity) + ossServiceUtil.setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeVehicleLicense(oldPath) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data.face?.data?.let { + binding.run { + etCarNum.setText(it.licensePlateNumber) + etOwner.setText(it.owner) + etUseNature.setText(it.useNature) + etCurbWeight.setText(it.curbWeight) + etPermittedWeight.setText(it.permittedWeight) + tvCarType.text = it.vehicleType + } + } +// t.data.data.face?.data.let { +// driverInfoBean.licensePhotoFaceUrl = oldPath +// it?.run { +// driverInfoBean.run { +// licenseApproveOrganization = +// issueAuthority //发证机关 +// } +// +// +// binding.run { +// etName.setText(it.name) +// etId.setText(it.licenseNumber) +// tvCarType.text = it.approvedType +// if (validPeriod.contains("至")) { +// val split = validPeriod.split("至") +// tvStart.text = split[0] +// tvEnd.text = +// if (split.size == 2) split[1] else "" +// } +// } +// } +// } + } + }) + ) + + } + + ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivFront) + } + } + + private fun selBackPic() { + PopsUtils.getInstance().showSimSelPic(mContext) { + var data = it[0] + ossServiceUtil.asyncPutImage(data.realPath, this@AuthDrivingActivity) + ossServiceUtil.setResultCallBack { data, oldPath -> + run { + DataManager.getInstance().recognizeVehicleLicense(oldPath) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) +// t.data.data.back?.data.let { +// driverInfoBean.licensePhotoBackUrl = oldPath +// } + } + }) + ) + + } + } + + + ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivBack) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt index 792d0ad..36f6548 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPersonActivity.kt @@ -2,13 +2,28 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R +import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.bean.OssBean +import com.dahe.gldriver.bean.UpPersonInfoBean import com.dahe.gldriver.databinding.ActivityAuthPersonBinding -import com.dahe.mylibrary.utils.PickerUtils +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil +import com.dahe.glex.bean.UserBean import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader +import com.dahe.mylibrary.utils.PickerUtils import com.dahe.mylibrary.utils.PopsUtils -import com.dahe.mylibrary.utils.ToastUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.functions.Function +import io.reactivex.rxjava3.schedulers.Schedulers +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MultipartBody +import okhttp3.RequestBody.Companion.asRequestBody +import java.io.File /** * @ClassName AuthRoleActivity @@ -17,19 +32,43 @@ import com.dahe.mylibrary.utils.ToastUtils * @Description 身份证认证 */ class AuthPersonActivity : BaseActivity() { + + + lateinit var ossServiceUtil: OssServiceUtil + + var perInfoBean: UpPersonInfoBean = UpPersonInfoBean() override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证", true) + ossServiceUtil = OssServiceUtil.getInstance() binding.run { - + var inBinding = this btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthDriverActivity::class.java) + + perInfoBean.run { + idcardNo = inBinding.etId.toString() + idcardName = inBinding.etName.toString() + idcardEffectiveStart = inBinding.tvStart.toString() + idcardEffectiveEnd = inBinding.tvEnd.toString() + } + + DataManager.getInstance().setUpDriverIdCard(perInfoBean) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext,object : RxHttpCallBack(){ + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + println("lijiaaaaa") + ActivityUtils.startActivity(mContext, AuthDriverActivity::class.java) + } + })) + + } tvStart.run { setOnClickListener { PickerUtils.getInstance() - .showDate(this@AuthPersonActivity,"有效起始日期") { year, month, day -> + .showDate(this@AuthPersonActivity, "有效起始日期") { year, month, day -> this.text = "$year-$month-$day" } } @@ -37,26 +76,127 @@ class AuthPersonActivity : BaseActivity() { tvEnd.run { setOnClickListener { PickerUtils.getInstance() - .showDate(this@AuthPersonActivity,"有效结束日期") { year, month, day -> + .showDate(this@AuthPersonActivity, "有效结束日期") { year, month, day -> this.text = "$year-$month-$day" } } } ivFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext){ + PopsUtils.getInstance().showSimSelPic(mContext) { var data = it[0] - ImageLoader.getInstance().loadRoundImage(mContext,data.path,12,ivFront) + + val path: String + if (data.isCut && !data.isCompressed) { + // 裁剪过 + path = data.cutPath + } else if (data.isCompressed || (data.isCut && data.isCompressed)) { + // 压缩过,或者裁剪同时压缩过,以最终压缩过图片为准 + path = data.compressPath + } else { + // 原图 + path = data.path + } + ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, ivFront) + + val file = File(data.realPath) + val filePic: MultipartBody.Part = MultipartBody.Part.createFormData( + "file", + file.getName(), + file.asRequestBody("multipart/form-data".toMediaTypeOrNull()) + ) + + DataManager.getInstance().uploadToOss(filePic).flatMap { + perInfoBean.idcardFrontUrl = it.data.url + DataManager.getInstance().recognizeIdcard(it.data.url) + }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver( + mContext, + object : RxHttpCallBack(this@AuthPersonActivity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data.face?.data.let { + it?.run { + perInfoBean.run { + idcardNo = idNumber + idcardName = name + idcardSex = if (sex == "男") "0" else "1" + } + } + binding.run { + etName.setText(it?.name) + etId.setText(it?.idNumber) + } + } + } + }) + ) + + +// ossServiceUtil.asyncPutImage(path, null) +// ossServiceUtil.setResultCallBack { data, oldPath -> +// { +// +// +// } +// } } } ivBack.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext){ + PopsUtils.getInstance().showSimSelPic(mContext) { var data = it[0] - ImageLoader.getInstance().loadRoundImage(mContext,data.path,12,ivBack) + + + val path: String + if (data.isCut && !data.isCompressed) { + // 裁剪过 + path = data.cutPath + } else if (data.isCompressed || (data.isCut && data.isCompressed)) { + // 压缩过,或者裁剪同时压缩过,以最终压缩过图片为准 + path = data.compressPath + } else { + // 原图 + path = data.path + } + ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, ivBack) + + val file = File(data.realPath) + val filePic: MultipartBody.Part = MultipartBody.Part.createFormData( + "file", + file.getName(), + file.asRequestBody("multipart/form-data".toMediaTypeOrNull()) + ) + + DataManager.getInstance().uploadToOss(filePic).flatMap { + perInfoBean.idcardBackUrl = it.data.url + DataManager.getInstance().recognizeIdcard(it.data.url) + }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver( + mContext, + object : RxHttpCallBack(this@AuthPersonActivity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data.back?.let { + if (it.data.validPeriod?.contains("-") == true) { + val split = it.data.validPeriod.split("-") + binding.run { + tvStart.text = split[0] + tvEnd.text = + if (split.size == 2) split[1] else "" + } + } + } + } + }) + ) } } } + + } override fun initDate() { diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthQualificationActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthQualificationActivity.kt index fd24661..b893eb9 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthQualificationActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthQualificationActivity.kt @@ -2,12 +2,20 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R +import com.dahe.gldriver.bean.UpQualiInfoBean import com.dahe.gldriver.databinding.ActivityAuthQualificationBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil import com.dahe.mylibrary.utils.PickerUtils import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ImageLoader import com.dahe.mylibrary.utils.PopsUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers /** * @ClassName AuthQualificationActivity @@ -16,26 +24,38 @@ import com.dahe.mylibrary.utils.PopsUtils * @Description 从业资格证认证 */ class AuthQualificationActivity : BaseActivity() { + + var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() + var upQuaInfo = UpQualiInfoBean() override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证", true) binding.btnOk.setOnClickListener { - ActivityUtils.startActivity(mContext, AuthBankCardActivity::class.java) + subMit() } binding.run { tvDate.run { setOnClickListener { PickerUtils.getInstance() - .showDate(this@AuthQualificationActivity,"选择有效期至") { year, month, day -> + .showDate( + this@AuthQualificationActivity, + "选择有效期至" + ) { year, month, day -> this.text = "$year-$month-$day" } } } ivFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext){ - ImageLoader.getInstance().loadRoundImage(mContext,it[0].path,12,ivFront) + PopsUtils.getInstance().showSimSelPic(mContext) { + var data = it[0] + ossServiceUtil.asyncPutImage(data.realPath, this@AuthQualificationActivity) + ossServiceUtil.setResultCallBack { data, oldPath -> + upQuaInfo.qualificationCertificatePhotoUrl = oldPath + ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivFront) + } + } } } @@ -43,4 +63,21 @@ class AuthQualificationActivity : BaseActivity override fun initDate() { } + + private fun subMit() { + upQuaInfo.run { + qualificationCertificateNo = binding.etId.text.toString() + qualificationCertificateEffectiveEnd = binding.tvDate.text.toString() + + DataManager.getInstance().setUpDriverQualificationCertificate(upQuaInfo) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + ActivityUtils.startActivity(mContext, AuthBankCardActivity::class.java) + } + })) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt index e96e400..35c8979 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthRoadActivity.kt @@ -2,7 +2,9 @@ package com.dahe.gldriver.ui.account.authperson import android.os.Bundle import com.dahe.gldriver.R +import com.dahe.gldriver.bean.UpQualiInfoBean import com.dahe.gldriver.databinding.ActivityAuthRoadBinding +import com.dahe.gldriver.oss.OssServiceUtil import com.dahe.gldriver.ui.account.SelectRoleActivity import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils @@ -18,6 +20,9 @@ import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener * @Description 道路运输许可证认证 */ class AuthRoadActivity : BaseActivity() { + + var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() + var upQuaInfo = UpQualiInfoBean() override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证",true) diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt index c16fc0b..ae2e56c 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authteam/AuthTeamActivity.kt @@ -2,14 +2,30 @@ package com.dahe.gldriver.ui.account.authteam import android.os.Bundle import android.view.View -import android.widget.ImageView import com.dahe.gldriver.R +import com.dahe.gldriver.bean.AuthTeamBean +import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.bean.UpPersonInfoBean +import com.dahe.gldriver.callback.PicPath import com.dahe.gldriver.databinding.ActivityAuthTeamBinding +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil +import com.dahe.gldriver.utils.OcrUtils import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.ImageLoader +import com.dahe.mylibrary.utils.LoadingUtils +import com.dahe.mylibrary.utils.LoadingUtils3 import com.dahe.mylibrary.utils.PickerUtils import com.dahe.mylibrary.utils.PopsUtils -import com.dahe.mylibrary.utils.ToastUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MultipartBody +import okhttp3.RequestBody.Companion.asRequestBody +import java.io.File /** * @ClassName AuthTeamActivity @@ -18,61 +34,159 @@ import com.dahe.mylibrary.utils.ToastUtils * @Description 个人车队认证 */ class AuthTeamActivity : BaseActivity(), View.OnClickListener { - private var checkTeamType = 0 //0代表运输公司,1代表个人车队 + private var checkTeamType = 0 //1代表运输公司,0代表个人车队 + var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() + + var upComInfoBean: AuthTeamBean = AuthTeamBean("1")//公司车队 + var upPerInfoBean: AuthTeamBean = AuthTeamBean("0")//个人车队 override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("身份认证", true) - binding.run { rgTeam.setOnCheckedChangeListener { _, i -> - changeTeamType(if (i == binding.rbCom.id) 0 else 1) + changeTeamType(if (i == binding.rbCom.id) 1 else 0) } - + //营业执照选择。ocr识别 ivBusiness.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivBusiness) - } + OcrUtils.getInstance() + .ocrBusinessCard(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivBusiness) + } } //运输公司 本人身份证 - ivPerFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivPerFront) - } + ivComFront.setOnClickListener { + OcrUtils.getInstance() + .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivComFront) + result.data.face?.data?.run { + etName.setText(name) + etId.setText(idNumber) + upComInfoBean.run { + idcardNo = idNumber + idcardName = name + idcardSex = if (sex == "男") "1" else "2" + idcardEthnicity = ethnicity + idcardFrontUrl = picPath.picPath + idcardAddress = address + } + } + } } - ivPerBack.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivPerBack) - } + ivComBack.setOnClickListener { + OcrUtils.getInstance() + .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivComBack) + result.data.back?.data?.run { + if (validPeriod.contains("-")) { + val split = validPeriod.split("-") + tvStart.text = split[0] + tvEnd.text = if (split.size == 2) split[1] else "" + upComInfoBean.run { + idcardEffectiveStart = split[0] + idcardEffectiveEnd = if (split.size == 2) split[1] else "" + idcardBackUrl = picPath.picPath + + } + } + } + } } //个人车队 本人身份证 ivFront.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivFront) - } + OcrUtils.getInstance() + .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivFront) + result.data.face?.data?.run { + etPerName.setText(name) + etPerId.setText(idNumber) + + upPerInfoBean.run { + idcardNo = idNumber + idcardName = name + idcardSex = if (sex == "男") "1" else "2" + idcardEthnicity = ethnicity + idcardFrontUrl = picPath.picPath + idcardAddress = address + } + } + } } + //个人车队 本人身份证 + ivBack.setOnClickListener { + OcrUtils.getInstance() + .ocrPerson(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivBack) + result.data.back?.data?.run { + if (validPeriod.contains("-")) { + val split = validPeriod.split("-") + tvPerStart.text = split[0] + tvPerEnd.text = if (split.size == 2) split[1] else "" + + upPerInfoBean.run { + idcardEffectiveStart = split[0] + idcardEffectiveEnd = if (split.size == 2) split[1] else "" + idcardBackUrl = picPath.picPath + + } + } + } + } + } + + /** + * 个人银行卡 + */ ivBank.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivBank) - } + OcrUtils.getInstance() + .ocrBankCard(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivBank) + result.data.run { + etPerBankId.setText(cardNumber) + tvPerBankName.setText(bankName) + upPerInfoBean.run { + captainBankcardNumber = cardNumber + captainBankcardPhotoUrl = picPath.picPath + } + } + } } - - ivBank.setOnClickListener { - PopsUtils.getInstance().showSimSelPic(mContext) { - ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivBank) - } - } - + //道路运输许可证 ivRoad.setOnClickListener { PopsUtils.getInstance().showSimSelPic(mContext) { ImageLoader.getInstance().loadRoundImage(mContext, it[0].path, 12, ivRoad) } } + //公司银行卡 + ivComBank.setOnClickListener { + OcrUtils.getInstance() + .ocrBankCard(mContext, this@AuthTeamActivity) { picPath, result -> + ImageLoader.getInstance() + .loadRoundImage(mContext, picPath.locPic, 12, ivComBank) + result.data?.run { + binding.let { + it.etComBankId.setText(cardNumber) + it.etComBankName.setText(bankName) + } + upComInfoBean.run { + captainBankcardNumber = cardNumber + captainBankcardPhotoUrl = picPath.picPath + } + } + } + } + tvComDate.setOnClickListener { PickerUtils.getInstance() .showDate(this@AuthTeamActivity, "请选择有效期至") { year, month, day -> @@ -80,14 +194,15 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi } } - tvPerDate.setOnClickListener { + tvPerStart.setOnClickListener { PickerUtils.getInstance() .showDate(this@AuthTeamActivity, "请选择有效期至") { year, month, day -> - tvPerDate.text = "$year-$month-$day" + tvPerStart.text = "$year-$month-$day" } } - } + btnOk.setOnClickListener(this@AuthTeamActivity) + } } override fun initDate() { @@ -95,7 +210,7 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi private fun changeTeamType(type: Int) { checkTeamType = type - if (0 == checkTeamType) { + if (1 == checkTeamType) { binding.llCom.visibility = View.VISIBLE binding.llPerson.visibility = View.GONE } else { @@ -106,9 +221,106 @@ class AuthTeamActivity : BaseActivity(), View.OnClickLi override fun onClick(view: View?) { super.onClick(view) -// when(view?.id){ -// binding.llCom.id->{} -// } + when (view?.id) { + binding.btnOk.id -> { + DataManager.getInstance() + .authenticationCaptain(if (checkTeamType == 1) upComInfoBean else upPerInfoBean) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack(this) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + } + })) + } + + binding.ivBusiness.id -> {} + binding.ivComFront.id -> {} + binding.ivComBack.id -> {} + binding.ivComBank.id -> {} + binding.tvComDate.id -> {} + binding.tvPerStart.id -> {} + binding.ivFront.id -> {} + binding.ivBack.id -> {} + binding.ivBank.id -> {} + binding.ivRoad.id -> {} + + } + } + + private fun subMit() { + + } + + + private fun selBankPic(picType: Int = 0) { + PopsUtils.getInstance().showSimSelPic(mContext) { it -> + ossServiceUtil.run { + asyncPutImage(it[0].realPath, this@AuthTeamActivity) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeBankCard(oldPath) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack(this@AuthTeamActivity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data?.run { +// bankInfo.driverBankcardPhotoUrl = oldPath + + binding.let { + it.etComBankId.setText(cardNumber) + it.etComBankName.setText(bankName) + } + } + + } + }) + ) + + } + } + ImageLoader.getInstance() + .loadRoundImage(mContext, it[0].realPath, 12, binding.ivComBank) + } + } + + private fun selPerPic() { + PopsUtils.getInstance().showSimSelPic(mContext) { + + ImageLoader.getInstance().loadRoundImage(mContext, it[0].realPath, 12, binding.ivFront) + + ossServiceUtil.run { + asyncPutImage(it[0].realPath, this@AuthTeamActivity) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeIdcard(oldPath) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack(this@AuthTeamActivity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data.data.face?.data.let { + it?.run { +// perInfoBean.run { +// idcardNo = idNumber +// idcardName = name +// idcardSex = if (sex == "男") "1" else "2" +// } + } + binding.run { + etName.setText(it?.idNumber) + etId.setText(it?.name) + } + } + + } + }) + ) + } + } + } } } diff --git a/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt new file mode 100644 index 0000000..9143761 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/utils/OcrUtils.kt @@ -0,0 +1,143 @@ +package com.dahe.gldriver.utils + +import android.content.Context +import androidx.appcompat.app.AppCompatActivity +import com.dahe.gldriver.bean.OcrPersonBean +import com.dahe.gldriver.callback.OnOcrPicResultListener +import com.dahe.gldriver.callback.PicPath +import com.dahe.gldriver.net.BaseObserver +import com.dahe.gldriver.net.DataManager +import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.oss.OssServiceUtil +import com.dahe.mylibrary.base.SingletonNoPHolder +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.utils.PickerUtils +import com.dahe.mylibrary.utils.PopsUtils +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName OcrUtils + * @Author john + * @Date 2024/2/28 17:11 + * @Description TODO + */ +class OcrUtils private constructor() { + + companion object : SingletonNoPHolder(::OcrUtils) + + + /** + * 身份证识别 + * */ + fun ocrPerson(context: Context, activity: AppCompatActivity, listener: OnOcrPicResultListener) { + PopsUtils.getInstance().showSimSelPic(context) { result -> + //上传oss得到图片地址 + OssServiceUtil.getInstance().run { + asyncPutImage(result[0].realPath, activity) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeIdcard(oldPath) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(context, object : RxHttpCallBack(activity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data?.let { + listener.onSuccResult( + PicPath(result[0].realPath, oldPath), it + ) + } + } + })) + } + } + } + } + + /** + * 驾驶证ocr识别 + * */ + fun ocrDriver(context: Context, activity: AppCompatActivity, listener: OnOcrPicResultListener) { + PopsUtils.getInstance().showSimSelPic(context) {result-> + //上传oss得到图片地址 + OssServiceUtil.getInstance().run { + asyncPutImage(result[0].realPath, activity) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeDrivingLicense(oldPath) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver( + context, + object : RxHttpCallBack(activity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data?.let { listener.onSuccResult(PicPath(result[0].realPath, oldPath), it) } + } + }) + ) + } + } + } + } + + + /** + * 银行卡ocr识别 + * */ + fun ocrBankCard( + context: Context, + activity: AppCompatActivity, + listener: OnOcrPicResultListener + ) { + PopsUtils.getInstance().showSimSelPic(context) {result-> + //上传oss得到图片地址 + OssServiceUtil.getInstance().run { + asyncPutImage(result[0].realPath, activity) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeBankCard(oldPath) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver( + context, + object : RxHttpCallBack(activity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data?.let { listener.onSuccResult(PicPath(result[0].realPath, oldPath), it) } + } + }) + ) + } + } + } + } + + + /** + * 营业执照ocr识别 + * */ + fun ocrBusinessCard( + context: Context, + activity: AppCompatActivity, + listener: OnOcrPicResultListener + ) { + PopsUtils.getInstance().showSimSelPic(context) {result-> + //上传oss得到图片地址 + OssServiceUtil.getInstance().run { + asyncPutImage(result[0].realPath, activity) + setResultCallBack { data, oldPath -> + DataManager.getInstance().recognizeBusinessLicense(oldPath) + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver( + context, + object : RxHttpCallBack(activity) { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + t.data?.let { listener.onSuccResult(PicPath(result[0].realPath, oldPath), it) } + } + }) + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/utils/UserUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/UserUtils.kt index 1cc00a1..76191e5 100644 --- a/app/src/main/java/com/dahe/gldriver/utils/UserUtils.kt +++ b/app/src/main/java/com/dahe/gldriver/utils/UserUtils.kt @@ -17,7 +17,7 @@ class UserUtils private constructor(){ if (null== SPUtils.instance.getUserInfo(context)) return // PushAgent.getInstance(context).deleteAlias(SPUtils.getUserInfo(context).userInfo.userId,"uid"){ b, s -> } - BaseSPUtils.cleanUserInfo(context) +// BaseSPUtils.cleanUserInfo(context) // val intent = Intent(context, LauncherActivity::class.java) // intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK // context.startActivity(intent) diff --git a/app/src/main/res/layout/activity_auth_bankcard.xml b/app/src/main/res/layout/activity_auth_bankcard.xml index 862c785..57cc945 100644 --- a/app/src/main/res/layout/activity_auth_bankcard.xml +++ b/app/src/main/res/layout/activity_auth_bankcard.xml @@ -96,6 +96,7 @@ android:textSize="@dimen/sp_15"> + android:background="@drawable/driver_front" /> + android:background="@drawable/driver_back" /> @@ -113,15 +113,18 @@ android:textSize="@dimen/sp_15"> + android:paddingRight="@dimen/dp_6" + android:textColor="@color/black" + android:textSize="@dimen/sp_15" + tools:text="王海生"> + android:textSize="@dimen/sp_15" + tools:text="412826196205220056"> + android:textColor="@color/black" + android:textSize="@dimen/sp_15" + tools:text="B1"> + + android:textColor="@color/black" + android:textSize="@dimen/sp_15" + tools:text="2020-05-23"> + + android:textColor="@color/black" + android:textSize="@dimen/sp_15" + tools:text="2020-05-23"> @@ -240,11 +248,10 @@ + android:background="@color/white"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_weight="1" + android:fillViewport="true"> - + android:layout_height="wrap_content" + android:orientation="vertical"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_10" /> + + - - - - - - - - - - - - - - - - - - - - - - @@ -224,11 +224,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -255,19 +350,19 @@ android:layout_marginTop="@dimen/dp_20"> + android:background="@drawable/person_front" /> + android:background="@drawable/person_back" /> @@ -288,6 +383,7 @@ android:textSize="@dimen/sp_15"> + tools:text="1990-05-24"> + + + + + + + + @@ -421,13 +554,14 @@ android:layout_marginBottom="@dimen/dp_22" android:background="@drawable/person_back"> - + tools:text="1990-05-24"> - + + + + + + + + @@ -550,11 +718,11 @@ - + android:textSize="@dimen/sp_15"> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index cec3ea9..3c6522f 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -67,6 +67,7 @@ android:layout_height="@dimen/dp_45" android:background="@drawable/shape_phone_bg" android:hint="请输入手机号" + android:inputType="phone" android:paddingLeft="@dimen/dp_20"> @@ -105,7 +106,6 @@ android:padding="@dimen/dp_7"> - extends AppCompatActi ((TextView) findViewById(R.id.common_toolBar_title)).setTextColor(isWhite ? getColor(R.color.colorWhite) : getColor(R.color.black)); ((TextView) findViewById(R.id.common_toolBar_title)).setText(title); } - if (isWhite){ + if (isWhite) { StatusBar.cancelLightStatusBar(this);//图标文字白色 } @@ -230,7 +229,7 @@ public abstract class BaseActivity extends AppCompatActi // llContent.setLayoutParams(closeLayoutParams); - llContent.setPadding(0,BarUtils.getStatusBarHeight(),0,0); + llContent.setPadding(0, BarUtils.getStatusBarHeight(), 0, 0); } protected abstract void initView(Bundle savedInstanceState); @@ -255,6 +254,7 @@ public abstract class BaseActivity extends AppCompatActi super.onDestroy(); //释放持有,防止泄露 binding = null; + LoadingUtils.Companion.getInstance().dissLoading(); } @@ -334,5 +334,16 @@ public abstract class BaseActivity extends AppCompatActi super.onPause(); } + LoadingPopupView loadingPopup; + public void showLoading() { +// LoadingUtils3.Companion.getInstance(this).showLoading("网络请求中......"); + LoadingUtils.Companion.getInstance().showLoading(this,"网络请求中......"); + + } + + public void dissLoading() { +// LoadingUtils3.Companion.getInstance(this).dissLoading(); + LoadingUtils.Companion.getInstance().dissLoading(); + } } \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/net/JsonInterceptor.java b/mylibrary/src/main/java/com/dahe/mylibrary/net/JsonInterceptor.java index 27e7ddc..1003b74 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/net/JsonInterceptor.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/net/JsonInterceptor.java @@ -12,6 +12,8 @@ import org.json.JSONObject; import java.io.IOException; import java.nio.charset.Charset; +import kotlin.Pair; +import okhttp3.Headers; import okhttp3.Interceptor; import okhttp3.MediaType; import okhttp3.Request; diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopNorBottomPic.kt b/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopNorBottomPic.kt index b69864d..aa773fa 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopNorBottomPic.kt +++ b/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopNorBottomPic.kt @@ -50,7 +50,7 @@ class PopNorBottomPic( // .setCameraInterceptListener(getCustomCameraEvent())//自定义相机 // .setRecordAudioInterceptListener(MainActivity.MeOnRecordAudioInterceptListener())//录音回调事件 // .setCropEngine(ImageFileCropEngine())//裁剪 - .setCompressEngine(ImageFileCompressEngine())//压缩 +// .setCompressEngine(ImageFileCompressEngine())//压缩 // .setSelectLimitTipsListener(MainActivity.MeOnSelectLimitTipsListener())//拦截自定义提示 // .setAddBitmapWatermarkListener(getAddBitmapWatermarkListener())//给图片添加水印 diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java b/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java index af47200..77c9195 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/ActivityUtils.java @@ -51,13 +51,25 @@ public class ActivityUtils { */ public static void startPushActivity(@NonNull Context context, @NonNull Class clz, Bundle bundle) { Intent intent = new Intent(context, clz); - if (null != bundle){ + if (null != bundle) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtras(bundle); } context.startActivity(intent); } + /** + * 启动Activity + * + * @param context + * @param clz + */ + public static void startHomeActivity(@NonNull Context context, @NonNull Class clz) { + Intent intent = new Intent(context, clz); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK & Intent.FLAG_ACTIVITY_CLEAR_TASK); + context.startActivity(intent); + } + /** * 启动Activity * @@ -265,7 +277,7 @@ public class ActivityUtils { finishActivity(aActivity); } return true; - }else{ + } else { finishActivity(aActivity); } // finishActivity(aActivity); @@ -310,6 +322,21 @@ public class ActivityUtils { } } + /** + * 清除除本activity之外所有的activity + * + * @param clz 本activity的类名 + */ + public static void finishOtherActivitiesToNew(Context context,@NonNull final Class clz) { + List activities = CommonBaseLibrary.activityList; + for (Activity activity : activities) { + if (!activity.getClass().equals(clz)) { + finishActivity(activity); + } + } + startActivity(context,clz); + } + /** * 结束所有activity */ diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/LoadingUtils.kt b/mylibrary/src/main/java/com/dahe/mylibrary/utils/LoadingUtils.kt new file mode 100644 index 0000000..875af21 --- /dev/null +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/LoadingUtils.kt @@ -0,0 +1,53 @@ +package com.dahe.mylibrary.utils + +import androidx.appcompat.app.AppCompatActivity +import com.lxj.xpopup.XPopup +import com.lxj.xpopup.impl.LoadingPopupView + +/** + * @ClassName LoadingUtils + * @Author john + * @Date 2024/2/29 11:10 + * @Description TODO + */ +class LoadingUtils private constructor() { + var loadingPopup: LoadingPopupView? = null + lateinit var activity: AppCompatActivity + + + companion object { + val instance = Holder.holder + } + + object Holder { + val holder = LoadingUtils() + } + + + fun init(activity: AppCompatActivity, message: String = "网络请求中......"): LoadingPopupView? { + loadingPopup = XPopup.Builder(activity) + .dismissOnBackPressed(false) + .isLightNavigationBar(true) + .asLoading(message, LoadingPopupView.Style.ProgressBar) + + return loadingPopup + } + + fun showLoading(activity: AppCompatActivity, message: String = "网络请求中......") { + if (!activity.isDestroyed) + loadingPopup = XPopup.Builder(activity) + .dismissOnBackPressed(true) + .isLightNavigationBar(true) + .asLoading(message, LoadingPopupView.Style.ProgressBar) + .show() as LoadingPopupView + } + + fun dissLoading() { + if (loadingPopup != null && loadingPopup!!.isShow) { + loadingPopup!!.dismiss() + } + } + + fun isShow() = loadingPopup?.isShow + +} \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/LoadingUtils3.kt b/mylibrary/src/main/java/com/dahe/mylibrary/utils/LoadingUtils3.kt new file mode 100644 index 0000000..b7dd082 --- /dev/null +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/LoadingUtils3.kt @@ -0,0 +1,51 @@ +package com.dahe.mylibrary.utils + +import androidx.appcompat.app.AppCompatActivity +import com.dahe.mylibrary.base.SingletonHolder +import com.lxj.xpopup.XPopup +import com.lxj.xpopup.impl.LoadingPopupView + +/** + * @ClassName LoadingUtils + * @Author john + * @Date 2024/2/29 11:10 + * @Description TODO + */ +class LoadingUtils3 private constructor(activity: AppCompatActivity) { + var loadingPopup: LoadingPopupView? = null + lateinit var activity: AppCompatActivity + + companion object : SingletonHolder(::LoadingUtils3) + + init { + this.activity = activity + } + + fun init(message: String = "网络请求中......"): LoadingPopupView? { + if (loadingPopup == null) { + loadingPopup = XPopup.Builder(activity) + .dismissOnBackPressed(false) + .isLightNavigationBar(true) + .asLoading(message, LoadingPopupView.Style.ProgressBar) + } + + return loadingPopup + } + + fun showLoading(message: String = "网络请求中......") { + loadingPopup = XPopup.Builder(activity) + .dismissOnBackPressed(false) + .isLightNavigationBar(true) + .asLoading(message, LoadingPopupView.Style.ProgressBar) + .show() as LoadingPopupView + } + + fun dissLoading() { + if (loadingPopup != null && loadingPopup!!.isShow) { + loadingPopup!!.dismiss() + } + } + + fun isShow() = loadingPopup?.isShow + +} \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/utils/PopsUtils.kt b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PopsUtils.kt index 41b15ac..7223644 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/utils/PopsUtils.kt +++ b/mylibrary/src/main/java/com/dahe/mylibrary/utils/PopsUtils.kt @@ -2,7 +2,6 @@ package com.dahe.mylibrary.utils import android.content.Context import com.dahe.mylibrary.adapter.GridImageAdapter -import com.dahe.mylibrary.base.SingletonHolder import com.dahe.mylibrary.base.SingletonNoPHolder import com.dahe.mylibrary.callback.OnPicResultListener import com.dahe.mylibrary.pop.PopBottomPic