From 10f9be36c5e8efe4e369e6ca0c676f301b62df2e Mon Sep 17 00:00:00 2001 From: lijia Date: Wed, 24 Apr 2024 15:33:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B8=E6=9C=BA=E8=BD=A6=E8=BE=86=E6=8F=90?= =?UTF-8?q?=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dahe/gldriver/bean/UserBean.kt | 11 +++ .../main/java/com/dahe/gldriver/net/Api.kt | 7 ++ .../account/authperson/AuthDriverActivity.kt | 4 +- .../com/dahe/gldriver/ui/home/HomeFragment.kt | 69 ++++++++++++---- .../com/dahe/gldriver/ui/mine/MineFragment.kt | 72 +++++++++++++++++ .../ui/mine/activity/PersonInfoActivity.kt | 21 +++++ .../waybill/activity/WaybillUpPicActivity.kt | 5 +- .../ui/waybill/fragment/WaitLoadFragment.kt | 2 +- .../ui/waybill/fragment/WaitUnLoadFragment.kt | 2 +- .../dahe/gldriver/utils/GDLocationUtils.kt | 71 ++++++++++++---- .../main/res/layout/activity_person_info.xml | 81 ++++++++++++++++--- app/src/main/res/layout/fragment_home.xml | 2 + app/src/main/res/layout/fragment_mine.xml | 41 +++++++++- 13 files changed, 338 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt index b29d43a..2fe0606 100644 --- a/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt +++ b/app/src/main/java/com/dahe/gldriver/bean/UserBean.kt @@ -100,3 +100,14 @@ data class WaterInfo( val withdrawalsStatus: String ) +data class CardInfo( + val configValue: String, + val idcardEffectiveEnd: String, + val idcardEffectiveOverdue: String, + val idcardIsEndless: String, + val licenseEffectiveEnd: String, + val licenseEffectiveOverdue: String, + val qualificationCertificateEffectiveEnd: String, + val qualificationCertificateEffectiveOverdue: String +) + diff --git a/app/src/main/java/com/dahe/gldriver/net/Api.kt b/app/src/main/java/com/dahe/gldriver/net/Api.kt index 9aebb5f..a7c5c39 100644 --- a/app/src/main/java/com/dahe/gldriver/net/Api.kt +++ b/app/src/main/java/com/dahe/gldriver/net/Api.kt @@ -215,6 +215,13 @@ interface Api { @GET(BASE_URL + "driver/driver/getDriverDocIntegrity") fun getDriverDocIntegrity(): Observable> + /** + *查询司机证件过期情况 + * @return Observable> + */ + @GET(BASE_URL + "driver/driver/getDriverExpiredDocuments") + fun getDriverExpiredDocuments(): Observable> + /** * 司机认证成为车队长 diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt index f0109cb..06bcf6a 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthDriverActivity.kt @@ -30,10 +30,11 @@ import io.reactivex.rxjava3.schedulers.Schedulers */ class AuthDriverActivity : BaseActivity() { - var ossServiceUtil: OssServiceUtil = OssServiceUtil.getInstance() var driverInfoBean: UpDriverInfoBean = UpDriverInfoBean() + var backLicName = "" + override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("实名认证"){ @@ -172,6 +173,7 @@ class AuthDriverActivity : BaseActivity() { .loadRoundImage(mContext, picPath.locPic, 12, binding.ivBack) driverInfoBean.licensePhotoBackUrl = picPath.picPath it?.run { + backLicName = it.name driverInfoBean.licenseRecordNumber = recordNumber } } diff --git a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt index e40ef6d..8631895 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt @@ -27,6 +27,7 @@ import com.dahe.gldriver.ui.waybill.activity.WaybillDetailActivity import com.dahe.gldriver.utils.OrderUtils import com.dahe.gldriver.utils.SPUtils import com.dahe.gldriver.utils.UserUtils +import com.dahe.glex.bean.CardInfo import com.dahe.glex.bean.OrderBean import com.dahe.glex.bean.UserBean import com.dahe.glex.bean.UserDetail @@ -142,19 +143,19 @@ class HomeFragment : BaseFragment(), RefreshCallBack { showToast("敬请期待") } - llNotic.setOnClickListener { - val userInfo = SPUtils.instance.getUserInfo(mContext) - if (userInfo?.isCarCaptain == "1") {//是否是车队长(0=否,1=是,9=未选择) - ActivityUtils.startActivity( - mContext, - EditCaTeamActivity::class.java, - Bundle().apply { - putString(AppConfig.ID, userInfo.captainId) - }) - } else { - ActivityUtils.startActivity(mContext, PersonInfoActivity::class.java) - } - } +// llNotic.setOnClickListener { +// val userInfo = SPUtils.instance.getUserInfo(mContext) +// if (userInfo?.isCarCaptain == "1") {//是否是车队长(0=否,1=是,9=未选择) +// ActivityUtils.startActivity( +// mContext, +// EditCaTeamActivity::class.java, +// Bundle().apply { +// putString(AppConfig.ID, userInfo.captainId) +// }) +// } else { +// ActivityUtils.startActivity(mContext, PersonInfoActivity::class.java) +// } +// } } initData() } @@ -209,10 +210,46 @@ class HomeFragment : BaseFragment(), RefreshCallBack { if (t.data.idcardNo.isNullOrEmpty() || t.data.licenseNo.isNullOrEmpty() || (if (t.data.licenseType.contains("C")) false else t.data.qualificationCertificateEffectiveEnd.isNullOrEmpty()) || t.data.driverBankcardNumber.isNullOrEmpty() || t.data.isRealName == "0" - ) + ) { binding.llNotic.visibility = View.VISIBLE - else - binding.llNotic.visibility = View.GONE + binding.run { + llNotic.setOnClickListener { + ActivityUtils.startActivity( + mContext, + PersonInfoActivity::class.java + ) + } + } + } else { + DataManager.getInstance().getDriverExpiredDocuments() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + if (t.data.licenseEffectiveOverdue == "1" || t.data.qualificationCertificateEffectiveOverdue == "1" || t.data.idcardEffectiveOverdue == "1") { + binding.llNotic.visibility = View.VISIBLE + binding.run { + llNotic.visibility = View.VISIBLE + btnNotic.text = "去更换" + tvNotic.text = "司机证件即将过期,请及时更换" + llNotic.setOnClickListener { + ActivityUtils.startActivity( + mContext, + PersonInfoActivity::class.java + ) + } + } + } else { + binding.llNotic.visibility = View.GONE + } + } + }) + ) + } + } })) } diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt index c326f53..ff66af0 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt @@ -31,7 +31,9 @@ import com.dahe.gldriver.utils.AppVersionUtils import com.dahe.gldriver.utils.OcrUtils import com.dahe.gldriver.utils.SPUtils import com.dahe.gldriver.utils.UserUtils +import com.dahe.glex.bean.CardInfo import com.dahe.glex.bean.UserBean +import com.dahe.glex.bean.UserDetail import com.dahe.glex.bean.WalletInfo import com.dahe.mylibrary.base.BaseFragment import com.dahe.mylibrary.callback.RefreshCallBack @@ -65,6 +67,7 @@ class MineFragment : BaseFragment(), View.OnClickListener, override fun onFragmentVisibleChange(isVisible: Boolean) { if (isVisible) { + getUserData() } else { } } @@ -132,6 +135,20 @@ class MineFragment : BaseFragment(), View.OnClickListener, } } + +// llNotic.setOnClickListener { +// val userInfo = SPUtils.instance.getUserInfo(mContext) +// if (userInfo?.isCarCaptain == "1") {//是否是车队长(0=否,1=是,9=未选择) +// ActivityUtils.startActivity( +// mContext, +// EditCaTeamActivity::class.java, +// Bundle().apply { +// putString(AppConfig.ID, userInfo.captainId) +// }) +// } else { +// ActivityUtils.startActivity(mContext, PersonInfoActivity::class.java) +// } +// } } } @@ -254,6 +271,61 @@ class MineFragment : BaseFragment(), View.OnClickListener, } } })) + + val userInfo = SPUtils.instance.getUserInfo(mContext) + if (userInfo?.isCarCaptain == "1") {//是否是车队长(0=否,1=是,9=未选择) + binding.llNotic.visibility = View.GONE + } else { + DataManager.getInstance().getDriverDocIntegrity() + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + if (t == null || t.data == null) + return + if (t.data.idcardNo.isNullOrEmpty() || t.data.licenseNo.isNullOrEmpty() || + (if (t.data.licenseType.contains("C")) false else t.data.qualificationCertificateEffectiveEnd.isNullOrEmpty()) || t.data.driverBankcardNumber.isNullOrEmpty() || + t.data.isRealName == "0" + ) { + binding.llNotic.visibility = View.VISIBLE + binding.llNotic.setOnClickListener { + ActivityUtils.startActivity( + mContext, + PersonInfoActivity::class.java + ) + } + } else { + DataManager.getInstance().getDriverExpiredDocuments() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + if (t.data.licenseEffectiveOverdue == "1" || t.data.qualificationCertificateEffectiveOverdue == "1" || t.data.idcardEffectiveOverdue == "1") { + binding.llNotic.visibility = View.VISIBLE + binding.run { + llNotic.visibility = View.VISIBLE + btnNotic.text = "去更换" + tvNotic.text = "司机证件即将过期,请及时更换" + llNotic.setOnClickListener { + ActivityUtils.startActivity( + mContext, + PersonInfoActivity::class.java + ) + } + } + } else { + binding.llNotic.visibility = View.GONE + } + } + }) + ) + } + } + })) + } } private fun refreshView() { diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/PersonInfoActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/PersonInfoActivity.kt index a7abe6d..3dbfa58 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/PersonInfoActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/PersonInfoActivity.kt @@ -16,6 +16,7 @@ import com.dahe.gldriver.ui.account.authperson.EditPersonActivity import com.dahe.gldriver.ui.account.authperson.EditQualificationActivity import com.dahe.gldriver.utils.OrderUtils import com.dahe.gldriver.utils.SPUtils +import com.dahe.glex.bean.CardInfo import com.dahe.glex.bean.UserDetail import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.net.CommonResponseBean @@ -78,6 +79,26 @@ class PersonInfoActivity : BaseActivity(), View.OnCli initViewByData(t.data) } })) + + DataManager.getInstance().getDriverExpiredDocuments() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + BaseObserver(mContext, + object : RxHttpCallBack() { + override fun onSuccess(t: CommonResponseBean) { + super.onSuccess(t) + binding.run { + tvNotic1.visibility = + if (t.data.idcardEffectiveOverdue == "1") View.VISIBLE else View.GONE//身份证是否过期 + tvNotic2.visibility = + if (t.data.licenseEffectiveOverdue == "1") View.VISIBLE else View.GONE//驾驶证是否过期 + tvNotic3.visibility = + if (t.data.qualificationCertificateEffectiveOverdue == "1") View.VISIBLE else View.GONE//从业资格证是否过期 + } + } + }) + ) } override fun onClick(view: View?) { diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt index aa27371..fea0ef7 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt @@ -11,6 +11,7 @@ import com.alct.mdp.model.Goods import com.alct.mdp.model.Image import com.alct.mdp.model.Location import com.amap.api.maps.model.LatLng +import com.baidu.mapapi.utils.CoordinateConverter import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.bean.LUInputBean import com.dahe.gldriver.bean.OrderDetailBean @@ -541,8 +542,8 @@ class WaybillUpPicActivity : BaseActivity() { it.getLongitude()//经 度 it.getLatitude()//纬 度 latLng = LatLng(it.latitude, it.longitude) - bdLatLng = GDLocationUtils.instance.convertGPSToBaidu(latLng) binding.tvLoca.text = it.address + bdLatLng = GDLocationUtils.instance.gaoDeToBaidu(latLng) } else { showToast("定位失败,请检查定位权限是否开启") } @@ -550,6 +551,8 @@ class WaybillUpPicActivity : BaseActivity() { } } + + private fun selGoodPic(goodType: Int?, myAdapter: GridImageAdapter) { PopsUtils.getInstance().showSelPic(mContext, false, myAdapter) { OssServiceUtil.getInstance().run { diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt index 232c589..27aa203 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitLoadFragment.kt @@ -150,7 +150,7 @@ class WaitLoadFragment : BaseFragment(), RefreshCall } @Subscribe fun eventStatu(event: RefreshEvent) { - if (event.statu == 1) { + if (event.statu == 1||event.statu == 2) { initData() } } diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt index 01499fc..ff7cc78 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/fragment/WaitUnLoadFragment.kt @@ -145,7 +145,7 @@ class WaitUnLoadFragment : BaseFragment(), RefreshCa @Subscribe fun eventStatu(event: RefreshEvent) { - if (event.statu == 2) { + if (event.statu == 1||event.statu == 2) { initData() } } diff --git a/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt b/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt index 50d46bc..718a363 100644 --- a/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt +++ b/app/src/main/java/com/dahe/gldriver/utils/GDLocationUtils.kt @@ -11,22 +11,26 @@ import android.os.Build import com.amap.api.location.AMapLocationClient import com.amap.api.location.AMapLocationClientOption import com.amap.api.location.AMapLocationListener +import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.LatLng -import com.baidu.mapapi.utils.CoordinateConverter -import com.dahe.gldriver.R import com.dahe.gldriver.service.MyNotification +import java.lang.Exception +import kotlin.math.atan2 +import kotlin.math.cos +import kotlin.math.sin +import kotlin.math.sqrt -class GDLocationUtils private constructor(){ +class GDLocationUtils private constructor() { //声明AMapLocationClient类对象 - var mLocationClient : AMapLocationClient?= null; + var mLocationClient: AMapLocationClient? = null; //声明AMapLocationClientOption对象 var mLocationOption: AMapLocationClientOption? = null - companion object{ + companion object { val instance = Holder.holder } @@ -34,7 +38,7 @@ class GDLocationUtils private constructor(){ val holder = GDLocationUtils() } - fun getLocation(ctx : Context,mLocationListener : AMapLocationListener){ + fun getLocation(ctx: Context, mLocationListener: AMapLocationListener) { //初始化定位 mLocationClient = AMapLocationClient(ctx) //设置定位回调监听 @@ -66,7 +70,7 @@ class GDLocationUtils private constructor(){ // mLocationClient?.enableBackgroundLocation(1,buildNotification(ctx)) //给定位客户端对象设置定位参数 mLocationClient?.setLocationOption(mLocationOption); - if(null != mLocationClient){ + if (null != mLocationClient) { mLocationClient?.setLocationOption(mLocationOption); //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 mLocationClient?.stopLocation() @@ -80,7 +84,7 @@ class GDLocationUtils private constructor(){ * @param ctx Context * @param mLocationListener AMapLocationListener */ - fun getLocation2(ctx : Context,mLocationListener : AMapLocationListener){ + fun getLocation2(ctx: Context, mLocationListener: AMapLocationListener) { //初始化定位 mLocationClient = AMapLocationClient(ctx) //设置定位回调监听 @@ -109,10 +113,13 @@ class GDLocationUtils private constructor(){ //设置是否允许模拟位置,默认为true,允许模拟位置 mLocationOption?.setMockEnable(true) //启动后台定位,第一个参数为通知栏ID,建议整个APP使用一个 - mLocationClient?.enableBackgroundLocation(1,MyNotification.getInstance().getNotification(ctx)) + mLocationClient?.enableBackgroundLocation( + 1, + MyNotification.getInstance().getNotification(ctx) + ) //给定位客户端对象设置定位参数 mLocationClient?.setLocationOption(mLocationOption); - if(null != mLocationClient){ + if (null != mLocationClient) { mLocationClient?.setLocationOption(mLocationOption); //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 mLocationClient?.stopLocation() @@ -120,16 +127,46 @@ class GDLocationUtils private constructor(){ } } - fun convertGPSToBaidu(srLatLng: LatLng): LatLng { - val converter = CoordinateConverter() - converter.from(CoordinateConverter.CoordType.COMMON) - converter.coord(com.baidu.mapapi.model.LatLng(srLatLng.latitude,srLatLng.longitude)) - return LatLng(converter.convert().latitude,converter.convert().longitude) + fun convertGPSToBaidu(context: Context, srLatLng: LatLng): LatLng { + val converter = CoordinateConverter(context) + converter.from(CoordinateConverter.CoordType.GPS) + converter.coord(LatLng(srLatLng.latitude, srLatLng.longitude)) + val convert = converter.convert() + return LatLng(convert.latitude, convert.longitude) + } + + /** + * 高德转百度(火星坐标gcj02ll–>百度坐标bd09ll) + * @param srLatLng LatLng + * @return LatLng + */ + fun gaoDeToBaidu(srLatLng: LatLng): LatLng { + var PI = 3.14159265358979324 * 3000.0 / 180.0; + var x = srLatLng.latitude + var y = srLatLng.longitude + var z = sqrt(x * x + y * y) + 0.00002 * sin(y * PI); + var theta = atan2(y, x) + 0.000003 * cos(x * PI); + return LatLng(z * cos(theta) + 0.0065, z * sin(theta) + 0.006); } - fun stopLocation(){ - if(null != mLocationClient){ + /** + * 百度转高德(百度坐标bd09ll–>火星坐标gcj02ll) + * @param srLatLng LatLng + * @return LatLng + */ + fun bdToGaoDe(srLatLng: LatLng): LatLng { + var PI = 3.14159265358979324 * 3000.0 / 180.0; + var x = srLatLng.longitude - 0.0065 + var y = srLatLng.latitude - 0.006 + var z = sqrt(x * x + y * y) - 0.00002 * sin(y * PI); + var theta = atan2(y, x) - 0.000003 * cos(x * PI); + return LatLng(z * cos(theta) + 0.0065, z * sin(theta) + 0.006); + } + + + fun stopLocation() { + if (null != mLocationClient) { mLocationClient?.disableBackgroundLocation(true) mLocationClient?.stopLocation() } diff --git a/app/src/main/res/layout/activity_person_info.xml b/app/src/main/res/layout/activity_person_info.xml index 7f35442..c7d5b1c 100644 --- a/app/src/main/res/layout/activity_person_info.xml +++ b/app/src/main/res/layout/activity_person_info.xml @@ -43,8 +43,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" - android:paddingBottom="@dimen/dp_20" - android:orientation="vertical"> + android:orientation="vertical" + android:paddingBottom="@dimen/dp_20"> + + + + @@ -394,6 +434,25 @@ android:text="从业资格证" android:textColor="@color/black" android:textSize="@dimen/sp_16" /> + + android:orientation="vertical" + android:visibility="gone"> + android:textSize="@dimen/sp_12" + tools:text="412************062" />