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

添加功能:

注销账号(商户端)
parent bf924f6d
...@@ -170,6 +170,9 @@ ...@@ -170,6 +170,9 @@
<activity android:name=".ui.productdetail.ProductDetailActivity" <activity android:name=".ui.productdetail.ProductDetailActivity"
android:exported="true"/> android:exported="true"/>
<!--我的-注销账户-->
<activity android:name=".ui.logoff.LogOffActivity"
android:exported="true"/>
<!-- 适配标准 --> <!-- 适配标准 -->
<meta-data <meta-data
......
...@@ -554,4 +554,10 @@ interface ApiService { ...@@ -554,4 +554,10 @@ interface ApiService {
@Headers("Content-type:application/json") @Headers("Content-type:application/json")
@PUT("app/information/addView") @PUT("app/information/addView")
open fun addLook(@Body requestBody: RequestBody): Observable<BaseResponse<String>> open fun addLook(@Body requestBody: RequestBody): Observable<BaseResponse<String>>
/**
* 注销账号
*/
@Headers("Content-type:application/json")
@PUT("app/user/closure-with-reason")
open fun logOffUser(@Body requestBody: RequestBody): Observable<BaseResponse<Boolean>>
} }
\ No newline at end of file
package com.xx.merchanthbh.data.http.requst
import com.xx.merchanthbh.data.http.BaseRespons
import com.xx.merchanthbh.data.http.requst.body.AppealEditBody
import io.reactivex.rxjava3.core.Observable
import me.goldze.mvvmhabit.http.ApiParams
import me.goldze.mvvmhabit.http.BaseResponse
class LogOffRequest : BaseRespons() {
/**
* 注销账号
* 依次传入1-注销备注 2-注销原因 (1-需要解绑手机,2-安全/隐私顾虑,3-其他 )
*/
fun logOffUser(
accountClosureMark: String,
accountClosureReason: String
): Observable<BaseResponse<Boolean>> {
val body: LogOffRequestBody = LogOffRequestBody(accountClosureMark, accountClosureReason)
return apiService.logOffUser(ApiParams<LogOffRequestBody>().setParams(body))
}
/**
* 依次传入1-注销备注 2-注销原因 (1-需要解绑手机,2-安全/隐私顾虑,3-其他 )
*/
class LogOffRequestBody(var accountClosureMark: String, var accountClosureReason: String)
}
\ No newline at end of file
...@@ -6,7 +6,6 @@ import android.app.Application; ...@@ -6,7 +6,6 @@ import android.app.Application;
import android.os.Bundle; import android.os.Bundle;
import android.text.Html; import android.text.Html;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
......
package com.xx.merchanthbh.ui.logoff;
import android.os.Bundle;
import android.widget.RadioGroup;
import com.xx.merchanthbh.BR;
import com.xx.merchanthbh.R;
import com.xx.merchanthbh.data.http.requst.AssistantAddRequest;
import com.xx.merchanthbh.data.http.requst.LogOffRequest;
import com.xx.merchanthbh.databinding.ActivityLogOffBinding;
import com.xx.merchanthbh.ui.assistant.AssistantAddViewModel;
import me.goldze.mvvmhabit.base.BaseActivity;
public class LogOffActivity extends BaseActivity<ActivityLogOffBinding, LogOffViewModel> {
@Override
public int initContentView(Bundle savedInstanceState) {
return R.layout.activity_log_off;
}
@Override
public int initVariableId() {
return BR.logOffViewModel;
}
// 重写初始方法调用参数
@Override
public void initData() {
super.initData();
}
// 重写初始方法调用参数
@Override
public void initViewObservable() {
super.initViewObservable();
/*单选按钮*/
// 获取注销原因选择的RadioGroup
RadioGroup reasonRadioGroup = findViewById(R.id.radio_group);
// 初始化ViewModel中的注销原因选择监听器
viewModel.initReasonListener(reasonRadioGroup);
}
@Override
public LogOffViewModel initViewModel() {
LogOffRequest lm = new LogOffRequest();
return new LogOffViewModel(getApplication(), lm);
}
}
package com.xx.merchanthbh.ui.logoff;
import android.app.Application;
import android.util.Log;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import com.xx.merchanthbh.data.http.requst.LogOffRequest;
import com.xx.merchanthbh.ui.appeal.AppealEditViewModel;
import com.xx.merchanthbh.ui.login.LoginActivity;
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.ToastUtils;
public class LogOffViewModel extends BaseViewModel<LogOffRequest> {
//注销原因绑定
public ObservableField<String> reason = new ObservableField<>("");
/*注销原因存储*/
public String reasonValue = "1";
//注销原因备注绑定
public ObservableField<String> logOffReasonMark = new ObservableField<>("");
//注销原因备注绑定是否显示标识位
public ObservableField<Integer> getOff = new ObservableField<>(View.GONE);
//下一步是否显示标识位
public ObservableField<Integer> getNext = new ObservableField<>(View.GONE);
//下一步是否显示标识位
public ObservableField<Integer> getNextNo = new ObservableField<>(View.GONE);
public LogOffViewModel(@NonNull Application application) {
super(application);
}
public LogOffViewModel(@NonNull Application application, LogOffRequest model) {
super(application, model);
}
/**
* 按钮组判断注销原因
*/
public void initReasonListener(RadioGroup radioGroup) {
// 设置默认选中第一个RadioButton
RadioButton firstRadioButton = (RadioButton) radioGroup.getChildAt(0);
if (firstRadioButton != null) {
firstRadioButton.setChecked(true);
}
/*后面再监听其他*/
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = group.findViewById(checkedId);
if (radioButton != null) {
reason.set(radioButton.getText().toString());
Log.v("reason的值啊啊啊啊", String.valueOf(reason.get()));
/**
* 注销原因 (1-需要解绑手机,2-安全/隐私顾虑,3-其他 )
* 转换!!!!!!!!!!!!!!!!!!!!
*/
reasonValue = reason.get();
Log.v("reasonValue刚开始的值", reasonValue);
if (reasonValue.contains("需要解绑手机")) {
reasonValue = "1";
/*备注清空*/
logOffReasonMark.set("");
Log.v("需要解绑手机", reasonValue);
/*隐藏备注*/
getOff.set(View.GONE);
} else if (reasonValue.contains("安全/隐私顾虑")) {
reasonValue = "2";
/*备注清空*/
logOffReasonMark.set("");
Log.v("安全/隐私顾虑", reasonValue);
/*隐藏备注*/
getOff.set(View.GONE);
} else {
reasonValue = "3";
Log.v("其他", reasonValue);
/*显示备注*/
getOff.set(View.VISIBLE);
Log.v("备注:",logOffReasonMark.get());
}
}
}
});
}
/**
* 调用注销账号接口
* 依次传入1-注销备注 2-注销原因 (1-需要解绑手机,2-安全/隐私顾虑,3-其他 )
*/
public void submitLogOffMsg(View view) {
Log.v("备注:",logOffReasonMark.get());
/*如果原因不为空则将其赋值给logOffReasonMarkValue*/
if (reasonValue.equals("3") && !logOffReasonMark.get().isEmpty()||reasonValue.equals("1") ||reasonValue.equals("2")) {
model.logOffUser(logOffReasonMark.get(), reasonValue).compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(LogOffViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
}).subscribe(new ApiDisposableObserver<Boolean>() {
@Override
public void onSuccess(Boolean resultBean) {
ToastUtils.showShort("账号已注销!");
finish();
startActivity(LoginActivity.class);
}
@Override
public void onError(String Error) {
}
});
} else {
ToastUtils.showShort("请输入其他原因!");
}
}
}
...@@ -24,6 +24,7 @@ import com.xx.merchanthbh.data.http.respons.OrderDetailBean; ...@@ -24,6 +24,7 @@ import com.xx.merchanthbh.data.http.respons.OrderDetailBean;
import com.xx.merchanthbh.data.local.LocalData; import com.xx.merchanthbh.data.local.LocalData;
import com.xx.merchanthbh.data.staticdata.StaticData; import com.xx.merchanthbh.data.staticdata.StaticData;
import com.xx.merchanthbh.ui.login.LoginActivity; import com.xx.merchanthbh.ui.login.LoginActivity;
import com.xx.merchanthbh.ui.logoff.LogOffActivity;
import com.xx.merchanthbh.ui.order.OrderDetailViewModel; import com.xx.merchanthbh.ui.order.OrderDetailViewModel;
import com.xx.merchanthbh.ui.phone.PhoneActivity; import com.xx.merchanthbh.ui.phone.PhoneActivity;
import com.xx.merchanthbh.ui.pwd.PwdActivity; import com.xx.merchanthbh.ui.pwd.PwdActivity;
...@@ -105,6 +106,14 @@ public class MineViewModel extends BaseViewModel<MineRequest> { ...@@ -105,6 +106,14 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
startActivity(PhoneActivity.class); startActivity(PhoneActivity.class);
} }
});
//跳转注销账号界面
public BindingCommand goLogOffUser = new BindingCommand(new BindingAction() {
@Override
public void call() {
startActivity(LogOffActivity.class);
}
}); });
public BindingCommand exitLogin = new BindingCommand(new BindingAction() { public BindingCommand exitLogin = new BindingCommand(new BindingAction() {
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000" /> <!-- 设置背景颜色为透明 -->
<stroke
android:width="1dp"
android:color="#CFCFCF" /> <!-- 设置边框颜色为蓝色 -->
<corners android:radius="10dp" /> <!-- 设置圆角半径为10dp -->
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 尺寸-->
<!-- 颜色-->
<solid android:color="#ADC6FA" />
<!-- 圆角-->
<corners android:radius="24dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingDefaultResource">
<!--注销账户页面-->
<data>
<variable
name="logOffViewModel"
type="com.xx.merchanthbh.ui.logoff.LogOffViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.xx.xxviewlibrary.witget.XxBar
android:id="@+id/bar"
on_click="@{logOffViewModel.clickFinish}"
android:layout_width="match_parent"
android:layout_height="55dp"
app:bar_title='@{@string/log_off}'
app:layout_constraintTop_toTopOf="parent" />
<!-- 底部导航栏 -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="55dp"
android:layout_marginBottom="92dp"
android:background="@color/bg_grey">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="17dp"
android:background="@drawable/bg_white_radius_12"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="13dp"
android:layout_marginRight="13dp"
android:orientation="vertical"
android:paddingTop="28dp">
<TextView
android:id="@+id/tv_aap_title_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="请选择注销原因"
android:textColor="@color/black"
android:textSize="16sp" />
<!--用户性别,0=需要解绑手机,1=安全/隐私顾虑,2=其他-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:orientation="vertical">
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:checkedButton="@+id/radio_male"
android:orientation="vertical">
<RadioButton
android:id="@+id/radio_need"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="需要解绑手机" />
<RadioButton
android:id="@+id/radio_secure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="安全/隐私顾虑" />
<RadioButton
android:id="@+id/radio_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="其他" />
</RadioGroup>
<!--注销原因备注-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="128dp"
android:orientation="vertical"
android:background="@drawable/bg_side_grey_1_radius_4"
android:visibility="@{logOffViewModel.getOff}">
<EditText
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入其他原因"
android:padding="10dp"
android:maxLength="100"
android:background="null"
android:text="@={logOffViewModel.logOffReasonMark}"
android:textColor="@android:color/black"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<!--提交底部按钮-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center">
<Button
android:id="@+id/bottom_submit"
android:layout_width="341dp"
android:layout_height="48dp"
android:visibility="@{logOffViewModel.getNext}"
android:layout_marginTop="22dp"
android:layout_marginBottom="22dp"
android:background="@drawable/button_bottom_24"
android:onClick="@{logOffViewModel.submitLogOffMsg}"
android:text="@string/next_step"
android:textColor="@color/white"
android:textSize="16sp" />
<Button
android:layout_width="341dp"
android:visibility="@{logOffViewModel.getNextNo}"
android:layout_height="48dp"
android:layout_marginTop="22dp"
android:layout_marginBottom="22dp"
android:background="@drawable/button_bottom_grey_24"
android:text="@string/next_step"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
...@@ -217,6 +217,58 @@ ...@@ -217,6 +217,58 @@
android:textStyle="bold" /> android:textStyle="bold" />
<!--arrow右箭头进入-->
<ImageView
android:layout_width="14dp"
android:layout_height="14dp"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
android:src="@mipmap/wode_icon_youjiantou"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>
<!--分割线-->
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:background="@drawable/divider"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<!--注销账号模块-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="fill_parent"
android:layout_height="64dp"
android:paddingLeft="13dp"
binding:onClickCommand="@{mineViewModel.goLogOffUser}"
android:paddingRight="13dp">
<!--注销账号-图标-->
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginTop="1dp"
android:src="@mipmap/wode_icon_genghuan"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription,HardcodedText" />
<!--注销账号-文字-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/log_off"
android:textColor="#5A5A5A"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="31dp"
app:layout_constraintTop_toTopOf="parent"
android:textSize="16sp"
android:textStyle="bold" />
<!--arrow右箭头进入--> <!--arrow右箭头进入-->
<ImageView <ImageView
android:layout_width="14dp" android:layout_width="14dp"
......
...@@ -97,6 +97,8 @@ ...@@ -97,6 +97,8 @@
<string name="change_password">修改密码</string> <string name="change_password">修改密码</string>
<!--更换手机号--> <!--更换手机号-->
<string name="change_phone">更换手机号</string> <string name="change_phone">更换手机号</string>
<!--注销账号-->
<string name="log_off">注销账号</string>
<!--隐私条款--> <!--隐私条款-->
<string name="privary_agreement">隐私条款</string> <string name="privary_agreement">隐私条款</string>
<!--清除缓存--> <!--清除缓存-->
...@@ -119,6 +121,8 @@ ...@@ -119,6 +121,8 @@
<string name="original_phone_num">13900197888</string> <string name="original_phone_num">13900197888</string>
<!--修改手机号模块 确定--> <!--修改手机号模块 确定-->
<string name="determine_btn">确定</string> <string name="determine_btn">确定</string>
<!--注销账号 下一步-->
<string name="next_step">下一步</string>
<!--修改密码模块--> <!--修改密码模块-->
<!--修改密码模块 原密码--> <!--修改密码模块 原密码-->
<string name="original_password">原密码</string> <string name="original_password">原密码</string>
......
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