Commit 0a5baef9 authored by p x's avatar p x
Browse files

登录

parent 09291f32
...@@ -39,6 +39,7 @@ android { ...@@ -39,6 +39,7 @@ android {
} }
buildFeatures { buildFeatures {
dataBinding = true dataBinding = true
viewBinding = true
} }
lint { lint {
abortOnError = false abortOnError = false
...@@ -54,10 +55,15 @@ dependencies { ...@@ -54,10 +55,15 @@ dependencies {
implementation(libs.material) implementation(libs.material)
implementation(libs.androidx.activity) implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout) implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx)
testImplementation(libs.junit) testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.espresso.core)
//sm4 加密
implementation("org.bouncycastle:bcprov-jdk15on:1.70")
implementation("com.google.protobuf:protobuf-java:4.31.1") implementation("com.google.protobuf:protobuf-java:4.31.1")
// implementation("com.google.protobuf:protobuf-javalite:4.31.1") // implementation("com.google.protobuf:protobuf-javalite:4.31.1")
// implementation("com.google.protobuf:protoc:3.0.0") // implementation("com.google.protobuf:protoc:3.0.0")
......
...@@ -19,3 +19,6 @@ ...@@ -19,3 +19,6 @@
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
-keep class org.bouncycastle.** { *; }
-dontwarn org.bouncycastle.**
...@@ -2,6 +2,7 @@ package com.sd.cavphmi ...@@ -2,6 +2,7 @@ package com.sd.cavphmi
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.sd.cavphmi.utils.SM4CryptoHelper
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
...@@ -21,4 +22,12 @@ class ExampleInstrumentedTest { ...@@ -21,4 +22,12 @@ class ExampleInstrumentedTest {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.sd.cavphmi", appContext.packageName) assertEquals("com.sd.cavphmi", appContext.packageName)
} }
@Test
fun loginCpy(){
var pwd="vUO2dStZDhbd*88FfT84"
var key="Cusc@itmp-sm4key".toByteArray()
var pp=SM4CryptoHelper.encryptECB(key,pwd.toByteArray())
println("------------------pp = ${pp}")
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<!-- 打开关闭sdcard的权限 --> <!-- 打开关闭sdcard的权限 -->
<uses-permission <uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" />
<uses-permission <uses-permission
android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" /> <!-- 允许程序打开网络套接字 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 允许程序访问网络状态 -->
<!-- 允许程序打开网络套接字 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许用户改变WiFi连接状态 -->
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 程序访问粗略位置 -->
<!-- 允许程序访问网络状态 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 允许用户访问精确位置 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Android Q 允许后台运行定位 -->
<!-- 允许用户改变WiFi连接状态 --> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <!-- 允许程序读取手机状态 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 打电话的权限 -->
<!-- 程序访问粗略位置 --> <!-- <uses-permission android:name="android.permission.CALL_PHONE" /> -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 允许用户访问精确位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Android Q 允许后台运行定位 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!-- 允许程序读取手机状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 打电话的权限 -->
<!-- <uses-permission android:name="android.permission.CALL_PHONE" />-->
<!-- 从SDCard读出数据权限 --> <!-- 从SDCard读出数据权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 允许程序写入外部存储设备 -->
<!-- 允许程序写入外部存储设备 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许程序读取所有者数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_OWNER_DATA" /> <!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<!-- 允许程序读取所有者数据 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 访问网络的变化, 需要某些信息用于网络定位 -->
<uses-permission android:name="android.permission.READ_OWNER_DATA" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 8.0 安装未知程序权限 -->
<!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 访问网络的变化, 需要某些信息用于网络定位 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<!-- 8.0 安装未知程序权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application <application
...@@ -46,7 +31,6 @@ ...@@ -46,7 +31,6 @@
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.SuZhouAvp" android:theme="@style/Theme.SuZhouAvp"
tools:targetApi="31"> tools:targetApi="31">
...@@ -57,28 +41,40 @@ ...@@ -57,28 +41,40 @@
<meta-data <meta-data
android:name="com.minedata.minenavi.apikey" android:name="com.minedata.minenavi.apikey"
android:value="57ac7a0d56494912a0c28e651fa4a40a" /> android:value="57ac7a0d56494912a0c28e651fa4a40a" /> <!-- android:screenOrientation="userLandscape" -->
<!-- android:screenOrientation="userLandscape"-->
<activity <activity
android:name=".ui.BootActivity" android:name=".ui.LoginActivity"
android:exported="true" android:exported="true"
android:screenOrientation="landscape" android:theme="@style/Theme.SuZhouAvp"
android:theme="@style/SplashTheme"> android:screenOrientation="landscape">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".ui.MainActivity" android:name=".ui.MainActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="landscape"> android:screenOrientation="landscape"/>
</activity> <!-- <activity-->
<!-- android:name=".ui.BootActivity"-->
<!-- android:exported="true"-->
<!-- android:screenOrientation="landscape"-->
<!-- android:theme="@style/SplashTheme">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
</application> </application>
......
/*** 感知延时**/
fun subPreDelay(): LiveData<PreDelay> {
try {
if (preDelayWSClient == null) {
preDelayWSClient = PreDelayWSClient(URI(MyContants.WS_PRE_DELAY))
preDelayWSClient?.connect()
preDelayWSClient?.onDataCb = object : PreDelayWSClient.OnDataCb {
override fun onMsg(str: String) {
viewModelScope.launch {
FileIoUtils.writeToFile(str, "pre_delay.txt")
var bean = gson.fromJson(str, PreDelay::class.java)
preDelay.postValue(bean)
}
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
return preDelay
}
\ No newline at end of file
package com.sd.cavphmi.bean
/**全局路径发生切换***/
data class AllLinePlaningBean(
val objectData: List<LinePlaning>,
val wsTime: Long
)
data class LinePlaning(var line:List<List<Double>>)
\ No newline at end of file
package com.sd.cavphmi.bean package com.sd.cavphmi.bean
/***网联车辆位姿 /***网联车辆位姿
*{"version":"2.0.0","data_id":"default","data_type":"OBU","data_list":[{"vid":"245","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5013455,39.8110367","direction":330.2354,"speed":0.0,"timestamp":1754464768658,"vinfo":{"door":1,"light":1,"wiper":0}},{"vid":"261","vmodel":"01010102001","vtype":"双层客车1","coord_type":"Geo","coord":"117.345278,39.0059533","direction":346.8844,"speed":47.0,"timestamp":1754464768625,"vinfo":{"door":0,"light":0,"wiper":1,"poleId":"1200003938"}},{"vid":"263","vmodel":"01010400006","vtype":"中型客车","coord_type":"Geo","coord":"117.3505606,39.0030274","direction":356.9585,"speed":58.0,"timestamp":1754464768626,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"265","vmodel":"01010400001","vtype":"清扫","coord_type":"Geo","coord":"117.346545,39.001303","direction":0.27499999999997726,"speed":0.0,"timestamp":1754464768627,"vinfo":{"door":0,"light":0,"wiper":1,"poleId":"1200001928"}},{"vid":"267","vmodel":"01010400003","vtype":"售卖","coord_type":"Geo","coord":"117.3463217,38.9951148","direction":94.40610000000004,"speed":0.0,"timestamp":1754464768628,"vinfo":{"door":0,"light":36864,"wiper":1,"poleId":"1200003838"}},{"vid":"269","vmodel":"01010400004","vtype":"出租","coord_type":"Geo","coord":"117.3465439,38.9954946","direction":274.5396,"speed":53.0,"timestamp":1754464768627,"vinfo":{"door":0,"light":0,"wiper":1,"poleId":"1200003838"}},{"vid":"335","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5014316,39.8110748","direction":330.2354,"speed":0.0,"timestamp":1754464768655,"vinfo":{"door":1,"light":1,"wiper":0}},{"vid":"363","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5030884,39.8089693","direction":238.19000000000005,"speed":0.0,"timestamp":1754464768657,"vinfo":{"door":1,"light":1,"wiper":0}},{"vid":"355","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5024007,39.8101233","direction":329.1582,"speed":0.0,"timestamp":1754464768656,"vinfo":{"door":1,"light":1,"wiper":0}},{"vid":"271","vmodel":"01010400008","vtype":"巡逻车","coord_type":"Geo","coord":"117.3471332,39.0015908","direction":271.231,"speed":60.0,"timestamp":1754464768627,"vinfo":{"door":0,"light":0,"wiper":1,"poleId":"1200001928"}},{"vid":"369","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5012194,39.8088289","direction":256.06500000000005,"speed":0.0,"timestamp":1754464768656,"vinfo":{"door":1,"light":1,"wiper":0}},{"vid":"367","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5027912,39.8087311","direction":58.24649999999997,"speed":0.0,"timestamp":1754464768657,"vinfo":{"door":1,"light":1,"wiper":0}},{"vid":"359","vmodel":"01010108001","vtype":"Ambulance","coord_type":"Geo","coord":"116.5012066,39.8088949","direction":263.1252999999999,"speed":0.0,"timestamp":1754464768658,"vinfo":{"door":1,"light":1,"wiper":0}}]} *{"version":"2.0.0","data_id":"default","data_type":"OBU","data_list":[{"vid":"261","vmodel":"01010102001","vtype":"双层客车1","coord_type":"Geo","coord":"117.3499501,39.0072603","direction":333.573,"speed":1.0,"timestamp":1755156180282,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"263","vmodel":"01010400006","vtype":"中型客车","coord_type":"Geo","coord":"117.3487397,39.0030869","direction":3.008699999999976,"speed":58.0,"timestamp":1755156180283,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"265","vmodel":"01010400001","vtype":"清扫","coord_type":"Geo","coord":"117.3443229,39.0011612","direction":349.3043,"speed":54.0,"timestamp":1755156180283,"vinfo":{"door":0,"light":0,"wiper":1}},{"vid":"267","vmodel":"01010400003","vtype":"售卖","coord_type":"Geo","coord":"117.3463546,38.9986415","direction":348.0532,"speed":4.0,"timestamp":1755156180284,"vinfo":{"door":0,"light":36864,"wiper":1,"poleId":"1200003843"}},{"vid":"269","vmodel":"01010400004","vtype":"出租","coord_type":"Geo","coord":"117.3472319,38.994756","direction":190.48939999999993,"speed":41.0,"timestamp":1755156180283,"vinfo":{"door":0,"light":0,"wiper":1,"poleId":"1200003838"}},{"vid":"271","vmodel":"01010400008","vtype":"巡逻车","coord_type":"Geo","coord":"117.3470161,39.0023286","direction":87.26830000000001,"speed":60.0,"timestamp":1755156180284,"vinfo":{"door":0,"light":0,"wiper":1}}]}
* **/ * **/
data class CarVehicle( data class CarVehicle(
val data_id: String, val data_id: String,
...@@ -12,8 +12,8 @@ data class CarVehicle( ...@@ -12,8 +12,8 @@ data class CarVehicle(
data class VData( data class VData(
val coord: String, val coord: String,
val coord_type: String,//"117.345278,39.0059533", val coord_type: String,//"117.345278,39.0059533",
val direction: Double,//航向角 val direction: Double,//交通实体朝向:可选字段, 单位为角度,正东方向为0,顺时针方向为正(0~360),无该字段时会自动计算
val speed: Double, val speed: Double,//单位:km/h,
val timestamp: Long, val timestamp: Long,
val vid: String, val vid: String,
val vinfo: Vinfo, val vinfo: Vinfo,
...@@ -23,7 +23,7 @@ data class VData( ...@@ -23,7 +23,7 @@ data class VData(
data class Vinfo( data class Vinfo(
val door: Int, val door: Int,
val light: Int, val light: Int,//灯光状态
val poleId: String, val poleId: String,
val wiper: Int val wiper: Int
) )
\ No newline at end of file
package com.sd.cavphmi.bean
/***登录成功返回
* {"id":"1945784080018624513","username":"曲华晔","userAccount":"18********66","userProperty":null,"tenantId":"1416942676699533314","createTime":"2025-07-17 17:54:10","longitude":116.50195100000000000,"latitude":39.80889700000000000,"tenantName":"北京亦庄示范场","tenantCode":"PM270","tenantType":"other","isSystemAdmin":0,"hdMap":1,"expiry":0,"startTime":"2025-07-17 00:00:00","endTime":"2025-10-31 00:00:00","token":"3W6UeYoWsr3Hged3iJDqw5RQrLyTDwDkkX481PIiuYGwPCamTVdGHhmAxaCgHtns4IaNTEynJ8JfY46bvkzoqqDA9YcGUmkMZ31sV7QAVrk91yOPTv9mCvPLUgOeBgRl","ipAddress":"10.42.4.0","loginModel":"itdts-portal-v5"}
* **/
data class LoginSuccBean(
val createTime: String,
val endTime: String,
val expiry: Int,
val hdMap: Int,
val id: String,
val ipAddress: String,
val isSystemAdmin: Int,
val latitude: Double,
val loginModel: String,
val longitude: Double,
val startTime: String,
val tenantCode: String,
val tenantId: String,
val tenantName: String,
val tenantType: String,
val token: String,
val userAccount: String,
val userProperty: Any,
val username: String
)
\ No newline at end of file
package com.sd.cavphmi.bean
/**{"id":"1935144643924385794","reserveOrderId":null,"orderNo":"20250618091651107821","vehicleId":"1700381241280815105","plateNo":"吉AC242","parkingLotId":"1589482925440901121","parkingLotName":"长春一汽园区内停车场","parkingLotSpaceId":null,"parkingLotSpaceCode":null,"userId":"1856265200534417410","userName":null,"appointmentEnterTime":null,"cancelBy":null,"cancelReason":null,"cancelTime":null,"avpStatus":6,"enterTime":"2025-06-18 09:16:51","outTime":null,"duration":5341,"durationString":"1小时29分钟","payTime":null,"payType":null,"orderStatus":20,"actualCost":12.0,"ifAppointEnd":0,"vehicleType":1,"payState":0,"parkImg":"","entranceId":"1589482929723285510","entranceLng":125.14179663,"entranceLat":43.83972200,"vehicleLng":125.14245358326262,"vehicleLat":43.838947467820994,"parkingPointId":null,"callPointId":null,"heading":149.77603}**/
data class OrderBean(
val actualCost: Float,
val appointmentEnterTime: String,
val avpStatus: Int,
val callPointId: String,
val cancelBy: Any,
val cancelReason: Any,
val cancelTime: Any,
val duration: Int,
val durationString: String,
val enterTime: String,
val entranceId: String,
val entranceLat: Double,
val entranceLng: Double,
val heading: Double,
val id: String,
val ifAppointEnd: Int,
val orderNo: String,
val orderStatus: Int,
val outTime: Any,
val parkImg: String,
val parkingLotId: String,
val parkingLotName: String,
val parkingLotSpaceCode: String,
val parkingLotSpaceId: String,
val parkingPointId: String,
val payState: Int,
val payTime: Any,
val payType: Any,
val plateNo: String,
val reserveOrderId: String,
val userId: String,
val userName: Any,
val vehicleId: String,
val vehicleLat: Double,
val vehicleLng: Double,
val vehicleType: Int
)
\ No newline at end of file
package com.sd.cavphmi.bean
/***定车位变更
* {"centrePoint":"125.14337396,43.83873198","extendPoint":"125.14333880,43.83866747","callOrBackPoint":"125.1424934543.83896992","parkingSpace":"1D-001"}
* */
data class ParkBean(
val callOrBackPoint: String,
val centrePoint: String,
val extendPoint: String,
val parkingSpace: String
)
\ No newline at end of file
package com.sd.cavphmi.bean
/**局部路径***/
data class PartLineBean(val objectData: List<PartLine>)
data class PartLine(
var type: Int,
var pointStr: String,
val globalPath: List<List<Double>>,
)
\ No newline at end of file
...@@ -20,5 +20,5 @@ data class PData( ...@@ -20,5 +20,5 @@ data class PData(
val vid: String, val vid: String,
val vinfo: Any, val vinfo: Any,
val vmodel: String, val vmodel: String,
val vtype: String val vtype: String//pedestrian = 行人
) )
\ No newline at end of file
package com.sd.cavphmi.bean
/***rsi事件**/
class RsiEventBean {
}
\ No newline at end of file
package com.sd.cavphmi.bean
/**车辆详情**/
data class VehDetailBean(
val code: Int,
val msg: String,
val result: Result,
val success: Boolean
)
data class Result(
val offlineCount: Int,
val onlineCount: Int,
val vehicleInfos: List<VehicleInfo>
)
data class VehicleInfo(
val online: Boolean,
val plateNumber: String,
val vehicleCode: String,
val vehicleId: Long,
val vehicleImgUrl: Any,
val vehicleOwnerName: Any,
val vehicleOwnerPhone: Any,
val vehicleVideoUrl: Any
)
\ No newline at end of file
...@@ -63,8 +63,6 @@ object NetworkModule { ...@@ -63,8 +63,6 @@ object NetworkModule {
} }
//------------------API 方法--------------- //------------------API 方法---------------
@Singleton @Singleton
@Provides @Provides
fun provideClientRetrofitService(@NormalInterceptorOkHttpClient okHttpClient: OkHttpClient): ClientRetrofitMethod { fun provideClientRetrofitService(@NormalInterceptorOkHttpClient okHttpClient: OkHttpClient): ClientRetrofitMethod {
...@@ -72,7 +70,6 @@ object NetworkModule { ...@@ -72,7 +70,6 @@ object NetworkModule {
} }
fun getSSlSocketFactory(): SslData { fun getSSlSocketFactory(): SslData {
val trustManagerFactory: TrustManagerFactory = TrustManagerFactory.getInstance( val trustManagerFactory: TrustManagerFactory = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm() TrustManagerFactory.getDefaultAlgorithm()
......
package com.sd.cavphmi.net package com.sd.cavphmi.net
import com.sd.cavphmi.utils.MyContants
import okhttp3.Interceptor import okhttp3.Interceptor
import okhttp3.Response import okhttp3.Response
import javax.inject.Inject import javax.inject.Inject
...@@ -16,7 +17,10 @@ class HeadParamsInterceptor @Inject constructor() : Interceptor { ...@@ -16,7 +17,10 @@ class HeadParamsInterceptor @Inject constructor() : Interceptor {
var original = chain.request() var original = chain.request()
// var path = original.url.encodedPath.substringAfterLast("/") // var path = original.url.encodedPath.substringAfterLast("/")
var request = original.newBuilder() var request = original.newBuilder()
request.header("Tenant-Id", "1484465260508323841") if (MyContants.HTTP_TOKEN.isNotEmpty()) {
request.header("token", MyContants.HTTP_TOKEN)
request.header("Authorization", MyContants.HTTP_TOKEN)
}
return chain.proceed(request.build()) return chain.proceed(request.build())
} }
......
package com.sd.cavphmi.net
abstract class OnDataBackService<T>: OnDataCallback<T> {
override fun onSubscribe() {
}
override fun onComplete() {
}
}
\ No newline at end of file
package com.sd.cavphmi.net
interface OnDataCallback<T> {
fun onSubscribe()
fun onSuccess(t: T)
fun onFailed(error: String)
fun onComplete()
fun loginTimeout()
}
\ No newline at end of file
package com.sd.cavphmi.net.httpmothod package com.sd.cavphmi.net.httpmothod
import com.sd.cavphmi.bean.LoginSuccBean
import com.sd.cavphmi.bean.ParkLinePlan import com.sd.cavphmi.bean.ParkLinePlan
import com.sd.cavphmi.bean.OrderBean
import com.sd.cavphmi.bean.SpaceNoBean import com.sd.cavphmi.bean.SpaceNoBean
import com.sd.cavphmi.bean.VehDetailBean
import com.sd.cavphmi.net.MyBaseResource import com.sd.cavphmi.net.MyBaseResource
import okhttp3.RequestBody import okhttp3.RequestBody
import retrofit2.http.Body import retrofit2.http.Body
...@@ -11,28 +12,35 @@ import retrofit2.http.POST ...@@ -11,28 +12,35 @@ import retrofit2.http.POST
interface ClientRetrofitMethod { interface ClientRetrofitMethod {
/**
* 获取配置文件
*/
// @Headers("Cache-Control:public,max-age=3600") // @Headers("Cache-Control:public,max-age=3600")
// @GET("http://59.175.163.12/serv-addr/server.json") // @GET("http://59.175.163.12/serv-addr/server.json")
// fun getConfigurations(): Observable<List<ConfigurationBean>> // fun getConfigurations(): Observable<List<ConfigurationBean>>
// //
/***查询车位信息***/ /***车辆详情***/
@POST("hkapi/pms/v1/parkingSpace/spaceNo") // @POST("api/perm/admin/auth/passLogin")
suspend fun getSpaceData(@Body body: RequestBody): MyBaseResource<SpaceNoBean> // @POST("api/perm/admin/auth/passLogin")
@POST("api/opr/login")
suspend fun login(@Body body: RequestBody): LoginSuccBean
/***车辆详情***/
// @POST("v1/avp/overview/getVehicleInfo")
@POST("api/avpweb/v1/avp/overview/getVehicleInfo")
suspend fun getVehDetail(@Body body: RequestBody): VehDetailBean
// /***车辆详情***/
// @POST("/v1/avp/overview/listAvpStatus")
// suspend fun getVehDetail(@Body body: RequestBody): VehDetailBean
/***获取订单信息**/ /***获取订单信息**/
@POST("avp/avpMonitor/getOrderParkingInfoForPlate") // @POST("avp/avpMonitor/getOrderParkingInfoForPlate")
suspend fun getOrderData(@Body body: RequestBody): OrderBean // suspend fun getOrderData(@Body body: RequestBody): OrderBean
//
/***获取网络质量**/ // /***获取网络质量**/
@POST("avp/siteLine/getNetworkQuality") // @POST("avp/siteLine/getNetworkQuality")
suspend fun getTimeOut(): Any // suspend fun getTimeOut(): Any
//
/***获取路径规划**/ // /***获取路径规划**/
@POST("avp/linePlaning/get") // @POST("avp/linePlaning/get")
suspend fun getLinePlaning(@Body body: RequestBody): ParkLinePlan // suspend fun getLinePlaning(@Body body: RequestBody): ParkLinePlan
/** /**
......
package com.sd.cavphmi.repositorys
import com.sd.cavphmi.bean.VehDetailBean
import com.sd.cavphmi.net.MyResult
import com.sd.cavphmi.net.RequestBodyUtil
import com.sd.cavphmi.net.httpmothod.ClientRetrofitMethod
import com.sd.cavphmi.utils.MyContants
import retrofit2.HttpException
import javax.inject.Inject
/***AVP 接口**/
class AvpDataRepo @Inject constructor(private var clientRetrofitMethod: ClientRetrofitMethod) {
/***获取车辆详情
* @param id 车辆id
* **/
suspend fun getVehDetail(id: String="1"): MyResult<VehDetailBean> {
if (id.isNullOrEmpty()) {
return MyResult.Error(MyContants.HTTP_ERROR, "error")
}
// if (!orderCalled.getAndSet(true)) {
var map = mapOf("id" to id)
var body = RequestBodyUtil.toRequestBody(map)
try {
var bean = clientRetrofitMethod.getVehDetail(body)
return MyResult.Success(bean)
} catch (e: HttpException) {
// println("e.message = ${e.message}")
return MyResult.Error(e.code(), e.message() ?: "error")
} catch (e: Exception) {
return MyResult.Error(MyContants.HTTP_ERROR, e.message ?: "error")
}
// } else {
// return MyResult.Error(MyContants.ALREADT_ONCE, "")
// }
}
suspend fun login(user: String, pwd: String,verifyCode: Int): MyResult<String> {
// if (id.isNullOrEmpty()) {
// return MyResult.Error(MyContants.HTTP_ERROR, "error")
// }
var map = mapOf("userAccount" to user, "password" to pwd, "verificationCode" to verifyCode)
var body = RequestBodyUtil.toRequestBody(map)
try {
var bean = clientRetrofitMethod.login(body)
return MyResult.Success(bean.token)
} catch (e: HttpException) {
// println("e.message = ${e.message}")
return MyResult.Error(e.code(), e.message() ?: "error")
} catch (e: Exception) {
return MyResult.Error(MyContants.HTTP_ERROR, e.message ?: "error")
}
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment