Browse Source

1.添加登录接口

王鹏鹏 2 years ago
parent
commit
bd82313c93

+ 2 - 2
app/src/main/java/com/yingyangfly/MainActivity.kt

@@ -12,7 +12,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         if (CommonConfig.SINGLE_MODULE.not()) {
-            JumpUtil.jumpActivity(RouterUrlCommon.workbenches)
+            JumpUtil.jumpActivity(RouterUrlCommon.login)
             finish()
         }
         super.onCreate(savedInstanceState)
@@ -28,7 +28,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
              * 设置
              */
             settingBtn.setOnSingleClickListener {
-                JumpUtil.jumpActivity(RouterUrlCommon.setting)
+                JumpUtil.jumpActivity(RouterUrlCommon.login)
             }
 
             /**

+ 3 - 2
baselib/build.gradle

@@ -33,7 +33,7 @@ android {
             minifyEnabled false
             buildConfigField "Boolean", "SINGLE_MODULE", "${singleModule}"
             buildConfigField "String", "BUGLY_APPID", "\"ad3db4d529\""
-            buildConfigField "String", "API_URL", "\"http://60.205.201.7:8110\""
+            buildConfigField "String", "API_URL", "\"http://192.168.0.118:8110\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
 
@@ -41,7 +41,7 @@ android {
             minifyEnabled false
             buildConfigField "Boolean", "SINGLE_MODULE", "${singleModule}"
             buildConfigField "String", "BUGLY_APPID", "\"ad3db4d529\""
-            buildConfigField "String", "API_URL", "\"http://60.205.201.7:8110\""
+            buildConfigField "String", "API_URL", "\"http://192.168.0.118:8110\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
     }
@@ -117,4 +117,5 @@ dependencies {
     api(rootProject.ext.dependencies.live_event_bus_x)
     api(rootProject.ext.dependencies.glide)
     kapt(rootProject.ext.dependencies.glide_compiler)
+    api( rootProject.ext.dependencies.mmkv_ktx )
 }

+ 1 - 0
baselib/src/main/java/com/yingyangfly/baselib/net/BaseNetWork.kt

@@ -45,6 +45,7 @@ object BaseNetWork {
                 val newOriginal = addParam(original)
                 val request = newOriginal.newBuilder()
                     .header("Content-Type", "application/json")
+                    .header("app-header", "android")
                     .method(newOriginal.method, newOriginal.body)
                     .build()
                 val response = chain.proceed(request)

+ 9 - 0
baselib/src/main/java/com/yingyangfly/baselib/net/CommonInterfaceRequestBean.kt

@@ -0,0 +1,9 @@
+package com.yingyangfly.baselib.net
+
+/**
+ * 通用接口请求参数
+ */
+class CommonInterfaceRequestBean {
+
+    var token: String? = null//用户token
+}

+ 5 - 0
baselib/src/main/java/com/yingyangfly/baselib/router/RouterUrlCommon.kt

@@ -5,6 +5,11 @@ package com.yingyangfly.baselib.router
  */
 object RouterUrlCommon {
 
+    /**
+     * 登录
+     */
+    const val login = "/login/login"
+
     /**
      * base WebView路径, 该WebView只适合没有与H5交互的H5页面
      */

+ 73 - 0
baselib/src/main/java/com/yingyangfly/baselib/utils/Preferences.kt

@@ -0,0 +1,73 @@
+package com.yingyangfly.baselib.utils
+
+import android.os.Parcelable
+import com.tencent.mmkv.MMKV
+
+/**
+ * @author gold
+ * @date 2022/9/6 下午6:31
+ * @copyright (C) 2019-2022, XiaoLiu All Rights Reserved
+ * @description MMKV二次封装
+ */
+object Preferences {
+    init {
+        MMKV.initialize(AppUtil.getContext().applicationContext)
+    }
+
+    fun put(key: String, value: Any?) {
+        when (value) {
+            is String -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is Int -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is Long -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is Float -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is Boolean -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is Double -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is ByteArray -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+            is Parcelable -> {
+                MMKV.defaultMMKV().encode(key, value)
+            }
+        }
+    }
+
+    fun getString(key: String): String? {
+        return MMKV.defaultMMKV().decodeString(key)
+    }
+
+    fun putParcelable(key: String, value: Parcelable) {
+        MMKV.defaultMMKV().encode(key, value)
+    }
+
+    inline fun <reified T : Parcelable> getParcelable(key: String): T? {
+        return MMKV.defaultMMKV().decodeParcelable(key, T::class.java)
+    }
+
+    fun getBool(key: String, defaultValue: Boolean): Boolean {
+        return MMKV.defaultMMKV().decodeBool(key, defaultValue)
+    }
+
+    fun getBool(key: String): Boolean {
+        return getBool(key, false)
+    }
+
+    fun clearAll() {
+        MMKV.defaultMMKV().clearAll()
+    }
+
+    fun clearByKey(key: String) {
+        MMKV.defaultMMKV().removeValueForKey(key)
+    }
+}

+ 3 - 3
login/src/main/java/com/yingyang/login/net/LoginApiService.kt

@@ -9,8 +9,8 @@ interface LoginApiService {
     /**
      * 获取首页游戏列表
      */
-    @POST("game/list")
-    suspend fun getGameList(
+    @POST("login")
+    suspend fun login(
         @Body requestBody: RequestBody
-    ): BaseResp<Unit>
+    ): BaseResp<String>
 }

+ 19 - 4
login/src/main/java/com/yingyang/login/ui/login/LoginActivity.kt

@@ -1,19 +1,34 @@
 package com.yingyang.login.ui.login
 
-import com.yingyang.personalcenter.databinding.ActivityLoginBinding
-import com.yingyangfly.baselib.base.BaseActivity
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.yingyang.login.databinding.ActivityLoginBinding
+import com.yingyangfly.baselib.ext.toast
+import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
+import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.baselib.utils.JumpUtil
+import com.yingyangfly.baselib.utils.Preferences
 
 /**
  * 登录
  */
-class LoginActivity : BaseActivity<ActivityLoginBinding>() {
+@Route(path = RouterUrlCommon.login)
+class LoginActivity : BaseMVVMActivity<ActivityLoginBinding, LoginViewModel>() {
 
     override fun initViews() {
 
     }
 
     override fun initListener() {
-
+        binding.login.setOnClickListener {
+            viewModel.login("18701938401", "yingyang2023@@!", fail = {
+                it.toast()
+            }, success = {
+                if (it.isNullOrEmpty().not()) {
+                    Preferences.put("token", it)
+                    JumpUtil.jumpActivity(RouterUrlCommon.personalCenter)
+                }
+            })
+        }
     }
 
     override fun initData() {

+ 8 - 0
login/src/main/java/com/yingyang/login/ui/login/LoginRequestBodyBean.kt

@@ -0,0 +1,8 @@
+package com.yingyang.login.ui.login
+
+class LoginRequestBodyBean {
+
+    var loginName: String? = null//用户名
+    var passWord: String? = null//密码
+
+}

+ 32 - 0
login/src/main/java/com/yingyang/login/ui/login/LoginViewModel.kt

@@ -0,0 +1,32 @@
+package com.yingyang.login.ui.login
+
+import com.yingyang.login.net.LOGIN_API
+import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.baselib.utils.GsonUtil
+
+/**
+ * @author gold
+ * @date 2022/9/13 下午6:37
+ * @copyright (C) 2019-2022, XiaoLiu All Rights Reserved
+ * @description 登录页面ViewModel
+ */
+class LoginViewModel : BaseViewModel() {
+
+    fun login(
+        name: String,
+        pwd: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: String) -> Unit)? = null,
+    ) = launchFlow(false) {
+        val requestBean = LoginRequestBodyBean().apply {
+            loginName = name
+            passWord = pwd
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        LOGIN_API.login(body)
+    }.runUI(
+        success,
+        fail
+    )
+}

+ 1 - 1
login/src/main/manifest/AndroidManifest.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yingyang.personalcenter">
+    package="com.yingyang.login">
 
     <application>
         <activity

+ 11 - 18
login/src/main/res/layout/activity_login.xml

@@ -16,10 +16,13 @@
             android:id="@+id/username"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/divider_120px"
             android:layout_marginTop="@dimen/divider_120px"
+            android:layout_marginEnd="@dimen/divider_120px"
             android:hint="@string/prompt_email"
-            android:inputType="textEmailAddress"
+            android:inputType="text"
             android:selectAllOnFocus="true"
+            android:text="18701938401"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
@@ -28,24 +31,27 @@
             android:id="@+id/password"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/divider_120px"
             android:layout_marginTop="@dimen/divider_16px"
+            android:layout_marginEnd="@dimen/divider_120px"
             android:hint="@string/prompt_password"
-            android:imeActionLabel="@string/action_sign_in_short"
             android:imeOptions="actionDone"
             android:inputType="textPassword"
             android:selectAllOnFocus="true"
+            android:text="yingyang2023@@!"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/username" />
 
         <Button
             android:id="@+id/login"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_80px"
             android:layout_gravity="start"
+            android:layout_marginStart="@dimen/divider_120px"
             android:layout_marginTop="@dimen/divider_16px"
+            android:layout_marginEnd="@dimen/divider_120px"
             android:layout_marginBottom="@dimen/divider_64px"
-            android:enabled="false"
             android:text="@string/action_sign_in"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
@@ -53,19 +59,6 @@
             app:layout_constraintTop_toBottomOf="@+id/password"
             app:layout_constraintVertical_bias="0.2" />
 
-        <ProgressBar
-            android:id="@+id/loading"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:layout_marginTop="@dimen/divider_64px"
-            android:layout_marginBottom="@dimen/divider_64px"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="@+id/password"
-            app:layout_constraintStart_toStartOf="@+id/password"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintVertical_bias="0.3" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 </layout>

+ 3 - 8
login/src/main/res/values/strings.xml

@@ -1,11 +1,6 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Strings related to login -->
-    <string name="prompt_email" tools:ignore="ResourceName">Email</string>
-    <string name="prompt_password" tools:ignore="ResourceName">Password</string>
-    <string name="action_sign_in" tools:ignore="ResourceName">Sign in or register</string>
-    <string name="action_sign_in_short" tools:ignore="ResourceName">Sign in</string>
-    <string name="welcome" tools:ignore="ResourceName">"Welcome !"</string>
-    <string name="invalid_username" tools:ignore="ResourceName">Not a valid username</string>
-    <string name="invalid_password" tools:ignore="ResourceName">Password must be >5 characters</string>
-    <string name="login_failed" tools:ignore="ResourceName">"Login failed"</string>
+    <string name="prompt_email" tools:ignore="ResourceName">请输入用户名</string>
+    <string name="prompt_password" tools:ignore="ResourceName">请输入密码</string>
+    <string name="action_sign_in" tools:ignore="ResourceName">登录</string>
 </resources>

+ 6 - 6
module.build.gradle

@@ -50,9 +50,9 @@ android {
             minifyEnabled false // 打开混淆
             shrinkResources false // 是否清理无用资源,依赖于minifyEnabled
             zipAlignEnabled false // 是否启用zipAlign压缩
-            buildConfigField "String", "BAIDU_APPID", "\"37371987\""
-            buildConfigField "String", "BAIDU_APPKEY", "\"RzdZg1lVNxAB1NpQi0SSwLIe\""
-            buildConfigField "String", "BAIDU_SECRETKEY", "\"4AfYdqAyA9PtLOoNFFsyUogDfxoMBmqS\""
+//            buildConfigField "String", "BAIDU_APPID", "\"37371987\""
+//            buildConfigField "String", "BAIDU_APPKEY", "\"RzdZg1lVNxAB1NpQi0SSwLIe\""
+//            buildConfigField "String", "BAIDU_SECRETKEY", "\"4AfYdqAyA9PtLOoNFFsyUogDfxoMBmqS\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
             debuggable true
         }
@@ -60,9 +60,9 @@ android {
             minifyEnabled false // 打开混淆
             shrinkResources false // 是否清理无用资源,依赖于minifyEnabled
             zipAlignEnabled false // 是否启用zipAlign压缩
-            buildConfigField "String", "BAIDU_APPID", "\"37371987\""
-            buildConfigField "String", "BAIDU_APPKEY", "\"RzdZg1lVNxAB1NpQi0SSwLIe\""
-            buildConfigField "String", "BAIDU_SECRETKEY", "\"4AfYdqAyA9PtLOoNFFsyUogDfxoMBmqS\""
+//            buildConfigField "String", "BAIDU_APPID", "\"37371987\""
+//            buildConfigField "String", "BAIDU_APPKEY", "\"RzdZg1lVNxAB1NpQi0SSwLIe\""
+//            buildConfigField "String", "BAIDU_SECRETKEY", "\"4AfYdqAyA9PtLOoNFFsyUogDfxoMBmqS\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
             debuggable true
         }