Commit 453183a1 authored by 小费同学阿's avatar 小费同学阿 💬

基础搭建

功能开发
1:bug 修复 企业端修复登录超时问题
parent 53555810
......@@ -36,17 +36,19 @@
android:name=".ui.login.LoginActivity"
android:exported="true"
android:screenOrientation="portrait">
</activity>
<!--注册首页页面-->
<activity
android:name=".ui.home.HomeActivity"
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--注册首页页面-->
<activity
android:name=".ui.home.HomeActivity"
android:exported="true"
android:screenOrientation="portrait"/>
<!-- 忘记密码页面-->
<activity
android:name=".ui.pwd.ForgetPwdActivity"
......
......@@ -6,8 +6,12 @@ import com.xx.hbhbcompany.data.http.respons.ActivityCenterBean;
import com.xx.hbhbcompany.data.http.respons.AdvertisingBean;
import com.xx.hbhbcompany.data.http.respons.ConsultationInformationBean;
import com.xx.hbhbcompany.data.http.respons.ConsultationTitleBean;
import com.xx.hbhbcompany.data.http.respons.DictValueBean;
import com.xx.hbhbcompany.data.http.respons.JobInformationBean;
import com.xx.hbhbcompany.data.http.respons.MessageBean;
import com.xx.hbhbcompany.data.staticdata.DictTypeEnum;
import com.xx.hbhbcompany.data.http.respons.UserInfoBean;
import com.xx.hbhbcompany.data.staticdata.StaticData;
import com.xx.xxviewlibrary.model.VersionBean;
import com.xx.xxviewlibrary.model.VersionBody;
......@@ -20,6 +24,70 @@ 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, "01")
)
);
}
/**
* 登陆入参
* 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();
}
/**
* 获取商品操作日志的字典列表
* @param dictType 字典类型
* @return 字典列表
*/
public Observable<BaseResponse<List<DictValueBean>>> getDictValue(DictTypeEnum dictType) {
return getApiService().getDictValueByDictType(dictType.getValue());
}
/**
* 获取消息列表
*/
......
package com.xx.hbhbcompany.ui.home;
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;
......@@ -11,7 +16,9 @@ import androidx.fragment.app.Fragment;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.xx.hbhbcompany.R;
import com.xx.hbhbcompany.data.http.requst.HomeRequest;
import com.xx.hbhbcompany.databinding.ActivityHomeBinding;
import com.xx.hbhbcompany.ui.login.LoginActivity;
import com.xx.hbhbcompany.ui.mine.MineFragment;
import com.xx.hbhbcompany.ui.work.WorkFragment;
import com.xx.xxviewlibrary.base.AppManager;
......@@ -19,6 +26,7 @@ import com.xx.xxviewlibrary.comm.CommTextDialog;
import com.xx.xxviewlibrary.comm.RefuseDialogBean;
import me.goldze.mvvmhabit.base.BaseActivity;
import me.tatarka.bindingcollectionadapter2.BR;
public class HomeActivity extends BaseActivity<ActivityHomeBinding,HomeViewModel>{
......@@ -40,13 +48,37 @@ public class HomeActivity extends BaseActivity<ActivityHomeBinding,HomeViewModel
@Override
public int initVariableId() {
return 1;
return BR.homeViewModel;
}
@Override
public void initData() {
super.initData();
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);
......@@ -111,5 +143,11 @@ public class HomeActivity extends BaseActivity<ActivityHomeBinding,HomeViewModel
}
@Override
public HomeViewModel initViewModel() {
HomeRequest lm = new HomeRequest();
return new HomeViewModel(getApplication(), lm);
}
}
package com.xx.hbhbcompany.ui.home;
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;
......@@ -22,9 +26,13 @@ import com.xx.hbhbcompany.data.http.respons.ActivityCenterBean;
import com.xx.hbhbcompany.data.http.respons.AdvertisingBean;
import com.xx.hbhbcompany.data.http.respons.ConsultationInformationBean;
import com.xx.hbhbcompany.data.http.respons.ConsultationTitleBean;
import com.xx.hbhbcompany.data.http.respons.DictValueBean;
import com.xx.hbhbcompany.data.http.respons.JobInformationBean;
import com.xx.hbhbcompany.data.http.respons.JobTitleBean;
import com.xx.hbhbcompany.data.http.respons.MessageBean;
import com.xx.hbhbcompany.data.http.respons.UserInfoBean;
import com.xx.hbhbcompany.data.local.LocalData;
import com.xx.hbhbcompany.data.staticdata.DictTypeEnum;
import com.xx.hbhbcompany.data.staticdata.StaticData;
import com.xx.hbhbcompany.fragment.adapter.ConsultationInformationAdapter;
import com.xx.hbhbcompany.fragment.adapter.ConsultationInformationTitleAdapter;
......@@ -32,8 +40,11 @@ import com.xx.hbhbcompany.ui.activities.ActivitiesActivity;
import com.xx.hbhbcompany.ui.appeal.AppealDetailManageActivity;
import com.xx.hbhbcompany.ui.consult.ConsultationActivity;
import com.xx.hbhbcompany.ui.consult.ConsultationViewModel;
import com.xx.hbhbcompany.ui.login.LoginViewModel;
import com.xx.hbhbcompany.ui.mine.MineViewModel;
import com.xx.hbhbcompany.ui.msg.MessageActivity;
import com.xx.hbhbcompany.ui.pwd.PwdActivity;
import com.xx.hbhbcompany.ui.pwd.SetPwdActivity;
import com.xx.hbhbcompany.ui.recruitment.RecruitmentActivity;
import com.xx.hbhbcompany.ui.scan.ScanActivity;
import com.xx.xxviewlibrary.comm.CommTextDialog;
......@@ -188,7 +199,203 @@ public class HomeViewModel extends ListBaseViewModel<HomeRequest> {
});
}
public void getLogin(String username,String password){
model.login(username, password)
.compose(RxUtils.schedulersTransformer()) //线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
.doOnSubscribe(HomeViewModel.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 = 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();
// 请求字典数据
getDictValue();
//临时关闭
getuserInfo();
// startActivity(HomeActivity.class);
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
/**
* 获取用户信息
*/
public void getuserInfo() {
model.getUserInfo()
.compose(RxUtils.schedulersTransformer()) //线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
.doOnSubscribe(HomeViewModel.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;
//判断身份(身份 0督导 1店总 2其他 3督导店总)
if (resultBean.getPermissions().contains("merchant:manage:supervisor") && resultBean.getPermissions().contains("merchant:manage:store-management")) {
StaticData.sUserRole = 3;
} else if (resultBean.getPermissions().contains("merchant:manage:supervisor")) {
StaticData.sUserRole = 0;
} else if (resultBean.getPermissions().contains("merchant:manage:store-management")) {
StaticData.sUserRole = 1;
} else {
StaticData.sUserRole = 2;
}
/*判断身份并赋初值*/
if (StaticData.sUserRole == 0 || StaticData.sUserRole == 3) {
StaticData.statusCode = "1";
} else {
StaticData.statusCode = "3";
}
/*工作台菜单导航逻辑赋值*/
if (resultBean.getPermissions().contains("merchant:management")) {
StaticData.merchantManagementId = 1;
} else {
StaticData.merchantManagementId = 0;
}
if (resultBean.getPermissions().contains("commodity:management")) {
StaticData.productManagementId = 1;
} else {
StaticData.productManagementId = 0;
}
if (resultBean.getPermissions().contains("order:management")) {
StaticData.orderManagementId = 1;
} else {
StaticData.orderManagementId = 0;
}
if (resultBean.getPermissions().contains("appeal:management")) {
StaticData.appealManagementId = 1;
} else {
StaticData.appealManagementId = 0;
}
StaticData.hasInformation = resultBean.getPermissions().contains("commodity:audit:information");
StaticData.hasLegal = resultBean.getPermissions().contains("commodity:audit:legal");
StaticData.hasOperate = resultBean.getPermissions().contains("commodity:audit:operate");
/*验证是否首次登录*/
if (resultBean.getNeedChangeInitPassword() == true) {
startActivity(SetPwdActivity.class);
} else if (resultBean.getNeedChangeTimeLongPassword()) {
/*执行超期弹窗方法*/
ShowOverDueDialog();
} else {
// startActivity(HomeActivity.class);
}
// startActivity(MerchantAuditListActivity.class);
dismissDialog();
// 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(HomeViewModel.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);
}
});
}
/**
* 获取字典数据
*/
public void getDictValue() {
// 请求字典数据:字典类型 商品操作日志
DictTypeEnum dictType = DictTypeEnum.PRODUCT_OPERATION_LOG_STATUS;
model.getDictValue(dictType)
.compose(RxUtils.schedulersTransformer())
.doOnSubscribe(HomeViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new ApiDisposableObserver<List<DictValueBean>>() {
@Override
public void onSuccess(List<DictValueBean> dictList) {
// 存储字典数据到本地(商品操作日志)
LocalData.saveDictListByType(dictList, dictType);
}
@Override
public void onError(String Error) {
}
});
}
/**
* 下载APK
*
......
......@@ -9,6 +9,7 @@ import android.app.Application;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
......@@ -343,6 +344,12 @@ public class LoginViewModel extends BaseViewModel<LoginRequest> {
public void onSuccess(String resultBean) {
//是指token
Interceptor_TOKEN = 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();
// 请求字典数据
getDictValue();
//临时关闭
......@@ -434,6 +441,7 @@ public class LoginViewModel extends BaseViewModel<LoginRequest> {
ShowOverDueDialog();
} else {
startActivity(HomeActivity.class);
finish();
}
// startActivity(MerchantAuditListActivity.class);
......
......@@ -4,6 +4,7 @@ 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;
......@@ -130,8 +131,24 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
showCommTextDialog(new RefuseDialogBean("是否确定退出?", "确定", "取消"), new CommTextDialog.onAcceptCallBack() {
@Override
public void acceptBack() {
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);
}
@Override
......
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