From 461af63442e6a45708fa801b0ad9cbec81273253 Mon Sep 17 00:00:00 2001 From: leiyun Date: Wed, 18 May 2022 19:07:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yzx/escreen/MainActivity.kt | 27 +++++++++++--- .../com/yzx/escreen/config/RefreshToken.kt | 35 ++++++++++++++++++- .../com/yzx/escreen/config/YzxInterface.kt | 2 +- .../yzx/escreen/fragment/ChangeFragment.kt | 1 + .../com/yzx/escreen/fragment/HomeFragment.kt | 3 +- .../com/yzx/escreen/fragment/MyFragment.kt | 7 +++- .../main/java/com/yzx/escreen/model/User.kt | 5 +++ .../yzx/escreen/presenter/ChangePresenter.kt | 6 ++-- .../yzx/escreen/presenter/HomePresenter.kt | 10 +++--- .../yzx/escreen/presenter/MainPresenter.kt | 4 +-- .../com/yzx/escreen/presenter/MyPresenter.kt | 6 ++-- .../escreen/presenter/base/JsonCallBack.java | 32 +++++++++++++---- .../java/com/yzx/escreen/utils/FileUpload.kt | 2 +- app/src/main/res/layout/fragment_change.xml | 3 +- 14 files changed, 111 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/yzx/escreen/MainActivity.kt b/app/src/main/java/com/yzx/escreen/MainActivity.kt index 0355f61..4879380 100644 --- a/app/src/main/java/com/yzx/escreen/MainActivity.kt +++ b/app/src/main/java/com/yzx/escreen/MainActivity.kt @@ -40,13 +40,10 @@ import com.yzx.escreen.fragment.MyFragment import com.yzx.escreen.model.* import com.yzx.escreen.presenter.MainPresenter import com.yzx.escreen.presenter.MainView -import com.yzx.escreen.presenter.base.JsonCallBack -import com.yzx.escreen.presenter.base.YzxResponse import com.yzx.escreen.utils.hideNavigationBar import com.yzx.escreen.widget.BaseDialog import com.yzx.escreen.widget.ChangeDialog import com.yzx.escreen.widget.LeaveDialog -import com.yzx.webebook.config.YzxInterface import kotlinx.android.synthetic.main.activity_main.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -78,8 +75,15 @@ class MainActivity : BaseActivity(), NetworkUtils.OnNetworkStatus private val mHandler = Handler(Looper.getMainLooper()) private val runnable = object : Runnable { override fun run() { - mPresenter?.getLeaveShowIds() - mHandler.postDelayed(this, 2000) + val isAutoShowLeave = SPUtils.getInstance().getBoolean("auto_show_leave", false) + val isAutoShowChange = SPUtils.getInstance().getBoolean("auto_show_change", false) + if (isAutoShowLeave || isAutoShowChange) { + mPresenter?.getLeaveShowIds() + mHandler.postDelayed(this, 2000) + } else { + mHandler.removeCallbacks(this) + } + } } @@ -105,6 +109,10 @@ class MainActivity : BaseActivity(), NetworkUtils.OnNetworkStatus checkVersion() checkAuto() } + + override fun onError() { + + } }) }else{ checkVersion() @@ -112,6 +120,10 @@ class MainActivity : BaseActivity(), NetworkUtils.OnNetworkStatus RefreshToken.refresh(object :RefreshToken.RefreshCallback{ override fun onSuccess() { } + + override fun onError() { + + } }) } } else { @@ -162,6 +174,11 @@ class MainActivity : BaseActivity(), NetworkUtils.OnNetworkStatus checkAuto() } + override fun onDestroy() { + super.onDestroy() + mTimeHandler.removeCallbacks(timeRunnable) + } + //接收请假消息 @Subscribe(threadMode = ThreadMode.MAIN) fun onMessageEvent(detail: StuLeave) { diff --git a/app/src/main/java/com/yzx/escreen/config/RefreshToken.kt b/app/src/main/java/com/yzx/escreen/config/RefreshToken.kt index d581f7a..6f98cb3 100644 --- a/app/src/main/java/com/yzx/escreen/config/RefreshToken.kt +++ b/app/src/main/java/com/yzx/escreen/config/RefreshToken.kt @@ -1,14 +1,19 @@ package com.yzx.escreen.config +import android.content.Intent +import com.blankj.utilcode.util.ActivityUtils import com.blankj.utilcode.util.LogUtils import com.lzy.okgo.OkGo import com.lzy.okgo.model.Response +import com.yzx.escreen.App.Companion.getContext +import com.yzx.escreen.MainActivity +import com.yzx.escreen.activity.WebActivity +import com.yzx.escreen.config.Config.OA_URL import com.yzx.escreen.model.ReToken import com.yzx.escreen.model.RefreshTokenEvent import com.yzx.escreen.model.User import com.yzx.escreen.presenter.base.JsonCallBack import com.yzx.escreen.presenter.base.YzxResponse -import com.yzx.webebook.config.YzxInterface import org.greenrobot.eventbus.EventBus import java.util.* @@ -41,13 +46,41 @@ object RefreshToken { override fun onError(response: Response>?) { super.onError(response) LogUtils.d(response) + User.clearUserInfo() + val intent = Intent(getContext(), WebActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("link", OA_URL + "/login?logout=1") + ActivityUtils.startActivity(intent) + ActivityUtils.finishActivity(MainActivity::class.java) + callBack.onError() } }) + }else{ + User.clearUserInfo() + val intent = Intent(getContext(), WebActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("link", OA_URL + "/login?logout=1") + ActivityUtils.startActivity(intent) + ActivityUtils.finishActivity(MainActivity::class.java) + callBack.onError() + } + }else{ + if (currTime - lastLoginTime > 365L * 24 * 60 * 60 * 1000){ + User.clearUserInfo() + val intent = Intent(getContext(), WebActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + intent.putExtra("link", OA_URL + "/login?logout=1") + ActivityUtils.startActivity(intent) + ActivityUtils.finishActivity(MainActivity::class.java) + callBack.onError() + }else{ + callBack.onSuccess() } } } interface RefreshCallback{ fun onSuccess() + fun onError() } } \ No newline at end of file diff --git a/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt b/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt index 6dc67c0..c92f3e3 100644 --- a/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt +++ b/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt @@ -1,4 +1,4 @@ -package com.yzx.webebook.config +package com.yzx.escreen.config object YzxInterface { diff --git a/app/src/main/java/com/yzx/escreen/fragment/ChangeFragment.kt b/app/src/main/java/com/yzx/escreen/fragment/ChangeFragment.kt index 11f7730..1c439ef 100644 --- a/app/src/main/java/com/yzx/escreen/fragment/ChangeFragment.kt +++ b/app/src/main/java/com/yzx/escreen/fragment/ChangeFragment.kt @@ -401,6 +401,7 @@ class ChangeFragment : BaseFragment(), ChangeView, override fun onListError(error: String) { isLoading = false + showEmpty(3) } override fun onDetailSuccess(detail: StuChange) { diff --git a/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt b/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt index aea1006..9003052 100644 --- a/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt +++ b/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt @@ -143,7 +143,7 @@ class HomeFragment : BaseFragment(), HomeView, switchBtn.setOnCheckedChangeListener { buttonView, isChecked -> SPUtils.getInstance().put("auto_show_leave", isChecked) changeSwitchBtnTxt(isChecked) - + EventBus.getDefault().post(AutoSwitchChange(1)) } val isAutoShowLeave = SPUtils.getInstance().getBoolean("auto_show_leave", false) switchBtn.isChecked = isAutoShowLeave @@ -470,6 +470,7 @@ class HomeFragment : BaseFragment(), HomeView, override fun onLeaveListError(error: String) { isLoading = false + showEmpty(3) } override fun onLeaveDetailSuccess(detail: StuLeave) { diff --git a/app/src/main/java/com/yzx/escreen/fragment/MyFragment.kt b/app/src/main/java/com/yzx/escreen/fragment/MyFragment.kt index 885c4e5..7f46e38 100644 --- a/app/src/main/java/com/yzx/escreen/fragment/MyFragment.kt +++ b/app/src/main/java/com/yzx/escreen/fragment/MyFragment.kt @@ -98,7 +98,7 @@ class MyFragment : BaseFragment(), MyView { } override fun initData() { - mPresenter?.getTeacherInfo(User.getUser().user_id) + density.text = "density:${ScreenUtils.getScreenDensity()},dpi:${ScreenUtils.getScreenDensityDpi()}" @@ -111,6 +111,11 @@ class MyFragment : BaseFragment(), MyView { } } + override fun onResume() { + super.onResume() + mPresenter?.getTeacherInfo(User.getUser().user_id) + } + override fun initPresenter(): MyPresenter = MyPresenter(this) override fun onUserInfoSuccess(info: TeacherInfo) { userName.text = info.teacher_name diff --git a/app/src/main/java/com/yzx/escreen/model/User.kt b/app/src/main/java/com/yzx/escreen/model/User.kt index 68151ee..71dce3e 100644 --- a/app/src/main/java/com/yzx/escreen/model/User.kt +++ b/app/src/main/java/com/yzx/escreen/model/User.kt @@ -62,6 +62,11 @@ class User( SPUtils.getInstance().put("unit_count", count); } + fun saveLastLoginTime(time:Long){ + val sp = SPUtils.getInstance() + sp.put("loginTime", time) + } + fun clearUserInfo() { val sp = SPUtils.getInstance() sp.remove("user_name") diff --git a/app/src/main/java/com/yzx/escreen/presenter/ChangePresenter.kt b/app/src/main/java/com/yzx/escreen/presenter/ChangePresenter.kt index 6243cdc..d20c3ee 100644 --- a/app/src/main/java/com/yzx/escreen/presenter/ChangePresenter.kt +++ b/app/src/main/java/com/yzx/escreen/presenter/ChangePresenter.kt @@ -6,13 +6,13 @@ import com.lzy.okgo.model.Response import com.yzx.escreen.config.Config import com.yzx.escreen.model.* import com.yzx.escreen.presenter.base.* -import com.yzx.webebook.config.YzxInterface +import com.yzx.escreen.config.YzxInterface class ChangePresenter(view: ChangeView) : BasePresenter(view) { fun getList(pageNo: Int, keyword: String, status: String) { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_CHANGE_LIST}" @@ -40,7 +40,7 @@ class ChangePresenter(view: ChangeView) : BasePresenter(view) { }) } fun getDetail(id: Int) { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_CHANGE_DETAIL}" diff --git a/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt b/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt index f48bc31..9f4b82e 100644 --- a/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt +++ b/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt @@ -6,13 +6,13 @@ import com.lzy.okgo.model.Response import com.yzx.escreen.config.Config import com.yzx.escreen.model.* import com.yzx.escreen.presenter.base.* -import com.yzx.webebook.config.YzxInterface +import com.yzx.escreen.config.YzxInterface class HomePresenter(view: HomeView) : BasePresenter(view) { fun getLeaveList(pageNo: Int, keyword: String, status: String) { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_LIST}" @@ -40,7 +40,7 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { }) } fun getLeaveShowIds() { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_SHOW_BOX_LIST}" @@ -63,7 +63,7 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { } fun getDetail(id: Int) { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_INFO_DETAIL}" @@ -89,7 +89,7 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { } fun postVacation(data:Vacation){ - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_POST_LEAVE_VACATION}" diff --git a/app/src/main/java/com/yzx/escreen/presenter/MainPresenter.kt b/app/src/main/java/com/yzx/escreen/presenter/MainPresenter.kt index ecd44be..3f8d7dd 100644 --- a/app/src/main/java/com/yzx/escreen/presenter/MainPresenter.kt +++ b/app/src/main/java/com/yzx/escreen/presenter/MainPresenter.kt @@ -10,14 +10,14 @@ import com.yzx.escreen.presenter.base.BasePresenter import com.yzx.escreen.presenter.base.IView import com.yzx.escreen.presenter.base.JsonCallBack import com.yzx.escreen.presenter.base.YzxResponse -import com.yzx.webebook.config.YzxInterface +import com.yzx.escreen.config.YzxInterface class MainPresenter(view: MainView) : BasePresenter(view) { fun getLeaveShowIds() { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_SHOW_BOX_LIST}" diff --git a/app/src/main/java/com/yzx/escreen/presenter/MyPresenter.kt b/app/src/main/java/com/yzx/escreen/presenter/MyPresenter.kt index c8ada1f..efb1740 100644 --- a/app/src/main/java/com/yzx/escreen/presenter/MyPresenter.kt +++ b/app/src/main/java/com/yzx/escreen/presenter/MyPresenter.kt @@ -4,11 +4,9 @@ import com.blankj.utilcode.util.LogUtils import com.lzy.okgo.OkGo import com.lzy.okgo.model.Response import com.yzx.escreen.config.Config -import com.yzx.escreen.model.Pager -import com.yzx.escreen.model.StuLeave import com.yzx.escreen.model.TeacherInfo import com.yzx.escreen.model.User -import com.yzx.webebook.config.YzxInterface +import com.yzx.escreen.config.YzxInterface import com.yzx.escreen.presenter.base.BasePresenter import com.yzx.escreen.presenter.base.IView import com.yzx.escreen.presenter.base.JsonCallBack @@ -18,7 +16,7 @@ class MyPresenter(view: MyView) : BasePresenter(view) { fun getTeacherInfo(user_id: Int) { - if(!User.isLogin()){ + if(User.getUser().token.isEmpty()){ return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_TEACHER_INFO}" diff --git a/app/src/main/java/com/yzx/escreen/presenter/base/JsonCallBack.java b/app/src/main/java/com/yzx/escreen/presenter/base/JsonCallBack.java index 0e5ab6d..f0b93bb 100644 --- a/app/src/main/java/com/yzx/escreen/presenter/base/JsonCallBack.java +++ b/app/src/main/java/com/yzx/escreen/presenter/base/JsonCallBack.java @@ -4,6 +4,7 @@ import android.content.Intent; import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.AppUtils; +import com.blankj.utilcode.util.LogUtils; import com.google.gson.stream.JsonReader; import com.lzy.okgo.callback.AbsCallback; import com.lzy.okgo.model.HttpHeaders; @@ -12,6 +13,7 @@ import com.yzx.escreen.App; import com.yzx.escreen.MainActivity; import com.yzx.escreen.activity.WebActivity; import com.yzx.escreen.config.Config; +import com.yzx.escreen.config.RefreshToken; import com.yzx.escreen.model.User; import com.yzx.escreen.utils.Monitor; @@ -21,6 +23,7 @@ import org.json.JSONObject; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.util.Date; import okhttp3.Response; import okhttp3.ResponseBody; @@ -145,12 +148,29 @@ public abstract class JsonCallBack extends AbsCallback { //noinspection unchecked return (T) yzxResponse; } else if (code == 406) { - User.Companion.clearUserInfo(); - Intent intent = new Intent(App.Companion.getContext(),WebActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra("link", Config.INSTANCE.getOA_URL()+"/login?logout=1"); - ActivityUtils.startActivity(intent); - ActivityUtils.finishActivity(MainActivity.class); + long currTime = new Date().getTime(); + User.Companion.saveLastLoginTime(currTime - 24*60*60*1000L); + RefreshToken.INSTANCE.refresh(new RefreshToken.RefreshCallback() { + @Override + public void onSuccess() { + LogUtils.d("onSuccess"); + Intent intent = new Intent(App.Companion.getContext(),MainActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + ActivityUtils.finishActivity(MainActivity.class); + ActivityUtils.startActivity(intent); + } + + @Override + public void onError() { + LogUtils.d("onError"); + User.Companion.clearUserInfo(); + Intent intent = new Intent(App.Companion.getContext(),WebActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra("link", Config.INSTANCE.getOA_URL()+"/login?logout=1"); + ActivityUtils.startActivity(intent); + ActivityUtils.finishActivity(MainActivity.class); + } + }); throw new IllegalStateException("错误代码:" + code + ",错误信息:" + yzxResponse.msg); } else { // 直接将服务端的错误信息抛出,onError中可以获取 diff --git a/app/src/main/java/com/yzx/escreen/utils/FileUpload.kt b/app/src/main/java/com/yzx/escreen/utils/FileUpload.kt index f43e010..e973d45 100644 --- a/app/src/main/java/com/yzx/escreen/utils/FileUpload.kt +++ b/app/src/main/java/com/yzx/escreen/utils/FileUpload.kt @@ -4,7 +4,7 @@ import com.lzy.okgo.OkGo import com.lzy.okgo.callback.StringCallback import com.lzy.okgo.model.Response import com.yzx.escreen.model.User -import com.yzx.webebook.config.YzxInterface +import com.yzx.escreen.config.YzxInterface import org.json.JSONObject import java.io.File diff --git a/app/src/main/res/layout/fragment_change.xml b/app/src/main/res/layout/fragment_change.xml index de2cbf0..0993952 100644 --- a/app/src/main/res/layout/fragment_change.xml +++ b/app/src/main/res/layout/fragment_change.xml @@ -14,8 +14,7 @@ android:background="@color/white" android:gravity="center_vertical" android:orientation="horizontal" - android:padding="30dp" - android:paddingStart="@dimen/d_20"> + android:padding="30dp">