Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
0b1bb280
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
10 个月 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0b1bb280
编写于
7月 05, 2021
作者:
囧jt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify:
[Android]: auto-service bug fixed
上级
5a56ceee
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
212 addition
and
75 deletion
+212
-75
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/ability/DokitMcInterceptor.kt
...ichuxing/doraemonkit/kit/mc/ability/DokitMcInterceptor.kt
+6
-2
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/ability/McHttpManager.kt
...m/didichuxing/doraemonkit/kit/mc/ability/McHttpManager.kt
+37
-27
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/DoKitMcDatasFragment.kt
...chuxing/doraemonkit/kit/mc/all/ui/DoKitMcDatasFragment.kt
+9
-15
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/DoKitMcMainFragment.kt
...ichuxing/doraemonkit/kit/mc/all/ui/DoKitMcMainFragment.kt
+24
-17
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/McCaseInfoDialogProvider.kt
...ing/doraemonkit/kit/mc/all/ui/McCaseInfoDialogProvider.kt
+14
-5
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/data/McCaseInfo.kt
.../didichuxing/doraemonkit/kit/mc/all/ui/data/McCaseInfo.kt
+19
-0
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/data/McResInfo.kt
...m/didichuxing/doraemonkit/kit/mc/all/ui/data/McResInfo.kt
+2
-2
Android/java/doraemonkit-mc/src/test/java/com/didichuxing/doraemonkit/ExampleUnitTest.kt
.../test/java/com/didichuxing/doraemonkit/ExampleUnitTest.kt
+62
-7
Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/extension/DokitExtension.kt
...a/com/didichuxing/doraemonkit/extension/DokitExtension.kt
+39
-0
未找到文件。
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/ability/DokitMcInterceptor.kt
浏览文件 @
0b1bb280
...
...
@@ -5,6 +5,7 @@ import com.didichuxing.doraemonkit.constant.WSMode
import
com.didichuxing.doraemonkit.extension.doKitGlobalScope
import
com.didichuxing.doraemonkit.extension.sortedByKey
import
com.didichuxing.doraemonkit.extension.toMap
import
com.didichuxing.doraemonkit.kit.mc.all.McConstant
import
com.didichuxing.doraemonkit.kit.network.NetworkManager
import
com.didichuxing.doraemonkit.kit.network.okhttp.InterceptorUtil
import
com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.AbsDoKitInterceptor
...
...
@@ -69,7 +70,7 @@ class DokitMcInterceptor : AbsDoKitInterceptor() {
doKitGlobalScope
.
launch
{
val
httInfo
=
HttpInfo
(
DoKitConstant
.
PRODUCT_ID
,
"caseId"
,
McConstant
.
MC_CASE_ID
,
key
,
method
,
path
,
...
...
@@ -80,7 +81,10 @@ class DokitMcInterceptor : AbsDoKitInterceptor() {
strResponseBody
)
val
resulit
=
McHttpManager
.
uploadHttpInfo
<
Any
>(
httInfo
)
val
result
=
McHttpManager
.
uploadHttpInfo
<
Any
>(
httInfo
)
if
(
result
.
code
!=
McHttpManager
.
RESPONSE_OK
)
{
LogHelper
.
e
(
TAG
,
"e===>${result.msg}"
)
}
}
...
...
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/ability/McHttpManager.kt
浏览文件 @
0b1bb280
...
...
@@ -3,16 +3,14 @@ package com.didichuxing.doraemonkit.kit.mc.ability
import
com.android.volley.Request
import
com.android.volley.toolbox.JsonObjectRequest
import
com.android.volley.toolbox.StringRequest
import
com.android.volley.toolbox.Volley
import
com.didichuxing.doraemonkit.constant.DoKitConstant
import
com.didichuxing.doraemonkit.kit.mc.all.ui.McCaseInfoDialogProvider
import
com.didichuxing.doraemonkit.kit.mc.all.ui.McResInfo
import
com.didichuxing.doraemonkit.kit.mc.all.ui.data.McCaseInfo
import
com.didichuxing.doraemonkit.kit.mc.all.ui.data.McResInfo
import
com.didichuxing.doraemonkit.util.GsonUtils
import
com.didichuxing.doraemonkit.util.ToastUtils
import
com.didichuxing.doraemonkit.volley.VolleyManager
import
io.ktor.client.*
import
io.ktor.client.engine.cio.*
import
io.ktor.client.request.*
import
com.google.gson.Gson
import
com.google.gson.reflect.TypeToken
import
org.json.JSONObject
import
kotlin.coroutines.resume
import
kotlin.coroutines.resumeWithException
...
...
@@ -55,7 +53,7 @@ object McHttpManager {
@Throws
(
Exception
::
class
)
suspend
fun
<
T
>
getMcConfig
():
McResInfo
<
T
>
=
suspendCoroutine
{
suspend
inline
fun
<
reified
T
>
getMcConfig
():
McResInfo
<
T
>
=
suspendCoroutine
{
val
jsonObject
=
JSONObject
()
jsonObject
.
put
(
"pId"
,
DoKitConstant
.
PRODUCT_ID
)
val
request
=
JsonObjectRequest
(
...
...
@@ -71,12 +69,12 @@ object McHttpManager {
@Throws
(
Exception
::
class
)
suspend
fun
<
T
>
mockStart
():
McResInfo
<
T
>
=
suspendCoroutine
{
suspend
inline
fun
<
reified
T
>
mockStart
():
McResInfo
<
T
>
=
suspendCoroutine
{
val
request
=
JsonObjectRequest
(
"$host/app/multiControl/startRecord"
,
JSONObject
(
GsonUtils
.
toJson
(
AppInfo
())),
{
response
->
it
.
resume
(
convert2McResInfo
(
response
))
it
.
resume
(
convert2McResInfo
<
T
>
(
response
))
},
{
error
->
it
.
resumeWithException
(
error
)
})
...
...
@@ -85,20 +83,21 @@ object McHttpManager {
@Throws
(
Exception
::
class
)
suspend
fun
<
T
>
uploadHttpInfo
(
httpInfo
:
HttpInfo
):
McResInfo
<
T
>
=
suspendCoroutine
{
val
request
=
JsonObjectRequest
(
"$host/app/multiControl/uploadApiInfo"
,
JSONObject
(
GsonUtils
.
toJson
(
httpInfo
)),
{
response
->
it
.
resume
(
convert2McResInfo
(
response
))
},
{
error
->
it
.
resumeWithException
(
error
)
})
VolleyManager
.
add
(
request
)
}
suspend
inline
fun
<
reified
T
>
uploadHttpInfo
(
httpInfo
:
HttpInfo
):
McResInfo
<
T
>
=
suspendCoroutine
{
val
request
=
JsonObjectRequest
(
"$host/app/multiControl/uploadApiInfo"
,
JSONObject
(
GsonUtils
.
toJson
(
httpInfo
)),
{
response
->
it
.
resume
(
convert2McResInfo
(
response
))
},
{
error
->
it
.
resumeWithException
(
error
)
})
VolleyManager
.
add
(
request
)
}
@Throws
(
Exception
::
class
)
suspend
fun
<
T
>
mockStop
(
caseInfo
:
McCaseInfoDialogProvider
.
CaseInfo
):
McResInfo
<
T
>
=
suspend
inline
fun
<
reified
T
>
mockStop
(
caseInfo
:
McCaseInfoDialogProvider
.
CaseInfo
):
McResInfo
<
T
>
=
suspendCoroutine
{
val
request
=
JsonObjectRequest
(
"$host/app/multiControl/endRecord"
,
...
...
@@ -113,10 +112,10 @@ object McHttpManager {
@Throws
(
Exception
::
class
)
suspend
fun
<
T
>
mockC
aseList
():
McResInfo
<
T
>
=
suspendCoroutine
{
suspend
inline
fun
<
reified
T
>
c
aseList
():
McResInfo
<
T
>
=
suspendCoroutine
{
val
request
=
StringRequest
(
Request
.
Method
.
GET
,
"$host/app/multiControl/caseList"
,
"$host/app/multiControl/caseList
?pId=${DoKitConstant.PRODUCT_ID}
"
,
{
response
->
it
.
resume
(
convert2McResInfo
(
JSONObject
(
response
)))
},
{
error
->
...
...
@@ -127,7 +126,7 @@ object McHttpManager {
@Throws
(
Exception
::
class
)
suspend
fun
<
T
>
httpMatch
(
requestKey
:
String
):
McResInfo
<
T
>
=
suspendCoroutine
{
suspend
inline
fun
<
reified
T
>
httpMatch
(
requestKey
:
String
):
McResInfo
<
T
>
=
suspendCoroutine
{
val
jsonObject
=
JSONObject
()
jsonObject
.
put
(
"key"
,
requestKey
)
jsonObject
.
put
(
"caseId"
,
"caseId"
)
...
...
@@ -142,8 +141,19 @@ object McHttpManager {
VolleyManager
.
add
(
request
)
}
private
fun
<
T
>
convert2McResInfo
(
response
:
JSONObject
):
McResInfo
<
T
>
{
return
GsonUtils
.
fromJson
(
response
.
toString
(),
McResInfo
::
class
.
java
)
as
McResInfo
<
T
>
inline
fun
<
reified
T
>
convert2McResInfo
(
json
:
JSONObject
):
McResInfo
<
T
>
{
val
mcInfo
=
McResInfo
<
T
>(
json
.
getInt
(
"code"
),
json
.
getString
(
"msg"
)
)
val
dataInfo
:
T
?
=
try
{
val
dataJson
=
json
.
getJSONObject
(
"data"
).
toString
()
GsonUtils
.
fromJson
(
dataJson
,
T
::
class
.
java
)
}
catch
(
e
:
Exception
)
{
null
}
mcInfo
.
data
=
dataInfo
return
mcInfo
}
}
\ No newline at end of file
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/DoKitMcDatasFragment.kt
浏览文件 @
0b1bb280
...
...
@@ -2,13 +2,15 @@ package com.didichuxing.doraemonkit.kit.mc.all.ui
import
android.os.Bundle
import
android.view.View
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.didichuxing.doraemonkit.kit.core.BaseFragment
import
com.didichuxing.doraemonkit.kit.mc.ability.McHttpManager
import
com.didichuxing.doraemonkit.mc.R
import
com.didichuxing.doraemonkit.util.TimeUtils
import
com.didichuxing.doraemonkit.util.ToastUtils
import
com.didichuxing.doraemonkit.widget.recyclerview.DividerItemDecoration
import
kotlinx.coroutines.launch
/**
* ================================================
...
...
@@ -35,7 +37,7 @@ class DoKitMcDatasFragment : BaseFragment() {
val
decoration
=
DividerItemDecoration
(
DividerItemDecoration
.
VERTICAL
)
decoration
.
setDrawable
(
resources
.
getDrawable
(
R
.
drawable
.
dk_divider
))
mRv
.
addItemDecoration
(
decoration
)
mAdapter
=
McCaseListAdapter
(
createCaseList
())
mAdapter
=
McCaseListAdapter
(
mutableListOf
<
McCaseInfo
>
())
mAdapter
.
setOnItemClickListener
{
adapter
,
_
,
pos
->
for
(
i
in
adapter
.
data
)
{
(
i
as
McCaseInfo
).
isChecked
=
false
...
...
@@ -46,20 +48,12 @@ class DoKitMcDatasFragment : BaseFragment() {
ToastUtils
.
showShort
(
"用例${item.caseName}已被选中"
)
}
mRv
.
adapter
=
mAdapter
}
private
fun
createCaseList
():
MutableList
<
McCaseInfo
>
{
val
list
:
MutableList
<
McCaseInfo
>
=
mutableListOf
()
for
(
index
in
0
..
100
)
{
if
(
index
==
0
)
{
list
.
add
(
McCaseInfo
(
"item $index"
,
"jintai"
,
TimeUtils
.
getNowString
(),
true
))
}
else
{
list
.
add
(
McCaseInfo
(
"item $index"
,
"jintai"
,
TimeUtils
.
getNowString
(),
false
))
}
lifecycleScope
.
launch
{
val
data
=
McHttpManager
.
caseList
<
MutableList
<
McCaseInfo
>>().
data
mAdapter
.
setList
(
data
)
}
return
list
}
}
\ No newline at end of file
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/DoKitMcMainFragment.kt
浏览文件 @
0b1bb280
...
...
@@ -14,6 +14,7 @@ import androidx.appcompat.app.AlertDialog
import
androidx.lifecycle.lifecycleScope
import
com.didichuxing.doraemonkit.constant.DoKitConstant
import
com.didichuxing.doraemonkit.constant.WSMode
import
com.didichuxing.doraemonkit.extension.isTrueWithCor
import
com.didichuxing.doraemonkit.util.GsonUtils
import
com.didichuxing.doraemonkit.util.ToastUtils
import
com.didichuxing.doraemonkit.kit.core.BaseFragment
...
...
@@ -22,6 +23,7 @@ import com.didichuxing.doraemonkit.kit.mc.ability.McHttpManager
import
com.didichuxing.doraemonkit.kit.mc.ability.McHttpManager.RESPONSE_OK
import
com.didichuxing.doraemonkit.kit.mc.all.DoKitWindowManager
import
com.didichuxing.doraemonkit.kit.mc.all.McConstant
import
com.didichuxing.doraemonkit.kit.mc.all.ui.data.McCaseInfo
import
com.didichuxing.doraemonkit.kit.mc.client.DoKitWsClient
import
com.didichuxing.doraemonkit.kit.mc.server.HostInfo
import
com.didichuxing.doraemonkit.kit.mc.server.RecordingDokitView
...
...
@@ -34,8 +36,6 @@ import kotlinx.coroutines.CoroutineExceptionHandler
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
org.json.JSONObject
import
org.xml.sax.ErrorHandler
import
kotlin.coroutines.resume
import
kotlin.coroutines.suspendCoroutine
...
...
@@ -99,32 +99,34 @@ class DoKitMcMainFragment : BaseFragment() {
return
@setOnClickListener
}
if
(
DoKitConstant
.
WS_MODE
==
WSMode
.
RECORDING
)
{
ToastUtils
.
showShort
(
"当前已处于录制状态"
)
return
@setOnClickListener
}
//请求一个CaseId
lifecycleScope
.
launch
(
exceptionHandler
)
{
if
(
interceptDialogResult
())
{
interceptDialogResult
().
isTrueWithCor
(
isFalse
=
{
ToastUtils
.
showShort
(
"取消用例采集"
)
})
{
try
{
val
resInfo
=
McHttpManager
.
mockStart
<
Any
>()
val
resInfo
=
McHttpManager
.
mockStart
<
McCaseInfo
>()
if
(
resInfo
.
code
==
RESPONSE_OK
)
{
val
configInfo
=
resInfo
.
data
McConstant
.
MC_CASE_ID
=
configInfo
?.
caseId
?:
""
SimpleDokitStarter
.
startFloating
(
RecordingDokitView
::
class
.
java
)
LogHelper
.
i
(
TAG
,
"result===>$resInfo"
)
DoKitConstant
.
WS_MODE
=
WSMode
.
RECORDING
ToastUtils
.
showShort
(
"
用例开始
采集"
)
ToastUtils
.
showShort
(
"
开始用例
采集"
)
}
}
catch
(
e
:
Exception
)
{
LogHelper
.
e
(
TAG
,
"e===>${e.message}"
)
DoKitConstant
.
WS_MODE
=
WSMode
.
UNKNOW
ToastUtils
.
showShort
(
"用例采集启动失败"
)
LogHelper
.
i
(
TAG
,
"e===>${e.message} thread===>${Thread.currentThread().name}"
)
}
}
else
{
ToastUtils
.
showShort
(
"取消用例采集"
)
}
}
}
...
...
@@ -153,9 +155,9 @@ class DoKitMcMainFragment : BaseFragment() {
//加载exclude key
if
(
DoKitConstant
.
PRODUCT_ID
.
isNotEmpty
())
{
lifecycleScope
.
launch
(
exceptionHandler
)
{
val
config
=
McHttpManager
.
getMcConfig
<
Boolean
>()
val
config
=
McHttpManager
.
getMcConfig
<
Any
>()
if
(
config
.
code
==
RESPONSE_OK
)
{
LogHelper
.
i
(
TAG
,
"config===>$config"
)
//
LogHelper.i(TAG, "config===>$config")
}
else
{
ToastUtils
.
showShort
(
config
.
msg
)
}
...
...
@@ -292,7 +294,12 @@ class DoKitMcMainFragment : BaseFragment() {
return
false
}
it
.
resume
(
McCaseInfoDialogProvider
.
CaseInfo
(
caseName
,
personName
))
it
.
resume
(
McCaseInfoDialogProvider
.
CaseInfo
(
caseName
=
caseName
,
personName
=
personName
)
)
return
true
}
...
...
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/McCaseInfoDialogProvider.kt
浏览文件 @
0b1bb280
package
com.didichuxing.doraemonkit.kit.mc.all.ui
import
android.text.TextUtils
import
android.view.View
import
android.widget.EditText
import
android.widget.TextView
import
com.didichuxing.doraemonkit.constant.DoKitConstant
import
com.didichuxing.doraemonkit.kit.mc.all.McConstant
import
com.didichuxing.doraemonkit.mc.R
import
com.didichuxing.doraemonkit.widget.dialog.DialogListener
import
com.didichuxing.doraemonkit.widget.dialog.DialogProvider
...
...
@@ -18,7 +19,7 @@ class McCaseInfoDialogProvider internal constructor(data: Any?, listener: Dialog
private
lateinit
var
mPositive
:
TextView
private
lateinit
var
mNegative
:
TextView
private
lateinit
var
mCaseName
:
EditText
private
lateinit
var
m
User
Name
:
EditText
private
lateinit
var
m
Person
Name
:
EditText
override
fun
getLayoutId
():
Int
{
return
R
.
layout
.
dk_dialog_mc_case_info
}
...
...
@@ -27,7 +28,7 @@ class McCaseInfoDialogProvider internal constructor(data: Any?, listener: Dialog
mPositive
=
view
.
findViewById
(
R
.
id
.
positive
)
mNegative
=
view
.
findViewById
(
R
.
id
.
negative
)
mCaseName
=
view
.
findViewById
(
R
.
id
.
edit_case_name
)
m
User
Name
=
view
.
findViewById
(
R
.
id
.
edit_user_name
)
m
Person
Name
=
view
.
findViewById
(
R
.
id
.
edit_user_name
)
}
...
...
@@ -44,12 +45,20 @@ class McCaseInfoDialogProvider internal constructor(data: Any?, listener: Dialog
}
fun
getCaseInfo
():
CaseInfo
{
return
CaseInfo
(
mCaseName
.
text
.
toString
(),
mUserName
.
text
.
toString
())
return
CaseInfo
(
caseName
=
mCaseName
.
text
.
toString
(),
personName
=
mPersonName
.
text
.
toString
()
)
}
override
fun
isCancellable
():
Boolean
{
return
false
}
data class
CaseInfo
(
val
caseName
:
String
,
val
personName
:
String
)
data class
CaseInfo
(
val
pId
:
String
=
DoKitConstant
.
PRODUCT_ID
,
val
caseId
:
String
=
McConstant
.
MC_CASE_ID
,
val
caseName
:
String
,
val
personName
:
String
)
}
\ No newline at end of file
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/data/McCaseInfo.kt
0 → 100644
浏览文件 @
0b1bb280
package
com.didichuxing.doraemonkit.kit.mc.all.ui.data
import
com.google.gson.annotations.Expose
/**
* ================================================
* 作 者:jint(金台)
* 版 本:1.0
* 创建日期:2021/7/1-20:39
* 描 述:
* 修订历史:
* ================================================
*/
data class
McCaseInfo
(
@Expose
val
caseId
:
String
,
@Expose
val
time
:
String
)
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/McResInfo.kt
→
Android/java/doraemonkit-mc/src/main/java/com/didichuxing/doraemonkit/kit/mc/all/ui/
data/
McResInfo.kt
浏览文件 @
0b1bb280
package
com.didichuxing.doraemonkit.kit.mc.all.ui
package
com.didichuxing.doraemonkit.kit.mc.all.ui
.data
/**
* ================================================
...
...
@@ -9,4 +9,4 @@ package com.didichuxing.doraemonkit.kit.mc.all.ui
* 修订历史:
* ================================================
*/
data class
McResInfo
<
T
>(
val
code
:
Int
=
0
,
val
data
:
T
?
=
null
,
val
msg
:
String
=
""
)
data class
McResInfo
<
T
>(
val
code
:
Int
=
0
,
val
msg
:
String
=
""
,
var
data
:
T
?
=
null
)
Android/java/doraemonkit-mc/src/test/java/com/didichuxing/doraemonkit/ExampleUnitTest.kt
浏览文件 @
0b1bb280
package
com.didichuxing.doraemonkit
import
com.didichuxing.doraemonkit.kit.mc.all.ui.data.McCaseInfo
import
com.didichuxing.doraemonkit.kit.mc.all.ui.data.McResInfo
import
com.google.gson.Gson
import
org.json.JSONObject
import
org.junit.Test
/**
...
...
@@ -17,12 +21,63 @@ class ExampleUnitTest {
//
// System.out.println(wsEvent.getFrom());
val
list
=
listOf
<
Int
>(
1
,
2
,
3
,
4
,
5
,
6
,
7
)
list
.
forEach
{
if
(
it
==
3
)
{
return
@forEach
}
println
(
it
)
}
// val list = listOf<Int>(1, 2, 3, 4, 5, 6, 7)
// list.forEach {
// if (it == 3) {
// return@forEach
// }
// println(it)
// }
val
json
=
"{\n"
+
" \"code\":200,\n"
+
" \"data\":{\n"
+
" \"pId\":\"749a0600b5e48dd77cf8ee680be7b1b7\",\n"
+
" \"appName\":\"DoKitDemo\",\n"
+
" \"appVersion\":\"1.0.0\",\n"
+
" \"dokitVersion\":\"3.4.0-alpha04\",\n"
+
" \"phoneMode\":\"Pixel\",\n"
+
" \"systemVersion\":\"9\",\n"
+
" \"time\":\"2021-07-01 20:58:49\",\n"
+
" \"caseId\":\"9f753c00ee37b5bbd259b52131d8d101\",\n"
+
" \"createTime\":\"2021-07-01 20:58:46\",\n"
+
" \"curStatus\":{\n"
+
" \"status\":\"new\",\n"
+
" \"id\":\"new\",\n"
+
" \"date\":1625144326244\n"
+
" },\n"
+
" \"statusList\":[\n"
+
" {\n"
+
" \"status\":\"new\",\n"
+
" \"id\":\"new\",\n"
+
" \"date\":1625144326244\n"
+
" }\n"
+
" ],\n"
+
" \"createDate\":1625144326244,\n"
+
" \"_id\":\"60ddbc06cd1bac0128fbb736\"\n"
+
" },\n"
+
" \"msg\":\"\"\n"
+
"}"
val
info
=
convert2McResInfo
<
McCaseInfo
>(
JSONObject
(
json
))
println
(
"info===>${info.data}"
)
}
private
inline
fun
<
reified
T
>
convert2McResInfo
(
json
:
JSONObject
):
McResInfo
<
T
>
{
val
mcInfo
=
McResInfo
<
T
>(
json
.
getInt
(
"code"
),
json
.
getString
(
"msg"
),
T
::
class
.
java
.
newInstance
()
)
val
dataInfo
=
Gson
().
fromJson
(
json
.
getJSONObject
(
"data"
).
toString
(),
T
::
class
.
java
)
mcInfo
.
data
=
dataInfo
return
mcInfo
}
}
\ No newline at end of file
Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/extension/DokitExtension.kt
浏览文件 @
0b1bb280
...
...
@@ -30,6 +30,7 @@ val doKitGlobalScope = MainScope() + CoroutineName("DoKit")
*/
fun
Boolean
?.
isTrue
(
error
:
(
String
)
->
Unit
=
{
LogHelper
.
e
(
"DoKit"
,
it
)
},
isFalse
:
()
->
Unit
=
{},
action
:
()
->
Unit
)
{
if
(
this
==
null
)
{
...
...
@@ -37,6 +38,23 @@ fun Boolean?.isTrue(
}
if
(
this
==
true
)
{
action
()
}
else
{
isFalse
()
}
}
suspend
fun
Boolean
?.
isTrueWithCor
(
error
:
suspend
(
String
)
->
Unit
=
{
LogHelper
.
e
(
"DoKit"
,
it
)
},
isFalse
:
suspend
()
->
Unit
=
{},
action
:
suspend
()
->
Unit
)
{
if
(
this
==
null
)
{
error
(
"Boolean is null"
)
}
if
(
this
==
true
)
{
action
()
}
else
{
isFalse
()
}
}
...
...
@@ -46,6 +64,7 @@ fun Boolean?.isTrue(
*/
fun
Boolean
?.
isFalse
(
error
:
(
String
)
->
Unit
=
{
LogHelper
.
e
(
"DoKit"
,
it
)
},
isTrue
:
()
->
Unit
=
{},
action
:
()
->
Unit
)
{
if
(
this
==
null
)
{
...
...
@@ -53,6 +72,26 @@ fun Boolean?.isFalse(
}
if
(
this
==
false
)
{
action
()
}
else
{
isTrue
()
}
}
/**
* Boolean 扩展函数
*/
suspend
fun
Boolean
?.
isFalseWithCor
(
error
:
suspend
(
String
)
->
Unit
=
{
LogHelper
.
e
(
"DoKit"
,
it
)
},
isTrue
:
suspend
()
->
Unit
=
{},
action
:
suspend
()
->
Unit
)
{
if
(
this
==
null
)
{
error
(
"Boolean is null"
)
}
if
(
this
==
false
)
{
action
()
}
else
{
isTrue
()
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录