diff --git a/.idea/modules.xml b/.idea/modules.xml index 69c30e2..78c505d 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -5,6 +5,7 @@ + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5f3d13a..98b0483 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/shunzhi/parent/AppConfig.java b/app/src/main/java/com/shunzhi/parent/AppConfig.java new file mode 100644 index 0000000..dbbd67e --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/AppConfig.java @@ -0,0 +1,82 @@ +package com.shunzhi.parent; + +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Environment; +import android.preference.PreferenceManager; +import android.text.TextUtils; + +import java.io.File; + +/** + * Created by Administrator on 2018/3/7 0007. + */ + +public class AppConfig { + //保存键值对 + public static String SCHOOL_ID = "school_id"; + public static String LOGIN_NAME = "login_name"; + public static String LOGIN_PWD = "login_pwd"; + public static String ACCESS_TOKEN = "access_token"; + + //默认日志保存的路径 + public final static String DEFAULT_SAVE_LOG_PATH = Environment + .getExternalStorageDirectory() + + File.separator + + "Eboardmenwei" + + File.separator + + "logs" + + File.separator; + + + + private static AppConfig appConfig = null; + private static Context mContext = null; + + public static AppConfig getAppConfig(Context context) { + if (appConfig == null) { + appConfig = new AppConfig(); + mContext = context; + } + return appConfig; + } + + + + + + + + //默认下载保存的路径 + public final static String DEFAULT_SAVE_DOWNLOAD_PATH = Environment + .getExternalStorageDirectory() + + File.separator + + "Eboard" + + File.separator + + "download" + + File.separator; + + //得到保存的值 + public String get(String key) { + return getSharedPreferences(mContext).getString(key, null); + } + + private SharedPreferences getSharedPreferences(Context context) { + return PreferenceManager.getDefaultSharedPreferences(context); + } + + //保存键值对 + public void set(Context context, String key, String value) { + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); + if (TextUtils.isEmpty(value)) { + editor.putString(key, value); + } else { + editor.putString(key, value.trim()); + } + editor.commit(); + } + + + + +} diff --git a/app/src/main/java/com/shunzhi/parent/AppContext.java b/app/src/main/java/com/shunzhi/parent/AppContext.java new file mode 100644 index 0000000..461ec86 --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/AppContext.java @@ -0,0 +1,26 @@ +package com.shunzhi.parent; + +import com.share.mvpsdk.global.GlobalApplication; + +/** + * Created by Administrator on 2018/3/7 0007. + */ + +public class AppContext extends GlobalApplication { + private static AppContext appContext; + + + @Override + public void onCreate() { + appContext=this; + super.onCreate(); + } + + public static AppContext getInstance() { + return appContext; + } + + + + +} diff --git a/app/src/main/java/com/shunzhi/parent/api/LoginRegisterApi.java b/app/src/main/java/com/shunzhi/parent/api/LoginRegisterApi.java new file mode 100644 index 0000000..792f80b --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/api/LoginRegisterApi.java @@ -0,0 +1,34 @@ +package com.shunzhi.parent.api; + +import com.google.gson.JsonObject; + +import io.reactivex.Observable; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + +/** + * Created by Administrator on 2018/3/7 0007. + */ + +public interface LoginRegisterApi { + String url="http://campus.myjxt.com/"; + + + @FormUrlEncoded + @POST("Token") + Observable loginResult( + @Field("grant_type") String grant_type, @Field("username") String username + , @Field("password") String password); + + @FormUrlEncoded + @POST("api/Account/CurrentInfo") + Observable registerResult( + @Field("grant_type") String grant_type, @Field("username") String username + , @Field("idcode") String idCode,@Field("password") String password); + + @FormUrlEncoded + @POST("api/Account/CurrentInfo") + Observable getUserInfo(@Field("grant_type") String grant_type); + +} diff --git a/app/src/main/java/com/shunzhi/parent/model/loginandregister/LoginAndRegisterModel.java b/app/src/main/java/com/shunzhi/parent/model/loginandregister/LoginAndRegisterModel.java index 3fffc94..4a99bca 100644 --- a/app/src/main/java/com/shunzhi/parent/model/loginandregister/LoginAndRegisterModel.java +++ b/app/src/main/java/com/shunzhi/parent/model/loginandregister/LoginAndRegisterModel.java @@ -2,6 +2,9 @@ package com.shunzhi.parent.model.loginandregister; import com.google.gson.JsonObject; import com.share.mvpsdk.base.BaseModel; +import com.share.mvpsdk.helper.RetrofitCreateHelper; +import com.share.mvpsdk.helper.RxHelper; +import com.shunzhi.parent.api.LoginRegisterApi; import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; import io.reactivex.Observable; @@ -20,13 +23,15 @@ public class LoginAndRegisterModel extends BaseModel implements LoginAndRegiste @Override - public Observable getLoginResult(String loginName, String loginPed) { - return null; + public Observable getLoginResult(String loginName, String loginPwd) { + return RetrofitCreateHelper.loginApi(LoginRegisterApi.class,LoginRegisterApi.url).loginResult("password",loginName,loginPwd) + .compose(RxHelper.rxSchedulerHelper()); } @Override public Observable getRegisterResult(String adminName, String idCode, String password) { - return null; + return RetrofitCreateHelper.createApi(LoginRegisterApi.class,LoginRegisterApi.url).registerResult("idcode",adminName,idCode,password) + .compose(RxHelper.rxSchedulerHelper()); } @Override diff --git a/app/src/main/java/com/shunzhi/parent/model/loginandregister/loginAndRegisterModel.java b/app/src/main/java/com/shunzhi/parent/model/loginandregister/loginAndRegisterModel.java deleted file mode 100644 index 3fffc94..0000000 --- a/app/src/main/java/com/shunzhi/parent/model/loginandregister/loginAndRegisterModel.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.shunzhi.parent.model.loginandregister; - -import com.google.gson.JsonObject; -import com.share.mvpsdk.base.BaseModel; -import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; - -import io.reactivex.Observable; - -/** - * Created by Administrator on 2018/3/6 0006. - */ - -public class LoginAndRegisterModel extends BaseModel implements LoginAndRegisterContract.ILoginModel { - - - - public static LoginAndRegisterModel newInstance() { - return new LoginAndRegisterModel(); - } - - - @Override - public Observable getLoginResult(String loginName, String loginPed) { - return null; - } - - @Override - public Observable getRegisterResult(String adminName, String idCode, String password) { - return null; - } - - @Override - public Observable getidCodeResult(String phoneNumber) { - return null; - } - -} diff --git a/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java b/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java index 1e1b737..2372e3a 100644 --- a/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java +++ b/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java @@ -2,39 +2,110 @@ package com.shunzhi.parent.presenter.loginandregister; import android.text.TextUtils; +import com.google.gson.JsonObject; +import com.share.mvpsdk.helper.RetrofitCreateHelper; import com.share.mvpsdk.utils.ToastUtils; +import com.shunzhi.parent.AppConfig; +import com.shunzhi.parent.AppContext; import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; import com.shunzhi.parent.model.loginandregister.LoginAndRegisterModel; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import io.reactivex.functions.Consumer; + /** * Created by Administrator on 2018/3/6 0006. */ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPresenter { + + public static final String REGEX_MOBILE = "^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$"; + @Override - public void loginResult(String loginName, String loginPwd) { - if (TextUtils.isEmpty(loginName)){ - ToastUtils.showToast("登录名不能为空"); + public void loginResult(final String loginName, final String loginPwd) { + if (!isMate(loginName, REGEX_MOBILE)) { + ToastUtils.showToast("请输入正确的手机号!!"); return; - }else if(TextUtils.isEmpty(loginPwd)){ - ToastUtils.showToast("密码不能为空"); + } + + if (mIModel == null || mIView == null) { return; } + mRxManager.register(mIModel.getLoginResult(loginName, loginPwd).subscribe(new Consumer() { + @Override + public void accept(JsonObject jsonObject) throws Exception { + if (jsonObject != null && !TextUtils.isEmpty(jsonObject.get("access_token").getAsString())) { + AppConfig.getAppConfig(AppContext.getInstance()).set(AppContext.getInstance() + , AppConfig.ACCESS_TOKEN, jsonObject.get("access_token").getAsString()); + AppConfig.getAppConfig(AppContext.getInstance()).set(AppContext.getInstance(), AppConfig.LOGIN_NAME,loginName); + AppConfig.getAppConfig(AppContext.getInstance()).set(AppContext.getInstance(), AppConfig.LOGIN_PWD, loginPwd); + RetrofitCreateHelper.getInstance().setAuthorization("Bearer "+jsonObject.get("access_token").getAsString()); + getUserInfo(); + } else { + ToastUtils.showToast(jsonObject.get("error").getAsString()); + } + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + ToastUtils.showToast(throwable.getMessage()); + } + })); } @Override public void registerResult(String adminName, String idCode, String password) { + if (!isMate(adminName, REGEX_MOBILE)) { + ToastUtils.showToast("请输入正确的手机号!!"); + return; + } + if (mIModel == null || mIView == null) { + return; + } + mIView.getUserInfo(); + mRxManager.register(mIModel.getRegisterResult(adminName, idCode, password).subscribe(new Consumer() { + @Override + public void accept(JsonObject jsonObject) throws Exception { + //TODO 注册成功返回 + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + ToastUtils.showToast(throwable.getMessage()); + } + })); + } @Override public void idCodeResult(String phoneNumber) { - if(TextUtils.isEmpty(phoneNumber)){ - ToastUtils.showToast("请先输入手机号"); + if (!isMate(phoneNumber, REGEX_MOBILE)) { + ToastUtils.showToast("请输入正确的手机号!!"); + return; + } + if (mIModel == null || mIView == null) { return; } + mRxManager.register(mIModel.getidCodeResult(phoneNumber).subscribe(new Consumer() { + @Override + public void accept(JsonObject jsonObject) throws Exception { + //TODO 获取验证码返回 + + + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + ToastUtils.showToast(throwable.getMessage()); + } + })); + + } @Override @@ -52,4 +123,11 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre public void onStart() { } + + + public boolean isMate(String str, String rulStr) { + Pattern pattern = Pattern.compile(rulStr); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } } diff --git a/app/src/main/java/com/shunzhi/parent/ui/MainActivity.java b/app/src/main/java/com/shunzhi/parent/ui/MainActivity.java index 9ddb266..bc5e940 100644 --- a/app/src/main/java/com/shunzhi/parent/ui/MainActivity.java +++ b/app/src/main/java/com/shunzhi/parent/ui/MainActivity.java @@ -1,13 +1,9 @@ package com.shunzhi.parent.ui; -import android.support.annotation.NonNull; -import android.support.design.widget.BottomNavigationView; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.design.widget.BottomNavigationView; -import com.share.mvpsdk.base.BasePresenter; import com.share.mvpsdk.base.activity.BaseCompatActivity; -import com.share.mvpsdk.base.activity.BaseMVPCompatActivity; import com.share.mvpsdk.helper.BottomNavigationViewHelper; import com.shunzhi.parent.R; diff --git a/app/src/main/java/com/shunzhi/parent/ui/fragment/loginandregistfragment/LoginAndRegistFragment.java b/app/src/main/java/com/shunzhi/parent/ui/fragment/loginandregistfragment/LoginAndRegistFragment.java index 02e859b..49cf4d1 100644 --- a/app/src/main/java/com/shunzhi/parent/ui/fragment/loginandregistfragment/LoginAndRegistFragment.java +++ b/app/src/main/java/com/shunzhi/parent/ui/fragment/loginandregistfragment/LoginAndRegistFragment.java @@ -1,19 +1,30 @@ package com.shunzhi.parent.ui.fragment.loginandregistfragment; +import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.util.Log; +import android.view.Gravity; import android.view.View; +import android.view.ViewGroup; import android.widget.EditText; +import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.PopupWindow; import android.widget.TextView; import com.makeramen.roundedimageview.RoundedImageView; import com.share.mvpsdk.base.BasePresenter; import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment; +import com.share.mvpsdk.utils.ToastUtils; import com.shunzhi.parent.R; import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; import com.shunzhi.parent.presenter.loginandregister.LoginAndRegisterPresenter; +import com.shunzhi.parent.ui.activity.LoginAndRegistActivity; public class LoginAndRegistFragment extends BaseMVPCompatFragment @@ -22,8 +33,10 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment @@ -43,6 +44,7 @@ android:layout_height="50dp" android:background="@null" android:hint="请输入手机号码" + android:maxLength="11" android:textColorHint="@color/hintTextColor" android:textSize="@dimen/sp_16" /> @@ -113,7 +115,9 @@ android:layout_height="50dp" android:layout_weight="1" android:background="@null" - android:hint="请设置密码:6~8个字符" + android:hint="请设置密码:6~16个字符" + android:maxLength="16" + android:inputType="textPassword" android:textColorHint="@color/hintTextColor" android:textSize="@dimen/sp_16" /> @@ -144,6 +148,7 @@ android:paddingBottom="10dp" android:paddingTop="10dp" android:text="注册" + android:enabled="false" android:textColor="@color/white" android:textSize="@dimen/sp_16" /> diff --git a/mvpsdk/src/main/java/com/share/mvpsdk/helper/RetrofitCreateHelper.java b/mvpsdk/src/main/java/com/share/mvpsdk/helper/RetrofitCreateHelper.java index 178d58e..01715fc 100644 --- a/mvpsdk/src/main/java/com/share/mvpsdk/helper/RetrofitCreateHelper.java +++ b/mvpsdk/src/main/java/com/share/mvpsdk/helper/RetrofitCreateHelper.java @@ -1,10 +1,10 @@ package com.share.mvpsdk.helper; - import com.share.mvpsdk.helper.okhttp.CacheInterceptor; import com.share.mvpsdk.helper.okhttp.HttpCache; import com.share.mvpsdk.helper.okhttp.TrustManager; +import com.share.mvpsdk.utils.StringUtils; import java.util.concurrent.TimeUnit; @@ -22,6 +22,8 @@ import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitCreateHelper { private static final int TIMEOUT_READ = 20; private static final int TIMEOUT_CONNECTION = 10; + private static String Authorization="",token=""; + private static RetrofitCreateHelper retrofitCreateHelper=null; private static final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor() .setLevel(HttpLoggingInterceptor.Level.BODY); private static CacheInterceptor cacheInterceptor = new CacheInterceptor(); @@ -42,8 +44,16 @@ public class RetrofitCreateHelper { //失败重连 .retryOnConnectionFailure(true) .build(); - + public static RetrofitCreateHelper getInstance(){ + if (null==retrofitCreateHelper){ + synchronized (RetrofitCreateHelper.class){ + if (null==retrofitCreateHelper)retrofitCreateHelper=new RetrofitCreateHelper(); + } + } + return retrofitCreateHelper; + } public static T createApi(Class clazz, String url) { + Authorization=token; Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .client(okHttpClient) @@ -52,5 +62,23 @@ public class RetrofitCreateHelper { .build(); return retrofit.create(clazz); } + + public static T loginApi(Class clazz, String url) { + Authorization= StringUtils.getSign(); + Retrofit retrofit = new Retrofit.Builder() + .baseUrl(url) + .client(okHttpClient) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + return retrofit.create(clazz); + } + public void setAuthorization(String Authorization){ + this.token=Authorization; + } + + + + } diff --git a/mvpsdk/src/main/java/com/share/mvpsdk/utils/StringUtils.java b/mvpsdk/src/main/java/com/share/mvpsdk/utils/StringUtils.java index 57486fa..6643c8a 100644 --- a/mvpsdk/src/main/java/com/share/mvpsdk/utils/StringUtils.java +++ b/mvpsdk/src/main/java/com/share/mvpsdk/utils/StringUtils.java @@ -1,6 +1,7 @@ package com.share.mvpsdk.utils; import android.text.TextUtils; +import android.util.Base64; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -122,4 +123,30 @@ public class StringUtils { } return true; } + + private final static String appSecret = "f71467cfd98d"; + public static String getSign(){ + String sign = ""; + try { + String clientid = MD5(System.currentTimeMillis() + new int[(int) (Math.random() * 100)].toString()); + sign = "Basic " + Base64.encodeToString((clientid + ":" + MD5(clientid + appSecret)).getBytes("ASCII"), Base64.NO_WRAP); + } catch (Exception err) { + err.printStackTrace(); + } + return sign; + } + + public static String MD5(String str) { + try { + java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); + byte[] array = md.digest(str.getBytes("utf-8")); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < array.length; ++i) { + sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3)); + } + return sb.toString().toUpperCase(); + } catch (Exception e) { + } + return ""; + } } -- libgit2 0.21.0