Commit 15877b45 by 罗翻

登录逻辑修改,增加忘记密码,修改密码

parent 7f2814b4
Showing with 2634 additions and 79 deletions
......@@ -82,7 +82,7 @@
android:layout_marginTop="5dip"
android:text="@string/meglive_prompt"
android:textColor="#00ACDF"
android:textSize="16dp" />
android:textSize="17dp" />
<ImageView
android:layout_width="wrap_content"
......@@ -106,7 +106,7 @@
android:layout_centerInParent="true"
android:text="10"
android:textColor="#00BEE2"
android:textSize="20sp" />
android:textSize="22sp" />
<com.megvii.idcardlib.view.CircleProgressBar
android:id="@+id/detection_step_timeout_progressBar"
......
......@@ -14,7 +14,7 @@ import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.bigfish.databinding.ActivityInitializeMainBinding;
import com.dayu.bigfish.ui.MainActivity;
import com.dayu.event.UserInfo;
import com.dayu.usercenter.ui.activity.LoginActivity;
import com.dayu.usercenter.ui.activity.SmsLoginActivity;
import com.dayu.utils.LogUtils;
import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.UserManager;
......@@ -68,7 +68,7 @@ public class InitializeActivity extends DataBindingActivity<ActivityInitializeMa
loginHx(info.getHxAccount(), info.getHxPwd());
intent = new Intent(InitializeActivity.this, MainActivity.class);
} else {
intent = new Intent(InitializeActivity.this, LoginActivity.class);
intent = new Intent(InitializeActivity.this, SmsLoginActivity.class);
}
Observable.timer(1000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
......
......@@ -57,5 +57,10 @@ public interface SettingContract {
* 跳转到问题反馈.
*/
public abstract void dumpToFeed();
/**
* 修改密码.
*/
public abstract void modifyPwd();
}
}
......@@ -13,7 +13,9 @@ import com.dayu.bigfish.ui.AboutUsActivity;
import com.dayu.bigfish.ui.FeedBackActivity;
import com.dayu.common.Constants;
import com.dayu.event.UserInfo;
import com.dayu.usercenter.ui.activity.LoginActivity;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.ui.activity.ModifyPwdActivity;
import com.dayu.usercenter.ui.activity.SmsLoginActivity;
import com.dayu.utils.AppManager;
import com.dayu.utils.AppUtils;
import com.dayu.utils.DataCleanManager;
......@@ -68,10 +70,10 @@ public class SettingPresenter extends SettingContract.Presenter {
// }
// });
// }
SPUtils.put(Constants.HX_STATE,true);
SPUtils.put(Constants.HX_STATE, true);
} else {
// EMClient.getInstance().logout(true);
SPUtils.put(Constants.HX_STATE,false);
SPUtils.put(Constants.HX_STATE, false);
}
MobclickAgent.onEvent(MyApplication.getContext(), "swtich_message_button");
}
......@@ -93,7 +95,7 @@ public class SettingPresenter extends SettingContract.Presenter {
EMClient.getInstance().logout(true);
UserManager.getInstance().clearUserInfo();
AppManager.getInstance().finishAllActivity();
mView.startActivity(LoginActivity.class);
mView.startActivity(SmsLoginActivity.class);
MobclickAgent.onEvent(MyApplication.getContext(), "login_out");
}
......@@ -144,4 +146,11 @@ public class SettingPresenter extends SettingContract.Presenter {
MobclickAgent.onEvent(MyApplication.getContext(), "feed_back");
}
@Override
public void modifyPwd() {
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, UserManager.getInstance().getUserPhone());
mView.startActivityAndFinish(ModifyPwdActivity.class, bundle);
}
}
......@@ -216,6 +216,33 @@
android:src="@mipmap/list_more" />
</RelativeLayout>
<TextView style="@style/line" />
<RelativeLayout
android:id="@+id/modify_pwd"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="@color/cl_white"
android:onClick="@{()->presenter.modifyPwd()}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="13.3dp"
android:text="@string/modify_pwd"
android:textColor="@color/cl_home_title_text_color"
android:textSize="14.7sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="13.3dp"
android:src="@mipmap/list_more" />
</RelativeLayout>
<Button
android:id="@+id/exit_button"
android:layout_width="wrap_content"
......
......@@ -51,7 +51,7 @@ public class ServerException extends Exception {
/** 用户相关错误*/
case "USER0002":
message = BaseApplication.getContext().getString(R.string.sms_code_unsend_or_expire);
message = BaseApplication.getContext().getString(R.string.user_on_blackilst);
break;
case "USER0004":
message = BaseApplication.getContext().getString(R.string.not_engineer);
......@@ -78,6 +78,9 @@ public class ServerException extends Exception {
case "USER0051":
message = BaseApplication.getContext().getString(R.string.not_audite_aviliable);
break;
case "USER0065":
message = BaseApplication.getContext().getString(R.string.old_pwd_error);
break;
case "DETECT_ERROR00003":
message = BaseApplication.getContext().getString(R.string.error_detect_face);
break;
......
......@@ -152,6 +152,8 @@ public class Constants {
public static final String HX_STATE = "hx_state";
public static final String CETIFICATION_STATE = "cetificaiton_state";//1:接单跳转0:待预约,登录页跳转
/**
* 主动申请备件.
......
package com.dayu.utils;
import java.security.MessageDigest;
/**
* Created by luofan
* on 2018/7/6.
*/
public class MD5Util {
/**
* 加密
* @param plaintext 明文
* @return ciphertext 密文
*/
public final static String encrypt(String plaintext) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };
try {
byte[] btInput = plaintext.getBytes();
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
}
......@@ -4,10 +4,9 @@ import android.app.Activity;
import android.os.CountDownTimer;
import android.text.Spannable;
import android.text.SpannableString;
import android.widget.Button;
import android.widget.TextView;
import com.dayu.baselibrary.R;
import com.dayu.common.BaseApplication;
/**
......@@ -16,24 +15,33 @@ import com.dayu.common.BaseApplication;
*/
public class TimeCountUtil extends CountDownTimer {
private Activity mActivity;
private Button btn;//按钮
private TextView btn;//按钮
private String mDescribe;
private String mAgain;
// 在这个构造方法里需要传入三个参数,一个是Activity,一个是总的时间millisInFuture,一个是countDownInterval,然后就是你在哪个按钮上做这个是,就把这个按钮传过来就可以了
public TimeCountUtil(Activity mActivity, long millisInFuture, long countDownInterval, Button btn) {
public TimeCountUtil(Activity mActivity, long millisInFuture, long countDownInterval, TextView btn) {
super(millisInFuture, countDownInterval);
this.mActivity = mActivity;
this.btn = btn;
}
public void setDescribe(String str){
mDescribe = str;
}
public void setDescribeAgain(String str){
mAgain = str;
}
@Override
public void onTick(long millisUntilFinished) {
btn.setClickable(false);//设置不能点击
btn.setText(millisUntilFinished / 1000 + " s");//设置倒计时时间
btn.setText(millisUntilFinished / 1000 + mDescribe);//设置倒计时时间
//按钮背景置灰
btn.setBackgroundResource(R.drawable.regist_button);
btn.setTextColor(mActivity.getResources().getColor(R.color.cl_selector_hui));
Spannable span = new SpannableString(btn.getText().toString());//获取按钮的文字
btn.setText(span);
......@@ -43,8 +51,8 @@ public class TimeCountUtil extends CountDownTimer {
@Override
public void onFinish() {
btn.setText(BaseApplication.getContext().getString(R.string.send_again));
btn.setText(mAgain);
btn.setClickable(true);//重新获得点击
btn.setBackgroundResource(R.drawable.btn_register_selector);
btn.setTextColor(mActivity.getResources().getColor(R.color.bg_button));
}
}
......@@ -4,6 +4,11 @@ import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Paint;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.CycleInterpolator;
import android.view.animation.TranslateAnimation;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;
......@@ -76,6 +81,15 @@ public class UIUtils {
}
/**
* convert sp to its equivalent px
*
* 将sp转换为px
*/
public static float sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (spValue*fontScale+0.5f);
}
/**
* 判断TextView的内容宽度是否超出其可用宽度
*
* @param tv
......@@ -97,6 +111,34 @@ public class UIUtils {
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
/**
* 设置晃动动画
*/
public static void setShakeAnimation(View view) {
view.startAnimation(shakeAnimation(3));
}
/**
* 晃动动画
*
* @param counts 半秒钟晃动多少下
* @return
*/
public static Animation shakeAnimation(int counts) {
Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);
translateAnimation.setInterpolator(new CycleInterpolator(counts));
translateAnimation.setDuration(500);
return translateAnimation;
}
/**
* EditText获取焦点并显示软键盘
*/
public static void showSoftInputFromWindow(Activity activity) {
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
......@@ -64,7 +64,7 @@ public class UserManager {
if (userInfo != null) {
//有数据
return !TextUtils.isEmpty(userInfo.getAccountId()) && !TextUtils.isEmpty(userInfo.getSiteId())
&& !TextUtils.isEmpty(userInfo.getAccountName()) && userInfo.getDetectStatus() == 1 && !TextUtils.isEmpty((String) SPUtils.get("USER_IDENTITY", ""));
&& !TextUtils.isEmpty(userInfo.getAccountName());
}
return false;
}
......
package com.dayu.utils;
import android.text.TextUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
......@@ -8,7 +10,6 @@ import java.util.regex.PatternSyntaxException;
public class UtilsUserAccountMatcher {
public static final int PASSWORD_MIN_LENGTH = 6;
public static final int PASSWORD_MAX_LENGTH = 20;
static String szEmailPattern = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
static Pattern emailPattern = Pattern.compile(szEmailPattern);
......@@ -44,6 +45,8 @@ public class UtilsUserAccountMatcher {
private static String sNumberFormat = "^[1-9][0-9]*[.]?\\d{0,2}$|^0|^0\\.\\d{0,2}$";
private static String isPword = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,18}$";
static Pattern isPwd = Pattern.compile(isPword);
public static boolean iSEmail(String email) {
return emailPattern.matcher(email).matches();
......@@ -53,26 +56,19 @@ public class UtilsUserAccountMatcher {
return phonePattern.matcher(phoneNum).matches();
}
public static boolean isMobileNum(String mobile) {
return mobilePattern.matcher(mobile).matches();
}
public static boolean isVerifyCode(String vcode) {
if (vcode.length() < 6) {
return verifyCodePatternFour.matcher(vcode).matches();
} else {
return verifyCodePattern.matcher(vcode).matches();
}
public static boolean isSmsCode(String str) {
return !TextUtils.isEmpty(str) && str.length() == PASSWORD_MIN_LENGTH;
}
public static boolean isPassword(String str) {
return !(str.equals("") || str.length() < PASSWORD_MIN_LENGTH || str.length() > PASSWORD_MAX_LENGTH);
Matcher m = isPwd.matcher(str);
if (m.find()) {
return true;
}
public static boolean isRfPassword(String str) {
return isPasswordPn.matcher(str).matches();
return false;
}
public static boolean isContainChinese(String str) {
Matcher m = isCntainChinesePn.matcher(str);
if (m.find()) {
......
package com.dayu.widgets;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.dayu.baselibrary.R;
import java.lang.reflect.Field;
/**
* Created by luofan
* on 2018/7/2.
*/
public class SmsCodeView extends LinearLayout implements TextWatcher, View.OnKeyListener, View.OnFocusChangeListener {
private Context mContext;
private long endTime = 0;
private OnCodeFinishListener onCodeFinishListener;
/**
* 输入框数量
*/
private int mEtNumber;
/**
* 输入框类型
*/
private VCInputType mEtInputType;
/**
* 输入框的宽度
*/
private int mEtWidth;
/**
* 文字颜色
*/
private int mEtTextColor;
/**
* 文字大小
*/
private float mEtTextSize;
/**
* 输入框背景
*/
private int mEtTextBg;
private int mCursorDrawable;
public OnCodeFinishListener getOnCodeFinishListener() {
return onCodeFinishListener;
}
public void setOnCodeFinishListener(OnCodeFinishListener onCodeFinishListener) {
this.onCodeFinishListener = onCodeFinishListener;
}
public int getmEtNumber() {
return mEtNumber;
}
public void setmEtNumber(int mEtNumber) {
this.mEtNumber = mEtNumber;
}
public VCInputType getmEtInputType() {
return mEtInputType;
}
public void setmEtInputType(VCInputType mEtInputType) {
this.mEtInputType = mEtInputType;
}
public int getmEtWidth() {
return mEtWidth;
}
public void setmEtWidth(int mEtWidth) {
this.mEtWidth = mEtWidth;
}
public int getmEtTextColor() {
return mEtTextColor;
}
public void setmEtTextColor(int mEtTextColor) {
this.mEtTextColor = mEtTextColor;
}
public float getmEtTextSize() {
return mEtTextSize;
}
public void setmEtTextSize(float mEtTextSize) {
this.mEtTextSize = mEtTextSize;
}
public int getmEtTextBg() {
return mEtTextBg;
}
public void setmEtTextBg(int mEtTextBg) {
this.mEtTextBg = mEtTextBg;
}
public int getmCursorDrawable() {
return mCursorDrawable;
}
public void setmCursorDrawable(int mCursorDrawable) {
this.mCursorDrawable = mCursorDrawable;
}
public enum VCInputType {
NUMBER,
NUMBERPASSWORD,
TEXT,
TEXTPASSWORD,
}
public SmsCodeView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
@SuppressLint({"Recycle", "CustomViewStyleable"})
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.vericationCodeView);
mEtNumber = typedArray.getInteger(R.styleable.vericationCodeView_vcv_et_number, 4);
int inputType = typedArray.getInt(R.styleable.vericationCodeView_vcv_et_inputType, VCInputType.NUMBER.ordinal());
mEtInputType = VCInputType.values()[inputType];
mEtWidth = typedArray.getDimensionPixelSize(R.styleable.vericationCodeView_vcv_et_width, 120);
mEtTextColor = typedArray.getColor(R.styleable.vericationCodeView_vcv_et_text_color, Color.BLACK);
mEtTextSize = typedArray.getDimensionPixelSize(R.styleable.vericationCodeView_vcv_et_text_size, 16);
mEtTextBg = typedArray.getResourceId(R.styleable.vericationCodeView_vcv_et_bg, R.drawable.et_sms_empty);
mCursorDrawable = typedArray.getResourceId(R.styleable.vericationCodeView_vcv_et_cursor, R.drawable.et_cursor);
//释放资源
typedArray.recycle();
initView();
}
@SuppressLint("ResourceAsColor")
private void initView() {
for (int i = 0; i < mEtNumber; i++) {
EditText editText = new EditText(mContext);
initEditText(editText, i);
addView(editText);
if (i == 0) { //设置第一个editText获取焦点
editText.setFocusable(true);
}
}
}
private void initEditText(EditText editText, int i) {
int childHPadding = 14;
int childVPadding = 14;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(mEtWidth, mEtWidth);
layoutParams.bottomMargin = childVPadding;
layoutParams.topMargin = childVPadding;
layoutParams.leftMargin = childHPadding;
layoutParams.rightMargin = childHPadding;
layoutParams.gravity = Gravity.CENTER;
editText.setLayoutParams(layoutParams);
editText.setGravity(Gravity.CENTER);
editText.setId(i);
editText.setCursorVisible(true);
editText.setMaxEms(1);
editText.setTextColor(mEtTextColor);
editText.setTextSize(mEtTextSize);
editText.setMaxLines(1);
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(1)});
switch (mEtInputType) {
case NUMBER:
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
break;
case NUMBERPASSWORD:
editText.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);
break;
case TEXT:
editText.setInputType(InputType.TYPE_CLASS_TEXT);
break;
case TEXTPASSWORD:
editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
break;
default:
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
}
editText.setPadding(0, 0, 0, 0);
editText.setOnKeyListener(this);
editText.setBackgroundResource(mEtTextBg);
//修改光标的颜色(反射)
try {
Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
f.setAccessible(true);
f.set(editText, mCursorDrawable);
} catch (Exception ignored) {
}
editText.addTextChangedListener(this);
editText.setOnFocusChangeListener(this);
editText.setOnKeyListener(this);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() != 0) {
focus();
}
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
backFocus();
}
return false;
}
@Override
public void setEnabled(boolean enabled) {
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
child.setEnabled(enabled);
}
}
/**
* 获取焦点
*/
private void focus() {
int count = getChildCount();
EditText editText;
//利用for循环找出还最前面那个还没被输入字符的EditText,并把焦点移交给它。
for (int i = 0; i < count; i++) {
editText = (EditText) getChildAt(i);
if (editText.getText().length() < 1) {
editText.setCursorVisible(true);
editText.requestFocus();
editText.setBackgroundResource(mEtTextBg);
return;
} else {
editText.setCursorVisible(false);
editText.setBackgroundResource(R.drawable.et_sms_input);
}
}
//如果最后一个输入框有字符,则返回结果
EditText lastEditText = (EditText) getChildAt(mEtNumber - 1);
if (lastEditText.getText().length() > 0) {
getResult();
}
}
public void clear() {
for (int i = 0; i < mEtNumber; i++) {
((EditText) getChildAt(i)).setText("");
if (i == 0) {
getChildAt(i).requestFocus();
}
getChildAt(i).setBackgroundResource(R.drawable.et_sms_empty);
}
}
private void backFocus() {
long startTime = System.currentTimeMillis();
EditText editText;
//循环检测有字符的`editText`,把其置空,并获取焦点。
for (int i = mEtNumber - 1; i >= 0; i--) {
editText = (EditText) getChildAt(i);
if (editText.getText().length() >= 1 && startTime - endTime > 100) {
editText.setText("");
editText.setCursorVisible(true);
editText.requestFocus();
endTime = startTime;
return;
}
}
}
private void getResult() {
StringBuffer stringBuffer = new StringBuffer();
EditText editText;
for (int i = 0; i < mEtNumber; i++) {
editText = (EditText) getChildAt(i);
stringBuffer.append(editText.getText());
}
if (onCodeFinishListener != null) {
onCodeFinishListener.onComplete(stringBuffer.toString());
}
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
focus();
}
}
public interface OnCodeFinishListener {
void onComplete(String content);
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="2dp" />
<solid android:color="@color/bg_button" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false">
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="@color/editext_color" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<stroke android:width="1dp" android:color="@color/bg_button" />
</shape>
</item>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFF" />
<stroke
android:width="1dp"
android:color="@color/editext_color" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFF" />
<stroke
android:width="1dp"
android:color="@color/bg_button" />
</shape>
\ No newline at end of file
......@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="4dp"/>
<solid android:color="@color/cl_receiving_order_item_data"/>
<solid android:color="@color/bg_button"/>
</shape>
\ No newline at end of file
......@@ -35,6 +35,7 @@
<color name="common_red">#FF5A4B</color>
<color name="light_grey">#FF666666</color>
<color name="bg_button">#FF3FAAFC</color>
<color name="editext_color">#FFB6B6B6</color>
......
......@@ -7,7 +7,8 @@
<string name="tv_login_button_text">&#160;</string>
<string name="tv_login_register_button_text">获取验证码</string>
<string name="tv_login_register_hint">请输入六位验证码</string>
<string name="tv_login_phone_editext_hint">请输入手机号</string>
<string name="tv_login_phone_editext_hint">请输入您的手机号</string>
<string name="input_pwd">请输入密码</string>
<string name="tv_order_item_time">今天</string>
<string name="tv_order_item_date">10:36</string>
<string name="tv_order_item_tool_text">维修</string>
......@@ -100,7 +101,7 @@
<string name="net_3G">3G网络数据</string>
<string name="net_wifi">WIFI网络</string>
<string name="net_not_connect">网络断开,请检查网络</string>
<string name="send_again">重新发送</string>
<string name="send_again">重新发送验证码</string>
<string name="first_afferent_itemtype">提示:需要先传入itemtype</string>
<string name="no_data_press_refresh">暂无数据(点击刷新)</string>
<string name="load_error">加载出错了啦</string>
......@@ -132,6 +133,8 @@
<string name="modify_alipay_info">修改账户信息</string>
<!--登录-->
<string name="sms_login">短信验证码登录</string>
<string name="sms_86">+86</string>
<string name="login_sms_success">验证码已发送,请注意查收</string>
<string name="login_voice_sms_success">语音验证码已发送,请注意查收</string>
<string name="phone_num_not_null">手机号不能为空!</string>
......@@ -161,6 +164,9 @@
<string name="coming_soon">敬请期待!</string>
<string name="open">打开</string>
<string name="is_open_dayu_bb">是否打开大鱼帮app?</string>
<string name="use_account_login">使用账号密码登录</string>
<string name="send_code_agian">秒后可重发</string>
<string name="login">登录</string>
<!--工单-->
......@@ -407,10 +413,12 @@
<string name="submission_of_audit">提交审核</string>
<string name="title_my_header">我的头像</string>
<string name="modify_header_iv">修改头像</string>
<string name="modify_pwd">修改密码</string>
<string name="dayu_bang">大鱼帮</string>
<string name="header_pic">头像</string>
<string name="person_mobile">手机号码</string>
<string name="moblie_num">手机号:</string>
<string name="real_name">真实姓名</string>
<string name="person_identity">身份证号</string>
<string name="person_identity_audite">身份认证</string>
......@@ -502,6 +510,7 @@
<string name="identity_is_error">身份证号不合法</string>
<string name="not_audite_aviliable">该工程师不处于审核拒绝状态</string>
<string name="error_verison_code">解析版本号失败</string>
<string name="old_pwd_error">旧密码错误</string>
<string name="error_detect_face">请采集您本人的面孔</string>
<string name="error_detect_server">系统异常,请稍后重试</string>
......@@ -595,5 +604,23 @@ C) 在甲方使用大鱼平å°æœåŠ¡è¿‡ç¨‹ä¸­äº§ç”Ÿçš„业务数æ®ï¼Œå®¢æˆ·æ•°æ
1. 甲方同意本平台通过以下任何方式向其送达各类通知或文件,包括但不限于:网页公告、APP公告、大鱼平台账户通知、向甲方预留的联系方式发送电子邮件、短信、信函等\n
2. 如果本协议的任何条款被视为不合法、无效或无法强制执行的,其不应影响本协议任何其他条款的有效性或可执行性。\n
</string>
<string name="input_sms_code">输入验证码</string>
<string name="login_tip">为了更好的提供服务,请您先登录</string>
<string name="forget_pwd">忘记密码?</string>
<string name="forget_passworid">忘记密码</string>
<string name="set_new_pwd">设置新密码</string>
<string name="pwd_tip">请输入8-18位(数字+字母)</string>
<string name="for_your_account">请为您的账号</string>
<string name="set_a_new_pwd">设置一个新密码</string>
<string name="two_pwd_different">两次密码输入不一致!</string>
<string name="old_pwd_tip">请输入8-18位(数字+字母)的旧密码!</string>
<string name="new_pwd_tip">请输入8-18位(数字+字母)的新密码!</string>
<string name="old_pwd">旧密码</string>
<string name="input_old_pwd">填写旧密码</string>
<string name="new_pwd">新密码</string>
<string name="comfirm_pwd">确认密码</string>
<string name="input_new_pwd_again">再次输入新的密码</string>
<string name="sms_code">验证码:</string>
<string name="skip">跳过</string>
</resources>
......@@ -4,7 +4,7 @@
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/cl_white</item>
<item name="colorPrimaryDark">@color/cl_primarydark</item>
<item name="colorPrimaryDark">@color/cl_line</item>
<item name="colorAccent">@color/cl_accent</item>
</style>
......@@ -123,4 +123,27 @@
<attr name="border_width" format="dimension"/>
<attr name="border_color" format="color"/>
</declare-styleable>
<!-- 自定义验证码输入框-->
<declare-styleable name="vericationCodeView">
<!--输入框的数量-->
<attr name="vcv_et_number" format="integer" />
<!--输入类型-->
<attr name="vcv_et_inputType">
<enum name="number" value="0" />
<enum name="numberPassword" value="1" />
<enum name="text" value="2" />
<enum name="textPassword" value="3" />
</attr>
<!--输入框的宽度-->
<attr name="vcv_et_width" format="dimension|reference" />
<!--输入框文字颜色-->
<attr name="vcv_et_text_color" format="color|reference" />
<!--输入框文字大小-->
<attr name="vcv_et_text_size" format="dimension|reference" />
<!--输入框背景-->
<attr name="vcv_et_bg" format="reference" />
<!--光标样式-->
<attr name="vcv_et_cursor" format="reference" />
</declare-styleable>
</resources>
......@@ -11,7 +11,6 @@ import com.dayu.order.presenter.BaseOrderPresenter;
public interface ReceivingContract {
interface View extends BaseView {
}
abstract class Presenter extends BaseOrderPresenter<View> {
......
package com.dayu.order.ui.activity;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.baselibrary.databinding.ActivityCommomRecycleBinding;
import com.dayu.order.R;
......@@ -8,6 +9,9 @@ import com.dayu.order.databinding.FragmentOrderdoingItemBinding;
import com.dayu.order.presenter.receivingorder.ReceivingContract;
import com.dayu.order.presenter.receivingorder.ReceivingPresenter;
import com.dayu.order.ui.adapter.OrderAdapter;
import com.dayu.provider.router.RouterPath;
import com.dayu.utils.UserManager;
import com.dayu.widgets.CustomDialog;
import com.dayu.widgets.listener.OnItemClickListener;
import com.umeng.analytics.MobclickAgent;
......@@ -51,11 +55,29 @@ public class ReceivingActivity extends BaseActivity<ReceivingPresenter, Activity
private void initListener() {
mAdapter.setOnChildClickListener((view, adapter, position) -> {
if (view.getId() == R.id.item_text_phone) {
int detectSatus = UserManager.getInstance().getUser().getDetectStatus();
if (detectSatus == 2 || detectSatus == 3) {
showCertificationDialog();
} else {
Order order = (Order) adapter.getItem(position);
mPresenter.receiveOrder(order.getId(), mPresenter.getmUserId());
MobclickAgent.onEvent(mActivity, "recevie_order");
}
}
});
}
private void showCertificationDialog() {
CustomDialog customDialog = new CustomDialog(mActivity, R.style.CustomDialog, getString(R.string.engineer_identity_not_audite)
, (dialog, confirm) -> {
if (confirm) {
ARouter.getInstance().build(RouterPath.PATH_CERTIFICAITON).navigation();
}
});
customDialog.setTitle(getString(R.string.identity_not_audite))
.setPositiveButton(getString(R.string.submit_again))
.setNegativeButton(getString(R.string.cancle));
customDialog.show();
}
@Override
......
......@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import com.alibaba.android.arouter.launcher.ARouter;
import com.amap.api.location.AMapLocation;
import com.dayu.base.ui.adapter.CoreAdapter;
import com.dayu.common.Constants;
......@@ -23,10 +24,13 @@ import com.dayu.order.ui.activity.SopWebViewActivity;
import com.dayu.order.ui.activity.SubcribeTimeActivity;
import com.dayu.provider.event.RefreshServe;
import com.dayu.provider.event.RefreshTab;
import com.dayu.provider.router.RouterPath;
import com.dayu.utils.ProgressUtil;
import com.dayu.utils.SPUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
import com.dayu.utils.UtilsDate;
import com.dayu.widgets.CustomDialog;
import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
......@@ -77,7 +81,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
holder.orderLineOne.setVisibility(View.VISIBLE);
holder.orderLineTwo.setVisibility(View.VISIBLE);
holder.tvItemProcess.setVisibility(View.VISIBLE);
holder.itemTextDizhi.setOnClickListener(v -> LocationUtils.openMap(mContext, address));
// holder.itemTextDizhi.setOnClickListener(v -> LocationUtils.openMap(mContext, address));
final int id = item.getId();
if (item.getAnyContacts() == 0) {
......@@ -345,6 +349,10 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
}
private void dumpSubcribeTimeActivity(int id, int adapterPosition, int state) {
int status = UserManager.getInstance().getUser().getDetectStatus();
if (state == 2 && (status == 2 || status == 3)) { //没有活体检测的先去进行活体检测
showCertificationDialog();
} else {
Intent intent = new Intent(mContext, SubcribeTimeActivity.class);
Bundle bundle = new Bundle();
bundle.putInt(Constants.ORDER_ID, id);
......@@ -353,6 +361,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
intent.putExtra(Constants.BUNDLE, bundle);
mContext.startActivity(intent);
}
}
private void dumpProcessActivity(Order detail, int adapterPosition) {
Intent intent = new Intent(mContext, ProcessOrderActivity.class);
......@@ -368,7 +377,7 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
Intent intent;
Bundle bundle = new Bundle();
boolean flag = (boolean) SPUtils.get(Constants.ORDER_ID + order.getId(), false);
if (false) {
if (flag) {
mPresenter.dumpToFaceCert(order);
} else {
if (order.getSpus().size() > 1) {
......@@ -398,6 +407,19 @@ public class OrderAdapter extends CoreAdapter<Order, FragmentOrderdoingItemBindi
MobclickAgent.onEvent(mContext, "process_sop");
}
private void showCertificationDialog() {
CustomDialog customDialog = new CustomDialog(mContext, R.style.CustomDialog, UIUtils.getString(R.string.engineer_identity_not_audite)
, (dialog, confirm) -> {
if (confirm) {
ARouter.getInstance().build(RouterPath.PATH_CERTIFICAITON).navigation();
}
});
customDialog.setTitle(UIUtils.getString(R.string.identity_not_audite))
.setPositiveButton(UIUtils.getString(R.string.submit_again))
.setNegativeButton(UIUtils.getString(R.string.cancle));
customDialog.show();
}
public void initPresenter(OrderDoingPresenter presenter) {
mPresenter = presenter;
}
......
......@@ -27,8 +27,6 @@ import com.dayu.utils.ToastUtils;
import com.dayu.widgets.listener.OnItemClickListener;
import com.umeng.analytics.MobclickAgent;
import java.io.File;
/**
* Created by luofan
* on 2018/5/21.
......@@ -105,10 +103,6 @@ public class MultiOrderDetailFragment extends DataBindingFragment<FragmentMultiD
mBind.customerSignature.setOnClickListener(v -> imgMax(detail.getEsignatureImg()));
}
private static boolean isInstallPackage() {
return new File("/data/data/" + "com.autonavi.minimap").exists();
}
public String getStaus(int staus) {
if (staus == 1) {
return mActivity.getString(R.string.not_receive_order);
......
package com.dayu.provider.event;
/**
* 刷新待预约列表.
* on 2017/10/11.
*/
public class CertificationEvent {
private int state;
public CertificationEvent(int state) {
this.state = state;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
}
......@@ -20,4 +20,9 @@ public class RouterPath {
public final static String PATH_ORDER_HISTORY = "/order/history";
/**
* 我的模块.
*/
public final static String PATH_CERTIFICAITON="/user/certificaiton";
}
......@@ -21,8 +21,8 @@ import okhttp3.RequestBody;
*/
public class UserApiFactory {
public static Observable<UserInfo> login(String phone, String smsCode) {
return Api.getService(UserService.class).login(phone, smsCode).compose(Api.applySchedulers());
public static Observable<UserInfo> login(String phone, String smsCode, String loginType) {
return Api.getService(UserService.class).login(phone, smsCode, loginType).compose(Api.applySchedulers());
}
......@@ -85,4 +85,20 @@ public class UserApiFactory {
public static Observable<Boolean> verifyMegLive(RequestBody body) {
return Api.getDownloadService(UserService.class).verifyMegLive(body).compose(Api.applySchedulers());
}
public static Observable<Boolean> sendForgetCode(String telephone, int type) {
return Api.getDownloadService(UserService.class).sendForgetCode(telephone, type).compose(Api.applySchedulers());
}
public static Observable<String> verifyCode(String telephone, String code) {
return Api.getDownloadService(UserService.class).verifyCode(telephone, code).compose(Api.applySchedulers());
}
public static Observable<Boolean> forgetPwd(String token, String newpwd1, String newpwd2) {
return Api.getDownloadService(UserService.class).forgetPwd(token, newpwd1, newpwd2).compose(Api.applySchedulers());
}
public static Observable<String> modifyPwd(String accountId, String ordpwd, String newpwd1, String newpwd2) {
return Api.getDownloadService(UserService.class).modifyPwd(accountId, ordpwd, newpwd1, newpwd2).compose(Api.applySchedulers());
}
}
......@@ -35,11 +35,12 @@ public interface UserService {
*/
@POST(UserConstant.LOGIN_URL)
Observable<BaseResponse<UserInfo>> login(@Query("telephone") String phone
, @Query("smsCode") String smsCode);
, @Query("smsCode") String smsCode,@Query("loginType") String loginType);
/**
* 获取验证码
*
* @param type 1:短信;2:语音.
* @return
*/
@GET(UserConstant.REGISTER_URL)
......@@ -181,4 +182,43 @@ public interface UserService {
*/
@POST(UserConstant.FACE_OCR)
Observable<BaseResponse<Boolean>> verifyMegLive(@Body RequestBody body);
/**
* 忘记密码发送验证码.
* @param telephone
* @param type
* @return
*/
@GET(UserConstant.RESET_PWD_CODE)
Observable<BaseResponse<Boolean>> sendForgetCode(@Path("telephone") String telephone, @Path("type") int type);
/**
* 忘记密码校验验证码.
* @param telephone
* @param smsCode
* @return
*/
@POST(UserConstant.VERIFY_CODE)
Observable<BaseResponse<String>> verifyCode(@Query("telephone") String telephone, @Query("smsCode") String smsCode);
/**
* 忘记密码.
* @param token
* @param newpwd1
* @param newpwd2
* @return
*/
@POST(UserConstant.FORGET_PWD)
Observable<BaseResponse<Boolean>> forgetPwd(@Query("token") String token, @Query("newpwd1") String newpwd1, @Query("newpwd2") String newpwd2);
/**
* 修改密码.
* @param accountId
* @param ordpwd
* @param newpwd1
* @param newpwd2
* @return
*/
@POST(UserConstant.MODIFY_PWD)
Observable<BaseResponse<String>> modifyPwd(@Query("accountId") String accountId, @Query("ordpwd") String ordpwd, @Query("newpwd1") String newpwd1, @Query("newpwd2") String newpwd2);
}
......@@ -9,6 +9,8 @@ public class UserConstant {
public static final String FRONT_URL = "front_url";
public static final String BACK_URL = "back_url";
public static final String DETECT_STATE = "detect_state";
public static final String PHONE = "phone";
public static final String CODE = "code";
/**
* 登录.
......@@ -82,4 +84,23 @@ public class UserConstant {
*/
public final static String FACE_OCR = "/api-user/" + "/accountExt/engineerMegLiveVerify";
/**
* 忘记密码.
*/
public final static String VERIFY_CODE = "/api-user/" + "account/resetPwd";
/**
* 重置密码时发送验证码.
*/
public final static String RESET_PWD_CODE = "/api-user/" + "account/resetSms/{telephone}/type/{type}";
/**
* 忘记密码.
*/
public final static String FORGET_PWD = "/api-user/" + "account/forgetModifyPwd";
/**
* 修改密码.
*/
public final static String MODIFY_PWD = "/api-user/" + "account/modifyPwd";
}
......@@ -8,6 +8,7 @@ import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.ui.activity.CertificationResultActivity;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
......@@ -86,15 +87,33 @@ public class FaceCertificaitonPresenter extends FaceCertificaitonContract.Presen
}
}, responeThrowable -> {
if ("DETECT_ERROR00001".equals(responeThrowable.subCode)) {
bundle.putString(UserConstant.DETECT_STATE, UIUtils.getString(R.string.please_upload_cleare_identity));
}else if ("DETECT_ERROR00003".equals(responeThrowable.subCode)) {
bundle.putString(UserConstant.DETECT_STATE, UIUtils.getString(R.string.please_upload_yourself_face));
ToastUtils.showShortToast(R.string.please_upload_cleare_identity);
} else if ("DETECT_ERROR00003".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.please_upload_yourself_face);
} else if ("DETECT_ERROR00004".equals(responeThrowable.subCode)) {
bundle.putString(UserConstant.DETECT_STATE, UIUtils.getString(R.string.server_error));
ToastUtils.showShortToast(R.string.server_error);
} else if ("DETECT_ERROR00005".equals(responeThrowable.subCode)) {
bundle.putString(UserConstant.DETECT_STATE, UIUtils.getString(R.string.please_upload_identity_front));
ToastUtils.showShortToast(R.string.please_upload_identity_front);
} else if ("ID_NUMBER_NAME_NOT_MATCH".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.cert_name_identity_not_match);
} else if ("NO_SUCH_ID_NUMBER".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.cert_no_identity_record);
} else if ("INVALID_NAME_FORMAT".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.cert_error_name);
} else if ("INVALID_IDCARD_NUMBER".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.cert_invalid_identity);
} else if ("DATA_SOURCE_ERROR".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.cert_error_data);
} else if ("LOW_QUALITY".equals(responeThrowable.subCode)) {
ToastUtils.showShortToast(R.string.cert_pic_low_quality);
} else if ((responeThrowable.subCode).startsWith("INVALID_IMAGE_SIZE")) {
ToastUtils.showShortToast(R.string.cert_pic_big);
} else if ((responeThrowable.subCode).startsWith("MULTIPLE_FACES")) {
ToastUtils.showShortToast(R.string.cert_multi_face);
} else if ((responeThrowable.subCode).startsWith("NO_FACE_FOUND")) {
ToastUtils.showShortToast(R.string.crt_no_face);
} else {
bundle.putString(UserConstant.DETECT_STATE, UIUtils.getString(R.string.certification_not_pass));
ToastUtils.showShortToast(R.string.certification_not_pass);
}
mView.startActivity(CertificationResultActivity.class, bundle);
}));
......
package com.dayu.usercenter.presenter.forgetpwd;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface ForgetPwdContract {
interface View extends BaseView {
/**
* 验证码倒计时.
*/
void changeCodeBtn();
}
abstract class Presenter extends BasePresenter<View> {
/**
* 发送验证码.
*
*/
public abstract void sendCode();
public abstract void next();
}
}
package com.dayu.usercenter.presenter.forgetpwd;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.ui.activity.NewPwdActivity;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UtilsUserAccountMatcher;
/**
* Created by luofan
* on 2017/11/8.
*/
public class ForgetPwdPresenter extends ForgetPwdContract.Presenter {
private String mPhone;
public ObservableField<String> phoneNume = new ObservableField<>();
public ObservableField<String> code = new ObservableField<>();
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mPhone = bundle.getString(UserConstant.PHONE);
phoneNume.set(mPhone);
}
@Override
public void sendCode() {
if (!UtilsUserAccountMatcher.isPhoneNum(phoneNume.get())) {
ToastUtils.showShortToast(R.string.alipay_phone_error);
return;
}
mView.showDialog();
mView.changeCodeBtn();
UserApiFactory.sendForgetCode(phoneNume.get(), 1).subscribe(baseObserver(
aBoolean -> mView.showToast(R.string.login_sms_success)
, throwable -> mView.showToast(R.string.send_code_faile)));
}
@Override
public void next() {
if (!UtilsUserAccountMatcher.isPhoneNum(phoneNume.get())) {
ToastUtils.showShortToast(R.string.alipay_phone_error);
return;
}
mView.showDialog();
UserApiFactory.verifyCode(phoneNume.get(),code.get()).subscribe(baseObserver(s -> {
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, phoneNume.get());
bundle.putString(UserConstant.CODE, s);
mView.startActivityAndFinish(NewPwdActivity.class, bundle);
}));
}
}
......@@ -69,7 +69,7 @@ public class LoginPresenter extends LoginContract.Presenter {
return;
}
mView.showDialog();
UserApiFactory.login(userName.get(), password.get()).subscribe(baseObserver(userInfo -> {
UserApiFactory.login(userName.get(), password.get(),"mobileLogin").subscribe(baseObserver(userInfo -> {
if (userInfo.getDetectStatus() == 1) {
loginHx(userInfo.getHxAccount(), userInfo.getHxPwd());
dumpAndSave(userInfo);
......
package com.dayu.usercenter.presenter.modifypwd;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface ModifyPwdContract {
interface View extends BaseView {
void setPhone(String phone);
void dumpToLogin(String phone);
}
abstract class Presenter extends BasePresenter<View> {
public abstract void ModifyPwd();
}
}
package com.dayu.usercenter.presenter.modifypwd;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.utils.MD5Util;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UserManager;
import com.dayu.utils.UtilsUserAccountMatcher;
import io.reactivex.functions.Consumer;
/**
* Created by luofan
* on 2017/11/8.
*/
public class ModifyPwdPresenter extends ModifyPwdContract.Presenter {
private String mPhone;
public ObservableField<String> oldCode = new ObservableField<>();
public ObservableField<String> newCode = new ObservableField<>();
public ObservableField<String> againCode = new ObservableField<>();
private String mAccountId;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mPhone = bundle.getString(UserConstant.PHONE);
mView.setPhone(mPhone);
mAccountId = UserManager.getInstance().getUser().getAccountId();
}
@Override
public void ModifyPwd() {
if (!UtilsUserAccountMatcher.isPassword(oldCode.get())) {
ToastUtils.showShortToast(R.string.old_pwd_tip);
return;
}
if (!UtilsUserAccountMatcher.isPassword(newCode.get())) {
ToastUtils.showShortToast(R.string.new_pwd_tip);
return;
}
if (!newCode.get().equals(againCode.get())) {
ToastUtils.showShortToast(R.string.two_pwd_different);
return;
}
mView.showDialog();
UserApiFactory.modifyPwd(mAccountId, MD5Util.encrypt(oldCode.get()), MD5Util.encrypt(newCode.get()), MD5Util.encrypt(againCode.get())).subscribe(baseObserver(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
mView.dumpToLogin(mPhone);
}
}));
}
}
package com.dayu.usercenter.presenter.newpwd;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface NewPwdContract {
interface View extends BaseView {
void setPhone(String phone);
}
abstract class Presenter extends BasePresenter<View> {
public abstract void ModifyPwd();
}
}
package com.dayu.usercenter.presenter.newpwd;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.ui.activity.PwLoginActivity;
import com.dayu.utils.MD5Util;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UtilsUserAccountMatcher;
/**
* Created by luofan
* on 2017/11/8.
*/
public class NewPwdPresenter extends NewPwdContract.Presenter {
private String mPhone;
public ObservableField<String> code = new ObservableField<>();
private String mCode;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mPhone = bundle.getString(UserConstant.PHONE);
mCode = bundle.getString(UserConstant.CODE);
mView.setPhone(mPhone);
}
@Override
public void ModifyPwd() {
if (!UtilsUserAccountMatcher.isPassword(code.get())) {
ToastUtils.showShortToast(R.string.pwd_tip);
return;
}
mView.showDialog();
UserApiFactory.forgetPwd(mCode, MD5Util.encrypt(code.get()), MD5Util.encrypt(code.get())).subscribe(baseObserver(
aBoolean -> {
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, mPhone);
mView.startActivityAndFinish(PwLoginActivity.class, bundle);
}));
}
}
package com.dayu.usercenter.presenter.personinfo;
import android.databinding.ObservableField;
import android.os.Bundle;
import android.text.TextUtils;
import com.dayu.common.BaseApplication;
import com.dayu.common.Constants;
import com.dayu.event.UserInfo;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.data.protocol.EngineerInfo;
import com.dayu.usercenter.ui.activity.ModifyPersonInfoActivity;
import com.dayu.usercenter.ui.activity.IdentityCertificationActivity;
import com.dayu.usercenter.ui.activity.MyHeaderIvActivity;
import com.dayu.utils.UserManager;
import com.umeng.analytics.MobclickAgent;
......@@ -19,12 +18,15 @@ import com.umeng.analytics.MobclickAgent;
*/
public class PersonInfoPresenter extends PersonInfoContract.Presenter {
public ObservableField<EngineerInfo> info = new ObservableField<>();
public ObservableField<Boolean> status = new ObservableField<>();
private int mAccountId;
private int mDetectStatus;
@Override
public void onAttached() {
UserInfo info = UserManager.getInstance().getUser();
mAccountId = Integer.parseInt(info.getAccountId());
mDetectStatus = info.getDetectStatus();
mView.showDialog();
queryInfo(mAccountId);
}
......@@ -37,10 +39,8 @@ public class PersonInfoPresenter extends PersonInfoContract.Presenter {
@Override
public void dumpToModifyPerson() {
if (info.get() != null && info.get().getAduitStatus() == 3) {
Bundle bundle = new Bundle();
bundle.putSerializable(Constants.ENGINEERINFO, info.get());
mView.startActivity(ModifyPersonInfoActivity.class, bundle);
if (info.get() != null && TextUtils.isEmpty(info.get().getIdentity()) || (mDetectStatus == 2 || mDetectStatus == 3)) {
mView.startActivity(IdentityCertificationActivity.class);
MobclickAgent.onEvent(BaseApplication.getContext(), "modify_person_info");
}
}
......@@ -48,6 +48,13 @@ public class PersonInfoPresenter extends PersonInfoContract.Presenter {
@Override
public void queryInfo(int accountId) {
UserApiFactory.getEngineerInfo(accountId).subscribe(baseObserver(
engineerInfo -> info.set(engineerInfo)));
engineerInfo -> {
info.set(engineerInfo);
if (!TextUtils.isEmpty(engineerInfo.getIdentity()) && mDetectStatus == 1) {
status.set(false);
} else {
status.set(true);
}
}));
}
}
package com.dayu.usercenter.presenter.pwlogin;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
import com.dayu.event.UserInfo;
import com.dayu.widgets.listener.OnCloseListener;
/**
* Created by luo on 2016/8/4.
*/
public interface PwLoginContract {
interface View extends BaseView {
void showLoginDialog(OnCloseListener listener);
}
abstract class Presenter extends BasePresenter<View> {
/**
* 登录.
*/
public abstract void login();
/**
* 跳转到主界面并保存用户信息.
*/
public abstract void dumpAndSave(UserInfo info);
/**
* 登录环信.
*
* @param hxAccount
* @param hxPwd
*/
public abstract void loginHx(String hxAccount, String hxPwd);
}
}
package com.dayu.usercenter.presenter.pwlogin;
import android.databinding.ObservableField;
import android.os.Bundle;
import android.text.TextUtils;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.event.UserInfo;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.ui.activity.IdentityCertificationActivity;
import com.dayu.usercenter.ui.activity.SmsLoginActivity;
import com.dayu.utils.LogUtils;
import com.dayu.utils.MD5Util;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient;
/**
* Created by luofan
* on 2017/11/8.
*/
public class PwLoginPresenter extends PwLoginContract.Presenter {
private String mPhone;
public ObservableField<String> phoneNume = new ObservableField<>();
public ObservableField<String> code = new ObservableField<>();
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mPhone = bundle.getString(UserConstant.PHONE);
phoneNume.set(mPhone);
}
@Override
public void login() {
mView.showDialog();
UserApiFactory.login(phoneNume.get(), MD5Util.encrypt(code.get()), "usernameLogin").subscribe(baseObserver(userInfo -> {
if (userInfo.getDetectStatus() == 1) {
loginHx(userInfo.getHxAccount(), userInfo.getHxPwd());
dumpAndSave(userInfo);
} else if (userInfo.getDetectStatus() == 2 || userInfo.getDetectStatus() == 3) {
showLoginDialog(userInfo);
UserManager.getInstance().saveUser(userInfo);
} else {
ToastUtils.showShortToast(UIUtils.getString(R.string.login_faile));
}
}));
}
@Override
public void loginHx(String hxAccount, String hxPwd) {
if (!(TextUtils.isEmpty(hxAccount)) && !(TextUtils.isEmpty(hxPwd))) {
EMClient.getInstance().login(hxAccount, hxPwd, new EMCallBack() {
@Override
public void onSuccess() {
EMClient.getInstance().groupManager().loadAllGroups();
EMClient.getInstance().chatManager().loadAllConversations();
}
@Override
public void onProgress(int progress, String status) {
}
@Override
public void onError(int code, String message) {
LogUtils.d(code + message);
}
});
}
}
@Override
public void dumpAndSave(UserInfo info) {
UserManager.getInstance().saveUser(info);
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation();
}
private void showLoginDialog(UserInfo userInfo) {
mView.showLoginDialog((dialog, confirm) -> {
if (confirm) {
mView.startActivity(IdentityCertificationActivity.class);
} else {
loginHx(userInfo.getHxAccount(), userInfo.getHxPwd());
dumpAndSave(userInfo);
}
});
}
@Override
public void dumpBack() {
mView.startActvityAndFinish(SmsLoginActivity.class);
}
}
package com.dayu.usercenter.presenter.smslogin;
import com.dayu.base.ui.presenter.BasePresenter;
import com.dayu.common.BaseView;
import com.dayu.event.UserInfo;
import com.dayu.widgets.listener.OnCloseListener;
/**
* Created by luo on 2016/8/4.
*/
public interface SmsLoginContract {
interface View extends BaseView {
/**
* 验证码倒计时.
*/
void changeCodeBtn();
/**
* 语音验证码变灰.
*/
void changeVoiceCodeBtn();
void showLoginDialog(OnCloseListener listener);
void setError(String str);
}
abstract class Presenter extends BasePresenter<View> {
/**
* 发送验证码.
*
* @param type 1:短信,2:语音验证码.
*/
public abstract void sendCode(int type);
/**
* 登录.
*/
public abstract void login(String code);
/**
* 跳转到主界面并保存用户信息.
*/
public abstract void dumpAndSave(UserInfo info);
/**
* 登录环信.
*
* @param hxAccount
* @param hxPwd
*/
public abstract void loginHx(String hxAccount, String hxPwd);
}
}
package com.dayu.usercenter.presenter.smslogin;
import android.databinding.ObservableField;
import android.os.Bundle;
import android.text.TextUtils;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.common.BaseApplication;
import com.dayu.event.UserInfo;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.api.UserApiFactory;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.ui.activity.IdentityCertificationActivity;
import com.dayu.utils.LogUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient;
/**
* Created by luofan
* on 2017/11/8.
*/
public class SmsLoginPresenter extends SmsLoginContract.Presenter {
private String mPhone;
public ObservableField<String> phoneNume = new ObservableField<>();
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mPhone = bundle.getString(UserConstant.PHONE);
phoneNume.set(mPhone);
}
@Override
public void sendCode(int type) {
mView.showDialog();
if (type == 1) {
mView.changeCodeBtn();
} else {
mView.changeVoiceCodeBtn();
}
UserApiFactory.sendCode(mPhone, type).subscribe(baseObserver(aBoolean -> {
if (type == 1) {
mView.showToast(R.string.login_sms_success);
} else if (type == 2) {
mView.showToast(R.string.login_voice_sms_success);
}
}, throwable -> mView.showToast(R.string.send_code_faile)));
}
@Override
public void login(String code) {
mView.showDialog();
UserApiFactory.login(mPhone, code, "mobileLogin").subscribe(baseObserver(userInfo -> {
if (userInfo.getDetectStatus() == 1) {
loginHx(userInfo.getHxAccount(), userInfo.getHxPwd());
dumpAndSave(userInfo);
} else if (userInfo.getDetectStatus() == 2 || userInfo.getDetectStatus() == 3) {
showLoginDialog(userInfo);
UserManager.getInstance().saveUser(userInfo);
} else {
ToastUtils.showShortToast(UIUtils.getString(R.string.login_faile));
}
}, error -> {
String message = UIUtils.getString(R.string.login_faile);
switch (error.subCode) {
case "USER0002":
message = BaseApplication.getContext().getString(com.dayu.baselibrary.R.string.sms_code_unsend_or_expire);
break;
case "USER0004":
message = BaseApplication.getContext().getString(com.dayu.baselibrary.R.string.not_engineer);
break;
case "USER0005":
message = BaseApplication.getContext().getString(com.dayu.baselibrary.R.string.account_frozen);
break;
case "USER0020":
message = BaseApplication.getContext().getString(com.dayu.baselibrary.R.string.sms_code_unsend_or_expire);
break;
case "GLOBAL0101":
case "USER0021":
message = BaseApplication.getContext().getString(com.dayu.baselibrary.R.string.sms_code_error);
break;
case "USER0003":
case "USER0023":
message = BaseApplication.getContext().getString(com.dayu.baselibrary.R.string.engineer_acount_notavialibe);
break;
}
mView.setError(message);
}));
}
@Override
public void loginHx(String hxAccount, String hxPwd) {
if (!(TextUtils.isEmpty(hxAccount)) && !(TextUtils.isEmpty(hxPwd))) {
EMClient.getInstance().login(hxAccount, hxPwd, new EMCallBack() {
@Override
public void onSuccess() {
EMClient.getInstance().groupManager().loadAllGroups();
EMClient.getInstance().chatManager().loadAllConversations();
}
@Override
public void onProgress(int progress, String status) {
}
@Override
public void onError(int code, String message) {
LogUtils.d(code + message);
}
});
}
}
@Override
public void dumpAndSave(UserInfo info) {
UserManager.getInstance().saveUser(info);
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation();
}
private void showLoginDialog(UserInfo userInfo) {
mView.showLoginDialog((dialog, confirm) -> {
if (confirm) {
mView.startActivity(IdentityCertificationActivity.class);
} else {
loginHx(userInfo.getHxAccount(), userInfo.getHxPwd());
dumpAndSave(userInfo);
}
});
}
}
......@@ -6,11 +6,14 @@ import android.os.Bundle;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.common.Constants;
import com.dayu.provider.event.CertificationEvent;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.databinding.ActivityCertificationResultBinding;
import org.greenrobot.eventbus.EventBus;
/**
* Created by luofan
* on 2018/5/10.
......@@ -36,7 +39,6 @@ public class CertificationResultActivity extends DataBindingActivity<ActivityCer
if (state != null && state.contains(getString(R.string.certification_face))) {
finish();
} else {
// AppManager.getInstance().finishActivity(FaceCertificationActivity.class);
Intent intent = new Intent(mActivity, IdentityCertificationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK);
......@@ -45,8 +47,10 @@ public class CertificationResultActivity extends DataBindingActivity<ActivityCer
}
});
} else {
mBind.tvCommite.setOnClickListener(v ->
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation());
mBind.tvCommite.setOnClickListener(v -> {
EventBus.getDefault().post(new CertificationEvent(1));
ARouter.getInstance().build(RouterPath.PATH_MAIN).navigation();
});
}
}
......
package com.dayu.usercenter.ui.activity;
import android.text.Editable;
import android.text.TextUtils;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.MyTextWatcher;
import com.dayu.usercenter.R;
import com.dayu.usercenter.databinding.ForgetPwdLayoutBinding;
import com.dayu.usercenter.presenter.forgetpwd.ForgetPwdContract;
import com.dayu.usercenter.presenter.forgetpwd.ForgetPwdPresenter;
import com.dayu.utils.TimeCountUtil;
import com.dayu.utils.UIUtils;
import com.umeng.analytics.MobclickAgent;
/**
* Created by luofan
* on 2018/7/3.
*/
public class ForgetPwdActivity extends BaseActivity<ForgetPwdPresenter, ForgetPwdLayoutBinding> implements ForgetPwdContract.View {
@Override
public int getLayoutId() {
return R.layout.forget_pwd_layout;
}
@Override
public void initView() {
mBind.tvTitle.setText(R.string.forget_passworid);
mBind.mobile.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(s.toString(), mPresenter.code.get());
if (!TextUtils.isEmpty(s.toString())) {
mBind.getCode.setEnabled(true);
mBind.getCode.setAlpha(1);
} else {
mBind.getCode.setEnabled(false);
mBind.getCode.setAlpha(0.35f);
}
}
});
mBind.code.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(mPresenter.phoneNume.get(), s.toString());
}
});
mBind.next.setOnClickListener(v -> {
});
mBind.getCode.setEnabled(false);
mBind.next.setEnabled(false);
}
public void isMatch(String phone, String code) {
if (!TextUtils.isEmpty(phone) && !TextUtils.isEmpty(code)) {
mBind.next.setAlpha(1);
mBind.next.setEnabled(true);
} else {
mBind.next.setAlpha(0.35f);
mBind.next.setEnabled(false);
}
}
@Override
public void changeCodeBtn() {
TimeCountUtil timeCountUtil = new TimeCountUtil(mActivity, 60000, 1000, mBind.getCode);
timeCountUtil.setDescribe(getString(R.string.send_code_agian));
timeCountUtil.setDescribeAgain(UIUtils.getString(R.string.send_again));
timeCountUtil.start();
MobclickAgent.onEvent(mActivity, "sms_code");
}
@Override
public void setPresenter() {
mBind.setPresenter(mPresenter);
}
}
......@@ -12,7 +12,9 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.databinding.ActivityCertificationLayoutBinding;
import com.dayu.usercenter.presenter.certification.CertificaitonContract;
......@@ -34,7 +36,7 @@ import static com.dayu.utils.GlideImageLoader.compressImage;
* Created by luofan
* on 2018/5/10.
*/
@Route(path = RouterPath.PATH_CERTIFICAITON)
public class IdentityCertificationActivity extends BaseActivity<CertificaitonPresenter, ActivityCertificationLayoutBinding>
implements CertificaitonContract.View {
public static final int EXTERNAL_STORAGE_REQ_CAMERA_CODE = 10;
......
......@@ -72,7 +72,7 @@ public class ModifyPersonInfoActivity extends BaseActivity<ModifyPersonPresenter
CustomDialog customDialog = new CustomDialog(mActivity, R.style.CustomDialog, getString(R.string.audite_tip)
, (dialog, confirm) -> {
if (confirm) {
Intent intent = new Intent(mActivity, LoginActivity.class);
Intent intent = new Intent(mActivity, SmsLoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
......
package com.dayu.usercenter.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.Constants;
import com.dayu.common.MyTextWatcher;
import com.dayu.usercenter.R;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.databinding.ActivityModifyPwdLayoutBinding;
import com.dayu.usercenter.presenter.modifypwd.ModifyPwdContract;
import com.dayu.usercenter.presenter.modifypwd.ModifyPwdPresenter;
import com.dayu.utils.AppManager;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
import com.hyphenate.chat.EMClient;
/**
* Created by luofan
* on 2018/7/4.
*/
public class ModifyPwdActivity extends BaseActivity<ModifyPwdPresenter, ActivityModifyPwdLayoutBinding> implements ModifyPwdContract.View {
@Override
public void setPresenter() {
mBind.setPresenter(mPresenter);
}
@Override
public int getLayoutId() {
return R.layout.activity_modify_pwd_layout;
}
@Override
public void initView() {
mBind.tvTitle.setText(UIUtils.getString(R.string.modify_pwd));
mBind.oldCode.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(s.toString(), mBind.newCode.getText().toString(), mBind.againCode.getText().toString());
}
});
mBind.newCode.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(mBind.oldCode.getText().toString(), s.toString(), mBind.againCode.getText().toString());
}
});
mBind.againCode.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(s.toString(), mBind.newCode.getText().toString(), s.toString());
}
});
mBind.next.setEnabled(false);
}
public void isMatch(String old, String newCode, String again) {
if (!TextUtils.isEmpty(old) && !TextUtils.isEmpty(newCode) && !TextUtils.isEmpty(again)) {
mBind.next.setEnabled(true);
mBind.next.setAlpha(1);
} else {
mBind.next.setEnabled(false);
mBind.next.setAlpha(0.35f);
}
}
@Override
public void setPhone(String phone) {
StringBuilder builder = new StringBuilder(phone);
phone = builder.insert(3, " ").insert(8, " ").toString();
mBind.mobile.setText(phone);
}
@Override
public void dumpToLogin(String phone) {
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, phone);
Intent intent = new Intent(mActivity, PwLoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Constants.BUNDLE, bundle);
EMClient.getInstance().logout(true);
UserManager.getInstance().clearUserInfo();
AppManager.getInstance().finishAllActivity();
startActivity(intent);
}
}
package com.dayu.usercenter.ui.activity;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.MyTextWatcher;
import com.dayu.usercenter.R;
import com.dayu.usercenter.databinding.ActivityNewPwdLayoutBinding;
import com.dayu.usercenter.presenter.newpwd.NewPwdContract;
import com.dayu.usercenter.presenter.newpwd.NewPwdPresenter;
/**
* Created by luofan
* on 2018/7/4.
*/
public class NewPwdActivity extends BaseActivity<NewPwdPresenter, ActivityNewPwdLayoutBinding> implements NewPwdContract.View {
private int mPwdState = 0;
@Override
public void setPresenter() {
mBind.setPresenter(mPresenter);
}
@Override
public int getLayoutId() {
return R.layout.activity_new_pwd_layout;
}
@Override
public void initView() {
mBind.tvTitle.setText(getString(R.string.set_new_pwd));
mBind.showPwd.setOnClickListener(v -> {
if (mPwdState == 1) {
mBind.pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
mBind.showPwd.setImageResource(R.drawable.icon_pw_close);
mPwdState = 0;
} else {
mBind.pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
mBind.showPwd.setImageResource(R.drawable.icon_pw_open);
mPwdState = 1;
}
});
mBind.pwd.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (!TextUtils.isEmpty(s.toString())) {
mBind.next.setAlpha(1);
mBind.next.setEnabled(true);
} else {
mBind.next.setAlpha(0.35f);
mBind.next.setEnabled(false);
}
}
});
mBind.next.setEnabled(false);
}
@Override
public void setPhone(String phone) {
StringBuilder builder = new StringBuilder(phone);
phone = builder.insert(3, " ").insert(8, " ").toString();
mBind.mobile.setText(phone);
}
}
package com.dayu.usercenter.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.common.Constants;
import com.dayu.common.MyTextWatcher;
import com.dayu.usercenter.R;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.databinding.ActivityPwloginLayoutBinding;
import com.dayu.usercenter.presenter.pwlogin.PwLoginContract;
import com.dayu.usercenter.presenter.pwlogin.PwLoginPresenter;
import com.dayu.widgets.CustomDialog;
import com.dayu.widgets.listener.OnCloseListener;
/**
* Created by luofan
* on 2018/7/3.
*/
public class PwLoginActivity extends BaseActivity<PwLoginPresenter, ActivityPwloginLayoutBinding> implements PwLoginContract.View {
private int mPwdState = 0;
@Override
public int getLayoutId() {
return R.layout.activity_pwlogin_layout;
}
@Override
public void initView() {
mBind.showPwd.setOnClickListener(v -> {
if (mPwdState == 1) {
mBind.pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
mBind.showPwd.setImageResource(R.drawable.icon_pw_close);
mPwdState = 0;
} else {
mBind.pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
mBind.showPwd.setImageResource(R.drawable.icon_pw_open);
mPwdState = 1;
}
});
mBind.forgetPwd.setOnClickListener(v -> {
Intent intent = new Intent(mActivity, ForgetPwdActivity.class);
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, mBind.mobile.getText().toString());
intent.putExtra(Constants.BUNDLE, bundle);
startActivity(intent, bundle);
});
mBind.mobile.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(s.toString(), mBind.pwd.getText().toString());
}
});
mBind.pwd.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
isMatch(mBind.mobile.getText().toString(), s.toString());
}
});
mBind.next.setEnabled(false);
}
public void isMatch(String phone, String pwd) {
if (!TextUtils.isEmpty(phone) && !TextUtils.isEmpty(pwd)) {
mBind.next.setAlpha(1);
mBind.next.setEnabled(true);
} else {
mBind.next.setAlpha(0.35f);
mBind.next.setEnabled(false);
}
}
@Override
public void setPresenter() {
mBind.setPresenter(mPresenter);
}
@Override
public void showLoginDialog(OnCloseListener listener) {
CustomDialog customDialog = new CustomDialog(mActivity, R.style.CustomDialog, getString(R.string.engineer_identity_not_audite)
, listener);
customDialog.setTitle(getString(R.string.identity_not_audite))
.setPositiveButton(getString(R.string.submit_again))
.setNegativeButton(getString(R.string.skip));
customDialog.show();
}
@Override
public void onBackPressed() {
startActvityAndFinish(SmsLoginActivity.class);
}
}
package com.dayu.usercenter.ui.activity;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.usercenter.R;
import com.dayu.usercenter.databinding.ActivitySmsCodeBinding;
import com.dayu.usercenter.presenter.smslogin.SmsLoginContract;
import com.dayu.usercenter.presenter.smslogin.SmsLoginPresenter;
import com.dayu.utils.TimeCountUtil;
import com.dayu.utils.UIUtils;
import com.dayu.widgets.CustomDialog;
import com.dayu.widgets.listener.OnCloseListener;
import com.umeng.analytics.MobclickAgent;
/**
* Created by luofan
* on 2018/7/2.
*/
public class SmsCodeActivity extends BaseActivity<SmsLoginPresenter, ActivitySmsCodeBinding> implements SmsLoginContract.View {
@Override
public void setPresenter() {
mBind.setPresenter(mPresenter);
}
@Override
public int getLayoutId() {
return R.layout.activity_sms_code;
}
@Override
public void initView() {
mPresenter.sendCode(1);
mBind.sendCode.setOnClickListener(v -> changeCodeBtn());
mBind.smsCode.setOnCodeFinishListener(content -> {
mPresenter.login(content);
mBind.smsCode.clear();
});
UIUtils.showSoftInputFromWindow(mActivity);
}
@Override
public void changeCodeBtn() {
TimeCountUtil timeCountUtil = new TimeCountUtil(mActivity, 60000, 1000, mBind.sendCode);
timeCountUtil.setDescribe(getString(R.string.send_code_agian));
timeCountUtil.setDescribeAgain(UIUtils.getString(R.string.send_again));
timeCountUtil.start();
MobclickAgent.onEvent(mActivity, "sms_code");
}
@Override
public void changeVoiceCodeBtn() {
mBind.tvVoiceCode.setTextColor(getResources().getColor(R.color.cl_text));
mBind.tvVoiceCode.setClickable(false);
MobclickAgent.onEvent(mActivity, "sms_voice");
}
@Override
public void showLoginDialog(OnCloseListener listener) {
CustomDialog customDialog = new CustomDialog(mActivity, R.style.CustomDialog, getString(R.string.engineer_identity_not_audite)
, listener);
customDialog.setTitle(getString(R.string.identity_not_audite))
.setPositiveButton(getString(R.string.submit_again))
.setNegativeButton(getString(R.string.skip));
customDialog.show();
}
@Override
public void setError(String str) {
mBind.error.setText(str);
mBind.smsCode.clear();
UIUtils.setShakeAnimation(mBind.error);
}
}
package com.dayu.usercenter.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.common.BaseApplication;
import com.dayu.common.Constants;
import com.dayu.common.MyTextWatcher;
import com.dayu.usercenter.R;
import com.dayu.usercenter.common.UserConstant;
import com.dayu.usercenter.databinding.ActivitySmsLoginBinding;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UtilsUserAccountMatcher;
import com.umeng.analytics.MobclickAgent;
/**
* Created by luofan
* on 2018/7/2.
*/
public class SmsLoginActivity extends DataBindingActivity<ActivitySmsLoginBinding> {
@Override
public int getLayoutId() {
return R.layout.activity_sms_login;
}
@Override
public void initView() {
mBind.tvAgreement.setOnClickListener(v -> {
Intent intent = new Intent(mActivity, AgreementActivity.class);
startActivity(intent);
MobclickAgent.onEvent(BaseApplication.getContext(), "customer_agreement");
});
mBind.mobile.addTextChangedListener(new MyTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (!TextUtils.isEmpty(s.toString())) {
mBind.next.setEnabled(true);
mBind.next.setAlpha(1);
} else {
mBind.next.setEnabled(false);
mBind.next.setAlpha(0.35f);
}
}
});
mBind.next.setOnClickListener(v -> {
String phone = mBind.mobile.getText().toString().trim();
if (!UtilsUserAccountMatcher.isPhoneNum(phone)) {
ToastUtils.showShortToast(R.string.alipay_phone_error);
} else {
Intent intent = new Intent(mActivity, SmsCodeActivity.class);
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, phone);
intent.putExtra(Constants.BUNDLE, bundle);
startActivity(intent, bundle);
}
});
mBind.next.setEnabled(false);
mBind.useAccount.setOnClickListener(v -> {
Intent intent = new Intent(mActivity, PwLoginActivity.class);
Bundle bundle = new Bundle();
bundle.putString(UserConstant.PHONE, mBind.mobile.getText().toString());
intent.putExtra(Constants.BUNDLE, bundle);
startActivity(intent, bundle);
});
}
}
......@@ -15,6 +15,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.ui.fragment.BaseFragment;
import com.dayu.common.Constants;
import com.dayu.event.UserInfo;
import com.dayu.provider.event.CertificationEvent;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.R;
import com.dayu.usercenter.data.protocol.EngineerInfo;
......@@ -33,6 +34,10 @@ import com.dayu.utils.UserManager;
import com.dayu.widgets.CustomDialog;
import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
/**
* Created by luofan
* on 2017/11/20.
......@@ -47,6 +52,7 @@ public class HomePersonFragment extends BaseFragment<HomePersonPresenter, Fragme
private String mUserPhone;
private String mScore;
private int mAccountBalance;
private int mDetectStatus;
public static HomePersonFragment newInstance() {
Bundle args = new Bundle();
......@@ -60,7 +66,9 @@ public class HomePersonFragment extends BaseFragment<HomePersonPresenter, Fragme
UserInfo userInfo = UserManager.getInstance().getUser();
userId = Integer.parseInt(userInfo.getAccountId());
siteId = Integer.parseInt(userInfo.getSiteId());
mDetectStatus = userInfo.getDetectStatus();
ProgressUtil.startLoad(mActivity);
EventBus.getDefault().register(this);
// mPresenter.getAllData(userId, siteId);
// mPresenter.getAlipayAccount(userId);
}
......@@ -94,10 +102,10 @@ public class HomePersonFragment extends BaseFragment<HomePersonPresenter, Fragme
} else {
mBind.tvSex.setText(mActivity.getString(R.string.unknown));
}
if (info.getAduitStatus() == 1) {
mBind.ivAudited.setBackgroundResource(R.drawable.icon_authentication);
if (mDetectStatus == 1 && !TextUtils.isEmpty((String) SPUtils.get("USER_IDENTITY", ""))) {
mBind.ivAudited.setImageResource(R.drawable.icon_authentication);
} else {
mBind.ivAudited.setBackgroundResource(R.drawable.icon_unauthentication);
mBind.ivAudited.setImageResource(R.drawable.icon_unauthentication);
}
mBind.tvAge.setText(info.getAge() + mActivity.getString(R.string.age));
mUserPhone = info.getMobile();
......@@ -178,8 +186,8 @@ public class HomePersonFragment extends BaseFragment<HomePersonPresenter, Fragme
} else {
Bundle bundle = new Bundle();
bundle.putString(Constants.URL, "http://shouji.baidu.com/software/23610629.html");
Intent intent1 = new Intent(mActivity,CommeWebViewActivity.class);
intent1.putExtra(Constants.BUNDLE,bundle);
Intent intent1 = new Intent(mActivity, CommeWebViewActivity.class);
intent1.putExtra(Constants.BUNDLE, bundle);
mActivity.startActivity(intent1, bundle);
}
}
......@@ -300,4 +308,9 @@ public class HomePersonFragment extends BaseFragment<HomePersonPresenter, Fragme
MobclickAgent.onPageStart(TAG);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void certifiCation(CertificationEvent event) {
mPresenter.getAllData(userId, siteId);
}
}
......@@ -43,6 +43,26 @@
android:name=".ui.activity.FaceCertificationActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SmsLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SmsCodeActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.ForgetPwdActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.NewPwdActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.ModifyPwdActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.PwLoginActivity"
android:windowSoftInputMode="stateVisible|adjustResize"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.CertificationResultActivity"
android:screenOrientation="portrait" /> <activity
android:name=".ui.activity.CommeWebViewActivity"
......
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:fillAfter="true"
android:fillBefore="true"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="-1"
android:repeatMode="reverse"
android:startOffset="2000"
android:toXScale="2.0"
android:toYScale="2.0"/>
\ No newline at end of file
......@@ -107,7 +107,7 @@
android:textCursorDrawable="@null"
android:textSize="@dimen/sp_15" />
<Button
<TextView
android:id="@+id/btn_send_code"
android:layout_width="97dp"
android:layout_height="35dp"
......@@ -115,6 +115,7 @@
android:layout_centerVertical="true"
android:layout_marginBottom="@dimen/size_login_register_button_mb"
android:layout_marginRight="@dimen/size_login_register_button_mr"
android:gravity="center"
android:background="@drawable/btn_register_selector"
android:onClick="@{()->presenter.sendCode(1)}"
android:text="@string/tv_login_register_button_text"
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="presenter"
type="com.dayu.usercenter.presenter.modifypwd.ModifyPwdPresenter" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_back"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title" />
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back"
android:onClick="@{()->presenter.dumpBack()}" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="66dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="2dp"
android:background="@color/white"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:text="@string/for_your_account"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
<TextView
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/default_text_color"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@string/set_a_new_pwd"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="51dp"
android:layout_marginBottom="3dp"
android:background="@color/white"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/old_pwd"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<EditText
android:id="@+id/old_code"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="55dp"
android:background="@null"
android:hint="@string/input_old_pwd"
android:inputType="textPassword"
android:text="@={presenter.oldCode}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="51dp"
android:layout_marginBottom="3dp"
android:background="@color/white"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/new_pwd"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<EditText
android:id="@+id/new_code"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="55dp"
android:background="@null"
android:hint="@string/input_new_pwd"
android:inputType="textPassword"
android:text="@={presenter.newCode}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="51dp"
android:background="@color/white"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/comfirm_pwd"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<EditText
android:id="@+id/again_code"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="40dp"
android:background="@null"
android:inputType="textPassword"
android:hint="@string/input_new_pwd_again"
android:text="@={presenter.againCode}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
</LinearLayout>
<TextView
android:id="@+id/next"
android:layout_width="match_parent"
android:layout_height="47dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="25dp"
android:alpha="0.35"
android:background="@drawable/tab_blue_react"
android:gravity="center"
android:onClick="@{()->presenter.ModifyPwd()}"
android:text="@string/comfirm"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="presenter"
type="com.dayu.usercenter.presenter.newpwd.NewPwdPresenter" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_back"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title" />
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back"
android:onClick="@{()->presenter.dumpBack()}" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="66dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="1dp"
android:background="@color/white"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:text="@string/for_your_account"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
<TextView
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/default_text_color"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@string/set_a_new_pwd"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="51dp"
android:layout_marginBottom="20dp"
android:background="@color/white"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<EditText
android:id="@+id/pwd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/pwd_tip"
android:inputType="textPassword"
android:background="@null"
android:text="@={presenter.code}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<ImageView
android:id="@+id/show_pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_pw_close" />
</LinearLayout>
<TextView
android:id="@+id/next"
android:layout_width="match_parent"
android:layout_height="47dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="20dp"
android:alpha="0.35"
android:background="@drawable/tab_blue_react"
android:gravity="center"
android:onClick="@{()->presenter.ModifyPwd()}"
android:text="@string/comfirm"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -133,8 +133,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:text='@{presenter.info.aduitStatus == 3?@string/identity_unaudite:@string/identity_audited}'
android:textColor="@{presenter.info.aduitStatus == 3?@color/cl_receiving_order_item_data:@color/default_editext_color}"
android:text='@{presenter.status?@string/identity_unaudite:@string/identity_audited}'
android:textColor="@{presenter.status?@color/cl_receiving_order_item_data:@color/default_editext_color}"
android:textSize="15sp" />
<ImageView
......@@ -142,7 +142,7 @@
android:layout_height="15dp"
android:layout_marginRight="@dimen/dp_15"
android:src="@drawable/icon_arrow_right"
android:visibility="@{presenter.info.aduitStatus == 3?View.VISIBLE:View.GONE}" />
android:visibility="@{presenter.status?View.VISIBLE:View.GONE}" />
</LinearLayout>
</LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="presenter"
type="com.dayu.usercenter.presenter.pwlogin.PwLoginPresenter"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/receiving_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:onClick="@{()->presenter.dumpBack()}"
android:src="@drawable/back_btn_normal" />
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/receiving_back"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="35dp"
android:scrollbars="none">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_dayu"
android:textColor="@color/default_text_color"
android:textSize="28sp" />
<TextView
android:id="@+id/tv_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_first"
android:layout_marginTop="15dp"
android:text="@string/login_tip"
android:textColor="@color/default_editext_color"
android:layout_marginBottom="64dp"
android:textSize="14sp" />
<EditText
android:id="@+id/mobile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_notice"
android:background="@null"
android:inputType="phone"
android:hint="@string/tv_login_phone_editext_hint"
android:text="@={presenter.phoneNume}"
android:textColor="@color/default_text_color"
android:textSize="16sp" />
<View
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_below="@+id/mobile"
android:layout_marginTop="7.5dp"
android:background="@color/cl_line" />
<LinearLayout
android:id="@+id/ll_pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/line"
android:orientation="horizontal">
<EditText
android:id="@+id/pwd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:layout_weight="1"
android:background="@null"
android:inputType="textPassword"
android:text="@={presenter.code}"
android:hint="@string/input_pwd"
android:textColor="@color/default_text_color"
android:textSize="16sp" />
<ImageView
android:id="@+id/show_pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:src="@drawable/icon_pw_close" />
</LinearLayout>
<View
android:id="@+id/line_phone"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_below="@id/ll_pwd"
android:layout_marginTop="7.5dp"
android:background="@color/cl_line" />
<TextView
android:id="@+id/next"
android:layout_width="match_parent"
android:layout_height="47dp"
android:layout_below="@+id/ll_pwd"
android:layout_marginTop="38.5dp"
android:alpha="0.35"
android:background="@drawable/tab_blue_react"
android:gravity="center"
android:text="@string/login"
android:onClick="@{()->presenter.login()}"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/forget_pwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/next"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:text="@string/forget_pwd"
android:textColor="@color/bg_button"
android:textSize="15sp" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
</layout>
\ 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">
<data>
<variable
name="presenter"
type="com.dayu.usercenter.presenter.smslogin.SmsLoginPresenter" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back"
android:layout_gravity="left"
android:onClick="@{()->presenter.dumpBack()}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="93dp"
android:text="@string/input_sms_code"
android:textColor="@color/default_text_color"
android:textSize="24sp" />
<TextView
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text='@{@string/moblie_num+presenter.phoneNume}'
android:textColor="@color/default_editext_color"
android:textSize="14sp" />
<TextView
android:id="@+id/error_"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/common_red"
android:layout_marginTop="@dimen/dp_12"
android:textSize="12sp" />
<com.dayu.widgets.SmsCodeView
android:id="@+id/sms_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:orientation="horizontal"
app:vcv_et_bg="@drawable/et_login_code"
app:vcv_et_cursor="@drawable/et_cursor"
app:vcv_et_inputType="number"
app:vcv_et_number="6"
app:vcv_et_text_color="@color/default_text_color"
app:vcv_et_text_size="5sp"
app:vcv_et_width="40dp" />
<TextView
android:id="@+id/send_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:onClick="@{()->presenter.sendCode(1)}"
android:text="@string/send_again"
android:textColor="@color/bg_button"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_voice_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:onClick="@{()->presenter.sendCode(2)}"
android:text="@string/voice_code_notice"
android:textColor="@color/cl_receiving_order_item_data"
android:textSize="15sp" />
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="59dp"
android:layout_marginTop="127dp"
android:text="@string/sms_login"
android:textColor="@color/default_text_color"
android:textSize="24sp" />
<TextView
android:id="@+id/tv_86"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title"
android:layout_marginLeft="56dp"
android:layout_marginRight="38dp"
android:text="@string/sms_86"
android:textColor="@color/editext_color"
android:textSize="16sp" />
<EditText
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title"
android:layout_toRightOf="@id/tv_86"
android:background="@null"
android:hint="@string/tv_login_phone_editext_hint"
android:textColor="@color/default_text_color"
android:maxEms="11"
android:inputType="phone"
android:textSize="17sp" />
<View
android:id="@+id/line"
android:layout_width="250dp"
android:layout_height="2dp"
android:layout_below="@+id/mobile"
android:layout_centerHorizontal="true"
android:layout_marginTop="7.5dp"
android:background="@color/cl_line" />
<TextView
android:id="@+id/next"
android:layout_width="match_parent"
android:layout_height="47dp"
android:layout_below="@+id/line"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="38.5dp"
android:alpha="0.35"
android:background="@drawable/tab_blue_react"
android:gravity="center"
android:text="@string/next_step"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/use_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/next"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:text="@string/use_account_login"
android:textColor="@color/bg_button" />
<LinearLayout
android:id="@+id/ll_agreement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@id/btn_login"
android:layout_centerHorizontal="true"
android:layout_marginBottom="21dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login_agreement"
android:textSize="13sp" />
<TextView
android:id="@+id/tv_agreement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/agreement_detail"
android:textColor="@color/cl_receiving_order_item_data"
android:textSize="13sp" />
</LinearLayout>
</RelativeLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="presenter"
type="com.dayu.usercenter.presenter.forgetpwd.ForgetPwdPresenter"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_back"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title" />
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back"
android:onClick="@{()->presenter.dumpBack()}"
/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="15dp"
android:layout_marginTop="8dp"
android:paddingRight="15dp"
android:background="@color/white"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="64dp"
android:text="@string/sms_86"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<EditText
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="@string/tv_login_phone_editext_hint"
android:inputType="phone"
android:background="@null"
android:text="@={presenter.phoneNume}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:background="@color/white"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="40dp"
android:text="@string/sms_code"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<EditText
android:id="@+id/code"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:hint="@string/input_sms_code"
android:inputType="number"
android:background="@null"
android:text="@={presenter.code}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/cl_line" />
<TextView
android:id="@+id/get_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/tv_login_register_button_text"
android:alpha="0.35"
android:onClick="@{()->presenter.sendCode()}"
android:textColor="@color/bg_button" />
</LinearLayout>
<TextView
android:id="@+id/next"
android:layout_width="match_parent"
android:layout_height="47dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="25dp"
android:alpha="0.35"
android:background="@drawable/tab_blue_react"
android:gravity="center"
android:text="@string/next_step"
android:onClick="@{()->presenter.next()}"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</layout>
\ No newline at end of file
<resources>
<string name="app_name">userCenter</string>
<string name="input_new_pwd">填写新密码</string>
</resources>
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 sign in to comment