leiyun 2 лет назад
Родитель
Сommit
3046c3a998
6 измененных файлов: 115 добавлений и 59 удалений
  1. +1
    -0
      .gitignore
  2. +20
    -2
      app/build.gradle
  3. +87
    -54
      app/src/main/java/com/yzx/escreen/MainActivity.kt
  4. +1
    -1
      app/src/main/java/com/yzx/escreen/config/Config.kt
  5. +3
    -1
      app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt
  6. +3
    -1
      app/src/main/java/com/yzx/escreen/fragment/VisitorFragment.kt

+ 1
- 0
.gitignore Просмотреть файл

@@ -15,3 +15,4 @@
/app/debug /app/debug
/app/release /app/release
/app/cszxy /app/cszxy
/app/kz/

+ 20
- 2
app/build.gradle Просмотреть файл

@@ -19,8 +19,8 @@ android {
// minSdkVersion 26 // minSdkVersion 26
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 25 targetSdkVersion 25
versionCode 30100
versionName "3.1.0"
versionCode 30102
versionName "3.1.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"


ndk { ndk {
@@ -78,6 +78,7 @@ android {
// buildConfigField "String", "APP_NAME", '"家校互通(测试)"' // buildConfigField "String", "APP_NAME", '"家校互通(测试)"'
buildConfigField "String", "MP_ID",'"4"' buildConfigField "String", "MP_ID",'"4"'
buildConfigField "String", "ENV_NAME",'"qbj"' buildConfigField "String", "ENV_NAME",'"qbj"'
buildConfigField "String", "APP_ID",'"602"'
} }


cszxy { cszxy {
@@ -92,6 +93,22 @@ android {
buildConfigField "String", "WS_URL", '"wss://oa.educlouddata.com/ws2api/"' buildConfigField "String", "WS_URL", '"wss://oa.educlouddata.com/ws2api/"'
buildConfigField "String", "MP_ID",'"2"' buildConfigField "String", "MP_ID",'"2"'
buildConfigField "String", "ENV_NAME",'"cszxy"' buildConfigField "String", "ENV_NAME",'"cszxy"'
buildConfigField "String", "APP_ID",'"602"'
}

kz {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
buildConfigField "String", "BASE_URL", '"https://oa.educlouddata.com/api"'
buildConfigField "String", "M_URL", '"https://m.educlouddata.com"'
buildConfigField "String", "OA_URL", '"https://oa.educlouddata.com"'
buildConfigField "String", "APP_NAME", '"一体化平台"'
buildConfigField "String", "MP_APPID", '"wx8f1f33673a8e9de4"'
buildConfigField "String", "WS_URL", '"wss://oa.educlouddata.com/ws2api/"'
buildConfigField "String", "MP_ID",'"101"'
buildConfigField "String", "ENV_NAME",'"kz"'
buildConfigField "String", "APP_ID",'"6021"'
} }


debug { debug {
@@ -115,6 +132,7 @@ android {
applicationIdSuffix ".live" applicationIdSuffix ".live"
buildConfigField "String", "MP_ID",'"2"' buildConfigField "String", "MP_ID",'"2"'
buildConfigField "String", "ENV_NAME",'"qbj"' buildConfigField "String", "ENV_NAME",'"qbj"'
buildConfigField "String", "APP_ID",'"602"'
} }


yzx_test { yzx_test {


+ 87
- 54
app/src/main/java/com/yzx/escreen/MainActivity.kt Просмотреть файл

@@ -83,7 +83,7 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus
val isAutoShowLeave = SPUtils.getInstance().getBoolean("auto_show_leave", true) val isAutoShowLeave = SPUtils.getInstance().getBoolean("auto_show_leave", true)
val isAutoShowChange = SPUtils.getInstance().getBoolean("auto_show_change", true) val isAutoShowChange = SPUtils.getInstance().getBoolean("auto_show_change", true)
if (isAutoShowLeave || isAutoShowChange) { if (isAutoShowLeave || isAutoShowChange) {
if (!idsLoading) {
if (!idsLoading && NetworkUtils.isConnected()) {
idsLoading = true idsLoading = true
LogUtils.d("获取详情开始--ids", TimeUtils.getNowMills()) LogUtils.d("获取详情开始--ids", TimeUtils.getNowMills())
mPresenter?.getLeaveShowIds() mPresenter?.getLeaveShowIds()
@@ -108,6 +108,32 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus


private var client: WebSocketClient? = null private var client: WebSocketClient? = null


private val mHeartHandler = Handler()
private val mHeartRunnable = object : Runnable {
override fun run() {
mHeartHandler.removeCallbacks(this)
// 在这里编写定时任务的逻辑
Log.d("Timer", "定时任务执行")
if (NetworkUtils.isConnected()) {
wsHeart()
}
// 定时任务完成后,再次调度定时任务
mHeartHandler.postDelayed(this, 10 * 1000) // 10000毫秒后再次执行
}
}

private val mWsHandler = Handler()
private val mWsRunnable = object : Runnable {
override fun run() {
mWsHandler.removeCallbacks(this)
// 在这里编写定时任务的逻辑
Log.d("Timer", "定时任务执行")
if (NetworkUtils.isConnected()) {
initWs()
}
}
}

override fun initView() { override fun initView() {
if (NetworkUtils.isConnected()) { if (NetworkUtils.isConnected()) {
if (!User.isLogin() && User.getUser().token.isEmpty()) { if (!User.isLogin() && User.getUser().token.isEmpty()) {
@@ -201,6 +227,8 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
mTimeHandler.removeCallbacks(timeRunnable) mTimeHandler.removeCallbacks(timeRunnable)
mHeartHandler.removeCallbacks(mHeartRunnable)
mWsHandler.removeCallbacks(mWsRunnable)
if (client?.isOpen == true) { if (client?.isOpen == true) {
client?.close() client?.close()
} }
@@ -328,54 +356,52 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus
} }


private fun initWs() { private fun initWs() {
Thread {
client =
object : WebSocketClient(URI.create(Config.WS_URL), Draft_6455(), null, 10 * 1000) {
override fun onOpen(handshakedata: ServerHandshake?) {
LogUtils.d("WebSocketClient-onOpen", handshakedata)
val user = User.getUser()
val clientInfo = YzxClientInfo()
clientInfo.type = 70
clientInfo.user_id = user.user_id.toString()
clientInfo.unit_id = user.school_id.toString()
clientInfo.token = user.token

client?.send(Gson().toJson(clientInfo))

}
if (!NetworkUtils.isConnected()) {
LogUtils.d("initWs-无网络")
return
}
LogUtils.d("initWs-有网络")
client =
object : WebSocketClient(URI.create(Config.WS_URL), Draft_6455(), null, 10 * 1000) {
override fun onOpen(handshakedata: ServerHandshake?) {
LogUtils.d("initWs-WebSocketClient-onOpen", handshakedata)
val user = User.getUser()
val clientInfo = YzxClientInfo()
clientInfo.type = 70
clientInfo.user_id = user.user_id.toString()
clientInfo.unit_id = user.school_id.toString()
clientInfo.token = user.token

client?.send(Gson().toJson(clientInfo))


override fun onClose(code: Int, reason: String?, remote: Boolean) {
LogUtils.d("WebSocketClient-onClose", code, reason, remote)
Thread{
Thread.sleep(60*1000)
initWs()
}.start()
}
}


override fun onMessage(message: String?) {
LogUtils.d("WebSocketClient-onMessage", message)
if (message?.startsWith("ECHO:", true) == false) {
wsMessage(message)
}
}
override fun onClose(code: Int, reason: String?, remote: Boolean) {
LogUtils.d("initWs-WebSocketClient-onClose", code, reason, remote)
mWsHandler.postDelayed(mWsRunnable,60*1000)
}


override fun onError(ex: Exception?) {
LogUtils.d("WebSocketClient-onError", ex)
Thread{
Thread.sleep(60*1000)
initWs()
}.start()
override fun onMessage(message: String?) {
LogUtils.d("initWs-WebSocketClient-onMessage", message)
if (message?.startsWith("ECHO:", true) == false) {
wsMessage(message)
} }
}


override fun onError(ex: Exception?) {
LogUtils.d("initWs-WebSocketClient-onError", ex)
mWsHandler.postDelayed(mWsRunnable,60*1000)
} }
try {
client?.connectBlocking()
wsHeart()
} catch (e: InterruptedException) {
e.printStackTrace()
LogUtils.d("WebSocketClient-catch", e)

} }
}.start()
try {
client?.connectBlocking()
// wsHeart()
mHeartHandler.postDelayed(mHeartRunnable, 10 * 1000)
} catch (e: InterruptedException) {
e.printStackTrace()
LogUtils.d("initWs-WebSocketClient-catch", e)
}
} }


private fun wsMessage(msg: String) { private fun wsMessage(msg: String) {
@@ -384,7 +410,7 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus
val res = gson.fromJson<YzxClientInfo>(msg, resultType) val res = gson.fromJson<YzxClientInfo>(msg, resultType)
if (res.data.student_id > 0) { if (res.data.student_id > 0) {
if (isAutoShowLeave || isAutoShowChange) { if (isAutoShowLeave || isAutoShowChange) {
LogUtils.d("WebSocketClient--wsMessage",res)
LogUtils.d("WebSocketClient--wsMessage", res)
EventBus.getDefault().post(EventLeaveIds("${res.data.student_id}")) EventBus.getDefault().post(EventLeaveIds("${res.data.student_id}"))
// mPresenter?.getLeaveShowIds("${res.data.student_id}") // mPresenter?.getLeaveShowIds("${res.data.student_id}")
} }
@@ -394,35 +420,40 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus
//请假消息 //请假消息
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
fun onMessageEvent(detail: EventLeaveIds) { fun onMessageEvent(detail: EventLeaveIds) {
LogUtils.d("WebSocketClient--onMessageEvent",detail)
LogUtils.d("WebSocketClient--onMessageEvent", detail)
mPresenter?.getLeaveShowIds("${detail.ids}") mPresenter?.getLeaveShowIds("${detail.ids}")
} }


//请假消息 //请假消息
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
fun onMessageEvent(detail: UserVersionCheck) { fun onMessageEvent(detail: UserVersionCheck) {
LogUtils.d("WebSocketClient--onMessageEvent",detail)
LogUtils.d("WebSocketClient--onMessageEvent", detail)
checkVersion(true) checkVersion(true)
} }





private fun wsHeart() { private fun wsHeart() {
Thread{
Thread.sleep(10 * 1000)
if (NetworkUtils.isConnected()) {
LogUtils.d("initWs-wsHeart-有网络")
if (client?.isOpen == true) { if (client?.isOpen == true) {
client?.apply { client?.apply {
send(Gson().toJson(YzxHeart().getYzxHeader())) send(Gson().toJson(YzxHeart().getYzxHeader()))
} }
} else { } else {
if (client != null) {
client?.reconnectBlocking()
} else {
initWs()
try {
if (client != null) {
client?.reconnectBlocking()
} else {
initWs()
}
} catch (e: Exception) {
LogUtils.d("initWs-wsHeart-有网络,异常", e)
} }
} }
wsHeart()
}.start()
// wsHeart()
} else {
LogUtils.d("initWs-wsHeart-无网络")
}
} }


private fun showNetworkError() { private fun showNetworkError() {
@@ -638,6 +669,8 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus
super.onStop() super.onStop()
EventBus.getDefault().unregister(this) EventBus.getDefault().unregister(this)
} }


} }


class HomePagerAdapter(act: AppCompatActivity) : FragmentStateAdapter(act) { class HomePagerAdapter(act: AppCompatActivity) : FragmentStateAdapter(act) {


+ 1
- 1
app/src/main/java/com/yzx/escreen/config/Config.kt Просмотреть файл

@@ -12,7 +12,7 @@ object Config {
var MP_APPID = BuildConfig.MP_APPID var MP_APPID = BuildConfig.MP_APPID
var MP_ID = BuildConfig.MP_ID var MP_ID = BuildConfig.MP_ID
var ENV_NAME = BuildConfig.ENV_NAME var ENV_NAME = BuildConfig.ENV_NAME
val APP_ID = 602
val APP_ID = BuildConfig.APP_ID


fun getEvn(): YzxEnv { fun getEvn(): YzxEnv {
when (ENV_NAME) { when (ENV_NAME) {


+ 3
- 1
app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt Просмотреть файл

@@ -417,7 +417,9 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView,
return return
} }
isLoading = true isLoading = true
mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time)
if (NetworkUtils.isConnected()) {
mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time)
}
} }


private fun pre() { private fun pre() {


+ 3
- 1
app/src/main/java/com/yzx/escreen/fragment/VisitorFragment.kt Просмотреть файл

@@ -269,7 +269,9 @@ class VisitorFragment : BaseFragment<VisitorPresenter>(), VisitorView,
return return
} }
isLoading = true isLoading = true
mPresenter?.getList(mPager.page_no, keyword, status)
if (NetworkUtils.isConnected()) {
mPresenter?.getList(mPager.page_no, keyword, status)
}
} }


private fun pre() { private fun pre() {


Загрузка…
Отмена
Сохранить