用户注册以及loading优化

This commit is contained in:
lijia 2024-02-29 14:13:44 +08:00
parent b69416d1a4
commit 0cef8d1da8
43 changed files with 2482 additions and 381 deletions

View File

@ -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", "审核测试"

View File

@ -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 @@
<activity
android:name=".ui.HomeActivity"
android:configChanges="keyboardHidden|orientation|locale"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden">

View File

@ -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);

View File

@ -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"

View File

@ -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<PrismKeyValueInfo>,
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<ValuePo>,
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
)

View File

@ -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)

View File

@ -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()
}

View File

@ -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
)

View File

@ -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
)

View File

@ -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<CommonResponseBean<WayBill2>>
fun getExecuteWaybill2(@Query("waybillId") waybillId: String?): Observable<CommonResponseBean<UserBean>>
@GET(BASE_URL + "auth/driver/login")
fun login(
@Query("contactPhone") contactPhone: String,
@Query("code") code: String
): Observable<CommonResponseBean<UserBean>>
/**
* 获取验证码
* */
@GET(BASE_URL + "auth/driver/code")
fun getCode(@Query("contactPhone") contactPhone: String): Observable<CommonResponseBean<UserBean>>
/**
* 上传到oss
* */
@Multipart
@POST(BASE_URL + "file/uploadToOss")
fun uploadToOss(
@Part file: MultipartBody.Part
): Observable<CommonResponseBean<OssBean>>
/**
* 个人身份证识别
* */
@GET(BASE_URL + "ocr/aliyunOcr/recognizeIdcard")
fun recognizeIdcard(
@Query("imgUrl") imgUrl: String
): Observable<CommonResponseBean<OcrPersonBean>>
/**
* 驾驶证识别
* */
@GET(BASE_URL + "ocr/aliyunOcr/recognizeDrivingLicense")
fun recognizeDrivingLicense(
@Query("imgUrl") imgUrl: String
): Observable<CommonResponseBean<OcrPersonBean>>
/**
* 银行卡识别
* */
@GET(BASE_URL + "ocr/aliyunOcr/recognizeBankCard")
fun recognizeBankCard(
@Query("imgUrl") imgUrl: String
): Observable<CommonResponseBean<OcrPersonBean>>
/**
* 行驶证识别
* */
@GET(BASE_URL + "ocr/aliyunOcr/recognizeVehicleLicense")
fun recognizeVehicleLicense(
@Query("imgUrl") imgUrl: String
): Observable<CommonResponseBean<OcrPersonBean>>
/**
* 营业执照识别
* */
@GET(BASE_URL + "ocr/aliyunOcr/recognizeBusinessLicense")
fun recognizeBusinessLicense(
@Query("imgUrl") imgUrl: String
): Observable<CommonResponseBean<OcrPersonBean>>
/**
* 获取用户信息
* */
@GET(BASE_URL + "driver/driver/getUserInfo")
fun getUserInfo(): Observable<CommonResponseBean<UserBean>>
/**
* 司机上传身份证
* */
@POST(BASE_URL + "driver/driver/setUpDriverIdCard")
fun setUpDriverIdCard(@Body carBean: UpPersonInfoBean): Observable<CommonResponseBean<String>>
/**
* 司机上传驾驶证
* */
@POST(BASE_URL + "driver/driver/setUpDriverLicense")
fun setUpDriverLicense(@Body driverBean: UpDriverInfoBean): Observable<CommonResponseBean<String>>
/**
* 司机上传从业资格证
* */
@POST(BASE_URL + "driver/driver/setUpDriverQualificationCertificate")
fun setUpDriverQualificationCertificate(@Body qualiBean: UpQualiInfoBean): Observable<CommonResponseBean<String>>
/**
* 司机上传银行卡
* */
@POST(BASE_URL + "driver/driver/setUpDriverBankCard")
fun setUpDriverBankCard(@Body bankBean: UpBankInfoBean): Observable<CommonResponseBean<String>>
/**
* 司机认证成为车队长
* */
@POST(BASE_URL + "driver/driver/authenticationCaptain")
fun authenticationCaptain(@Body bankBean: AuthTeamBean): Observable<CommonResponseBean<String>>
companion object {
// String BASE_URL = "https://tmstest.dahehuoyun.com/";
const val BASE_URL = BuildConfig.BASE_URL

View File

@ -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 <T : Any> setThread(): ObservableTransformer<T, T>? {
return ObservableTransformer { upstream ->
upstream.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
}
}
}

View File

@ -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() + "")

View File

@ -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<T> {
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<T> {
* 订阅成功
*/
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<T> {
* @param t
* @throws Exception
*/
fun onSuccess(t: CommonResponseBean<T>) {
if (dialog != null && dialog!!.isShowing) {
open fun onSuccess(t: CommonResponseBean<T>) {
if (dialog != null && dialog!!.isShow) {
dialog!!.dismiss()
}
}
@ -73,8 +79,8 @@ abstract class RxHttpCallBack<T> {
* @param t
* @throws Exception
*/
fun onCodeError(mContext: Context?, t: CommonResponseBean<T>) {
if (dialog != null && dialog!!.isShowing) {
open fun onCodeError(mContext: Context?, t: CommonResponseBean<T>) {
if (dialog != null && dialog!!.isShow) {
dialog!!.dismiss()
}
if (t.code == 401) {
@ -100,8 +106,8 @@ abstract class RxHttpCallBack<T> {
* @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

View File

@ -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";
}

View File

@ -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;
}
/**
* 图片以路径的方式上传
* <p>
* // * @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<String, String>() {
// {
// put("callbackUrl", mCallbackAddress);
// //callbackBody可以自定义传入的信息
// put("callbackBody", "filename=${object}");
// }
// });
// }
//上传后回调通知
// 异步上传时可以设置进度回调
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@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<PutObjectRequest, PutObjectResult>() {
@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<String> success = new ArrayList<>();
/**
* 失败上传(返回失败文件的本地地址)
*/
List<String> failure = new ArrayList<>();
/**
* 批量上传图片
*
* @param localFiles
*/
public void asyncPutImages(final List<String> 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<PutObjectRequest, PutObjectResult>() {
@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<String, String>() {
{
put("callbackUrl", path);
put("callbackBody",
//参数跟后台商议
"filename=${object}&size=${size}&action=${x:action}}");
}
});
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("x:action", type);
put.setCallbackVars(hashMap);
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, final PutObjectResult result) {
Observable.just(result).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<PutObjectResult>() {
@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<String> success, List<String> failure);
}
}

View File

@ -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<ActivityLauncherBinding>() {
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);
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<ActivityLauncherBinding>() {
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,

View File

@ -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<ActivityCodeBinding>(), 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<UserBean>() {
override fun onSuccess(t: CommonResponseBean<UserBean>) {
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<UserBean>() {
override fun onSuccess(t: CommonResponseBean<UserBean>) {
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() {
}
}

View File

@ -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<ActivityLoginBinding>(), 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)
}
}
}

View File

@ -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<ActivitySelectRoleBinding>() {
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)

View File

@ -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<ActivityAuthBankcardBinding>() {
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<OcrPersonBean>(this) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<String>() {
override fun onSuccess(t: CommonResponseBean<String>) {
super.onSuccess(t)
ActivityUtils.startActivity(mContext, AuthFaceActivity::class.java)
}
}))
}
}
}

View File

@ -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<ActivityAuthDriverBinding>() {
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<ActivityAuthDriverBinding>() {
}
}
}
tvCarType.run {
setOnClickListener {
tvCarType.setOnClickListener {
PickerUtils.getInstance()
.showSelectCarType(this@AuthDriverActivity, "选择准驾车型") { _, item ->
this.text = item.toString()
}
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<ActivityAuthDriverBinding>() {
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<String>() {
override fun onSuccess(t: CommonResponseBean<String>) {
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<OcrPersonBean>() {
// override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
// 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<OcrPersonBean>() {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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)
}
}
}

View File

@ -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<ActivityAuthDrivingBinding>() {
var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance()
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证", true)
@ -23,15 +33,17 @@ class AuthDrivingActivity : BaseActivity<ActivityAuthDrivingBinding>() {
}
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<ActivityAuthDrivingBinding>() {
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<OcrPersonBean>() {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<OcrPersonBean>() {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
super.onSuccess(t)
// t.data.data.back?.data.let {
// driverInfoBean.licensePhotoBackUrl = oldPath
// }
}
})
)
}
}
ImageLoader.getInstance().loadRoundImage(mContext, data.realPath, 12, binding.ivBack)
}
}
}

View File

@ -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<ActivityAuthPersonBinding>() {
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 {
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<String>(){
override fun onSuccess(t: CommonResponseBean<String>) {
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,27 +76,128 @@ class AuthPersonActivity : BaseActivity<ActivityAuthPersonBinding>() {
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<OcrPersonBean>(this@AuthPersonActivity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<OcrPersonBean>(this@AuthPersonActivity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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() {
}

View File

@ -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<ActivityAuthQualificationBinding>() {
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<ActivityAuthQualificationBinding>
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<String>() {
override fun onSuccess(t: CommonResponseBean<String>) {
super.onSuccess(t)
ActivityUtils.startActivity(mContext, AuthBankCardActivity::class.java)
}
}))
}
}
}

View File

@ -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<ActivityAuthRoadBinding>() {
var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance()
var upQuaInfo = UpQualiInfoBean()
override fun initView(savedInstanceState: Bundle?) {
setStatusBarColor(R.color.white)
setTitleBar("实名认证",true)

View File

@ -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<ActivityAuthTeamBinding>(), 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<ActivityAuthTeamBinding>(), 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<ActivityAuthTeamBinding>(), 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<ActivityAuthTeamBinding>(), 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<String>(this) {
override fun onSuccess(t: CommonResponseBean<String>) {
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<OcrPersonBean>(this@AuthTeamActivity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<OcrPersonBean>(this@AuthTeamActivity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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)
}
}
}
})
)
}
}
}
}
}

View File

@ -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>(::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<OcrPersonBean>(activity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<OcrPersonBean>(activity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<OcrPersonBean>(activity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
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<OcrPersonBean>(activity) {
override fun onSuccess(t: CommonResponseBean<OcrPersonBean>) {
super.onSuccess(t)
t.data?.let { listener.onSuccResult(PicPath(result[0].realPath, oldPath), it) }
}
})
)
}
}
}
}
}

View File

@ -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)

View File

@ -96,6 +96,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -124,6 +125,7 @@
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvBankName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"

View File

@ -57,7 +57,7 @@
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_22"
android:background="@drawable/driver_front"/>
android:background="@drawable/driver_front" />
<ImageView
android:id="@+id/ivBack"
@ -67,7 +67,7 @@
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_22"
android:background="@drawable/driver_back"/>
android:background="@drawable/driver_back" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
@ -113,15 +113,18 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="王海生"
android:textColor="@color/black"
android:background="@drawable/shape_phone_bg"
android:gravity="right|center_vertical"
android:paddingLeft="@dimen/dp_10"
android:textSize="@dimen/sp_15"></EditText>
android:paddingRight="@dimen/dp_6"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="王海生"></EditText>
</LinearLayout>
<LinearLayout
@ -131,24 +134,27 @@
android:orientation="horizontal">
<TextView
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:layout_width="@dimen/dp_70"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="驾驶证号"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="412826196205220056"
android:background="@drawable/shape_phone_bg"
android:gravity="right|center_vertical"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_6"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></EditText>
android:textSize="@dimen/sp_15"
tools:text="412826196205220056"></EditText>
</LinearLayout>
<LinearLayout
@ -166,18 +172,19 @@
<TextView
android:id="@+id/tvCarType"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="B1"
android:textColor="@color/black"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
android:paddingLeft="@dimen/dp_10"
android:textSize="@dimen/sp_15"></TextView>
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="B1"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -193,19 +200,20 @@
<TextView
android:id="@+id/tvStart"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="2020-05-23"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
android:hint="请选择起始日期"
android:textColor="@color/black"
android:paddingLeft="@dimen/dp_10"
android:textSize="@dimen/sp_15"></TextView>
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="2020-05-23"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -221,18 +229,18 @@
<TextView
android:id="@+id/tvEnd"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="2020-05-23"
android:drawableRight="@drawable/right_gray"
android:drawablePadding="@dimen/dp_6"
android:gravity="right|center_vertical"
android:hint="请选择结束日期"
android:textColor="@color/black"
android:paddingLeft="@dimen/dp_10"
android:textSize="@dimen/sp_15"></TextView>
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="2020-05-23"></TextView>
</LinearLayout>
</RelativeLayout>
@ -240,11 +248,10 @@
<View
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
></View>
android:background="@color/white"></View>
<LinearLayout
android:layout_width="match_parent"

View File

@ -23,6 +23,16 @@
android:textColor="#FF5F20"
android:textSize="@dimen/sp_14"></TextView>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:id="@+id/cdPerson"
@ -102,13 +112,12 @@
android:layout_width="@dimen/dp_155"
android:layout_height="@dimen/dp_97"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginLeft="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_22"
android:layout_centerHorizontal="true"
android:background="@drawable/car_photo"></ImageView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
@ -122,12 +131,13 @@
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/dp_8">
<RelativeLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_14"
android:orientation="vertical"
android:paddingBottom="@dimen/dp_18">
<TextView
@ -142,35 +152,37 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_54"
android:layout_marginTop="@dimen/dp_20"
android:orientation="horizontal">
<TextView
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:layout_width="@dimen/dp_70"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="车牌号"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:gravity="right|center_vertical"
android:id="@+id/etCarNum"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
tools:text="王海生"
android:textColor="@color/black"
android:background="@drawable/shape_phone_bg"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入车牌号"
android:paddingRight="@dimen/dp_10"
android:textSize="@dimen/sp_15"></EditText>
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="王海生"></EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_104"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
@ -183,6 +195,7 @@
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvCarType"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -196,18 +209,130 @@
android:textSize="@dimen/sp_15"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="@dimen/dp_100"
android:text="车辆所有人"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etOwner"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入车辆所有人"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="王海生"></EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="@dimen/dp_100"
android:text="使用性质"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etUseNature"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入车辆使用性质"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="王海生"></EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="@dimen/dp_120"
android:text="整备质量kg"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etCurbWeight"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入整备质量"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="王海生"></EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="@dimen/dp_150"
android:text="核定载重质量kg"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etPermittedWeight"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入核定载质量"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="王海生"></EditText>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<View
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
></View>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:layout_width="match_parent"

View File

@ -115,6 +115,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -144,6 +145,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"

View File

@ -96,6 +96,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"

View File

@ -52,9 +52,9 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_40"
android:layout_weight="1"
android:checked="true"
android:background="@drawable/select_auth_team"
android:button="@null"
android:checked="true"
android:gravity="center"
android:text="运输公司"
android:textColor="@drawable/select_auth_team_text"
@ -66,11 +66,11 @@
android:layout_height="@dimen/dp_40"
android:layout_marginLeft="@dimen/dp_12"
android:layout_weight="1"
android:checked="false"
android:background="@drawable/select_auth_team"
android:text="个人车队"
android:gravity="center"
android:button="@null"
android:checked="false"
android:gravity="center"
android:text="个人车队"
android:textColor="@drawable/select_auth_team_text"
android:textSize="@dimen/sp_15" />
</RadioGroup>
@ -224,11 +224,106 @@
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_marginTop="@dimen/dp_14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/dp_8">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/dp_16">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_16"
android:text="上传公司账户"
android:textColor="@color/black"
android:textSize="@dimen/sp_16"></TextView>
<ImageView
android:id="@+id/ivComBank"
android:layout_width="@dimen/dp_155"
android:layout_height="@dimen/dp_97"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20"
android:background="@drawable/bank_card"></ImageView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_26"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_90"
android:layout_height="wrap_content"
android:text="银行卡号"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etComBankId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_8"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入银行卡号"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_70"
android:layout_height="wrap_content"
android:text="开户银行"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etComBankName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_8"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请输入开户银行"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></EditText>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_14"
android:layout_marginRight="@dimen/dp_15"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/dp_8">
@ -255,19 +350,19 @@
android:layout_marginTop="@dimen/dp_20">
<ImageView
android:id="@+id/ivPerFront"
android:id="@+id/ivComFront"
android:layout_width="@dimen/dp_155"
android:layout_height="@dimen/dp_97"
android:layout_marginLeft="@dimen/dp_8"
android:background="@drawable/person_front"/>
android:background="@drawable/person_front" />
<ImageView
android:id="@+id/ivPerBack"
android:id="@+id/ivComBack"
android:layout_width="@dimen/dp_155"
android:layout_height="@dimen/dp_97"
android:layout_alignParentRight="true"
android:layout_marginRight="@dimen/dp_8"
android:background="@drawable/person_back"/>
android:background="@drawable/person_back" />
</RelativeLayout>
@ -288,6 +383,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -318,6 +414,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -331,6 +428,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/llStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_14"
@ -338,28 +436,63 @@
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_70"
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="有效期"
android:text="有效开始日期"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvStart"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/shape_phone_bg"
android:gravity="right|center_vertical"
android:hint="请选择开始日期"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="1990-05-24 至 2020-05-23"/>
tools:text="1990-05-24"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/llStart"
android:layout_marginLeft="@dimen/dp_14"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="有效结束日期"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvEnd"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/shape_phone_bg"
android:gravity="right|center_vertical"
android:hint="请选择结束日期"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="1990-05-24"></TextView>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
@ -421,13 +554,14 @@
android:layout_marginBottom="@dimen/dp_22"
android:background="@drawable/person_back"></ImageView>
<RelativeLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/ivFront"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginRight="@dimen/dp_8"
android:orientation="vertical"
android:paddingBottom="@dimen/dp_18">
<LinearLayout
@ -445,6 +579,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etPerName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -461,7 +596,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
@ -474,6 +609,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etPerId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -490,34 +626,66 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_100"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_70"
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="有效期"
android:text="有效开始日期"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvPerDate"
android:id="@+id/tvPerStart"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/shape_phone_bg"
android:gravity="right|center_vertical"
android:hint="请选择开始日期"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="1990-05-24 至 2020-05-23"></TextView>
tools:text="1990-05-24"></TextView>
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/start"
android:drawablePadding="@dimen/dp_2"
android:text="有效结束日期"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<TextView
android:id="@+id/tvPerEnd"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/shape_phone_bg"
android:gravity="right|center_vertical"
android:hint="请选择结束日期"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"
tools:text="1990-05-24"></TextView>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</androidx.cardview.widget.CardView>
@ -550,11 +718,11 @@
<ImageView
android:id="@+id/ivBank"
android:layout_width="@dimen/dp_155"
android:layout_height="@dimen/dp_97"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20"
android:id="@+id/ivBank"
android:background="@drawable/bank_card"></ImageView>
<LinearLayout
@ -572,6 +740,7 @@
android:textSize="@dimen/sp_15"></TextView>
<EditText
android:id="@+id/etPerBankId"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
@ -599,16 +768,18 @@
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
<TextView
<EditText
android:id="@+id/tvPerBankName"
android:layout_width="0dp"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_8"
android:layout_weight="1"
android:background="@null"
android:gravity="right|center_vertical"
android:hint="请选择开户行"
android:textColor="@color/black"
android:textSize="@dimen/sp_15"></TextView>
android:textSize="@dimen/sp_15"></EditText>
</LinearLayout>
</LinearLayout>

View File

@ -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"></EditText>
@ -105,7 +106,6 @@
android:padding="@dimen/dp_7">
<CheckBox
android:id="@+id/cb"
android:layout_width="@dimen/dp_18"

View File

@ -111,6 +111,7 @@ dependencies {
// exclude(module: 'alicloud-android-utdid')
// exclude(module: 'alicloud-android-utils')
// }
api 'com.aliyun.dpa:oss-android-sdk:2.9.5'
// api 'com.aliyun.dpa:oss-android-sdk:2.9.5'
api 'com.aliyun.dpa:oss-android-sdk:2.9.13'
}

View File

@ -8,8 +8,6 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.ColorRes;
@ -24,9 +22,10 @@ import androidx.viewbinding.ViewBinding;
import com.dahe.mylibrary.R;
import com.dahe.mylibrary.callback.RefreshCallBack;
import com.dahe.mylibrary.utils.BarUtils;
import com.dahe.mylibrary.utils.ConvertUtils;
import com.dahe.mylibrary.utils.LoadingUtils;
import com.dahe.mylibrary.utils.StatusBar;
import com.dahe.mylibrary.utils.ToastUtils;
import com.lxj.xpopup.impl.LoadingPopupView;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.constant.RefreshState;
@ -189,7 +188,7 @@ public abstract class BaseActivity<VB extends ViewBinding> 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<VB extends ViewBinding> 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<VB extends ViewBinding> extends AppCompatActi
super.onDestroy();
//释放持有防止泄露
binding = null;
LoadingUtils.Companion.getInstance().dissLoading();
}
@ -334,5 +334,16 @@ public abstract class BaseActivity<VB extends ViewBinding> 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();
}
}

View File

@ -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;

View File

@ -50,7 +50,7 @@ class PopNorBottomPic(
// .setCameraInterceptListener(getCustomCameraEvent())//自定义相机
// .setRecordAudioInterceptListener(MainActivity.MeOnRecordAudioInterceptListener())//录音回调事件
// .setCropEngine(ImageFileCropEngine())//裁剪
.setCompressEngine(ImageFileCompressEngine())//压缩
// .setCompressEngine(ImageFileCompressEngine())//压缩
// .setSelectLimitTipsListener(MainActivity.MeOnSelectLimitTipsListener())//拦截自定义提示
// .setAddBitmapWatermarkListener(getAddBitmapWatermarkListener())//给图片添加水印

View File

@ -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<Activity> activities = CommonBaseLibrary.activityList;
for (Activity activity : activities) {
if (!activity.getClass().equals(clz)) {
finishActivity(activity);
}
}
startActivity(context,clz);
}
/**
* 结束所有activity
*/

View File

@ -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
}

View File

@ -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, AppCompatActivity>(::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
}

View File

@ -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