Commit 04e5f67a authored by 小费同学阿's avatar 小费同学阿 💬

基础搭建

功能开发
1:bug 修复 消费者端修复登录超时问题
parent 453183a1
......@@ -6,6 +6,7 @@ import com.xx.hbhconsumer.data.http.respons.GuessLikeGoodsBean;
import com.xx.hbhconsumer.data.http.respons.HomeActivityBean;
import com.xx.hbhconsumer.data.http.respons.LowPriceGoodsBean;
import com.xx.hbhconsumer.data.http.respons.MessageBean;
import com.xx.hbhconsumer.data.http.respons.UserInfoBean;
import java.util.List;
......@@ -16,6 +17,62 @@ import me.goldze.mvvmhabit.http.BaseResponse;
import okhttp3.RequestBody;
public class HomeRequest extends BaseRespons {
/**
* 登录
*/
public Observable<BaseResponse<String>> login(String user,String pwd) {
return getApiService().Login(
new ApiParams<LoginRequestBody>().setParams(
new LoginRequestBody(user,pwd,"13")
)
);
}
/**
* 登陆入参
* userType : 10 系统用户,01 企业用户,02商户用户,13消费者用户
*/
public class LoginRequestBody{
String phone;
String password;
String userType;
public LoginRequestBody(String phone, String password, String userType) {
this.phone = phone;
this.password = password;
this.userType = userType;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
}
/**
* 获取用户信息
*/
public Observable<BaseResponse<UserInfoBean>> getUserInfo() {
return getApiService().getUserInfo();
}
/**
......
......@@ -100,12 +100,13 @@ public class ActivityViewModel extends BaseViewModel<ActivityRequest> {
}
private void loadData() {
model.getCouponAppList(1)
model.getCouponAppList(page)
.compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(ActivityViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
// throw new Exception("发生了一个错误");
}
}).subscribe(new ApiDisposablePageObserver<ActivityCouponBean>() {
@Override
......@@ -132,7 +133,6 @@ public class ActivityViewModel extends BaseViewModel<ActivityRequest> {
@Override
public void getTotal(int total) {
}
......
package com.xx.hbhconsumer.ui.login;
import static me.goldze.mvvmhabit.utils.Utils.Interceptor_TOKEN;
import static me.goldze.mvvmhabit.utils.Utils.getContext;
import android.Manifest;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
......@@ -207,6 +209,12 @@ public class LoginViewModel extends BaseViewModel<LoginRequest> {
public void onSuccess(String resultBean) {
//是指token
Interceptor_TOKEN = "Bearer " + resultBean;
SharedPreferences sharedPreferences = getContext().getSharedPreferences("AppNamePreferences", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", userName.get());
editor.putString("password", password.get());
editor.putString("token", Interceptor_TOKEN);
editor.apply();
getuserInfo();
}
......
package com.xx.hbhconsumer.ui.main;
import static me.goldze.mvvmhabit.utils.Utils.Interceptor_TOKEN;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
......@@ -20,6 +24,7 @@ import com.xx.hbhconsumer.ui.activity.ActivityFragment;
import com.xx.hbhconsumer.ui.category.CategoryActivity;
import com.xx.hbhconsumer.ui.goods.GoodFragment;
import com.xx.hbhconsumer.ui.home.HomeFragment;
import com.xx.hbhconsumer.ui.login.LoginActivity;
import com.xx.hbhconsumer.ui.map.MapViewModel;
import com.xx.hbhconsumer.ui.mine.MineFragment;
import com.xx.hbhconsumer.ui.shop.ShopFragment;
......@@ -38,6 +43,39 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewMode
@Override
public void initData() {
super.initData();
// 获取Intent对象
Intent intent = getIntent();
// 从Intent中获取传递的额外信息
if (intent != null) {
String logFlag = intent.getStringExtra("logFlag");
if (logFlag != null) {
Log.v("首页按钮登录","");
}else {
Log.v("直接登录首页","");
// 获取SharedPreferences实例
SharedPreferences sharedPreferences = getSharedPreferences("AppNamePreferences", Context.MODE_PRIVATE);
// 从SharedPreferences中获取用户名和密码
String username = sharedPreferences.getString("username", null);
String password = sharedPreferences.getString("password", null);
String token = sharedPreferences.getString("token", null);
// 检查是否成功获取到用户名和密码
if (username != null && password != null) {
Log.v("刚开始获取的账号:", username);
Log.v("刚开始获取的密码:", password);
Log.v("刚开始获取的token:", token);
Interceptor_TOKEN = token;
viewModel.getLogin(username,password);
}else {
Log.v("账号密码为空跳转登录页","");
startActivity(LoginActivity.class);
finish();
}
}
}
// 初始化底部导航栏
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation_view);
bottomNavigationView.setOnNavigationItemSelectedListener(navItemSelectedListener);
......
package com.xx.hbhconsumer.ui.main;
import static me.goldze.mvvmhabit.utils.Utils.Interceptor_TOKEN;
import static me.goldze.mvvmhabit.utils.Utils.getContext;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import com.xx.hbhconsumer.data.http.requst.HomeRequest;
import com.xx.hbhconsumer.data.http.respons.UserInfoBean;
import com.xx.hbhconsumer.data.local.LocalData;
import com.xx.hbhconsumer.data.staticdata.StaticData;
import com.xx.hbhconsumer.ui.home.HomeViewModel;
import com.xx.hbhconsumer.ui.login.LoginActivity;
import com.xx.hbhconsumer.ui.login.LoginViewModel;
import com.xx.hbhconsumer.ui.pwd.PwdActivity;
import com.xx.hbhconsumer.ui.settings.LogoutDialog;
import com.xx.xxviewlibrary.base.AppManager;
import com.xx.xxviewlibrary.base.xxBaseDialog;
import com.xx.xxviewlibrary.comm.CommTextDialog;
import com.xx.xxviewlibrary.comm.RefuseDialogBean;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.StringUtils;
public class MainViewModel extends BaseViewModel<HomeRequest> {
......@@ -56,4 +73,126 @@ public class MainViewModel extends BaseViewModel<HomeRequest> {
dialog.setDialogClickListener((xxBaseDialog.onDialogClickListener<LogoutDialog>) (code, data) -> AppManager.getAppManager().AppExit());
dialog.show();
}
public void getLogin(String username,String password){
model.login(username, password)
.compose(RxUtils.schedulersTransformer()) //线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
.doOnSubscribe(MainViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog("正在请求...");
}
}).subscribe(new ApiDisposableObserver<String>() {
@Override
public void onSuccess(String resultBean) {
//是指token
Interceptor_TOKEN = "Bearer " + resultBean;
SharedPreferences sharedPreferences = getContext().getSharedPreferences("AppNamePreferences", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", username);
editor.putString("password", password);
editor.putString("token", Interceptor_TOKEN);
editor.apply();
getuserInfo();
// startActivity(HomeActivity.class);
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
/**
* 获取用户信息
*/
public void getuserInfo() {
model.getUserInfo()
.compose(RxUtils.schedulersTransformer()) //线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
.doOnSubscribe(MainViewModel.this)
.doOnSubscribe (new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<UserInfoBean>() {
@Override
public void onSuccess(UserInfoBean resultBean) {
LocalData.saveToken(Interceptor_TOKEN);
//将用户信息存储到本地
LocalData.saveUser(resultBean.getUser());
dismissDialog();
if (resultBean.getUser().getNeedChangeTimeLongPassword()) {
Bundle bundle = new Bundle();
bundle.putBoolean("needChangeTimeLongPassword", true);
startActivity(PwdActivity.class, bundle);
finish();
} else {
/* startActivity(MainActivity.class);
finish();*/
}
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
/**
* 密码超期显示
*/
public void ShowOverDueDialog() {
showCommTextDialog(new RefuseDialogBean("您的密码使用时间过长,请修改密码后重新登录", "修改密码", "取消", "温馨提示"), new CommTextDialog.onAcceptCallBack() {
@Override
public void refuseBack() {
/*跳转到首页(首先获取用户信息)*/
model.getUserInfo()
.compose(RxUtils.schedulersTransformer()) //线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
.doOnSubscribe(MainViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<UserInfoBean>() {
@Override
public void onSuccess(UserInfoBean resultBean) {
//将用户信息存储到本地
LocalData.saveUser(resultBean.getUser());
/*在登录的时候就给staticData的消息标志位设置成未读*/
StaticData.flag = 0;
dismissDialog();
LocalData.saveMerchant(resultBean.getMerchant());
// startActivity(HomeActivity.class);
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
@Override
public void acceptBack() {
/*跳转到修改密码页面*/
startActivity(PwdActivity.class);
}
});
}
}
package com.xx.hbhconsumer.ui.settings;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
......@@ -155,8 +157,24 @@ public class SettingsViewModel extends BaseViewModel<SettingsRequest> {
private void showSignDialog(View view) {
LogoutDialog dialog = new LogoutDialog(view.getContext(), this);
dialog.setDialogClickListener((xxBaseDialog.onDialogClickListener<LogoutDialog>) (code, data) -> {
startActivity(LoginActivity.class);
AppManager.getAppManager().finishAllActivityExThis(LoginActivity.class);
// 获取SharedPreferences实例
SharedPreferences sharedPreferences = getApplication().getSharedPreferences("AppNamePreferences", Context.MODE_PRIVATE);
// 获取SharedPreferences.Editor实例
SharedPreferences.Editor editor = sharedPreferences.edit();
// 清除username和password
editor.remove("username");
editor.remove("password");
editor.remove("token");
// 提交更改
editor.apply();
startActivity(LoginActivity.class); // 跳转到登录页面
finish();
// startActivity(LoginActivity.class);
// AppManager.getAppManager().finishAllActivityExThis(LoginActivity.class);
LocalData.delAllData();
});
dialog.show();
......
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