lmw
2023-05-12 f67802a41f9e01444d1115f34ecc6e1beb05fc3b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
package com.fuban.user.ui.login
 
import android.app.Activity
import android.content.Intent
import android.os.CountDownTimer
import android.util.Log
import com.fuban.user.ui.TransparentStatusBarActivity
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.*
import cn.sinata.xldutils.visible
import com.flyco.tablayout.listener.CustomTabEntity
import com.flyco.tablayout.listener.OnTabSelectListener
import com.fuban.user.FBApplication
import com.fuban.user.R
import com.fuban.user.network.HttpManager
import com.fuban.user.network.request
import com.fuban.user.ui.H5Activity
import com.fuban.user.utils.Const
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.jetbrains.anko.startActivity
import org.jetbrains.anko.startActivityForResult
 
class LoginActivity : TransparentStatusBarActivity(), UMAuthListener {
    override fun setContentView() = R.layout.activity_login
 
    private val timer by lazy {
        object : CountDownTimer(60000, 1000) {
            override fun onFinish() {
                tv_code.text = "获取验证码"
                tv_code.isEnabled = true
            }
 
            override fun onTick(millisUntilFinished: Long) {
                tv_code.text = "已发送${millisUntilFinished / 1000}s"
            }
        }
    }
 
    private var ip:String? = null   //登录id
 
    override fun initClick() {
        tab_type.setOnTabSelectListener(object :OnTabSelectListener{
            override fun onTabSelect(position: Int) {
                if (position == 0){
                    tv_pwd.isChecked = true
                    tv_pwd.text = "验证码"
                    et_code.visible()
                    tv_code.visible()
                    et_pwd.gone()
                    tv_forget.gone()
                }else{
                    tv_pwd.isChecked = false
                    tv_pwd.text = "密码"
                    et_pwd.visible()
                    et_code.gone()
                    tv_code.gone()
                    tv_forget.visible()
                }
            }
 
            override fun onTabReselect(position: Int) {
            }
        })
 
        tv_code.setOnClickListener {
            val phone = et_phone.text.toString()
            if (!phone.isValidPhone()) {
                myToast("请输入正确的手机号码")
                return@setOnClickListener
            }
            tv_code.isEnabled = false
            HttpManager.sendSms(phone,2).request(this,success = { _, _ ->
                timer.start()
                myToast("发送成功")
            },error = {_,_->
                tv_code.isEnabled = true
            })
        }
 
        tv_forget.setOnClickListener {
            startActivity<ForgetActivity>()
        }
 
        tv_action.setOnClickListener {
            if (!cb_rule.isChecked)
                myToast("请阅读并同意《福伴出行用户服务协议》")
            else{
                val phone = et_phone.text.toString()
                if (!phone.isValidPhone()) {
                    myToast("请输入正确的手机号码")
                    return@setOnClickListener
                }
                if (tab_type.currentTab == 0){
                    val code = et_code.text.toString()
                    if (code.isEmpty()){
                        myToast("请输入验证码")
                        return@setOnClickListener
                    }
                    if (code.length<4) {
                        myToast("请输入4位验证码")
                        return@setOnClickListener
                    }
                    showDialog("登录中...",false)
                    tv_action.isEnabled = false
                    HttpManager.codeLogin(phone,code,FBApplication.chooseCityCode, ip).request(this,success = { _, data->
                        data?.let {
                            SPUtils.instance().put(Const.User.APP_ID,it.optString("appid"))
                                .put(Const.User.TOKEN,it.optString("token"))
                                .put(Const.User.USER_ID,it.optInt("id"))
                                .apply()
                            finish()
                        }
                    },error = {_,_->
                        tv_action.isEnabled = true
                        dismissDialog()
                    })
                }else{
                    val pwd = et_pwd.text.toString()
                    if (pwd.length<6) {
                        myToast("请输入6到18位密码")
                        return@setOnClickListener
                    }
                    showDialog("登录中...",false)
                    tv_action.isEnabled = false
                    HttpManager.pwdLogin(phone,pwd).request(this,success = {_,data->
                        data?.let {
                            SPUtils.instance().put(Const.User.APP_ID,it.optString("appid"))
                                .put(Const.User.TOKEN,it.optString("token"))
                                .put(Const.User.USER_ID,it.optInt("id"))
                                .apply()
                            finish()
                        }
                    },error = {_,_->
                        tv_action.isEnabled = true
                        dismissDialog()
                    })
                }
            }
        }
 
        val config = UMShareConfig()
        config.isNeedAuthOnGetUserInfo(true)
        UMShareAPI.get(this).setShareConfig(config)
        tv_wx.setOnClickListener {
            if (!cb_rule.isChecked)
                myToast("请阅读并同意《福伴出行用户服务协议》")
            else{
 
                UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.WEIXIN, this)
            }
        }
    }
 
    override fun initView() {
        tab_type.setTabData(arrayListOf(object :CustomTabEntity{
            override fun getTabUnselectedIcon() = 0
            override fun getTabSelectedIcon() = 0
            override fun getTabTitle() = "验证码登录"
        },object :CustomTabEntity{
            override fun getTabUnselectedIcon() = 0
            override fun getTabSelectedIcon() = 0
            override fun getTabTitle() = "密码登录"
        }))
        getRule()
    }
 
    private fun getRule(){
        HttpManager.getH5(2).request(this){_,data->
            data?.let {
                tv_rule.setOnClickListener {_->
                    startActivity<H5Activity>("title" to "用户服务协议","url" to it.optString("content"))
                }
            }
        }
    }
 
    override fun onStart(p0: SHARE_MEDIA?) {
        Log.e("mmp","开始了")
    }
 
    override fun onComplete(p0: SHARE_MEDIA?, p1: Int, p2: MutableMap<String, String>?) {
        showDialog()
        HttpManager.wxLogin(p2?.get("openid"),FBApplication.chooseCityCode,p2?.get("unionid"),p2?.get("iconurl"),
            p2?.get("name"),if (p2?.get("gender") == "男") 1 else 2).request(this){_,data->
            data?.let {
                SPUtils.instance().put(Const.User.APP_ID, it.optString("appid"))
                    .put(Const.User.TOKEN, it.optString("token"))
                    .put(Const.User.USER_ID, it.optInt("id")).apply()
                if (it.optInt("phone") != 2){ //没有手机号
                    startActivityForResult<BindPhoneActivity>(1)
                    SPUtils.instance().put(Const.User.NO_PHONE, true).apply()
                }else
                    finish()
            }
        }
    }
 
    override fun onCancel(p0: SHARE_MEDIA?, p1: Int) {
        Log.e("mmp","取消了")
    }
 
    override fun onError(p0: SHARE_MEDIA?, p1: Int, p2: Throwable?) {
        Log.e("mmp","失败了")
        myToast("登录失败 原因:" + p2?.message)
    }
 
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == Activity.RESULT_OK){ //三方登录手机绑定成功
            finish()
        }
    }
}