package com.sinata.xqmuse.ui.login
|
|
import android.annotation.SuppressLint
|
import android.app.Activity
|
import android.content.Intent
|
import android.os.CountDownTimer
|
import android.provider.Settings
|
import android.text.method.HideReturnsTransformationMethod
|
import android.text.method.PasswordTransformationMethod
|
import android.util.TypedValue
|
import android.view.View
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.*
|
import cn.sinata.xldutils.visible
|
import com.sinata.xqmuse.BuildConfig
|
import com.sinata.xqmuse.MainActivity
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.dialog.LoginRuleDialog
|
import com.sinata.xqmuse.dialog.LoginRulesDialog
|
import com.sinata.xqmuse.dialog.TipDialog
|
import com.sinata.xqmuse.dialog.UserRuleDialog
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.H5Activity
|
import com.sinata.xqmuse.ui.TransparentStatusBarActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.event.EmptyEvent
|
import com.sinata.xqmuse.utils.extention.clickDelay
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import com.umeng.socialize.UMAuthListener
|
import com.umeng.socialize.UMShareAPI
|
import com.umeng.socialize.UMShareConfig
|
import com.umeng.socialize.bean.SHARE_MEDIA
|
import kotlinx.android.synthetic.main.activity_login.*
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.sdk27.coroutines.onClick
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.startActivityForResult
|
import org.jetbrains.anko.textColorResource
|
|
@SuppressLint("HardwareIds")
|
class LoginActivity : TransparentStatusBarActivity(), UMAuthListener {
|
override fun setContentView() = R.layout.activity_login
|
|
private lateinit var timer: CountDownTimer
|
|
//三方登录获得参数
|
private var openid: String? = null
|
private var phone: String? = null
|
|
private var user = ""
|
private var privacy = ""
|
|
private val device by lazy {
|
Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
|
}
|
|
@SuppressLint("CheckResult")
|
override fun initClick() {
|
cb_pwd.setOnClickListener {
|
switchType(1)
|
}
|
cb_code.setOnClickListener {
|
switchType(2)
|
}
|
cb_pwd_visible.setOnCheckedChangeListener { _, isChecked ->
|
if (isChecked)
|
et_pwd.transformationMethod = HideReturnsTransformationMethod.getInstance()
|
else
|
et_pwd.transformationMethod = PasswordTransformationMethod.getInstance()
|
et_pwd.setSelection(et_pwd.text.length)
|
}
|
|
tv_wx.onClick {
|
if (!cb_rule.isChecked) {
|
myToast("请阅读并同意用户协议和隐私协议")
|
return@onClick
|
}
|
thirdAuth()
|
}
|
|
tv_register.onClick {
|
startActivityForResult<RegisterActivity>(200,"type" to RegisterActivity.TYPE_REGISTER)
|
}
|
|
tv_forget.setOnClickListener {
|
startActivity<ForgetActivity>()
|
}
|
|
tv_code.onClick {
|
val phone = et_phone.text.toString()
|
if (!phone.isValidPhone())
|
myToast("请输入正确的手机号")
|
else {
|
tv_code.isEnabled = false
|
HttpManager.getCode(phone, 2).request(this@LoginActivity, success = { _, _ ->
|
timer.start()
|
}) { _, _ ->
|
tv_code.isEnabled = true
|
}
|
}
|
}
|
|
tv_action.onClick {
|
if (!cb_rule.isChecked) {
|
myToast("请阅读并同意用户协议和隐私协议")
|
return@onClick
|
}
|
val phone = et_phone.text.toString()
|
if (!phone.isValidPhone()) {
|
myToast("请输入正确的手机号")
|
return@onClick
|
}
|
if (iv_tab_2.visibility == View.VISIBLE)
|
loginByCode()
|
else
|
loginByPwd()
|
}
|
|
tv_privacy_rule.clickDelay {
|
if (user.isNotEmpty()&&privacy.isNotEmpty())
|
LoginRulesDialog.show(supportFragmentManager,privacy,user,1,object :StringCallback{
|
override fun onResult(rst: String) {
|
cb_rule.isChecked = rst.isNotEmpty()
|
}
|
})
|
}
|
|
tv_user_rule.clickDelay {
|
if (user.isNotEmpty()&&privacy.isNotEmpty())
|
LoginRulesDialog.show(supportFragmentManager,privacy,user,0,object :StringCallback{
|
override fun onResult(rst: String) {
|
cb_rule.isChecked = rst.isNotEmpty()
|
}
|
})
|
}
|
}
|
|
|
private fun switchType(i:Int){
|
if (i == 1){
|
cb_pwd.setTextSize(TypedValue.COMPLEX_UNIT_SP,18f)
|
cb_code.setTextSize(TypedValue.COMPLEX_UNIT_SP,14f)
|
cb_pwd.textColorResource = R.color.textColor
|
cb_code.textColorResource = R.color.textColor99
|
iv_tab_1.visible()
|
iv_tab_2.gone()
|
gp_pwd.visible()
|
gp_code.gone()
|
}else{
|
cb_pwd.setTextSize(TypedValue.COMPLEX_UNIT_SP,14f)
|
cb_code.setTextSize(TypedValue.COMPLEX_UNIT_SP,18f)
|
cb_pwd.textColorResource = R.color.textColor99
|
cb_code.textColorResource = R.color.textColor
|
iv_tab_1.gone()
|
iv_tab_2.visible()
|
gp_pwd.gone()
|
gp_code.visible()
|
}
|
}
|
|
override fun initView() {
|
titleBar.gone()
|
useWhiteTitle()
|
timer = object : CountDownTimer(60000, 1000) {
|
override fun onFinish() {
|
tv_code.isEnabled = true
|
tv_code.text = "重新获取"
|
}
|
|
override fun onTick(millisUntilFinished: Long) {
|
tv_code.text = "${millisUntilFinished / 1000}s后可重新获取"
|
}
|
}
|
if (BuildConfig.DEBUG){
|
et_phone.setText("18583738369")
|
et_pwd.setText("123456ABC")
|
et_code.setText("123456")
|
}
|
getRules()
|
}
|
|
private fun getRules() {
|
HttpManager.getH5(LoginRuleDialog.TYPE_PRIVACY).request(this){ _, data->
|
privacy = data?.content?:""
|
}
|
HttpManager.getH5(LoginRuleDialog.TYPE_USER).request(this){ _, data->
|
user = data?.content?:""
|
}
|
}
|
|
private fun thirdAuth() {
|
val umShareConfig = UMShareConfig()
|
umShareConfig.isNeedAuthOnGetUserInfo(true)
|
UMShareAPI.get(this).setShareConfig(umShareConfig)
|
UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.WEIXIN, this)
|
}
|
|
private fun loginByPwd() {
|
val pwd = et_pwd.text.toString()
|
if (pwd.length < 6) {
|
myToast("密码不能少于6位")
|
return
|
}
|
tv_action.isEnabled = false
|
HttpManager.userLogin(pwd.md5(), et_phone.text.toString())
|
.request(this,false, success = { _, data ->
|
data?.let {
|
loginSuccess(it.accessToken)
|
}
|
}, error = { _, msg ->
|
tv_action.isEnabled = true
|
loginFailed(msg)
|
})
|
}
|
|
private fun loginByCode() {
|
val code = et_code.text.toString()
|
if (code.length < 6) {
|
myToast("请输入6位验证码")
|
return
|
}
|
|
tv_action.isEnabled = false
|
HttpManager.captchaLogin(device,code, et_phone.text.toString())
|
.request(this, success = { _, data ->
|
data?.let {
|
loginSuccess(it.accessToken)
|
}
|
}, error = { _, msg ->
|
tv_action.isEnabled = true
|
loginFailed(msg)
|
})
|
}
|
|
|
private fun loginSuccess(token: String) {
|
SPUtils.instance().put(Const.User.TOKEN, token).apply()
|
startActivity<MainActivity>()
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_USER))
|
finish()
|
}
|
|
private fun loginFailed(msg:String){
|
if (msg.contains("冻结")||msg.contains("最多")){
|
TipDialog.show(supportFragmentManager,msg,object : TipDialog.OnClickCallback{
|
override fun onOk() {
|
|
}
|
|
override fun onCancel() {
|
}
|
},"关闭",isAlert = true)
|
}else
|
myToast(msg)
|
}
|
|
override fun onComplete(p0: SHARE_MEDIA?, p1: Int, p2: MutableMap<String, String>?) {
|
showDialog()
|
phone = p2?.get("phone")
|
openid = p2?.get("openid")
|
val avatar = p2?.get("profile_image_url")
|
val gender = p2?.get("gender")
|
val nickname = p2?.get("name")
|
HttpManager.wxLogin(device,openid, nickname,if (gender == "0") 1 else 2,avatar).request(this,false,{ _, data ->
|
data?.let {
|
if (it.bindStatus ==1){
|
startActivityForResult<BindPhoneActivity>(200,"token" to it.accessToken,"openid" to openid)
|
}else
|
loginSuccess(it.accessToken)
|
}
|
}) {_,msg->
|
loginFailed(msg)
|
}
|
}
|
|
override fun onCancel(p0: SHARE_MEDIA?, p1: Int) {
|
}
|
|
override fun onError(p0: SHARE_MEDIA?, p1: Int, p2: Throwable?) {
|
myToast("授权失败:" + p2?.message)
|
}
|
|
override fun onStart(p0: SHARE_MEDIA?) {
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
when(requestCode){
|
200->{
|
if (resultCode == Activity.RESULT_OK)
|
loginSuccess(data?.getStringExtra("token")?:"")
|
}
|
else->UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data)
|
|
}
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
timer.cancel()
|
}
|
}
|