Browse Source

接入获取用户信息接口;根据用户角色动态调整首页显示内容

Frankensteinly 9 tháng trước cách đây
mục cha
commit
d1df6fb853

+ 5 - 0
app/src/main/java/com/grkj/iscs/model/UrlConsts.kt

@@ -191,4 +191,9 @@ object UrlConsts {
      * 共锁人上锁/解锁
      */
     const val UPDATE_COLOCKER_STATUS = "/iscs/hardware-api/updateColockerStatus"
+
+    /**
+     * 获取用户信息
+     */
+    const val GET_USER_INFO = "/getInfo"
 }

+ 127 - 0
app/src/main/java/com/grkj/iscs/model/vo/user/UserInfoRespVO.kt

@@ -0,0 +1,127 @@
+package com.grkj.iscs.model.vo.user
+
+import java.io.Serializable
+
+data class UserInfoRespVO(
+    val code: Int?,
+
+    val msg: String?,
+
+    val permissions: MutableList<String>?,
+
+    val roles: MutableList<String>?,
+
+    val user: SysUserVO?
+) : Serializable {
+    data class SysUserVO(
+        val userId: Long?,
+
+        val deptId: Long?,
+
+        val userName: String?,
+
+        val nickName: String?,
+
+        val email: String?,
+
+        val phonenumber: String?,
+
+        val sex: String?,
+
+        val avatar: String?,
+
+        val password: String?,
+
+        val salt: String?,
+
+        val status: String?,
+
+        val delFlag: String?,
+
+        val loginIp: String?,
+
+        val loginDate: String?,
+
+        val dept: SysDeptVO?,
+
+        val roles: List<SysRole>?,
+
+        val roleIds: MutableList<Long>?,
+
+        val postIds: MutableList<Long>?,
+
+        val workstationIds: MutableList<Long>?,
+
+        val unitIds: MutableList<Long>?,
+
+        val roleId: Long?,
+
+        val roleKey: String?,
+
+        val unitId: Long?,
+
+        val workstationId: Long?,
+
+        val unitName: String?,
+
+        val roleName: String?,
+
+        val userIds: Set<Long>?,
+
+        val b: Boolean?
+    ) : Serializable {
+        data class SysRole(
+            val roleId: Long?,
+
+            val roleName: String?,
+
+            val roleKey: String?,
+
+            val roleSort: String?,
+
+            val dataScope: String?,
+
+            val marsDataScope: String?,
+
+            val menuCheckStrictly: Boolean?,
+
+            val deptCheckStrictly: Boolean?,
+
+            val status: String?,
+
+            val delFlag: String?,
+
+            val flag: Boolean?,
+
+            val menuIds: List<Long>,
+
+            val deptIds: List<Long>,
+
+            val workstationIds: List<Long>
+        ) : Serializable
+
+        data class SysDeptVO(
+            val deptId: Long?,
+
+            val parentId: Long?,
+
+            val ancestors: String?,
+
+            val deptName: String?,
+
+            val orderNum: String?,
+
+            val leader: String?,
+
+            val phone: String?,
+
+            val email: String?,
+
+            val status: String?,
+
+            val delFlag: String?,
+
+            val parentName: String?
+        ) : Serializable
+    }
+}

+ 17 - 0
app/src/main/java/com/grkj/iscs/util/NetApi.kt

@@ -24,6 +24,7 @@ import com.grkj.iscs.model.vo.ticket.TicketTypeRespVO
 import com.grkj.iscs.model.vo.ticket.TicketUserReqVO
 import com.grkj.iscs.model.vo.ticket.WorkstationTicketListRespVO
 import com.grkj.iscs.model.vo.user.RoleListRespVO
+import com.grkj.iscs.model.vo.user.UserInfoRespVO
 import com.grkj.iscs.model.vo.user.UserListRespVO
 
 /**
@@ -728,4 +729,20 @@ object NetApi {
             }, isGet = false, isAuth = true
         )
     }
+
+    /**
+     * 获取用户信息
+     */
+    fun getUserInfo(callBack: (UserInfoRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.GET_USER_INFO,
+            false,
+            mapOf<String, String>(),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(it.toBean(UserInfoRespVO::class.java))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }

+ 21 - 7
app/src/main/java/com/grkj/iscs/view/activity/HomeActivity.kt

@@ -8,6 +8,13 @@ import com.grkj.iscs.R
 import com.grkj.iscs.databinding.ActivityHomeBinding
 import com.grkj.iscs.extentions.toByteArrays
 import com.grkj.iscs.extentions.toHexStrings
+import com.grkj.iscs.model.Constants.USER_ROLE_ADMHDWSETTER
+import com.grkj.iscs.model.Constants.USER_ROLE_ADMHDWTESTER
+import com.grkj.iscs.model.Constants.USER_ROLE_COLOCKER
+import com.grkj.iscs.model.Constants.USER_ROLE_DRAWER
+import com.grkj.iscs.model.Constants.USER_ROLE_GUARD
+import com.grkj.iscs.model.Constants.USER_ROLE_LOCKER
+import com.grkj.iscs.model.vo.user.UserInfoRespVO
 import com.grkj.iscs.view.adapter.MenuAdapter
 import com.grkj.iscs.view.base.BaseFragment
 import com.grkj.iscs.view.base.BaseMvpActivity
@@ -36,13 +43,20 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
     override fun initView() {
         presenter?.registerStatusListener()
 
-        mMenuList = mutableListOf(
-//            Menu(getString(R.string.test), R.mipmap.menu_icon_test, DockTestFragment()),
-//            Menu(getString(R.string.test), R.mipmap.menu_icon_sys_setting, SystemSettingFragment()),
-            Menu(getString(R.string.job_management), R.mipmap.job_management, JobManagementFragment()),
-            Menu(getString(R.string.material_management), R.mipmap.material_management, MaterialManagementFragment()),
-            Menu(getString(R.string.settings), R.mipmap.settings, SettingFragment())
-        )
+        val userInfo = intent.getSerializableExtra("userInfo") as UserInfoRespVO
+        if (userInfo.roles?.any { it == USER_ROLE_DRAWER || it == USER_ROLE_LOCKER || it == USER_ROLE_COLOCKER || it == USER_ROLE_GUARD } == true) {
+            mMenuList.addAll(mutableListOf(
+                Menu(getString(R.string.job_management), R.mipmap.job_management, JobManagementFragment()),
+                Menu(getString(R.string.material_management), R.mipmap.material_management, MaterialManagementFragment())
+            ))
+        }
+        if (userInfo.roles?.any { it == USER_ROLE_ADMHDWTESTER } == true) {
+            mMenuList.add(Menu(getString(R.string.test), R.mipmap.menu_icon_test, DockTestFragment()))
+        }
+        if (userInfo.roles?.any { it == USER_ROLE_ADMHDWSETTER } == true) {
+            mMenuList.add(Menu(getString(R.string.system_setting), R.mipmap.menu_icon_sys_setting, SystemSettingFragment()))
+        }
+        mMenuList.add(Menu(getString(R.string.settings), R.mipmap.settings, SettingFragment()))
 
         mBinding?.itemSetting?.ivIcon?.setImageResource(R.mipmap.settings)
         mBinding?.itemSetting?.tvName?.text = getString(R.string.settings)

+ 4 - 1
app/src/main/java/com/grkj/iscs/view/activity/LoginActivity.kt

@@ -58,12 +58,15 @@ class LoginActivity : BaseMvpActivity<ILoginView, LoginPresenter, ActivityLoginB
      */
     private fun showLoginDialog(loginType: Int) {
         cardLoginDialog ?: run {
-            cardLoginDialog = LoginDialog(presenter, this) { isSuccess, cardInfoRespVO ->
+            cardLoginDialog = LoginDialog(presenter, this) { isSuccess, cardInfoRespVO, userInfoRespVO ->
                 if (isSuccess) {
                     val intent = Intent(this, HomeActivity::class.java)
                     if (cardInfoRespVO != null) {
                         intent.putExtra("cardInfo", cardInfoRespVO)
                     }
+                    if (userInfoRespVO != null) {
+                        intent.putExtra("userInfo", userInfoRespVO)
+                    }
                     startActivity(intent)
                 }
             }

+ 6 - 5
app/src/main/java/com/grkj/iscs/view/dialog/LoginDialog.kt

@@ -9,6 +9,7 @@ import com.grkj.iscs.databinding.DialogLoginBinding
 import com.grkj.iscs.extentions.toByteArrays
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.model.vo.card.CardInfoRespVO
+import com.grkj.iscs.model.vo.user.UserInfoRespVO
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.NetApi
 import com.grkj.iscs.util.SPUtils
@@ -16,7 +17,7 @@ import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.view.base.BaseDialog
 import com.grkj.iscs.view.presenter.LoginPresenter
 
-class LoginDialog(val presenter: LoginPresenter?, val ctx: Context, private var callBack: ((Boolean, CardInfoRespVO?) -> Unit)? = null) :
+class LoginDialog(val presenter: LoginPresenter?, val ctx: Context, private var callBack: ((Boolean, CardInfoRespVO?, UserInfoRespVO?) -> Unit)? = null) :
     BaseDialog<DialogLoginBinding>(ctx) {
 
     private var cardNo = ""
@@ -32,12 +33,12 @@ class LoginDialog(val presenter: LoginPresenter?, val ctx: Context, private var
 
     override fun initView() {
         mBinding?.tvLogin?.setOnClickListener {
-            presenter?.login(ctx, mBinding?.etAccount?.text.toString(), mBinding?.etPassword?.text.toString()) { isSuccess, cardInfoRespVO ->
+            presenter?.login(ctx, mBinding?.etAccount?.text.toString(), mBinding?.etPassword?.text.toString()) { isSuccess, cardInfoRespVO, userInfoRespVO ->
                 Executor.runOnMain {
                     if (isSuccess) {
                         dismiss()
                     }
-                    callBack?.invoke(isSuccess, cardInfoRespVO)
+                    callBack?.invoke(isSuccess, cardInfoRespVO, userInfoRespVO)
                 }
             }
         }
@@ -79,11 +80,11 @@ class LoginDialog(val presenter: LoginPresenter?, val ctx: Context, private var
             // 检测到回车开始处理
             if (event.keyCode == 66) {
                 cardNo = cardNo.toLong().toByteArrays().toHexStrings(false)
-                presenter?.cardLogin(cardNo) { isSuccess, cardInfoRespVO ->
+                presenter?.cardLogin(cardNo) { isSuccess, cardInfoRespVO, userInfoRespVO ->
                     if (isSuccess) {
                         dismiss()
                     }
-                    callBack?.invoke(isSuccess, cardInfoRespVO)
+                    callBack?.invoke(isSuccess, cardInfoRespVO, userInfoRespVO)
                 }
                 // 重置cardNo
                 cardNo = ""

+ 1 - 1
app/src/main/java/com/grkj/iscs/view/fragment/SystemSettingFragment.kt

@@ -55,7 +55,7 @@ class SystemSettingFragment : BaseMvpFragment<ISystemSettingView, SystemSettingP
             override fun convert(holder: ViewHolder, t: DockTestFragment.DockTestBean, position: Int) {
                 mDockTypeList.find { it.type == t.type }?.name?.let {
                     holder.setText(R.id.tv_board, it)
-                }?: {
+                } ?: {
                     holder.setText(R.id.tv_board, "")
                 }
                 holder.setText(R.id.tv_address, byteToHexString(t.address))

+ 18 - 13
app/src/main/java/com/grkj/iscs/view/presenter/LoginPresenter.kt

@@ -8,6 +8,7 @@ import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
 import com.grkj.iscs.model.vo.card.CardInfoRespVO
+import com.grkj.iscs.model.vo.user.UserInfoRespVO
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.NetApi
 import com.grkj.iscs.util.SPUtils
@@ -17,7 +18,7 @@ import com.grkj.iscs.view.iview.ILoginView
 
 class LoginPresenter : BasePresenter<ILoginView>() {
 
-    fun login(context: Context, account: String, pwd: String, callBack: (Boolean, CardInfoRespVO?) -> Unit) {
+    fun login(context: Context, account: String, pwd: String, callBack: (Boolean, CardInfoRespVO?, UserInfoRespVO?) -> Unit) {
         if (account.isEmpty()) {
             ToastUtils.tip(context.getString(R.string.please_input_account))
             return
@@ -27,32 +28,36 @@ class LoginPresenter : BasePresenter<ILoginView>() {
         }
         NetApi.login(account, pwd) {
             if (it == true) {
-                NetApi.getCardInfoByLoginUser { itInfo ->
-                    itInfo?.let { info ->
-                        SPUtils.setLoginUser(mContext!!, info)
+                NetApi.getUserInfo { userInfo ->
+                    NetApi.getCardInfoByLoginUser { itInfo ->
+                        itInfo?.let { info ->
+                            SPUtils.setLoginUser(mContext!!, info)
+                        }
+                        callBack.invoke(it, itInfo, userInfo)
                     }
-                    callBack.invoke(it, itInfo)
                 }
             } else {
-                callBack.invoke(false, null)
+                callBack.invoke(false, null, null)
             }
         }
     }
 
-    fun cardLogin(card: String, callBack: (Boolean, CardInfoRespVO?) -> Unit) {
+    fun cardLogin(card: String, callBack: (Boolean, CardInfoRespVO?, UserInfoRespVO?) -> Unit) {
         NetApi.cardLogin(card) {
             if (it == true) {
-                NetApi.getCardInfoByLoginUser { itInfo ->
-                    Executor.runOnMain {
-                        itInfo?.let { info ->
-                            SPUtils.setLoginUser(mContext!!, info)
+                NetApi.getUserInfo { userInfo ->
+                    NetApi.getCardInfoByLoginUser { itInfo ->
+                        Executor.runOnMain {
+                            itInfo?.let { info ->
+                                SPUtils.setLoginUser(mContext!!, info)
+                            }
+                            callBack.invoke(it, itInfo, userInfo)
                         }
-                        callBack.invoke(it, itInfo)
                     }
                 }
             } else {
                 Executor.runOnMain {
-                    callBack.invoke(false, null)
+                    callBack.invoke(false, null, null)
                 }
             }
         }