Commit 6ef43e37 authored by 张释方's avatar 张释方

提交手机号微信登录代码

parent 44a350d4
......@@ -12,9 +12,9 @@ import com.mints.street.bean.VipBean
import com.mints.street.databinding.ItemGridPaymentAdpaterBinding
import me.goldze.mvvmhabit.utils.AppUtils
class GridPaymentAdapter(val context: Context, val list: List<VipBean.ConsumerBean>) : AbstractVLayoutBaseAdapter<ItemGridPaymentAdpaterBinding, List<VipBean.ConsumerBean>>(context, list, 3) {
class GridPaymentAdapter(val context: Context, val list: List<VipBean.ListBean>) : AbstractVLayoutBaseAdapter<ItemGridPaymentAdpaterBinding, List<VipBean.ListBean>>(context, list, 3) {
private var datalist: List<VipBean.ConsumerBean>? = list
private var datalist: List<VipBean.ListBean>? = list
private var mposition: Int = -1
override fun onBindViewHolder(holder: BindingViewHolder<ItemGridPaymentAdpaterBinding>, position: Int) {
......
......@@ -61,11 +61,17 @@ interface MainApi {
* 绑定手机号接口
*/
@POST("api/bindingMobile")
fun bindingMobile(@Body vo:@JvmSuppressWildcards Map<String,Any>):Observable<Response<BaseResponse<BindMobileBean>>>
fun bindingMobile(@Body vo:@JvmSuppressWildcards Map<String,Any>):Observable<Response<BaseResponse<UserBean>>>
/**
* 获取绑定手机号验证码接口
*/
@POST("api/sendMobileBindingCode")
fun sendMobileBindingCode(@Body vo:@JvmSuppressWildcards Map<String,Any>):Observable<Response<BaseResponse<Any>>>
/**
* 微信登录
*/
@POST("api/wechatlogin")
fun wechatlogin(@Body vo:@JvmSuppressWildcards Map<String,Any>): Observable<Response<BaseResponse<UserBean>>>
}
\ No newline at end of file
package com.mints.street.bean;
import java.io.Serializable;
/**
* 第三方登录 微信
*/
public class WXInfo implements Serializable {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.wid
*
* @mbggenerated
*/
private String wid;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.uid
*
* @mbggenerated
*/
private String uid;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.unionid
*
* @mbggenerated
*/
private String unionid;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.openid
*
* @mbggenerated
*/
private String openid;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.nickname
*
* @mbggenerated
*/
private String nickname;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.headimgurl
*
* @mbggenerated
*/
private String headimgurl;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.sex
*
* @mbggenerated
*/
private int sex;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.country
*
* @mbggenerated
*/
private String country;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.province
*
* @mbggenerated
*/
private String province;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column e_wxinfo.city
*
* @mbggenerated
*/
private String city;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.wid
*
* @return the value of e_wxinfo.wid
* @mbggenerated
*/
public String getWid() {
return wid;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.wid
*
* @param wid the value for e_wxinfo.wid
* @mbggenerated
*/
public void setWid(String wid) {
this.wid = wid == null ? null : wid.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.uid
*
* @return the value of e_wxinfo.uid
* @mbggenerated
*/
public String getUid() {
return uid;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.uid
*
* @param uid the value for e_wxinfo.uid
* @mbggenerated
*/
public void setUid(String uid) {
this.uid = uid == null ? null : uid.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.unionid
*
* @return the value of e_wxinfo.unionid
* @mbggenerated
*/
public String getUnionid() {
return unionid;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.unionid
*
* @param unionid the value for e_wxinfo.unionid
* @mbggenerated
*/
public void setUnionid(String unionid) {
this.unionid = unionid == null ? null : unionid.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.openid
*
* @return the value of e_wxinfo.openid
* @mbggenerated
*/
public String getOpenid() {
return openid;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.openid
*
* @param openid the value for e_wxinfo.openid
* @mbggenerated
*/
public void setOpenid(String openid) {
this.openid = openid == null ? null : openid.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.nickname
*
* @return the value of e_wxinfo.nickname
* @mbggenerated
*/
public String getNickname() {
return nickname;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.nickname
*
* @param nickname the value for e_wxinfo.nickname
* @mbggenerated
*/
public void setNickname(String nickname) {
this.nickname = nickname == null ? null : nickname.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.headimgurl
*
* @return the value of e_wxinfo.headimgurl
* @mbggenerated
*/
public String getHeadimgurl() {
return headimgurl;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.headimgurl
*
* @param headimgurl the value for e_wxinfo.headimgurl
* @mbggenerated
*/
public void setHeadimgurl(String headimgurl) {
this.headimgurl = headimgurl == null ? null : headimgurl.trim();
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.country
*
* @return the value of e_wxinfo.country
* @mbggenerated
*/
public String getCountry() {
return country;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.country
*
* @param country the value for e_wxinfo.country
* @mbggenerated
*/
public void setCountry(String country) {
this.country = country == null ? null : country.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.province
*
* @return the value of e_wxinfo.province
* @mbggenerated
*/
public String getProvince() {
return province;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.province
*
* @param province the value for e_wxinfo.province
* @mbggenerated
*/
public void setProvince(String province) {
this.province = province == null ? null : province.trim();
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column e_wxinfo.city
*
* @return the value of e_wxinfo.city
* @mbggenerated
*/
public String getCity() {
return city;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column e_wxinfo.city
*
* @param city the value for e_wxinfo.city
* @mbggenerated
*/
public void setCity(String city) {
this.city = city == null ? null : city.trim();
}
}
\ No newline at end of file
package com.mints.street.login
import android.Manifest
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.lifecycle.Observer
......@@ -14,6 +15,7 @@ import com.tbruyelle.rxpermissions2.RxPermissions
import kotlinx.android.synthetic.main.activity_bindmobile.*
import kotlinx.android.synthetic.main.activity_login.*
import kotlinx.android.synthetic.main.include_header.*
import me.goldze.mvvmhabit.utils.AppUtils
import me.goldze.mvvmhabit.utils.ToastUtils
/**
......@@ -71,7 +73,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding, LoginViewModel>(), View
mobile = mobile.replace(" ".toRegex(), "")
// 登录
viewModel.login(mobile, code)
viewModel.mobilelogin(mobile, code)
} else {
// showMissingPermissionDialog("设备")
}
......@@ -84,7 +86,11 @@ class LoginActivity : BaseActivity<ActivityLoginBinding, LoginViewModel>(), View
private fun initView() {
iv_left_icon.setImageResource(R.mipmap.iv_return_white)
tv_title.text = "手机号登录"
tv_title.setTextColor(Color.WHITE)
iv_left_icon.setImageResource(R.mipmap.ic_arrow_back_white)
iv_left_icon.setPadding(AppUtils.dp2Px(this, 15F),AppUtils.dp2Px(this, 15F),AppUtils.dp2Px(this, 15F),AppUtils.dp2Px(this, 15F))
header_line.visibility=View.GONE
iv_left_icon.visibility = View.VISIBLE
//手机号设置格式
......@@ -101,7 +107,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding, LoginViewModel>(), View
super.initViewObservable()
viewModel.data.observe(this, Observer<String> {
ToastUtils.showLong("登录成功")
startActivityThenKill(MainActivity::class.java)
finish()
})
}
......
......@@ -52,20 +52,20 @@ class LoginViewModel(application: Application) : BaseViewModel(application) {
/**
* 调用登录接口
*/
fun login(mobile: String, smsCode: String) {
fun mobilelogin(mobile: String, smsCode: String) {
// showDialog()
val vo = HashMap<String, Any>()
vo["mobile"] = mobile
vo["smsCode"] = smsCode
vo["device"] = DeviceUuidFactory().deviceUuid.toString()
// vo["device"] = DeviceUuidFactory().deviceUuid.toString()
ApiModel.login(lifecycleProvider,vo).safeSubscribe(
object : HttpSubscribeImpl<BaseResponse<UserBean>>(
this@LoginViewModel, true) {
override fun onBusinessSuccess(response: BaseResponse<UserBean>) {
//提交设备信息
this@LoginViewModel.saveTerminalInfo()
//提交设备信息【注:这里海哥的意思是说在测试的环境下,进行当前的注册是利用手机号进行注册,由于开通了微信登录,就不需要再手机号登录的时候进行设备信息的提交】
// this@LoginViewModel.saveTerminalInfo()
//保存用户信息到Usermanager
UserManager.INSTANCE.saveUserInfo(response.result)
......
......@@ -9,6 +9,7 @@ import com.fry.base.base.BaseActivity
import com.mints.street.BR
import com.mints.street.R
import com.mints.street.bean.BindMobileBean
import com.mints.street.bean.UserBean
import com.mints.street.databinding.ActivityBindmobileBinding
import com.mints.street.main.MainActivity
import com.mints.street.utils.BackInputUtil
......@@ -94,8 +95,8 @@ class BindMobileActivity : BaseActivity<ActivityBindmobileBinding, BindMobileVie
override fun initViewObservable() {
super.initViewObservable()
viewModel.bindmobiledata.observe(this, Observer<BindMobileBean> {
ToastUtils.showLong("请求绑定手机号接口成功")
viewModel.bindmobiledata.observe(this, Observer<UserBean> {
ToastUtils.showLong("手机号绑定成功")
startActivityThenKill(MainActivity::class.java)
})
viewModel.data.observe(this, Observer {
......
......@@ -4,6 +4,8 @@ import android.app.Application
import androidx.lifecycle.MutableLiveData
import com.mints.street.bean.BaseResponse
import com.mints.street.bean.BindMobileBean
import com.mints.street.bean.UserBean
import com.mints.street.manager.UserManager
import com.mints.street.model.ApiModel
import com.mints.street.netwrok.base.HttpSubscribeImpl
import me.goldze.mvvmhabit.base.BaseViewModel
......@@ -13,7 +15,7 @@ import java.util.HashMap
class BindMobileViewModel (application: Application): BaseViewModel(application) {
val bindmobiledata : MutableLiveData<BindMobileBean> = MutableLiveData()
val bindmobiledata : MutableLiveData<UserBean> = MutableLiveData()
val data :MutableLiveData<String> = MutableLiveData()
......@@ -47,14 +49,16 @@ class BindMobileViewModel (application: Application): BaseViewModel(application)
vo["mobile"]=mobile
vo["smsCode"]=smsCode
ApiModel.bindingMobile(lifecycleProvider,vo).safeSubscribe(
object :HttpSubscribeImpl<BaseResponse<BindMobileBean>>(
object :HttpSubscribeImpl<BaseResponse<UserBean>>(
this@BindMobileViewModel,true){
override fun onBusinessSuccess(response: BaseResponse<BindMobileBean>) {
override fun onBusinessSuccess(response: BaseResponse<UserBean>) {
bindmobiledata.value=response.result
//保存用户信息到Usermanager
UserManager.INSTANCE.saveUserInfo(response.result)
KLog.e("bindingMobile",response.result.toString())
}
override fun onBusinessFail(response: BaseResponse<BindMobileBean>?) {
override fun onBusinessFail(response: BaseResponse<UserBean>?) {
super.onBusinessFail(response)
}
......
package com.mints.street.main.my
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import android.view.View
......@@ -16,6 +17,7 @@ import kotlinx.android.synthetic.main.activity_moresettings.*
import kotlinx.android.synthetic.main.include_header.*
import me.goldze.mvvmhabit.utils.KLog
import me.goldze.mvvmhabit.utils.ToastUtils
import org.w3c.dom.Text
class MoresettingsActivity : BaseActivity<ActivityMoresettingsBinding, MoresettingsViewModel>(), View.OnClickListener {
......@@ -27,11 +29,11 @@ class MoresettingsActivity : BaseActivity<ActivityMoresettingsBinding, Moresetti
super.initData()
initView()
initListener()
}
private fun initListener() {
item_phone.setOnClickListener(this)
iv_left_icon.setOnClickListener(this)
item_userAgree.setOnClickListener(this)
item_privacyAgree.setOnClickListener(this)
......@@ -39,67 +41,79 @@ class MoresettingsActivity : BaseActivity<ActivityMoresettingsBinding, Moresetti
}
private fun initView() {
tv_title.text = "更多设置"
tv_title.setTextColor(Color.BLACK)
iv_left_icon.setImageResource(R.mipmap.ic_arrow_back)
iv_left_icon.visibility = View.VISIBLE
item_phone.findViewById<TextView>(R.id.tv_title).text = "绑定手机号"
val phone = ContextCompat.getDrawable(this, R.mipmap.icon_settings_tel)
phone?.setBounds(0, 0, 56, 56)
item_phone.findViewById<TextView>(R.id.tv_title).setCompoundDrawables(phone, null, null, null)
// item_phone.findViewById<TextView>(R.id.tv_right).visibility=View.VISIBLE
// item_phone.findViewById<TextView>(R.id.tv_right).text = "未绑定"
item_phone.findViewById<TextView>(R.id.tv_right).visibility = View.GONE
item_phone.findViewById<ImageView>(R.id.iv_right).visibility = View.VISIBLE
item_userAgree.findViewById<TextView>(R.id.tv_title).text = "用户协议"
val userAgree = ContextCompat.getDrawable(this, R.mipmap.icon_settings_user)
userAgree?.setBounds(0, 0, 56, 56)
item_userAgree.findViewById<TextView>(R.id.tv_title).setCompoundDrawables(userAgree, null, null, null)
item_userAgree.findViewById<TextView>(R.id.tv_right).visibility = View.GONE
item_userAgree.findViewById<ImageView>(R.id.iv_right).visibility = View.VISIBLE
item_privacyAgree.findViewById<TextView>(R.id.tv_title).text = "隐私协议"
val privacyAgree = ContextCompat.getDrawable(this, R.mipmap.icon_settings_privacy)
privacyAgree?.setBounds(0, 0, 56, 56)
item_privacyAgree.findViewById<TextView>(R.id.tv_title).setCompoundDrawables(privacyAgree, null, null, null)
item_privacyAgree.findViewById<TextView>(R.id.tv_right).visibility = View.GONE
item_privacyAgree.findViewById<ImageView>(R.id.iv_right).visibility = View.VISIBLE
override fun onResume() {
super.onResume()
//判断当前手机号是否绑定
if (!userManager.getMobile().isEmpty()) {
item_phone.findViewById<TextView>(R.id.tv_right).visibility = View.VISIBLE
item_phone.findViewById<TextView>(R.id.tv_right).text = userManager.getMobile()
item_phone.findViewById<TextView>(R.id.tv_right).setTextColor(Color.BLACK)
} else {
item_phone.findViewById<TextView>(R.id.tv_right).visibility = View.VISIBLE
item_phone.findViewById<TextView>(R.id.tv_right).setTextColor(Color.BLACK)
item_phone.findViewById<TextView>(R.id.tv_right).text = "去绑定"
item_phone.setOnClickListener(this)
}
}
private fun initView() {
tv_title.text = "更多设置"
tv_title.setTextColor(Color.BLACK)
iv_left_icon.setImageResource(R.mipmap.ic_arrow_back)
iv_left_icon.visibility = View.VISIBLE
item_phone.findViewById<TextView>(R.id.tv_title).text = "绑定手机号"
val phone = ContextCompat.getDrawable(this, R.mipmap.icon_settings_tel)
phone?.setBounds(0, 0, 56, 56)
item_phone.findViewById<TextView>(R.id.tv_title).setCompoundDrawables(phone, null, null, null)
item_phone.findViewById<ImageView>(R.id.iv_right).visibility = View.GONE
item_userAgree.findViewById<TextView>(R.id.tv_title).text = "用户协议"
val userAgree = ContextCompat.getDrawable(this, R.mipmap.icon_settings_user)
userAgree?.setBounds(0, 0, 56, 56)
item_userAgree.findViewById<TextView>(R.id.tv_title).setCompoundDrawables(userAgree, null, null, null)
item_userAgree.findViewById<TextView>(R.id.tv_right).visibility = View.GONE
item_userAgree.findViewById<ImageView>(R.id.iv_right).visibility = View.VISIBLE
item_privacyAgree.findViewById<TextView>(R.id.tv_title).text = "隐私协议"
val privacyAgree = ContextCompat.getDrawable(this, R.mipmap.icon_settings_privacy)
privacyAgree?.setBounds(0, 0, 56, 56)
item_privacyAgree.findViewById<TextView>(R.id.tv_title).setCompoundDrawables(privacyAgree, null, null, null)
item_privacyAgree.findViewById<TextView>(R.id.tv_right).visibility = View.GONE
item_privacyAgree.findViewById<ImageView>(R.id.iv_right).visibility = View.VISIBLE
if (userManager.userIsLogin()) {
btn_switch.visibility = View.VISIBLE
} else {
btn_switch.visibility = View.GONE
}
}
}
override fun onClick(v: View?) {
override fun onClick(v: View?) {
when (v?.id) {
R.id.iv_left_icon -> {
finish()
}
R.id.item_phone -> {
// if (!userManager.userIsLogin()) {
// readyGo(WxLoginActivity::class.java)
// return
// }
// if (userManager.getMobile().isEmpty()) {
if (userManager.userIsLogin()) {
startActivity(BindMobileActivity::class.java)
// }else{
// ToastUtils.showLong("当前手机号已绑定")
// }
}
R.id.btn_switch -> {//推出登录
if (!userManager.getMobile().isEmpty()){
UserManager.INSTANCE.userLogout()
startActivityThenKill(MainActivity::class.java)
return
} else {
ToastUtils.showLong("请先使用微信登录")
}
KLog.e("setOnClick","btn_switch has been clicked.")
}
R.id.item_userAgree -> {
R.id.btn_switch -> {//退出登录
UserManager.INSTANCE.userLogout()
finish()
KLog.e("setOnClick", "btn_switch has been clicked.")
}
R.id.item_userAgree -> {//用户协议
}
R.id.item_privacyAgree -> {
R.id.item_privacyAgree -> {//隐私协议
}
......
package com.mints.street.main.my
import android.Manifest
import android.graphics.Color
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.widget.LinearLayoutCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.Observer
import cn.sharesdk.framework.ShareSDK
import cn.sharesdk.wechat.friends.Wechat
import com.bumptech.glide.Glide
import com.fry.base.base.BaseFragment
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.mints.street.BR
import com.mints.street.R
import com.mints.street.bean.MyInfo
import com.mints.street.bean.UserBean
import com.mints.street.bean.WXInfo
import com.mints.street.databinding.FragmentMyBinding
import com.mints.street.login.LoginActivity
import com.mints.street.main.home.HistoricalimageActivity
import com.mints.street.login.LoginApi
import com.mints.street.login.OnLoginListener
import com.mints.street.manager.UserManager
import com.mints.street.utils.json.JsonUtil
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshListener
import kotlinx.android.synthetic.main.activity_moresettings.*
import com.tbruyelle.rxpermissions2.RxPermissions
import kotlinx.android.synthetic.main.fragment_my.*
import me.goldze.mvvmhabit.utils.KLog
import me.goldze.mvvmhabit.utils.ToastUtils
import java.util.*
/**
......@@ -37,10 +40,13 @@ import me.goldze.mvvmhabit.utils.ToastUtils
* 个人中心页面
*/
class MyFragment : BaseFragment<FragmentMyBinding, MyViewModel>(), OnRefreshListener,
View.OnClickListener {
View.OnClickListener, OnLoginListener {
private val userManager by lazy { UserManager.INSTANCE }
private var userConfig: MyInfo? = null
private val loginApi by lazy { LoginApi() }
private var wxInfo: WXInfo? = null
//弹窗
private var mBottomSheetDialog: BottomSheetDialog? = null
......@@ -57,6 +63,8 @@ class MyFragment : BaseFragment<FragmentMyBinding, MyViewModel>(), OnRefreshList
override fun initData() {
super.initData()
srl_my.setOnRefreshListener(this)
//隐藏立即领取
bt_try.visibility=View.GONE
initView()
initListener()
}
......@@ -134,7 +142,24 @@ class MyFragment : BaseFragment<FragmentMyBinding, MyViewModel>(), OnRefreshList
}
R.id.iv_weixin -> {
if (cb_checked!!.isChecked) {
ToastUtils.showShort("未完成微信登录对接")
// ToastUtils.showShort("未完成微信登录对接")
val wechat =ShareSDK.getPlatform(Wechat.NAME)
if (!wechat.isClientValid){
ToastUtils.showShort("请先安装微信")
return
}
RxPermissions(this)
.request(Manifest.permission.READ_PHONE_STATE)
.subscribe { granted: Boolean ->
if (granted) {
loginApi.setOnLoginListener(this@MyFragment)
loginApi.setPlatform(Wechat.NAME)
loginApi.login(context)
} else {
// showMissingPermissionDialog("设备")
}
}
mBottomSheetDialog!!.dismiss()
} else {
ToastUtils.showShort("请先同意用户协议与隐私政策")
}
......@@ -153,7 +178,7 @@ class MyFragment : BaseFragment<FragmentMyBinding, MyViewModel>(), OnRefreshList
override fun initViewObservable() {
super.initViewObservable()
viewModel.MyInfodata.observe(this, Observer<MyInfo> {
viewModel.myInfodata.observe(this, Observer<MyInfo> {
srl_my.finishRefresh(true)
if (it == null) {
userConfig = null
......@@ -164,20 +189,56 @@ class MyFragment : BaseFragment<FragmentMyBinding, MyViewModel>(), OnRefreshList
setUserLoginStatus()
})
}
private fun setUserLoginStatus() {
if (userManager.getMobile().isNotEmpty()) {
item_title_id.text = userManager.getMobile()
if (userManager.userIsLogin()) {
// 已登录
item_title_id.text=userManager.getWxName()
Glide.with(requireContext()).load(userManager.getWxHeader()).into(item_title_avatar)
} else {
// 未登录
item_title_id.text = "未登录"
item_title_avatar.setImageResource(R.mipmap.ic_my)
}
}
override fun onRefresh(refreshLayout: RefreshLayout) {
KLog.e("onRefresh","The current page has been refreshed.")
//重新显示界面信息
setUserLoginStatus()
if (userManager.userIsLogin()) {
//查询用户登录信息
viewModel.getmyInfo()
}else{
srl_my.finishRefresh(true)
}
}
override fun onDestroy() {
super.onDestroy()
loginApi.setOnLoginListener(null)
}
override fun onLogin(platform: String?, res: HashMap<String, Any>?): Boolean {
try {
wxInfo = WXInfo()
wxInfo?.let {
it.unionid = res?.get("unionid").toString() + ""
it.openid = res?.get("openid").toString() + ""
it.province = res?.get("province").toString() + ""
it.city = res?.get("city").toString() + ""
it.country = res?.get("country").toString() + ""
it.headimgurl = res?.get("headimgurl").toString() + ""
it.nickname = res?.get("nickname").toString() + ""
it.sex = (res?.get("sex").toString() + "").toInt()
}
if (!isHidden) {//当前fragment正在显示调用微信登陆接口
viewModel.wechatlogin(JsonUtil.toJson(wxInfo))
}
} catch (e: Exception) {
e.printStackTrace()
}
return false
}
......
......@@ -5,8 +5,11 @@ import androidx.lifecycle.MutableLiveData
import com.mints.street.bean.BaseResponse
import com.mints.street.bean.MyInfo
import com.mints.street.bean.UserBean
import com.mints.street.common.DeviceInfo
import com.mints.street.manager.UserManager
import com.mints.street.model.ApiModel
import com.mints.street.netwrok.base.HttpSubscribeImpl
import com.mints.street.utils.DeviceUuidFactory
import me.goldze.mvvmhabit.base.BaseViewModel
import me.goldze.mvvmhabit.utils.KLog
import java.util.HashMap
......@@ -16,25 +19,86 @@ import java.util.HashMap
*/
class MyViewModel(application: Application) : BaseViewModel(application) {
val MyInfodata: MutableLiveData<MyInfo> = MutableLiveData()
val myInfodata: MutableLiveData<MyInfo> = MutableLiveData()
val deviceInfo: DeviceInfo
get() {
return DeviceInfo.instance
}
/**
* 获取个人信息
*/
fun getmyInfo() {
ApiModel.getuserInfo(lifecycleProvider).safeSubscribe(
object : HttpSubscribeImpl<BaseResponse<MyInfo>>(
this@MyViewModel, true) {
override fun onBusinessSuccess(response: BaseResponse<MyInfo>) {
MyInfodata.value = response.result
myInfodata.value = response.result
KLog.e("getmyInfo", response.result.toString())
}
override fun onError(e: Throwable) {
KLog.e("getmyInfo", "用户登录信息请求失败")
super.onError(e)
KLog.e("getmyInfo", "用户登录信息请求失败")
}
}
)
}
fun wechatlogin(wxInfo: String) {
val vo = HashMap<String, Any>()
vo["wxInfo"] = wxInfo
// vo["shumeiId"] = ShumeiManager.getInstance().shumeiDeviceId
vo["device"] = DeviceUuidFactory().deviceUuid.toString()
ApiModel.wechatlogin(lifecycleProvider,vo).safeSubscribe(object : HttpSubscribeImpl<BaseResponse<UserBean>>(
this@MyViewModel, true) {
override fun onBusinessSuccess(response: BaseResponse<UserBean>) {
//保存用户信息到Usermanager
UserManager.INSTANCE.saveUserInfo(response.result)
this@MyViewModel.saveTerminalInfo()//提交设备信息
this@MyViewModel.getmyInfo()
KLog.e("wechatlogin","微信登录接口成功")
}
override fun onError(e: Throwable) {
super.onError(e)
KLog.e("wechatlogin", "微信登录接口失败")
}
})
}
/**
* 提交设备信息
*/
fun saveTerminalInfo() {
val vo = hashMapOf<String, Any>()
val macAddress: String = deviceInfo.getMacAddress()
val mac = macAddress.replace(":", "")
vo["mac"] = mac
vo["mac1"] = macAddress
vo["androidid"] = deviceInfo.getAndroidId(null)
vo["imei"] = deviceInfo.iMEI
// if (!TextUtils.isEmpty(App.OAID)) {
// vo["oaid"] = App.OAID
// }
vo["os"] = "android"
vo["model"] = deviceInfo.newModel
vo["uuid"] = DeviceUuidFactory().deviceUuid
vo["osversion"] = deviceInfo.oSVersion
vo["appversion"] = deviceInfo.versionName
ApiModel.saveTerminalInfo(lifecycleProvider, vo).safeSubscribe(
object : HttpSubscribeImpl<BaseResponse<Any>>(
this@MyViewModel, true) {
override fun onBusinessSuccess(response: BaseResponse<Any>) {
KLog.e("saveTerminalInfo", response.result.toString())
}
})
}
}
\ No newline at end of file
......@@ -65,7 +65,7 @@ object ApiModel {
/**
* 绑定手机号登录
*/
fun bindingMobile(lifecycleProvider: LifecycleProvider<Any>?, map: Map<String, Any>):Observable<Response<BaseResponse<BindMobileBean>>>{
fun bindingMobile(lifecycleProvider: LifecycleProvider<Any>?, map: Map<String, Any>):Observable<Response<BaseResponse<UserBean>>>{
return HttpManager.getInstance().execute(lifecycleProvider,MainApi.newInstance().bindingMobile(map))
}
......@@ -75,4 +75,11 @@ object ApiModel {
fun bindingMobilecode(lifecycleProvider: LifecycleProvider<Any>?, map: Map<String, Any>):Observable<Response<BaseResponse<Any>>>{
return HttpManager.getInstance().execute(lifecycleProvider,MainApi.newInstance().sendMobileBindingCode(map))
}
/**
* 微信登录
*/
fun wechatlogin(lifecycleProvider: LifecycleProvider<Any>?, map: Map<String, Any>):Observable<Response<BaseResponse<UserBean>>>{
return HttpManager.getInstance().execute(lifecycleProvider,MainApi.newInstance().wechatlogin(map))
}
}
\ No newline at end of file
......@@ -19,7 +19,7 @@
android:paddingTop="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="世界街景3D地图"
android:text="3D高清街景"
android:textColor="@color/black"
android:layout_centerInParent="true"/>
......
......@@ -41,11 +41,11 @@
<ImageView
android:id="@+id/iv1"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@mipmap/ic_my"/>
android:src="@mipmap/icon_impower_location"/>
<TextView
android:id="@+id/tv1"
......@@ -55,7 +55,6 @@
android:layout_marginStart="10dp"
android:layout_toRightOf="@id/iv1"
android:text="提供精准定位及导航服务"
android:layout_marginTop="10dp"
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="14sp" />
......@@ -66,7 +65,7 @@
android:layout_alignBottom="@+id/iv1"
android:layout_marginStart="10dp"
android:layout_toRightOf="@+id/iv1"
android:textSize="12sp"
android:textSize="10sp"
android:text="基于您当前位置、为您提供完整的周边信息"
android:layout_marginBottom="10dp"
android:textColor="#A9000000" />
......@@ -90,11 +89,11 @@
<ImageView
android:id="@+id/iv2"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@mipmap/ic_my"/>
android:src="@mipmap/icon_impower_save"/>
<TextView
android:id="@+id/tv2"
......@@ -104,7 +103,6 @@
android:layout_marginStart="10dp"
android:layout_toRightOf="@id/iv2"
android:text="存储地图等相关数据"
android:layout_marginTop="10dp"
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="14sp"/>
......@@ -115,7 +113,7 @@
android:layout_alignBottom="@+id/iv2"
android:layout_marginStart="10dp"
android:layout_toRightOf="@+id/iv2"
android:textSize="12sp"
android:textSize="10sp"
android:text="用于读写地图、常用地址等相关数据"
android:layout_marginBottom="10dp"
android:textColor="#A9000000" />
......@@ -139,11 +137,11 @@
<ImageView
android:id="@+id/iv3"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@mipmap/ic_my"/>
android:src="@mipmap/icon_impower_setting"/>
<TextView
android:id="@+id/tv3"
......@@ -153,7 +151,6 @@
android:layout_marginStart="10dp"
android:layout_toRightOf="@id/iv3"
android:text="问题诊断及修复"
android:layout_marginTop="10dp"
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="14sp"/>
......@@ -164,7 +161,7 @@
android:layout_alignBottom="@+id/iv3"
android:layout_marginStart="10dp"
android:layout_toRightOf="@+id/iv3"
android:textSize="12sp"
android:textSize="10sp"
android:text="用于读取信息、快速确诊问题"
android:layout_marginBottom="10dp"
android:textColor="#A9000000" />
......
......@@ -81,7 +81,9 @@
<TextView
android:id="@+id/tv_tips"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_toStartOf="@+id/bt_try"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/iv_flag"
......@@ -313,7 +315,7 @@
android:id="@+id/imageView16"
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/shape_btn_friends_unenabled"
android:src="@mipmap/icon_me_tiao"
app:layout_constraintBottom_toTopOf="@+id/guideline7"
app:layout_constraintEnd_toStartOf="@+id/textView5"
app:layout_constraintStart_toStartOf="@+id/guideline5"
......@@ -324,7 +326,7 @@
android:id="@+id/imageView18"
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/shape_btn_friends_unenabled"
android:src="@mipmap/icon_me_tiao"
app:layout_constraintBottom_toTopOf="@+id/guideline7"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintHorizontal_bias="0.481"
......
......@@ -78,6 +78,7 @@
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/header_line"
style="@style/view_line_E6E6E6"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/iv_right_icon" />
......
......@@ -32,17 +32,17 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:padding="20dp">
android:padding="10dp">
<ImageView
android:id="@+id/iv_weixin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginRight="20pt"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_my"
app:srcCompat="@mipmap/icon_login_wx"
tools:ignore="MissingConstraints" />
<TextView
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment