注销账号
This commit is contained in:
@@ -2,6 +2,8 @@ package com.ckkj.water.device;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
@@ -28,8 +30,12 @@ import com.ckkj.water.utils.show.ToastUtil;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import de.greenrobot.event.Subscribe;
|
||||
import de.greenrobot.event.ThreadMode;
|
||||
@@ -46,6 +52,16 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
private DeviceTimeSelectAdapter mAdapter;
|
||||
//用户自定义的浇水时长
|
||||
private int mCustomDuration = 0;
|
||||
private final Handler mProgressHandler = new Handler(Looper.getMainLooper());
|
||||
private long mWorkStartTime = 0L;
|
||||
private long mWorkEndTime = 0L;
|
||||
private boolean mHasRefreshAfterWorkFinished = false;
|
||||
private final Runnable mWorkProgressRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateWorkProgress();
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public DevicePresenter createPresenter() {
|
||||
return new DevicePresenter(new DeviceImpl());
|
||||
@@ -124,6 +140,8 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
viewBinding.tvDeviceStatus.setText(getString(R.string.device_status_not_working));
|
||||
viewBinding.tvDeviceStatus.setTextColor(mContext.getResources().getColor(R.color.color_999999));
|
||||
viewBinding.tvConfirm.setText(getString(R.string.device_control_start));
|
||||
stopWorkProgressUpdate();
|
||||
updateProgressView(0);
|
||||
}
|
||||
viewBinding.linearWifi.setBackground(mContext.getResources().getDrawable(R.drawable.shape_device_ctrl_green_cor12));
|
||||
viewBinding.imgWifiLogo.setImageResource(R.mipmap.icon_ctrl_wifi_white);
|
||||
@@ -135,6 +153,8 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
viewBinding.tvConfirm.setBackgroundResource((R.drawable.shape_gray_button_bg_enable));
|
||||
viewBinding.linearWifi.setBackground(mContext.getResources().getDrawable(R.drawable.shape_device_ctrl_white_cor12));
|
||||
viewBinding.imgWifiLogo.setImageResource(R.mipmap.icon_ctrl_wifi_green);
|
||||
stopWorkProgressUpdate();
|
||||
updateProgressView(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,9 +404,12 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
if(status.equals("0")){
|
||||
showCenterTipDialog(R.mipmap.icon_dialog_success,getString(R.string.end_watering));
|
||||
viewBinding.tvConfirm.setText(getString(R.string.start_watering));
|
||||
stopWorkProgressUpdate();
|
||||
updateProgressView(0);
|
||||
}else{
|
||||
showCenterTipDialog(R.mipmap.icon_dialog_success,getString(R.string.start_watering));
|
||||
viewBinding.tvConfirm.setText(getString(R.string.end_watering));
|
||||
mPresenter.getDeviceWorkProgress(mDeviceEntity.getDeviceNo());
|
||||
}
|
||||
//开关设备之后,更新一下当前设备状态
|
||||
mPresenter.getDeviceDetailInfo(mDeviceEntity.getDeviceNo());
|
||||
@@ -411,6 +434,22 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
*/
|
||||
@Override
|
||||
public void queryDeviceWorkTimeSuccess(WaterDeviceEntity bean) {
|
||||
if (bean == null || TextUtils.isEmpty(bean.getStartTime()) || TextUtils.isEmpty(bean.getEndTime())) {
|
||||
stopWorkProgressUpdate();
|
||||
updateProgressView(0);
|
||||
return;
|
||||
}
|
||||
|
||||
mWorkStartTime = parseWorkTime(bean.getStartTime());
|
||||
mWorkEndTime = parseWorkTime(bean.getEndTime());
|
||||
mHasRefreshAfterWorkFinished = false;
|
||||
if (mWorkStartTime <= 0 || mWorkEndTime <= mWorkStartTime) {
|
||||
stopWorkProgressUpdate();
|
||||
updateProgressView(0);
|
||||
return;
|
||||
}
|
||||
|
||||
updateWorkProgress();
|
||||
|
||||
//"startTime": "2026-07-06 16:35:00",
|
||||
//"endTime": "2026-07-06 16:37:00"
|
||||
@@ -420,6 +459,65 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
||||
}
|
||||
|
||||
|
||||
private long parseWorkTime(String time) {
|
||||
try {
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
|
||||
Date date = format.parse(time);
|
||||
return date == null ? 0L : date.getTime();
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return 0L;
|
||||
}
|
||||
|
||||
private void updateWorkProgress() {
|
||||
long now = System.currentTimeMillis();
|
||||
int progress;
|
||||
if (now <= mWorkStartTime) {
|
||||
progress = 0;
|
||||
} else if (now >= mWorkEndTime) {
|
||||
progress = 100;
|
||||
} else {
|
||||
progress = (int) ((now - mWorkStartTime) * 100 / (mWorkEndTime - mWorkStartTime));
|
||||
}
|
||||
|
||||
updateProgressView(progress);
|
||||
mProgressHandler.removeCallbacks(mWorkProgressRunnable);
|
||||
if (progress < 100 && mDeviceEntity != null && "1".equals(mDeviceEntity.getWorkStatus())) {
|
||||
mProgressHandler.postDelayed(mWorkProgressRunnable, 1000);
|
||||
} else if (progress >= 100 && !mHasRefreshAfterWorkFinished
|
||||
&& mDeviceEntity != null && !TextUtils.isEmpty(mDeviceEntity.getDeviceNo())) {
|
||||
mHasRefreshAfterWorkFinished = true;
|
||||
ToastUtil.showShort(mContext,"任务结束");
|
||||
showLoadingDialog();
|
||||
mProgressHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mDeviceEntity != null && !TextUtils.isEmpty(mDeviceEntity.getDeviceNo())) {
|
||||
mPresenter.getDeviceDetailInfo(mDeviceEntity.getDeviceNo());
|
||||
}
|
||||
}
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateProgressView(int progress) {
|
||||
viewBinding.progressWork.setProgress(progress);
|
||||
viewBinding.tvProgressPercent.setText(getString(R.string.device_work_progress_title) + progress + "%");
|
||||
}
|
||||
|
||||
private void stopWorkProgressUpdate() {
|
||||
mProgressHandler.removeCallbacksAndMessages(null);
|
||||
mWorkStartTime = 0L;
|
||||
mWorkEndTime = 0L;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
stopWorkProgressUpdate();
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logOut(BaseBean bean) {
|
||||
|
||||
|
||||
@@ -334,7 +334,7 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
|
||||
}
|
||||
}
|
||||
|
||||
private CountDownTimer cdTimer = new CountDownTimer(6000, 1000) {
|
||||
private CountDownTimer cdTimer = new CountDownTimer(60000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
viewBinding.tvGetVerifiCode.setText("(" + millisUntilFinished / 1000 + ") " + getString(R.string.login_resend));
|
||||
@@ -387,8 +387,8 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
|
||||
@Override
|
||||
public void getPhoneCodeSuccess(BaseBean bean) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showLong(mContext, getString(R.string.login_code_sent) + ":" + bean.getDataString());
|
||||
// cdTimer.start();
|
||||
ToastUtil.showLong(mContext, getString(R.string.login_code_sent));
|
||||
cdTimer.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -88,7 +88,6 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
|
||||
}
|
||||
//发送短信
|
||||
mPresenter.getPhoneCode(viewBinding.etAccount.getText().toString(),"");
|
||||
// cdTimer.start();
|
||||
break;
|
||||
|
||||
case R.id.tv_commit:
|
||||
@@ -145,7 +144,7 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
|
||||
}
|
||||
|
||||
|
||||
private CountDownTimer cdTimer = new CountDownTimer(6000, 1000) {
|
||||
private CountDownTimer cdTimer = new CountDownTimer(60000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
viewBinding.tvGetVerifiCode.setText("(" + millisUntilFinished / 1000 + ") " + getString(R.string.login_resend));
|
||||
@@ -187,13 +186,19 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
|
||||
@Override
|
||||
public void registerSuccess(BaseBean bean) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,"注册成功");
|
||||
ToastUtil.showShort(mContext,getString(R.string.register_success_title));
|
||||
finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取验证码成功
|
||||
* @param bean
|
||||
*/
|
||||
@Override
|
||||
public void getPhoneCodeSuccess(BaseBean bean) {
|
||||
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,getString(R.string.verification_code_sent));
|
||||
cdTimer.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,7 +33,7 @@ public class LoginContract {
|
||||
//注销账号--发送验证码
|
||||
void logoffAccountCode(Map<String,Object> map, CallBack callBack);
|
||||
//注销账号--确认注销
|
||||
void logoffAccount(Map<String,String> map, CallBack callBack);
|
||||
void logoffAccount(JSONObject json, CallBack callBack);
|
||||
}
|
||||
|
||||
public interface LoginView extends IView{
|
||||
|
||||
@@ -148,13 +148,13 @@ public class LoginImpl implements LoginContract.DataModel {
|
||||
|
||||
/**
|
||||
* 注销账号--确认
|
||||
* @param map
|
||||
* @param json
|
||||
* @param callBack
|
||||
*/
|
||||
@Override
|
||||
public void logoffAccount(Map<String,String> map, LoginContract.CallBack callBack) {
|
||||
public void logoffAccount(JSONObject json, LoginContract.CallBack callBack) {
|
||||
try {
|
||||
NetWorkManager.getRequest().confirmLogiffAccount(NetWorkManager.getToken(), map)
|
||||
NetWorkManager.getRequest().confirmLogiffAccount(NetWorkManager.getToken(), NetWorkManager.toRequestBody(json))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.unsubscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
|
||||
@@ -122,7 +122,7 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
|
||||
@Override
|
||||
public void run() {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,"缓存清除成功");
|
||||
ToastUtil.showShort(mContext,getString(R.string.cache_cleared_success));
|
||||
displayCacheSize();
|
||||
}
|
||||
},800);
|
||||
@@ -255,13 +255,17 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
|
||||
public void callBackGetPermisson(String permission) {
|
||||
if (!hasRecordPermission(permission)) {
|
||||
if (Manifest.permission.POST_NOTIFICATIONS.equals(permission)) {
|
||||
getPermissionRequst(permission,"通知权限申请",
|
||||
"渥田氏需要通知权限来显示应用下载进度",POST_NOTIFICATIONS_PERMISSION_CODE);
|
||||
getPermissionRequst(permission,
|
||||
getString(R.string.notification_permission_request),
|
||||
getString(R.string.notification_permission_desc),
|
||||
POST_NOTIFICATIONS_PERMISSION_CODE);
|
||||
return;
|
||||
}
|
||||
// 没有权限,只在ACTION_DOWN时去申请
|
||||
getPermissionRequst(permission,"文件存储权限申请",
|
||||
"渥田氏需要您的授权,获取存储权限来更新您的应用",WRITE_FILE_PERMISSON_CPDE);
|
||||
getPermissionRequst(permission,
|
||||
getString(R.string.storage_permission_request),
|
||||
getString(R.string.storage_permission_desc),
|
||||
WRITE_FILE_PERMISSON_CPDE);
|
||||
}else{
|
||||
|
||||
|
||||
@@ -273,7 +277,7 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
ToastUtil.showShort(mContext,"下载完成,正在安装");
|
||||
ToastUtil.showShort(mContext,getString(R.string.download_complete_installing));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
.statusBarDarkFont(true) // 设置状态栏字体为黑色
|
||||
.titleBar(viewBinding.rlTitle)
|
||||
.init();
|
||||
viewBinding.includeTitle.tvTitle.setText("注销账号");
|
||||
viewBinding.includeTitle.tvTitle.setText(getString(R.string.delete_account));
|
||||
viewBinding.includeTitle.imgBack.setOnClickListener(c -> finish());
|
||||
if(AppConfig.USER_LOGIN){
|
||||
String userAccount = (!TextUtils.isEmpty(WaterUserInfoManager.getInstance().getUserInfo().getUser().getPhonenumber()) ?
|
||||
@@ -95,7 +95,7 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
}
|
||||
showDialogtext(null, false, false, true,
|
||||
getString(R.string.tip_text),
|
||||
"该操作将会注销此账号",
|
||||
getString(R.string.delete_account_tip),
|
||||
getString(R.string.cancel_text),
|
||||
getString(R.string.confirm_text),
|
||||
new BaseFragment.OnDialogClick() {
|
||||
@@ -120,7 +120,7 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
@Override
|
||||
public void getAccountLogoffCodeSuccess(BaseBean bean) {
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext,"验证码已发送至该账户");
|
||||
ToastUtil.showShort(mContext,getString(R.string.verification_code_sent));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,7 +138,7 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
private CountDownTimer cdTimer = new CountDownTimer(60000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
viewBinding.tvGetCode.setText("(" + millisUntilFinished / 1000 + ")秒后重发");
|
||||
viewBinding.tvGetCode.setText("(" + millisUntilFinished / 1000 + ")" + getString(R.string.resend_after_seconds));
|
||||
viewBinding.tvGetCode.setSelected(true);
|
||||
viewBinding.tvGetCode.setClickable(false);
|
||||
viewBinding.tvGetCode.setTextColor(mContext.getColor(R.color.color_c8c8c8));
|
||||
@@ -146,7 +146,7 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
viewBinding.tvGetCode.setText("重新发送");
|
||||
viewBinding.tvGetCode.setText(getString(R.string.resend));
|
||||
viewBinding.tvGetCode.setSelected(false);
|
||||
viewBinding.tvGetCode.setClickable(true);
|
||||
viewBinding.tvGetCode.setTextColor(mContext.getColor(R.color.color_zhu));
|
||||
|
||||
@@ -222,22 +222,28 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
||||
* @param verCode
|
||||
*/
|
||||
public void confirmAccountLogoff(String verCode) {
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("code",verCode);
|
||||
new LoginImpl().logoffAccount(map, new LoginContract.CallBack<BaseBean>() {
|
||||
@Override
|
||||
public void success(BaseBean bean) {
|
||||
if(MinePresenter.this.getView() != null){
|
||||
MinePresenter.this.getView().confirmAccountLogoffCodeSuccess(bean);
|
||||
try {
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("code",verCode);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("code",verCode);
|
||||
new LoginImpl().logoffAccount(json, new LoginContract.CallBack<BaseBean>() {
|
||||
@Override
|
||||
public void success(BaseBean bean) {
|
||||
if(MinePresenter.this.getView() != null){
|
||||
MinePresenter.this.getView().confirmAccountLogoffCodeSuccess(bean);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(String msg) {
|
||||
if(MinePresenter.this.getView() != null){
|
||||
MinePresenter.this.getView().showError(msg);
|
||||
@Override
|
||||
public void fail(String msg) {
|
||||
if(MinePresenter.this.getView() != null){
|
||||
MinePresenter.this.getView().showError(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (JSONException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import okhttp3.RequestBody;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.DELETE;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.HTTP;
|
||||
import retrofit2.http.HeaderMap;
|
||||
import retrofit2.http.Multipart;
|
||||
import retrofit2.http.POST;
|
||||
@@ -41,9 +42,9 @@ public interface Request {
|
||||
@GET("resource/account/cancel/code")
|
||||
Observable<BaseBean> logoffAccountCode(@HeaderMap Map<String, String> headMap);
|
||||
|
||||
//排程解绑设备
|
||||
@DELETE("app/v1/account")
|
||||
Observable<BaseBean> confirmLogiffAccount(@HeaderMap Map<String,String> headMap,@QueryMap Map<String, String> map);
|
||||
//注销账户
|
||||
@HTTP(method = "DELETE", path = "auth/account", hasBody = true)
|
||||
Observable<BaseBean> confirmLogiffAccount(@HeaderMap Map<String,String> headMap,@Body RequestBody requestBody);
|
||||
|
||||
|
||||
//注册
|
||||
|
||||
@@ -115,10 +115,11 @@
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
<TextView
|
||||
android:id="@+id/tv_progress_percent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="@dimen/dp_2"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="@color/textPrimaryColor"
|
||||
android:text="@string/device_work_progress_title"
|
||||
android:layout_marginLeft="@dimen/dp_30"/>
|
||||
|
||||
@@ -267,6 +267,31 @@
|
||||
|
||||
<string name="user_agreement_mine">User Agreement</string>
|
||||
|
||||
|
||||
|
||||
<string name="cache_cleared_success">Cache cleared successfully</string>
|
||||
|
||||
<string name="notification_permission_request">Notification Permission Request</string>
|
||||
|
||||
<string name="notification_permission_desc">Notification permission is required to display the app download progress.</string>
|
||||
|
||||
<string name="storage_permission_request">Storage Permission Request</string>
|
||||
|
||||
<string name="storage_permission_desc">Storage permission is required to update your application.</string>
|
||||
|
||||
<string name="download_complete_installing">Download complete, installing...</string>
|
||||
|
||||
<string name="delete_account">Delete Account</string>
|
||||
|
||||
<string name="delete_account_tip">This action will permanently delete this account.</string>
|
||||
|
||||
<string name="verification_code_sent">The verification code has been sent to this account.</string>
|
||||
|
||||
<string name="resend_after_seconds">Resend in seconds</string>
|
||||
|
||||
<string name="resend">Resend</string>
|
||||
|
||||
|
||||
<!-- End -->
|
||||
|
||||
|
||||
|
||||
@@ -251,6 +251,31 @@
|
||||
<string name="no_more_data">已经到底了</string>
|
||||
|
||||
|
||||
|
||||
<string name="cache_cleared_success">缓存清除成功</string>
|
||||
|
||||
<string name="notification_permission_request">通知权限申请</string>
|
||||
|
||||
<string name="notification_permission_desc">需要通知权限来显示应用下载进度</string>
|
||||
|
||||
<string name="storage_permission_request">文件存储权限申请</string>
|
||||
|
||||
<string name="storage_permission_desc">需要您的授权,获取存储权限来更新您的应用</string>
|
||||
|
||||
<string name="download_complete_installing">下载完成,正在安装</string>
|
||||
|
||||
<string name="delete_account">注销账号</string>
|
||||
|
||||
<string name="delete_account_tip">该操作将会注销此账号</string>
|
||||
|
||||
<string name="verification_code_sent">验证码已发送至该账户</string>
|
||||
|
||||
<string name="resend_after_seconds">秒后重发</string>
|
||||
|
||||
<string name="resend">重新发送</string>
|
||||
|
||||
|
||||
|
||||
<!--结束-->
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user