注册/登录接口联调

This commit is contained in:
fengjignqi
2026-05-19 08:15:24 +08:00
parent cfa606f65e
commit c485b1e059
15 changed files with 342 additions and 134 deletions

View File

@@ -18,7 +18,7 @@ public class AppConfig {
// public static boolean IS_TEST_REQUEST = true;
/**************************本地*******************************/
public static String BASE_URL = "http://192.168.1.67:8081/";//测试
public static String BASE_URL = "http://192.168.1.217:8081/";//测试
public static String BASE_URL_TWO = BASE_URL;//测试
public static String BASE_URL_THREE = BASE_URL;//测试
public static boolean IS_TEST_REQUEST = true;
@@ -116,4 +116,8 @@ public class AppConfig {
//用户分享链接
public static String USER_SHARE_URL = "https://sta.mingdengbazi.site/on/index.html?code=";
//clientID 固定 token
public static String APP_CLIENT_ID = "428a8310cd442757ae699df5d894f051";
public static String APP_USER_TYPE = "app_user";
}

View File

@@ -122,6 +122,11 @@ public class GuideActivity extends BaseActivity<GuideActivityLayoutBinding, Logi
super.initWidget();
}
@Override
public void registerSuccess(BaseBean bean) {
}
@Override
public void getPhoneCodeSuccess(BaseBean bean) {
}

View File

@@ -5,7 +5,10 @@ import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import com.ckkj.water.AppConfig;
import com.ckkj.water.login.LoginActivity;
import com.ckkj.water.login.RegisterActivity;
import com.ckkj.water.login.RegisterSuccessActivity;
import com.gyf.immersionbar.ImmersionBar;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.MyApplication;
@@ -88,9 +91,15 @@ public class LaunchActivity extends BaseActivity<GuideLayoutBinding, MainPresent
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(mContext, MainActivity.class);
startActivity(intent);
finish();
if(AppConfig.USER_LOGIN){
Intent intent = new Intent(mContext, MainActivity.class);
startActivity(intent);
finish();
}else{
goTo(mContext, LoginActivity.class,null);
finish();
}
}
}, 2000);

View File

@@ -102,6 +102,11 @@ public class ForgetPasswordActivity extends BaseActivity<RegisterLayoutBinding,
};
@Override
public void registerSuccess(BaseBean bean) {
}
@Override
public void getPhoneCodeSuccess(BaseBean bean) {

View File

@@ -79,6 +79,7 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
setClick(viewBinding.tvGoRegister);
setClick(viewBinding.tvLanguage);
setClick(viewBinding.tvResetPsd);
setClick(viewBinding.checkboxRead);
}
private void setClick(View view) {
@@ -86,59 +87,74 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
}
private void setupAgreementText() {
String prefix = getString(R.string.login_agreement_prefix);
String privacy = getString(R.string.login_privacy_policy);
String and = getString(R.string.login_and);
String userAgreement = getString(R.string.login_user_agreement);
String content = prefix + privacy + and + userAgreement;
//勾选协议,增加点击区域
ClickUtil.addClickPart(viewBinding.checkboxRead,100);
TextView tvAgreement = findViewById(R.id.tv_agreement_full);
String content = "我已经阅读并同意智能浇灌《用户协议》、《隐私政策》";
SpannableString spannableString = new SpannableString(content);
int privacyStart = prefix.length();
int privacyEnd = privacyStart + privacy.length();
ClickableSpan privacyPolicySpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
Bundle bundle = new Bundle();
bundle.putInt("from_requse_code", WebviewUserAgreement.PRIVACY_CODE);
goToWihoutNoPresent(mContext, WebviewUserAgreement.class, bundle);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu));
ds.setUnderlineText(false);
}
};
spannableString.setSpan(privacyPolicySpan, privacyStart, privacyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
int userStart = privacyEnd + and.length();
int userEnd = userStart + userAgreement.length();
// 设置“用户协议”可点击
ClickableSpan userAgreementSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
Bundle bundle = new Bundle();
bundle.putInt("from_requse_code", WebviewUserAgreement.AGREEMENT_CODE);
goToWihoutNoPresent(mContext, WebviewUserAgreement.class, bundle);
// 跳转用户协议
// Bundle bundle = new Bundle();
// bundle.putInt("from_requse_code", WebviewUserAgreement.AGREEMENT_CODE);
// goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundle);
ToastUtil.showShort(mContext,"用户协议");
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu));
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu)); // 设置颜色
ds.setUnderlineText(false); // 去掉下划线
}
};
int start1 = content.indexOf("《用户协议》");
int end1 = start1 + "《用户协议》".length();
spannableString.setSpan(userAgreementSpan, start1, end1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置“隐私政策”可点击
ClickableSpan privacyPolicySpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
// 跳转隐私政策
// Bundle bundleYS = new Bundle();
// bundleYS.putInt("from_requse_code",WebviewUserAgreement.PRIVACY_CODE);
// goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundleYS);
ToastUtil.showShort(mContext,"跳转隐私政策");
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu)); // 设置颜色
ds.setUnderlineText(false);
}
};
spannableString.setSpan(userAgreementSpan, userStart, userEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
int start2 = content.indexOf("《隐私政策》");
int end2 = start2 + "《隐私政策》".length();
spannableString.setSpan(privacyPolicySpan, start2, end2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// viewBinding.tvAgreement.setText(spannableString);
// viewBinding.tvAgreement.setMovementMethod(LinkMovementMethod.getInstance());
tvAgreement.setText(spannableString);
tvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); // 开启点击事件
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.checkbox_read:
if(mYinsiConfirm){
mYinsiConfirm = false;
viewBinding.checkboxRead.setChecked(false);
}else{
mYinsiConfirm = true;
viewBinding.checkboxRead.setChecked(true);
}
break;
case R.id.tv_go_register:
goTo(mContext, RegisterActivity.class,null);
break;
@@ -215,33 +231,40 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
// viewBinding.checkboxRead.setChecked(true);
// }
// break;
// case R.id.tv_login_confirm:
// if (TextUtils.isEmpty(viewBinding.edPhoneInput.getText().toString())) {
// ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
// return;
// }
// if (!PhoneNumberUtils.checkPhoneNum(viewBinding.edPhoneInput.getText().toString().trim())) {
// ToastUtil.showShort(mContext, getString(R.string.login_error_phone_invalid));
// return;
// }
// if (TextUtils.isEmpty(viewBinding.edCodeInput.getText().toString())) {
// ToastUtil.showShort(mContext, getString(R.string.login_error_code_empty));
// return;
// }
// if (viewBinding.edCodeInput.getText().toString().trim().length() < 6) {
// ToastUtil.showShort(mContext, getString(R.string.login_error_code_invalid));
// return;
// }
// if (!mYinsiConfirm) {
// ToastUtil.showShort(mContext, getString(R.string.login_error_agreement));
// return;
// }
// showLoadingDialog();
// mPresenter.loginBySmsCode(
// viewBinding.edPhoneInput.getText().toString().trim(),
// viewBinding.edCodeInput.getText().toString().trim());
case R.id.tv_login:
if (TextUtils.isEmpty(viewBinding.etAccount.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
return;
}
if (!PhoneNumberUtils.checkPhoneNum(viewBinding.etAccount.getText().toString().trim()) &&
!PhoneNumberUtils.checkEmail(viewBinding.etAccount.getText().toString().trim())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_invalid));
return;
}
if (TextUtils.isEmpty(viewBinding.edCodeInput.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_code_empty));
return;
}
if (viewBinding.edCodeInput.getText().toString().trim().length() < 6) {
ToastUtil.showShort(mContext, getString(R.string.login_error_code_invalid));
return;
}
if (!mYinsiConfirm) {
ToastUtil.showShort(mContext, getString(R.string.login_error_agreement));
return;
}
String loginType = "sms";
if(LOGIN_TYPE_STATUS_CODE == 100){
loginType = "sms";
}else{
loginType = "password";
}
showLoadingDialog();
mPresenter.loginBySmsCode(loginType,
viewBinding.etAccount.getText().toString().trim(),
viewBinding.edCodeInput.getText().toString().trim());
// new Handler().postDelayed(() -> hideDialogLoading(), 1000);
// break;
break;
}
@@ -267,6 +290,11 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
}
};
@Override
public void registerSuccess(BaseBean bean) {
}
@Override
public void getPhoneCodeSuccess(BaseBean bean) {
hideDialogLoading();
@@ -278,18 +306,18 @@ public class LoginActivity extends BaseActivity<LoginLayoutBinding, LoginPresent
public void loginBySmsCodeSuccess(LoginEntity entity) {
hideDialogLoading();
ToastUtil.showShort(mContext, getString(R.string.login_success));
SharePreUtil.putBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_LOGIN, true);
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_TOKEN, entity.getAccess_token());
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_NICKNAME, entity.getUser_info().getNickname());
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_ID, String.valueOf(entity.getUser_info().getUserId()));
MingDengUserInfoManager.getInstance().setEntity(entity);
MingDengUserInfoManager.getInstance().setUserInfo(entity.getUser_info());
Gson gson = new Gson();
String userInfoJson = gson.toJson(entity);
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_INFO_JSON_CONTENT, userInfoJson);
AppConfig.USER_LOGIN = true;
AppConfig.USER_TOKEN = entity.getAccess_token();
AppConfig.USER_ID = String.valueOf(entity.getUser_info().getUserId());
// SharePreUtil.putBoolean(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_LOGIN, true);
// SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_TOKEN, entity.getAccess_token());
// SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_NICKNAME, entity.getUser_info().getNickname());
// SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_ID, String.valueOf(entity.getUser_info().getUserId()));
// MingDengUserInfoManager.getInstance().setEntity(entity);
// MingDengUserInfoManager.getInstance().setUserInfo(entity.getUser_info());
// Gson gson = new Gson();
// String userInfoJson = gson.toJson(entity);
// SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext, ConstantUtil.USER_INFO_JSON_CONTENT, userInfoJson);
// AppConfig.USER_LOGIN = true;
// AppConfig.USER_TOKEN = entity.getAccess_token();
// AppConfig.USER_ID = String.valueOf(entity.getUser_info().getUserId());
new Handler().postDelayed(() -> {
goTo(mContext, MainActivity.class, null);
finish();

View File

@@ -69,11 +69,49 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_invalid));
return;
}
cdTimer.start();
//发送短信
mPresenter.getPhoneCode(viewBinding.etAccount.getText().toString(),"");
// cdTimer.start();
break;
case R.id.tv_commit:
goTo(mContext, RegisterSuccessActivity.class,null);
if (TextUtils.isEmpty(viewBinding.etAccount.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
return;
}
if (!PhoneNumberUtils.checkPhoneNum(viewBinding.etAccount.getText().toString().trim()) &&
!PhoneNumberUtils.checkEmail(viewBinding.etAccount.getText().toString().trim())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_invalid));
return;
}
if (TextUtils.isEmpty(viewBinding.etVerfiCode.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
return;
}
if (TextUtils.isEmpty(viewBinding.etVerfiCode.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_phone_empty));
return;
}
if (TextUtils.isEmpty(viewBinding.etInputPsd.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_psd_empty));
return;
}
if (TextUtils.isEmpty(viewBinding.etInputPsdAgin.getText().toString())) {
ToastUtil.showShort(mContext, getString(R.string.login_error_psd_agin_empty));
return;
}
if(!(viewBinding.etInputPsd.getText().toString()).equals(
viewBinding.etInputPsdAgin.getText().toString())){
ToastUtil.showShort(mContext, getString(R.string.hint_input_psd_not_match));
return;
}
showLoadingDialog();
mPresenter.registerAccount(viewBinding.etAccount.getText().toString(),
viewBinding.etVerfiCode.getText().toString(),
viewBinding.etInputPsd.getText().toString());
break;
}
}
@@ -100,6 +138,13 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
};
@Override
public void registerSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showShort(mContext,"注册成功");
finish();
}
@Override
public void getPhoneCodeSuccess(BaseBean bean) {
@@ -112,6 +157,7 @@ public class RegisterActivity extends BaseActivity<RegisterLayoutBinding, LoginP
@Override
public void showError(String message) {
hideDialogLoading();
ToastUtil.showShort(mContext,message);
}

View File

@@ -79,6 +79,11 @@ public class RegisterSuccessActivity extends BaseActivity<RegisterSuccessLayoutB
return 0;
}
@Override
public void registerSuccess(BaseBean bean) {
}
@Override
public void getPhoneCodeSuccess(BaseBean bean) {

View File

@@ -6,6 +6,8 @@ import com.ckkj.water.network.BaseBean;
import org.json.JSONObject;
import java.util.Map;
/**
* @author fengxiaoyang
* @date 2025/7/26
@@ -18,13 +20,17 @@ public class LoginContract {
void fail(String msg);
}
public interface DataModel{
//手机验证码登录
void register(JSONObject json, CallBack callBack);
//获取手机验证码
void getPhoneCode(JSONObject json, CallBack callBack);
void getPhoneCode(Map<String,Object> map, CallBack callBack);
//手机验证码登录
void loginBySmsCode(JSONObject json, CallBack callBack);
}
public interface LoginView extends IView{
void registerSuccess(BaseBean bean);
//获取验证码
void getPhoneCodeSuccess(BaseBean bean);
//验证码登录成功

View File

@@ -7,6 +7,8 @@ import com.ckkj.water.network.NetWorkManager;
import org.json.JSONObject;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
@@ -21,15 +23,57 @@ import io.reactivex.schedulers.Schedulers;
public class LoginImpl implements LoginContract.DataModel {
/**
* 获取验证码
*
* 注册
* @param json
* @param callBack
*/
@Override
public void getPhoneCode(JSONObject json, LoginContract.CallBack callBack) {
public void register(JSONObject json, LoginContract.CallBack callBack) {
try {
NetWorkManager.getRequest().sendPhoneCode(NetWorkManager.getToken(), NetWorkManager.toRequestBody(json))
NetWorkManager.getRequest().register(NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
if (bean.getCode() == 200) {
callBack.success(bean.getData());
// 登录成功时调用
LoginStateManager.reset();
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取验证码
*
* @param map
* @param callBack
*/
@Override
public void getPhoneCode(Map<String,Object> map, LoginContract.CallBack callBack) {
try {
NetWorkManager.getRequest().sendPhoneCode(NetWorkManager.getToken(), map)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@@ -33,16 +33,26 @@ public class LoginPresenter extends BasePresenter<LoginContract.LoginView> {
this.mImpl = mImpl;
}
public void getPhoneCode(String phone, String codeType) {
/**
* 注册
* @param account
* @param code
* @param psd
*/
public void registerAccount(String account, String code, String psd) {
try {
JSONObject json = new JSONObject();
json.put("mobile",phone);
json.put("type",codeType);
mImpl.getPhoneCode(json, new LoginContract.CallBack<BaseBean>() {
json.put("clientId",AppConfig.APP_CLIENT_ID);
json.put("username",account);
json.put("code",code);
json.put("password",psd);
json.put("grantType",psd);
json.put("userType",AppConfig.APP_USER_TYPE);
mImpl.register(json, new LoginContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean) {
if(LoginPresenter.this.getView() != null){
LoginPresenter.this.getView().getPhoneCodeSuccess(bean);
LoginPresenter.this.getView().registerSuccess(bean);
}
}
@@ -53,27 +63,58 @@ public class LoginPresenter extends BasePresenter<LoginContract.LoginView> {
}
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
public void getPhoneCode(String phone, String codeType) {
Map<String,Object> map = new HashMap<>();
map.put("username",phone);
mImpl.getPhoneCode(map, new LoginContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean) {
if(LoginPresenter.this.getView() != null){
LoginPresenter.this.getView().getPhoneCodeSuccess(bean);
}
}
@Override
public void fail(String msg) {
if(LoginPresenter.this.getView() != null){
LoginPresenter.this.getView().showError(msg);
}
}
});
}
/**
* 通过手机验证码登录
* @param phone
* @param account
* @param code
*/
public void loginBySmsCode(String phone, String code) {
public void loginBySmsCode(String loginType,String account, String code) {
try {
JSONObject json = new JSONObject();
json.put("mobile",phone);
json.put("code",code);
json.put("grantType",loginType);
if(loginType.equals("sms")){
json.put("phonenumber",account);
json.put("sms",code);
}else{
json.put("username",account);
json.put("password",code);
}
json.put("clientId",AppConfig.APP_CLIENT_ID);
json.put("userType",AppConfig.APP_USER_TYPE);
mImpl.loginBySmsCode(json, new LoginContract.CallBack<LoginEntity>() {
@Override
public void success(LoginEntity bean) {
if(LoginPresenter.this.getView() != null){
LoginPresenter.this.getView().loginBySmsCodeSuccess(bean);
EventBus.getDefault().post(new EventMessage(EventMessage.USER_LOGIN_SUCCESS));
// EventBus.getDefault().post(new EventMessage(EventMessage.USER_LOGIN_SUCCESS));
//获取个人信息
// getUserInfo();
}
@@ -113,4 +154,6 @@ public class LoginPresenter extends BasePresenter<LoginContract.LoginView> {
// }
// });
}
}

View File

@@ -37,8 +37,8 @@ import retrofit2.http.QueryMap;
public interface Request {
//注册
@POST("user/api/adduser")
Observable<BaseBean> register(@QueryMap Map<String, Object> map);
@POST("auth/register")
Observable<BaseBean> register(@Body RequestBody requestBody);
//获取验证码
@POST("user/api/phone")
Observable<BaseBean> getSmsCode(@QueryMap Map<String, Object> map);
@@ -79,17 +79,15 @@ public interface Request {
@POST("mobile/yourhoroscope/modify")
Observable<BaseBean<TodayFateEntity>> saveUserEditBirthInfo(@HeaderMap Map<String, String> headMap,@Body RequestBody requestBody);
//发送验证码
@POST("mobile/sendCode")
Observable<BaseBean> sendPhoneCode(@HeaderMap Map<String, String> headMap,@Body RequestBody requestBody);
@GET("resource/code")
Observable<BaseBean> sendPhoneCode(@HeaderMap Map<String, String> headMap,@QueryMap Map<String, Object> map);
//登录
@POST("mobile/login")
@POST("auth/login")
Observable<BaseBean<LoginEntity>> loginBySmsCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//获取个人信息
@GET("mobile/userInfo")
Observable<BaseBean<MineUserInfoBean>> getMineUserInfo(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
//更新用户头像
@POST("mobile/modifyAvatar")
Observable<BaseBean> updateUseravatar(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
//获取今日运势
@POST("mobile/yourhoroscope/today")
Observable<BaseBean<TodayFateEntity>> getUserTodayFateDatas(@HeaderMap Map<String, String> headMap);
@@ -112,34 +110,9 @@ public interface Request {
@POST("mobile/paiPan/record")
Observable<BaseBean> deletePaipanRecordById(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
//修改手机号
@POST("mobile/modifyPhone")
Observable<BaseBean> modifyPhone(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//注销账号
@POST("mobile/DeactivateAccount")
Observable<BaseBean> logoffAccount(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//查询会员套餐
@GET("mobile/memberInFo")
Observable<BaseBean<List<MemberComboEntity>>> getMemberComboList(@HeaderMap Map<String, String> headMap);
//获取支付信息
@POST("mobile/alipay")
Observable<BaseBean> getPayOrderInfo(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//问题反馈
@POST("mobile/appfeedback")
Observable<BaseBean> commitFeedback(@HeaderMap Map<String, String> headMap,@QueryMap Map<String, Object> map);
//问题反馈
@POST("mobile/reporting")
Observable<BaseBean> commitReporting(@HeaderMap Map<String, String> headMap,@QueryMap Map<String, Object> map);
//邀请数据
@GET("mobile/invitationStatistics")
Observable<BaseBean<RecommendDataEntity>> getRecommendDatas(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
//邀请记录
@GET("mobile/myInvitees")
Observable<BaseBean<InviteeRecordEntity>> myInvitees(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
//注销账号
@POST("mobile/bind")
Observable<BaseBean> bindInvterCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//奖励记录
@GET("mobile/rewardHistoryDetail")
Observable<BaseBean<RewardRecordEntity>> getRewardRecords(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
/***************************钱包********************************/
}

View File

@@ -90,7 +90,7 @@
<EditText
android:id="@+id/et_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:background="@null"
android:textSize="14sp"
@@ -113,8 +113,9 @@
android:layout_height="24dp"
android:src="@mipmap/icon_phone_code"/>
<EditText
android:id="@+id/ed_code_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="5dp"
android:background="@null"
@@ -203,5 +204,40 @@
android:text="@string/reset_psd"
android:visibility="invisible"/>
</RelativeLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_100">
<RelativeLayout
android:id="@+id/realtive_read_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_30">
<RadioButton
android:id="@+id/checkbox_read"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:background="@drawable/select_radio"
android:layout_centerVertical="true"
android:button="@null"
android:clickable="false"
android:visibility="visible" />
<TextView
android:id="@+id/tv_agreement_full"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_12"
android:layout_toRightOf="@+id/checkbox_read"
android:autoLink="none"
android:lineSpacingExtra="4dp"
android:textColor="@color/color_gray_tab"
android:textSize="11sp" />
</RelativeLayout>
</RelativeLayout>
</LinearLayout>

View File

@@ -40,7 +40,7 @@
<EditText
android:id="@+id/et_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5"
android:background="@null"
android:textSize="14sp"
@@ -65,7 +65,7 @@
<EditText
android:id="@+id/et_verfi_code"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="@dimen/dp_5"
android:background="@null"
@@ -102,7 +102,7 @@
<EditText
android:id="@+id/et_input_psd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5"
android:background="@null"
android:textSize="14sp"
@@ -127,7 +127,7 @@
<EditText
android:id="@+id/et_input_psd_agin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5"
android:background="@null"
android:textSize="14sp"

View File

@@ -18,6 +18,8 @@
<string name="login_error_phone_empty">手机号不能为空</string>
<string name="hint_input_psd_not_match">两次输入的密码不一致</string>
<string name="login_error_phone_invalid">请输入正确的手机号或邮箱</string>
<string name="login_error_psd_empty">手机号或邮箱不能为空</string>
<string name="login_error_psd_agin_empty">请再次输入密码</string>
<string name="register_title">注册用户</string>
<string name="register_title_bar">注册</string>
<string name="register_success_title">注册成功</string>

View File

@@ -16,7 +16,9 @@
<string name="hint_input_new_psd">请输入新密码</string>
<string name="hint_input_new_psd_agin">请再次输入新密码</string>
<string name="hint_input_psd_not_match">两次输入的密码不一致</string>
<string name="login_error_phone_empty">手机号不能为空</string>
<string name="login_error_phone_empty">手机号或邮箱不能为空</string>
<string name="login_error_psd_empty">密码不能为空</string>
<string name="login_error_psd_agin_empty">请再次输入密码</string>
<string name="login_error_phone_invalid">请输入正确的手机号或邮箱</string>
<string name="register_title">注册用户</string>
<string name="register_title_bar">注册</string>
@@ -177,7 +179,7 @@
</string>
<string name="app_name">星语明灯</string>
<string name="app_name">智能浇水</string>
<!-- ==================== 登录页 ==================== -->
<string name="login_app_name">星语明灯</string>