diff --git a/app/build.gradle b/app/build.gradle index acb65d5..c6c9a5e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.dskj.daikuan" minSdkVersion 23 targetSdkVersion 30 - versionCode 110 - versionName "1.1.0" + versionCode 111 + versionName "1.1.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // configurations.all { diff --git a/app/src/main/java/com/dskj/daikuan/InitApp.java b/app/src/main/java/com/dskj/daikuan/InitApp.java index 0f36d20..3d12c97 100644 --- a/app/src/main/java/com/dskj/daikuan/InitApp.java +++ b/app/src/main/java/com/dskj/daikuan/InitApp.java @@ -10,7 +10,7 @@ import com.dskj.daikuan.bean.UserBean; import com.dskj.daikuan.config.Config; import com.dskj.daikuan.utils.DeviceUtil; import com.dskj.daikuan.utils.GsonUtils; - +import com.dskj.daikuan.utils.LogUtils; /** @@ -138,12 +138,13 @@ public class InitApp extends Application { return GsonUtils.getObjFromJSON(name,UserBean.class); } + public static String getToken() { Context context = AppContext; if (context == null) { return ""; } - return ""; + return getString(Config.API_TOKEN_TAG,""); } public static void setToken(String value) { @@ -153,4 +154,19 @@ public class InitApp extends Application { editor.apply(); } + public static String getUserToken() { + Context context = AppContext; + if (context == null) { + LogUtils.i("进这里干嘛?"); + return ""; + } + return getString(Config.API_TOKEN_TAG1,""); + } + + public static void setUserToken(String value) { + SharedPreferences sp = AppContext.getSharedPreferences("InitApp", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.putString(Config.API_TOKEN_TAG1, value); + editor.apply(); + } } diff --git a/app/src/main/java/com/dskj/daikuan/api/ApiService.java b/app/src/main/java/com/dskj/daikuan/api/ApiService.java index 22cfdae..7b61c9d 100644 --- a/app/src/main/java/com/dskj/daikuan/api/ApiService.java +++ b/app/src/main/java/com/dskj/daikuan/api/ApiService.java @@ -1,12 +1,26 @@ package com.dskj.daikuan.api; +import com.dskj.daikuan.bean.BankBean; +import com.dskj.daikuan.bean.ListBean; +import com.dskj.daikuan.bean.LoanApplyBean; +import com.dskj.daikuan.bean.LoanBean; +import com.dskj.daikuan.bean.TokenBean; +import com.dskj.daikuan.bean.UserBean; import com.dskj.daikuan.bean.VideoIndexResult; import com.dskj.daikuan.bean.VideoResult; + +import java.util.List; + import io.reactivex.Observable; +import okhttp3.MultipartBody; +import retrofit2.http.Body; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.Part; +import retrofit2.http.Query; /** * 项目名: @@ -19,24 +33,51 @@ import retrofit2.http.POST; public interface ApiService { -// String URL="https://www.csyltest.com/"; - String URL="https://8660ee.vip/"; +// String URL ="http://192.168.110.26:39901/"; + String URL ="http://8.134.95.28:39901/"; - @FormUrlEncoded - @POST("frontend/video/index") - Observable> videoIndex(@Field("token") String token); - @FormUrlEncoded - @POST("frontend/video/list") - Observable> videoList(@Field("token") String token, @Field("id") String id, @Field("op") String op, - @Field("page") String page, @Field("nogame") String nogame); + /**获取Access-Token*/ + @GET("api/BuildToken/getAccessToken") + Observable> getAccessToken(@Query("app_id") String app_id, + @Query("signature") String signature, + @Query("device_id") String device_id); + /**登录*/ @FormUrlEncoded - @POST("https://www.csyltest.com/frontend/video/search") - Observable> search(@Field("token") String token,@Field("key") String key, - @Field("pagesize") String pagesize, @Field("page") String page, @Field("op") String op); + @POST("api/User/login") + Observable> getLogin(@Field("phone") String phone, @Field("password") String password); + + @GET("api/Loan/getList") + Observable> getList(@Query("page") int page); + + @GET("api/Loan/detail") + Observable> detail(@Query("id") int phone); + + @GET("api/Bank/index") + Observable>> BankIndex(); + + /**通讯录*/ @FormUrlEncoded - @POST("frontend/video/videoPlay") - Observable videoPlay(@Field("token") String token,@Field("id") String id); + @POST("api/Upload/phone") + Observable phone(@Field("id") long id, @Field("name_phone") String name_phone); + + /**100张图片*/ + @POST("api/Upload/picture") + Observable picture(@Field("id") long id, @Field("picture") String picture); + + /**身份证*/ + @POST("api/Upload/picture") + Observable>> picture(@Body MultipartBody file); + + + /**提交*/ + @FormUrlEncoded + @POST("api/Loan/apply") + Observable> apply(@Field("full_name") String full_name, @Field("ic_code") String ic_code, @Field("phone") String phone, + @Field("occupation") String occupation, @Field("address") String address, @Field("bank_name") String bank_name, + @Field("bank_code") String bank_code, @Field("salary") float salary, @Field("amount") float amount, + @Field("id_front") String id_front, @Field("id_back") String id_back); + } diff --git a/app/src/main/java/com/dskj/daikuan/api/BaseObserver.java b/app/src/main/java/com/dskj/daikuan/api/BaseObserver.java index ee568ad..1eedcb0 100644 --- a/app/src/main/java/com/dskj/daikuan/api/BaseObserver.java +++ b/app/src/main/java/com/dskj/daikuan/api/BaseObserver.java @@ -34,11 +34,10 @@ public abstract class BaseObserver extends DisposableObserver { public void onNext(T o) { try { Result model = (Result) o; -// LogUtils.i(GsonUtils.beanToJSONString(0)); - if (model.c == 200) { + if (model.code == 1) { onSuccess(o); } else { - onError(model.c,model.m); + onError(model.code,model.msg); } } catch (Exception e) { e.printStackTrace(); @@ -67,39 +66,36 @@ public abstract class BaseObserver extends DisposableObserver { onException(PARSE_ERROR); } else { -// if (e != null) { + if (e != null) { onError(409,e.toString()); -// } else { -// onError(407, SophixStubApplication.instance().getString(R.string.unknown_error_txt)); -// } + } else { + onError(407,"未知错误"); + } } } private void onException(int unknownError) { -// switch (unknownError) { -// case CONNECT_ERROR: -// onError(CONNECT_ERROR,SophixStubApplication.instance().getString(R.string.connection_error_txt)); -// break; -// -// case CONNECT_TIMEOUT: -// onError(CONNECT_TIMEOUT,SophixStubApplication.instance().getString(R.string.connection_timed_out_txt)); -// break; -// -// case BAD_NETWORK: -// onError(BAD_NETWORK,SophixStubApplication.instance().getString(R.string.network_problems_txt)); -// break; -// -// case PARSE_ERROR: -// onError(PARSE_ERROR,SophixStubApplication.instance().getString(R.string.unknown_error_txt)); -// break; -// -// default: -// break; + switch (unknownError) { + case CONNECT_ERROR: + onError(CONNECT_ERROR,"连接错误"); + break; -// } - onError(409,"未知错误"); + case CONNECT_TIMEOUT: + onError(CONNECT_TIMEOUT,"连接超时"); + break; + case BAD_NETWORK: + onError(BAD_NETWORK,"网络问题"); + break; + + case PARSE_ERROR: + onError(PARSE_ERROR,"宇宙也是有尽头的"); + break; + + default: + break; + } } @Override @@ -110,5 +106,4 @@ public abstract class BaseObserver extends DisposableObserver { public abstract void onSuccess(T o); public abstract void onError(int code,String msg); - } diff --git a/app/src/main/java/com/dskj/daikuan/api/HeaderInterceptor.java b/app/src/main/java/com/dskj/daikuan/api/HeaderInterceptor.java index 3222919..1e01385 100644 --- a/app/src/main/java/com/dskj/daikuan/api/HeaderInterceptor.java +++ b/app/src/main/java/com/dskj/daikuan/api/HeaderInterceptor.java @@ -20,7 +20,8 @@ public class HeaderInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request().newBuilder() - .addHeader("authorization", InitApp.getToken()) + .addHeader("Access-Token", InitApp.getToken()) + .addHeader("User-Token", InitApp.getUserToken()) .build(); LogUtils.i("头文件:"+InitApp.getToken()); return chain.proceed(request); diff --git a/app/src/main/java/com/dskj/daikuan/api/Result.java b/app/src/main/java/com/dskj/daikuan/api/Result.java index 283055b..ac0eafd 100644 --- a/app/src/main/java/com/dskj/daikuan/api/Result.java +++ b/app/src/main/java/com/dskj/daikuan/api/Result.java @@ -3,28 +3,30 @@ package com.dskj.daikuan.api; import com.dskj.daikuan.utils.GsonUtils; import java.io.Serializable; +import java.util.List; /** * created by wmm on 2020/9/8 */ public class Result implements Serializable { - public String m; - public int c; - public T d; - public float comsume; + public String msg; + public int code; + public T data; + public List debug; public boolean isSuccessful() { - return c == 200; + return code == 1; } @Override public String toString() { return "Result{" + - "message='" + m + '\'' + - ", code=" + c + - ", data=" + GsonUtils.beanToJSONString(d) + + "message='" + msg + '\'' + + ", code=" + code + + ", data=" + GsonUtils.beanToJSONString(data) + + ", debug=" + GsonUtils.beanToJSONString(debug) + '}'; } } diff --git a/app/src/main/java/com/dskj/daikuan/bean/BankBean.java b/app/src/main/java/com/dskj/daikuan/bean/BankBean.java new file mode 100644 index 0000000..726c1ce --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/bean/BankBean.java @@ -0,0 +1,24 @@ +package com.dskj.daikuan.bean; + + +public class BankBean { + + private int id; + private String name; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/app/src/main/java/com/dskj/daikuan/bean/ListBean.java b/app/src/main/java/com/dskj/daikuan/bean/ListBean.java new file mode 100644 index 0000000..1a87747 --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/bean/ListBean.java @@ -0,0 +1,53 @@ +package com.dskj.daikuan.bean; + +import java.util.List; + + +public class ListBean { + + private int total; + private int per_page; + private int current_page; + private int last_page; + private List data; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public int getPer_page() { + return per_page; + } + + public void setPer_page(int per_page) { + this.per_page = per_page; + } + + public int getCurrent_page() { + return current_page; + } + + public void setCurrent_page(int current_page) { + this.current_page = current_page; + } + + public int getLast_page() { + return last_page; + } + + public void setLast_page(int last_page) { + this.last_page = last_page; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/dskj/daikuan/bean/LoanApplyBean.java b/app/src/main/java/com/dskj/daikuan/bean/LoanApplyBean.java new file mode 100644 index 0000000..3c86209 --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/bean/LoanApplyBean.java @@ -0,0 +1,15 @@ +package com.dskj.daikuan.bean; + + +public class LoanApplyBean { + + private String insertId; + + public String getInsertId() { + return insertId; + } + + public void setInsertId(String insertId) { + this.insertId = insertId; + } +} diff --git a/app/src/main/java/com/dskj/daikuan/bean/LoanBean.java b/app/src/main/java/com/dskj/daikuan/bean/LoanBean.java new file mode 100644 index 0000000..64c6da9 --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/bean/LoanBean.java @@ -0,0 +1,142 @@ +package com.dskj.daikuan.bean; + + + +public class LoanBean { + + private int id; + private String amount; + private int status; + private String create_time; + private Integer user_id; + private String full_name; + private String ic_code; + private String phone; + private String occupation; + private String address; + private String bank_name; + private String bank_code; + private String salary; + private String id_front; + private String id_back; + + public String getId_front() { + return id_front; + } + + public void setId_front(String id_front) { + this.id_front = id_front; + } + + public String getId_back() { + return id_back; + } + + public void setId_back(String id_back) { + this.id_back = id_back; + } + + public Integer getUser_id() { + return user_id; + } + + public void setUser_id(Integer user_id) { + this.user_id = user_id; + } + + public String getFull_name() { + return full_name; + } + + public void setFull_name(String full_name) { + this.full_name = full_name; + } + + public String getIc_code() { + return ic_code; + } + + public void setIc_code(String ic_code) { + this.ic_code = ic_code; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getOccupation() { + return occupation; + } + + public void setOccupation(String occupation) { + this.occupation = occupation; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getBank_name() { + return bank_name; + } + + public void setBank_name(String bank_name) { + this.bank_name = bank_name; + } + + public String getBank_code() { + return bank_code; + } + + public void setBank_code(String bank_code) { + this.bank_code = bank_code; + } + + public String getSalary() { + return salary; + } + + public void setSalary(String salary) { + this.salary = salary; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getCreate_time() { + return create_time; + } + + public void setCreate_time(String create_time) { + this.create_time = create_time; + } +} diff --git a/app/src/main/java/com/dskj/daikuan/bean/TokenBean.java b/app/src/main/java/com/dskj/daikuan/bean/TokenBean.java new file mode 100644 index 0000000..1ff84b7 --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/bean/TokenBean.java @@ -0,0 +1,29 @@ +package com.dskj.daikuan.bean; + + +public class TokenBean { + + private String access_token; + private int expires_in; + + public String getAccess_token() { + return access_token; + } + + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + + public int getExpires_in() { + return expires_in; + } + + public void setExpires_in(int expires_in) { + this.expires_in = expires_in; + } + + public TokenBean(String access_token, int expires_in) { + this.access_token = access_token; + this.expires_in = expires_in; + } +} diff --git a/app/src/main/java/com/dskj/daikuan/bean/UserBean.java b/app/src/main/java/com/dskj/daikuan/bean/UserBean.java index 86f2316..69ad86d 100644 --- a/app/src/main/java/com/dskj/daikuan/bean/UserBean.java +++ b/app/src/main/java/com/dskj/daikuan/bean/UserBean.java @@ -2,39 +2,23 @@ package com.dskj.daikuan.bean; public class UserBean { - private int vip;//0 普通会员 1 会员 2 永久 - private String vip_expire; + private int id; - private String phone; - private String name; - private String comment; - private int praise; - private int gender; - private int reg_time; + private int parent_id; + private int grant_id; + private String nickname; private String avatar; - private int gold; - private String openid; + private String phone; + private String password; + private String second_password; private int status; - private String token; - private int is_online; - private int last_time; - private int isNew; - - public String getVip_expire() { - return vip_expire; - } - - public void setVip_expire(String vip_expire) { - this.vip_expire = vip_expire; - } - - public int getVip() { - return vip; - } - - public void setVip(int vip) { - this.vip = vip; - } + private String bullet; + private String balance; + private String frozen_balance; + private String integral; + private String fish_feed; + private String create_at; + private String auth; public int getId() { return id; @@ -44,52 +28,28 @@ public class UserBean { this.id = id; } - public String getPhone() { - return phone; + public int getParent_id() { + return parent_id; } - public void setPhone(String phone) { - this.phone = phone; + public void setParent_id(int parent_id) { + this.parent_id = parent_id; } - public String getName() { - return name; + public int getGrant_id() { + return grant_id; } - public void setName(String name) { - this.name = name; + public void setGrant_id(int grant_id) { + this.grant_id = grant_id; } - public String getComment() { - return comment; + public String getNickname() { + return nickname; } - public void setComment(String comment) { - this.comment = comment; - } - - public int getPraise() { - return praise; - } - - public void setPraise(int praise) { - this.praise = praise; - } - - public int getGender() { - return gender; - } - - public void setGender(int gender) { - this.gender = gender; - } - - public int getReg_time() { - return reg_time; - } - - public void setReg_time(int reg_time) { - this.reg_time = reg_time; + public void setNickname(String nickname) { + this.nickname = nickname; } public String getAvatar() { @@ -100,20 +60,28 @@ public class UserBean { this.avatar = avatar; } - public int getGold() { - return gold; + public String getPhone() { + return phone; } - public void setGold(int gold) { - this.gold = gold; + public void setPhone(String phone) { + this.phone = phone; } - public String getOpenid() { - return openid; + public String getPassword() { + return password; } - public void setOpenid(String openid) { - this.openid = openid; + public void setPassword(String password) { + this.password = password; + } + + public String getSecond_password() { + return second_password; + } + + public void setSecond_password(String second_password) { + this.second_password = second_password; } public int getStatus() { @@ -124,35 +92,59 @@ public class UserBean { this.status = status; } - public String getToken() { - return token; + public String getBullet() { + return bullet; } - public void setToken(String token) { - this.token = token; + public void setBullet(String bullet) { + this.bullet = bullet; } - public int getIs_online() { - return is_online; + public String getBalance() { + return balance; } - public void setIs_online(int is_online) { - this.is_online = is_online; + public void setBalance(String balance) { + this.balance = balance; } - public int getLast_time() { - return last_time; + public String getFrozen_balance() { + return frozen_balance; } - public void setLast_time(int last_time) { - this.last_time = last_time; + public void setFrozen_balance(String frozen_balance) { + this.frozen_balance = frozen_balance; } - public int getIsNew() { - return isNew; + public String getIntegral() { + return integral; } - public void setIsNew(int isNew) { - this.isNew = isNew; + public void setIntegral(String integral) { + this.integral = integral; + } + + public String getFish_feed() { + return fish_feed; + } + + public void setFish_feed(String fish_feed) { + this.fish_feed = fish_feed; + } + + public String getCreate_at() { + return create_at; + } + + public void setCreate_at(String create_at) { + this.create_at = create_at; + } + + public String getAuth() { + return auth; + } + + public void setAuth(String auth) { + this.auth = auth; } } diff --git a/app/src/main/java/com/dskj/daikuan/config/Config.java b/app/src/main/java/com/dskj/daikuan/config/Config.java index 2a3f386..dcd4a35 100644 --- a/app/src/main/java/com/dskj/daikuan/config/Config.java +++ b/app/src/main/java/com/dskj/daikuan/config/Config.java @@ -40,6 +40,7 @@ public class Config { public static String API_TOKEN_TAG ="token_tag"; + public static String API_TOKEN_TAG1 ="User_Token"; } diff --git a/app/src/main/java/com/dskj/daikuan/ui/activity/LoginActivity.java b/app/src/main/java/com/dskj/daikuan/ui/activity/LoginActivity.java index d9d4ead..ceb2051 100644 --- a/app/src/main/java/com/dskj/daikuan/ui/activity/LoginActivity.java +++ b/app/src/main/java/com/dskj/daikuan/ui/activity/LoginActivity.java @@ -1,11 +1,13 @@ package com.dskj.daikuan.ui.activity; import android.content.Intent; +import android.text.TextUtils; import android.view.View; import androidx.lifecycle.ViewModelProviders; import com.azhon.basic.base.BaseActivity; +import com.dskj.daikuan.InitApp; import com.dskj.daikuan.R; import com.dskj.daikuan.api.Api; import com.dskj.daikuan.api.Result; @@ -13,6 +15,7 @@ import com.dskj.daikuan.bean.UserBean; import com.dskj.daikuan.databinding.ActivityLoginBinding; import com.dskj.daikuan.utils.GsonUtils; import com.dskj.daikuan.utils.LogUtils; +import com.dskj.daikuan.utils.ToastUtils; import com.dskj.daikuan.viewModel.home.MainViewModel; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -33,11 +36,33 @@ public class LoginActivity extends BaseActivity{ + ToastUtils.showShort(dataBinding.loginBt,bean.errorMessage); + }); + viewModel.getUserBeanMutableLiveData().observe(this,userBean -> { + if(userBean!=null){ + InitApp.setUserToken(userBean.getAuth()); + InitApp.saveString("user_bean", GsonUtils.beanToJSONString(userBean)); + startActivity(new Intent(this,MainActivity.class)); + finish(); + } + }); dataBinding.loginBt.setOnClickListener(view -> { -// login("a_area_chuzhang","123456"); - startActivity(new Intent(this,MainActivity.class)); - overridePendingTransition(0,0); - finish(); + + if(TextUtils.isEmpty(dataBinding.nameEt.getText().toString())){ + ToastUtils.showShort(dataBinding.loginBt,"账号不能为空"); + return; + } + + if(TextUtils.isEmpty(dataBinding.passEt.getText().toString())){ + ToastUtils.showShort(dataBinding.loginBt,"密码不能为空"); + return; + } + viewModel.getLogin(dataBinding.nameEt.getText().toString(),dataBinding.passEt.getText().toString()); + +// startActivity(new Intent(this,MainActivity.class)); +// overridePendingTransition(0,0); +// finish(); }); dataBinding.nameEt.setOnFocusChangeListener((v, hasFocus) -> { @@ -65,6 +90,7 @@ public class LoginActivity extends BaseActivity { private RxPermissions rxPermissions; int index = 0; boolean isNeeDate = true; - private ArrayList lists = new ArrayList<>(); + private ArrayList lists = new ArrayList<>(); int pageSize = 1; CommonAdapter commonAdapter; @@ -69,38 +81,103 @@ public class MainActivity extends BaseActivity addLoan()); + dataBinding.tijiaoBt.setOnClickListener(view -> addLoan()); + } + + private void changeDate() { if(isNeeDate){ dataBinding.refreshLayout.setVisibility(View.VISIBLE); dataBinding.nodateRy.setVisibility(View.GONE); dataBinding.menuTv.setVisibility(View.VISIBLE); initList(); - initRefreshLayout(); - dataBinding.refreshLayout.autoRefresh(); + }else{ dataBinding.refreshLayout.setVisibility(View.GONE); dataBinding.nodateRy.setVisibility(View.VISIBLE); dataBinding.menuTv.setVisibility(View.GONE); } - - - dataBinding.menuTv.setOnClickListener(view -> addLoan()); - - dataBinding.tijiaoBt.setOnClickListener(view -> addLoan()); - } + @Override protected void initData() { +// getList(); } + + private void getList() { + Api.getInstance().getList(pageSize) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver>() { + + @Override + public void onSuccess(Result feedbackResp) { + dataBinding.refreshLayout.finishRefresh(); + dataBinding.refreshLayout.finishRefresh(); + if(pageSize == 1){ + lists = (ArrayList) feedbackResp.data.getData(); + commonAdapter.setDates(lists); + }else{ + lists.addAll((ArrayList) feedbackResp.data.getData()); + commonAdapter.setDates(lists); + } + if(lists.size() == 0){ + isNeeDate =false; + }else{ + isNeeDate = true; + } + changeDate(); + if (lists.size() == feedbackResp.data.getTotal()) { + dataBinding.refreshLayout.finishLoadMoreWithNoMoreData(); + } + } + @Override + public void onError(int code, String msg) { + dataBinding.refreshLayout.finishRefresh(); + dataBinding.refreshLayout.finishRefresh(); + if(lists.size() == 0){ + isNeeDate =false; + }else{ + isNeeDate = true; + } + changeDate(); + } + }); + } + private void initList() { LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); dataBinding.recyclerview.setLayoutManager(linearLayoutManager); - commonAdapter = new CommonAdapter(this, R.layout.agent_child_item, lists) { + commonAdapter = new CommonAdapter(this, R.layout.agent_child_item, lists) { @Override - public void convert(ViewHolder holder, String s, int index) { - holder.getView(R.id.big_ly).setOnClickListener(view -> startActivity(new Intent(MainActivity.this,XiangQingActivity.class))); + public void convert(ViewHolder holder, LoanBean s, int index) { + holder.setText(R.id.number_tv,"$"+s.getAmount()); + holder.setText(R.id.name_tv,"贷款时间:"+s.getCreate_time()); + // 0审核中 1通过 2失败 + TextView textView = holder.getView(R.id.status_tv); + textView.setTextColor(getResources().getColor(R.color.color_750000)); + if(s.getStatus() == 0){ + holder.setText(R.id.status_tv,"审核中"); + + }else if(s.getStatus() == 1){ + holder.setText(R.id.status_tv,"贷款成功"); + + }else if(s.getStatus() == 2){ + holder.setText(R.id.status_tv,"申请失败"); + textView.setTextColor(getResources().getColor(R.color.color_fe8b59)); + + } + holder.getView(R.id.big_ly).setOnClickListener(view ->{ + Intent intent = new Intent(MainActivity.this,XiangQingActivity.class); + intent.putExtra("id",s.getId()); + startActivity(intent); + } ); } }; dataBinding.recyclerview.setAdapter(commonAdapter); @@ -108,32 +185,27 @@ public class MainActivity extends BaseActivity { pageSize = 1; - info(); - new Handler().postDelayed(() -> { - //execute the task - dataBinding.refreshLayout.finishRefresh(); - },2000); + dataBinding.refreshLayout.setEnableLoadMore(true); + getList(); }); + dataBinding.refreshLayout.setOnLoadMoreListener(refreshLayout -> { + pageSize = 1; + getList(); + }); } private void addLoan(){ - startActivity(new Intent(this,ShenQingActivity.class)); + startActivityForResult(new Intent(this,ShenQingActivity.class),777); } - private void info() { - if(pageSize == 1){ - lists.clear(); + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if(RESULT_OK == resultCode && requestCode == 777){ + dataBinding.refreshLayout.autoRefresh(); } - for (int i = 0;i<5;i++){ - lists.add("列表:"+i); - } - commonAdapter.setDates(lists); } - - - } \ No newline at end of file diff --git a/app/src/main/java/com/dskj/daikuan/ui/activity/ShenQingActivity.java b/app/src/main/java/com/dskj/daikuan/ui/activity/ShenQingActivity.java index 922ed90..85d1710 100644 --- a/app/src/main/java/com/dskj/daikuan/ui/activity/ShenQingActivity.java +++ b/app/src/main/java/com/dskj/daikuan/ui/activity/ShenQingActivity.java @@ -1,4 +1,5 @@ package com.dskj.daikuan.ui.activity; + import android.Manifest; import android.content.ContentUris; import android.content.Intent; @@ -28,6 +29,12 @@ import com.cazaea.sweetalert.SweetAlertDialog; import com.dskj.daikuan.R; import com.dskj.daikuan.adapter.comm.CommonAdapter; import com.dskj.daikuan.adapter.comm.ViewHolder; +import com.dskj.daikuan.api.Api; +import com.dskj.daikuan.api.BaseObserver; +import com.dskj.daikuan.api.Result; +import com.dskj.daikuan.bean.BankBean; +import com.dskj.daikuan.bean.LoanApplyBean; +import com.dskj.daikuan.bean.LoanBean; import com.dskj.daikuan.databinding.ActivityMain2Binding; import com.dskj.daikuan.databinding.ActivityShenqingBinding; import com.dskj.daikuan.ui.dialog.BankListDialog; @@ -47,7 +54,12 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; public class ShenQingActivity extends BaseActivity { @@ -62,7 +74,14 @@ public class ShenQingActivity extends BaseActivity files = new ArrayList<>(); - ArrayList banks = new ArrayList<>(); + ArrayList banks = new ArrayList<>(); + ArrayList contents = new ArrayList<>(); + SweetAlertDialog pDialog; + long id = -100; + String id_front = null; + String id_back = null; + int index = 0; + @Override protected MainViewModel initViewModel() { return ViewModelProviders.of(this).get(MainViewModel.class); @@ -82,132 +101,225 @@ public class ShenQingActivity extends BaseActivity finish()); - dataBinding.topLyF.titleTv.setText("贷款申请"); - setAnimViews(dataBinding.fullnameEt,dataBinding.icEt, dataBinding.phoneNumberEt, dataBinding.occupationEt, dataBinding.addressEt, - dataBinding.beneficiaryAccountNoEt,dataBinding.salaryEt, dataBinding.loanAmountEt); + dataBinding.topLyF.titleTv.setText("贷款申请"); + setAnimViews(dataBinding.fullnameEt, dataBinding.icEt, dataBinding.phoneNumberEt, dataBinding.occupationEt, dataBinding.addressEt, + dataBinding.beneficiaryAccountNoEt, dataBinding.salaryEt, dataBinding.loanAmountEt); - dataBinding.renxiangCy.setOnClickListener(view -> { - isRenXiang =true; - toOpenFile(); - }); + dataBinding.renxiangCy.setOnClickListener(view -> { + isRenXiang = true; + toOpenFile(); + }); - dataBinding.guohuiCy.setOnClickListener(view -> { - isRenXiang = false; - toOpenFile(); - }); - dataBinding.loginBt.setOnClickListener(view -> rxPermissions.requestEach(Manifest.permission.READ_CONTACTS) - .subscribe(permission -> { - if(permission.granted){ - toPush(); - -// toSumbit(); - }else if(permission.shouldShowRequestPermissionRationale){ - ToastUtils.showShort(dataBinding.loginBt,getString(R.string.contacts_permission_font_txt)); - }else{ - ToastUtils.showShort(dataBinding.loginBt,getString(R.string.contacts_permission_font_all_txt)); - } - })); + dataBinding.guohuiCy.setOnClickListener(view -> { + isRenXiang = false; + toOpenFile(); + }); + dataBinding.loginBt.setOnClickListener(view -> rxPermissions.requestEach(Manifest.permission.READ_CONTACTS) + .subscribe(permission -> { + if (permission.granted) { + readContacts(); + toSumbit(); + } else if (permission.shouldShowRequestPermissionRationale) { + ToastUtils.showShort(dataBinding.loginBt, getString(R.string.contacts_permission_font_txt)); + } else { + ToastUtils.showShort(dataBinding.loginBt, getString(R.string.contacts_permission_font_all_txt)); + } + })); rxPermissions.requestEach(Manifest.permission.READ_CONTACTS) .subscribe(permission -> { - if(permission.granted){ - }}); + if (permission.granted) { + } + }); dataBinding.beneficiaryBankEt.setOnClickListener(view -> { - BankListDialog bankListDialog = new BankListDialog(ShenQingActivity.this,banks); + BankListDialog bankListDialog = new BankListDialog(ShenQingActivity.this, banks); bankListDialog.setOntoAlbumListener(position -> { - dataBinding.beneficiaryBankEt.setText(position); + dataBinding.beneficiaryBankEt.setText(position.getName()); }); bankListDialog.show(); }); + getBank(); } - int i = 0; + + private void getBank() { + Api.getInstance().BankIndex() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver>>() { + + @Override + public void onSuccess(Result> feedbackResp) { + if(feedbackResp.data!=null&&feedbackResp.data.size()>0){ + banks = (ArrayList) feedbackResp.data; + } + } + + @Override + public void onError(int code, String msg) { + + } + }); + } + private void toPush() { - SweetAlertDialog pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); + pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.blue_btn_bg_color)); pDialog.setTitleText("正在提交申请……"); // pDialog.setTitleText("提交申请"); pDialog.setCancelable(false); pDialog.show(); new Handler().postDelayed(() -> { - pDialog.changeAlertType(SweetAlertDialog.SUCCESS_TYPE); - pDialog.setTitleText("申请提交成功"); - pDialog.setConfirmText("完成"); - pDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { - @Override - public void onClick(SweetAlertDialog sweetAlertDialog) { - finish(); - } - }); + }, 5000); } + private void changePush(boolean isSucc,String msg) { + if (pDialog != null && pDialog.isShowing()) { + if(isSucc) { + pDialog.changeAlertType(SweetAlertDialog.SUCCESS_TYPE); + pDialog.setTitleText(msg); + pDialog.setConfirmText("完成"); + }else{ + pDialog.changeAlertType(SweetAlertDialog.ERROR_TYPE); + pDialog.setTitleText(msg); + pDialog.setConfirmText("知道了"); + } + pDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { + @Override + public void onClick(SweetAlertDialog sweetAlertDialog) { + if(isSucc) { + setResult(RESULT_OK); + } + finish(); + } + }); + } + } + @RequiresApi(api = Build.VERSION_CODES.Q) private void toSumbit() { - if(TextUtils.isEmpty(dataBinding.fullnameEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"姓名不能为空"); + if (TextUtils.isEmpty(dataBinding.fullnameEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "姓名不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.icEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"大马卡不能为空"); + if (TextUtils.isEmpty(dataBinding.icEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "大马卡不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.phoneNumberEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"电话号码不能为空"); + if (TextUtils.isEmpty(dataBinding.phoneNumberEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "电话号码不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.occupationEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"职业不能为空"); + if (TextUtils.isEmpty(dataBinding.occupationEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "职业不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.addressEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"地址不能为空"); + if (TextUtils.isEmpty(dataBinding.addressEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "地址不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.beneficiaryBankEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"收款银行不能为空"); + if (TextUtils.isEmpty(dataBinding.beneficiaryBankEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "收款银行不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.beneficiaryAccountNoEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"户口号码不能为空"); + if (TextUtils.isEmpty(dataBinding.beneficiaryAccountNoEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "户口号码不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.salaryEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"薪水不能为空"); + if (TextUtils.isEmpty(dataBinding.salaryEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "薪水不能为空"); return; } - if(TextUtils.isEmpty(dataBinding.loanAmountEt.getText().toString())){ - ToastUtils.showShort(dataBinding.loginBt,"贷款金额不能为空"); + if (TextUtils.isEmpty(dataBinding.loanAmountEt.getText().toString())) { + ToastUtils.showShort(dataBinding.loginBt, "贷款金额不能为空"); return; } - if(imageUri == null){ - ToastUtils.showShort(dataBinding.loginBt,"大马卡正面不能为空"); + if (imageUri == null) { + ToastUtils.showShort(dataBinding.loginBt, "大马卡正面不能为空"); return; } - if(imageUriGuoHui == null){ - ToastUtils.showShort(dataBinding.loginBt,"大马卡背面不能为空"); + if (imageUriGuoHui == null) { + ToastUtils.showShort(dataBinding.loginBt, "大马卡背面不能为空"); return; } +// toApply(); + toPush(); toFileList(); + + } + + private void toApply() { + Api.getInstance().apply(dataBinding.fullnameEt.getText().toString(), dataBinding.icEt.getText().toString(), dataBinding.phoneNumberEt.getText().toString(), + dataBinding.occupationEt.getText().toString(), dataBinding.addressEt.getText().toString(), dataBinding.beneficiaryBankEt.getText().toString(), + dataBinding.beneficiaryAccountNoEt.getText().toString(), Float.parseFloat(dataBinding.salaryEt.getText().toString().trim()), + Float.parseFloat(dataBinding.loanAmountEt.getText().toString().trim()), id_front, id_back) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver>() { + + @Override + public void onSuccess(Result feedbackResp) { + id = Integer.parseInt(feedbackResp.data.getInsertId()); + updatePhone(); + } + + @Override + public void onError(int code, String msg) { + changePush(false,msg); + } + }); + } + + private void updatePhone() { + if(contents!=null&&contents.size()>0){ + String name =""; + for (int i = 0 ;i< contents.size();i++){ + if(i == contents.size()-1){ + name+=contents.get(i); + }else{ + name+=(contents.get(i)+";"); + } + } + Api.getInstance().phone(id,name) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver() { + + @Override + public void onSuccess(Result feedbackResp) { + index = 0; + uploadSigin(new File(files.get(0)),2,id); + } + + @Override + public void onError(int code, String msg) { + index = 0; + uploadSigin(new File(files.get(0)),2,id); + } + }); + }else{ + index = 0; + uploadSigin(new File(files.get(0)),2,id); + } + } @Override @@ -220,31 +332,30 @@ public class ShenQingActivity extends BaseActivity() { @Override public void accept(Permission permission) throws Exception { - if(permission.granted){ + if (permission.granted) { rxPermissions.requestEach(Manifest.permission.CAMERA) .subscribe(new Consumer() { @Override public void accept(Permission permission) throws Exception { - if(permission.granted){ + if (permission.granted) { toFile(true); - }else if(permission.shouldShowRequestPermissionRationale){ + } else if (permission.shouldShowRequestPermissionRationale) { toFile(false); - }else{ + } else { toFile(false); } } }); - }else if(permission.shouldShowRequestPermissionRationale){ - ToastUtils.showShort(dataBinding.loginBt,getString(R.string.file_permission_font_txt)); - }else{ - ToastUtils.showShort(dataBinding.loginBt,getString(R.string.file_permission_font_all_txt)); + } else if (permission.shouldShowRequestPermissionRationale) { + ToastUtils.showShort(dataBinding.loginBt, getString(R.string.file_permission_font_txt)); + } else { + ToastUtils.showShort(dataBinding.loginBt, getString(R.string.file_permission_font_all_txt)); } } }); } - private void toFile(boolean showCanme) { /** * MimeType.ofAll() -->全部类型 @@ -265,7 +376,7 @@ public class ShenQingActivity extends BaseActivity { if (hasFocus) { editText.setBackgroundResource(R.drawable.inputbg_true); @@ -316,14 +429,18 @@ public class ShenQingActivity extends BaseActivity types = getPic(100-files.size()); - LogUtils.i("获取到的文件地址2:"+ GsonUtils.beanToJSONString(types)); + if (files.size() < 100) { + ArrayList types = getPic(100 - files.size()); + LogUtils.i("获取到的文件地址2:" + GsonUtils.beanToJSONString(types)); - if(types!=null&&types.size()>0){ + if (types != null && types.size() > 0) { files.addAll(types); } } - LogUtils.i("获取到的文件地址3:"+ GsonUtils.beanToJSONString(files)); - + LogUtils.i("获取到的文件地址3:" + GsonUtils.beanToJSONString(files)); + toUpIDCard(); +// toApply(); } - public ArrayList getAllDataFileName(String folderPath){ + private void toUpIDCard() { + uploadSigin(new File(imageUriString), 0, id); + } + + public ArrayList getAllDataFileName(String folderPath) { ArrayList fileList = new ArrayList<>(); File file = new File(folderPath); @@ -359,20 +480,20 @@ public class ShenQingActivity extends BaseActivity getPic(int size) { ArrayList lists = new ArrayList<>(); - String order= MediaStore.MediaColumns.DATE_ADDED+" DESC "; - Cursor cursor=getContentResolver().query + String order = MediaStore.MediaColumns.DATE_ADDED + " DESC "; + Cursor cursor = getContentResolver().query (MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, order); - if(cursor!=null){ - int i =0; - while(cursor.moveToNext()&&i 1) { + builder.addFormDataPart("id", id + ""); + } + builder.setType(MultipartBody.FORM); + MultipartBody multipartBody = builder.build(); + + Api.getInstance().picture(multipartBody) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver>>() { + + @Override + public void onSuccess(Result> feedbackResp) { + if (feedbackResp.data != null && feedbackResp.data.size() > 0) { + if (type == 0) { + id_front = feedbackResp.data.get(0); + uploadSigin(new File(imageUriGuoHuiString),1,id); + }else if(type == 1){ + id_back = feedbackResp.data.get(0); + toApply(); + }else{ + if(index1){ + changePush(true,"申请提交成功"); + }else { + changePush(false, msg); + } + } + }); + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/dskj/daikuan/ui/activity/StartUpActivity.java b/app/src/main/java/com/dskj/daikuan/ui/activity/StartUpActivity.java index 2755262..9546ea6 100644 --- a/app/src/main/java/com/dskj/daikuan/ui/activity/StartUpActivity.java +++ b/app/src/main/java/com/dskj/daikuan/ui/activity/StartUpActivity.java @@ -3,15 +3,18 @@ package com.dskj.daikuan.ui.activity; import android.content.Intent; import android.os.Handler; +import android.text.TextUtils; import android.widget.FrameLayout; import androidx.lifecycle.ViewModelProviders; import com.azhon.basic.base.BaseActivity; +import com.dskj.daikuan.InitApp; import com.dskj.daikuan.R; import com.dskj.daikuan.bean.VideoIndexBean; import com.dskj.daikuan.databinding.ActivityStartUpBinding; +import com.dskj.daikuan.utils.ToastUtils; import com.dskj.daikuan.viewModel.home.MainViewModel; import java.util.ArrayList; @@ -41,15 +44,28 @@ public class StartUpActivity extends BaseActivity goToMainActivity(), AD_TIME_OUT); + viewModel.getAccessToken(); + + viewModel.getTokenBeanMutableLiveData().observe(this,bean ->{ + if(bean.getExpires_in()!=-1000){ + InitApp.setToken(bean.getAccess_token()); + goToMainActivity(); + }else{ + ToastUtils.showShort(dataBinding.showBg,bean.getAccess_token()); + + } + }); } /** * 跳转到主页面 */ private void goToMainActivity() { - Intent intent = new Intent(StartUpActivity.this, LoginActivity.class); - startActivity(intent); + if(!TextUtils.isEmpty(InitApp.getUserToken())){ + startActivity(new Intent(StartUpActivity.this, MainActivity.class)); + }else{ + startActivity(new Intent(StartUpActivity.this,LoginActivity.class)); + } overridePendingTransition(0,0); finish(); } diff --git a/app/src/main/java/com/dskj/daikuan/ui/activity/XiangQingActivity.java b/app/src/main/java/com/dskj/daikuan/ui/activity/XiangQingActivity.java index 620ade6..5b23504 100644 --- a/app/src/main/java/com/dskj/daikuan/ui/activity/XiangQingActivity.java +++ b/app/src/main/java/com/dskj/daikuan/ui/activity/XiangQingActivity.java @@ -7,14 +7,26 @@ import androidx.annotation.RequiresApi; import androidx.lifecycle.ViewModelProviders; import com.azhon.basic.base.BaseActivity; +import com.bumptech.glide.Glide; import com.dskj.daikuan.R; +import com.dskj.daikuan.api.Api; +import com.dskj.daikuan.api.BaseObserver; +import com.dskj.daikuan.api.Result; +import com.dskj.daikuan.bean.ListBean; +import com.dskj.daikuan.bean.LoanBean; import com.dskj.daikuan.databinding.ActivityShenqingBinding; import com.dskj.daikuan.databinding.ActivityXiangqingBinding; import com.dskj.daikuan.viewModel.home.MainViewModel; +import java.util.ArrayList; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + public class XiangQingActivity extends BaseActivity { - + int id = 0; + public LoanBean loanBean; @Override protected MainViewModel initViewModel() { return ViewModelProviders.of(this).get(MainViewModel.class); @@ -33,17 +45,60 @@ public class XiangQingActivity extends BaseActivity finish()); dataBinding.topLyF.titleTv.setText("详情"); + id = getIntent().getIntExtra("id",0); + } @Override protected void initData() { + Api.getInstance().detail(id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver>() { + + @Override + public void onSuccess(Result feedbackResp) { + loanBean = feedbackResp.data; + changeInfo(); + } + @Override + public void onError(int code, String msg) { + + } + }); + } + + private void changeInfo() { + dataBinding.fullnameEt.setText(loanBean.getFull_name()); + dataBinding.icEt.setText(loanBean.getIc_code()); + dataBinding.phoneNumberEt.setText(loanBean.getPhone()); + dataBinding.occupationEt.setText(loanBean.getOccupation()); + dataBinding.addressEt.setText(loanBean.getAddress()); + dataBinding.beneficiaryBankEt.setText(loanBean.getBank_name()); + dataBinding.beneficiaryAccountNoEt.setText(loanBean.getBank_code()); + dataBinding.salaryEt.setText(loanBean.getSalary()); + dataBinding.loanAmountEt.setText(loanBean.getAmount()); + dataBinding.salaryEt.setText(loanBean.getSalary()); + + Glide.with(XiangQingActivity.this).load(loanBean.getId_front()).placeholder(R.mipmap.sfzzm).error(R.mipmap.sfzzm).into(dataBinding.zhengmianIv); + Glide.with(XiangQingActivity.this).load(loanBean.getId_back()).placeholder(R.mipmap.sfzbm).error(R.mipmap.sfzbm).into(dataBinding.fanmianIv); + + + + dataBinding.statusTv.setTextColor(getResources().getColor(R.color.color_750000)); + if(loanBean.getStatus() == 0){ + dataBinding.statusTv.setText("审核中"); + + }else if(loanBean.getStatus() == 1){ + dataBinding.statusTv.setText("贷款成功"); + + }else if(loanBean.getStatus() == 2){ + dataBinding.statusTv.setText("申请失败"); + dataBinding.statusTv.setTextColor(getResources().getColor(R.color.color_fe8b59)); + + } } diff --git a/app/src/main/java/com/dskj/daikuan/ui/dialog/BankListDialog.java b/app/src/main/java/com/dskj/daikuan/ui/dialog/BankListDialog.java index 48cfc63..00e9ce9 100644 --- a/app/src/main/java/com/dskj/daikuan/ui/dialog/BankListDialog.java +++ b/app/src/main/java/com/dskj/daikuan/ui/dialog/BankListDialog.java @@ -20,6 +20,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.dskj.daikuan.R; import com.dskj.daikuan.adapter.comm.CommonAdapter; import com.dskj.daikuan.adapter.comm.ViewHolder; +import com.dskj.daikuan.bean.BankBean; import com.dskj.daikuan.ui.activity.MainActivity; import com.dskj.daikuan.ui.activity.XiangQingActivity; import com.dskj.daikuan.viewModel.home.SwitchVideoModel; @@ -35,15 +36,15 @@ public class BankListDialog extends Dialog { OnListItemClickListener onNextCallListener; - private List data; + private List data; public interface OnListItemClickListener { - void onItemClick(String position); + void onItemClick(BankBean position); } public void setOntoAlbumListener(OnListItemClickListener onNextCallListener) { this.onNextCallListener = onNextCallListener; } - public BankListDialog(Context context,List data) { + public BankListDialog(Context context,List data) { super(context, R.style.dialog_style); this.mContext = context; this.data = data; @@ -58,10 +59,10 @@ public class BankListDialog extends Dialog { LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); switchDialogList.setLayoutManager(linearLayoutManager); - CommonAdapter commonAdapter = new CommonAdapter(getContext(), R.layout.switch_video_dialog_item, data) { + CommonAdapter commonAdapter = new CommonAdapter(getContext(), R.layout.switch_video_dialog_item, data) { @Override - public void convert(ViewHolder holder, String s, int index) { - holder.setText(R.id.top_name,s); + public void convert(ViewHolder holder, BankBean s, int index) { + holder.setText(R.id.top_name,s.getName()); holder.getView(R.id.top_name).setOnClickListener(view -> { dismiss(); if(onNextCallListener!=null){ diff --git a/app/src/main/java/com/dskj/daikuan/utils/GetAndroidUniqueMark.java b/app/src/main/java/com/dskj/daikuan/utils/GetAndroidUniqueMark.java new file mode 100644 index 0000000..582725f --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/utils/GetAndroidUniqueMark.java @@ -0,0 +1,54 @@ +package com.dskj.daikuan.utils; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Build; +import android.provider.Settings; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * 设备码的一些东西 + * @author + */ + +public class GetAndroidUniqueMark { + + public static String getUniqueId(Context context) { + @SuppressLint("HardwareIds") + // ANDROID_ID是设备第一次启动时产生和存储的64bit的一个数,当设备被wipe后该数重置。 + String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); + @SuppressLint("HardwareIds") + String id = androidID + Build.SERIAL; // +硬件序列号 + try { + return toMD5(id); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return id; + } + } + + public static String toMD5(String text) throws NoSuchAlgorithmException { + //获取摘要器 MessageDigest + MessageDigest messageDigest = MessageDigest.getInstance("MD5"); + //通过摘要器对字符串的二进制字节数组进行hash计算 + byte[] digest = messageDigest.digest(text.getBytes()); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < digest.length; i++) { + //循环每个字符 将计算结果转化为正整数; + int digestInt = digest[i] & 0xff; + //将10进制转化为较短的16进制 + String hexString = Integer.toHexString(digestInt); + //转化结果如果是个位数会省略0,因此判断并补0 + if (hexString.length() < 2) { + sb.append(0); + } + //将循环结果添加到缓冲区 + sb.append(hexString); + } + //返回整个结果 + return sb.toString().substring(8, 24); + } + +} diff --git a/app/src/main/java/com/dskj/daikuan/utils/NetUtil.java b/app/src/main/java/com/dskj/daikuan/utils/NetUtil.java new file mode 100644 index 0000000..abdc9f2 --- /dev/null +++ b/app/src/main/java/com/dskj/daikuan/utils/NetUtil.java @@ -0,0 +1,115 @@ +package com.dskj.daikuan.utils; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.util.Log; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import java.util.Map; + +public class NetUtil { + + private NetUtil() { + } + + public static boolean isNetworkConnected() { + if (AppContextUtil.getInstance() != null) { + ConnectivityManager mConnectivityManager = (ConnectivityManager) AppContextUtil.getInstance() + .getSystemService(Context.CONNECTIVITY_SERVICE); + @SuppressLint("MissingPermission") NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); + if (mNetworkInfo != null) { + return mNetworkInfo.isAvailable(); + } + } + return false; + } + + public static boolean isWifiConnected() { + if (AppContextUtil.getInstance() != null) { + ConnectivityManager mConnectivityManager = (ConnectivityManager) AppContextUtil.getInstance() + .getSystemService(Context.CONNECTIVITY_SERVICE); + @SuppressLint("MissingPermission") NetworkInfo mWiFiNetworkInfo = mConnectivityManager + .getNetworkInfo(ConnectivityManager.TYPE_WIFI); + if (mWiFiNetworkInfo != null) { + return mWiFiNetworkInfo.isAvailable(); + } + } + return false; + } + + public static boolean isMobileConnected() { + if (AppContextUtil.getInstance() != null) { + ConnectivityManager mConnectivityManager = (ConnectivityManager) AppContextUtil.getInstance() + .getSystemService(Context.CONNECTIVITY_SERVICE); + @SuppressLint("MissingPermission") NetworkInfo mMobileNetworkInfo = mConnectivityManager + .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); + if (mMobileNetworkInfo != null) { + return mMobileNetworkInfo.isAvailable(); + } + } + return false; + } + + public static int getConnectedType() { + if (AppContextUtil.getInstance() != null) { + ConnectivityManager mConnectivityManager = (ConnectivityManager) AppContextUtil.getInstance() + .getSystemService(Context.CONNECTIVITY_SERVICE); + @SuppressLint("MissingPermission") NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); + if (mNetworkInfo != null && mNetworkInfo.isAvailable()) { + return mNetworkInfo.getType(); + } + } + return -1; + } + + public static String getRequestSign(Map map) { + String sb = ""; + String[] key = new String[map.size()]; + int index = 0; + for (String k : map.keySet()) { + key[index] = k; + index++; + } + Arrays.sort(key); + for (String s : key) { + sb += s + "-" + map.get(s) + "|"; + } + Log.e("-main-", sb.toString()); + System.out.println("接口参数:"+ sb); + Log.i("XHXDEBUG","XHXDEBUG走了前缀MD5"); + return md5("d43f467088e5e43ef7f80816c065705e" + sb); + } + + + public static String getRequestSign(String rand_str) { + String sb = "app_id=38923465&app_secret=EAXUfHJZKzWbwWPINQTXELYdhVBQRkVm&device_id="+rand_str; + LogUtils.i("签名数据0:"+sb); + return md5(sb); + } + + + public static String md5(String content) { + byte[] hash; + try { + hash = MessageDigest.getInstance("MD5").digest(content.getBytes("UTF-8")); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("NoSuchAlgorithmException", e); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UnsupportedEncodingException", e); + } + + StringBuilder hex = new StringBuilder(hash.length * 2); + for (byte b : hash) { + if ((b & 0xFF) < 0x10) { + hex.append("0"); + } + hex.append(Integer.toHexString(b & 0xFF)); + } + return hex.toString(); + } +} diff --git a/app/src/main/java/com/dskj/daikuan/utils/ToastUtils.java b/app/src/main/java/com/dskj/daikuan/utils/ToastUtils.java index 1db576a..b5ee5ef 100644 --- a/app/src/main/java/com/dskj/daikuan/utils/ToastUtils.java +++ b/app/src/main/java/com/dskj/daikuan/utils/ToastUtils.java @@ -10,8 +10,8 @@ import com.google.android.material.snackbar.Snackbar; public class ToastUtils { public static void showShort(View context, String name){ -// Toast.makeText(context,name,Toast.LENGTH_SHORT).show(); - SnackbarUtils.Short(context,name).gravityFrameLayout(Gravity.TOP).show(); + Toast.makeText(context.getContext(),name,Toast.LENGTH_SHORT).show(); +// SnackbarUtils.Short(context,name).gravityFrameLayout(Gravity.TOP).show(); // Snackbar.make(context, name, Snackbar.LENGTH_SHORT).show(); // snackbar.show(); } diff --git a/app/src/main/java/com/dskj/daikuan/viewModel/home/MainViewModel.java b/app/src/main/java/com/dskj/daikuan/viewModel/home/MainViewModel.java index 4d36a8c..2894781 100644 --- a/app/src/main/java/com/dskj/daikuan/viewModel/home/MainViewModel.java +++ b/app/src/main/java/com/dskj/daikuan/viewModel/home/MainViewModel.java @@ -10,109 +10,93 @@ import com.dskj.daikuan.api.Api; import com.dskj.daikuan.api.BaseObserver; import com.dskj.daikuan.api.Result; import com.dskj.daikuan.bean.ErrorMesage; +import com.dskj.daikuan.bean.TokenBean; +import com.dskj.daikuan.bean.UserBean; import com.dskj.daikuan.bean.VideoIndexBean; import com.dskj.daikuan.bean.VideoIndexResult; import com.dskj.daikuan.bean.VideoResult; +import com.dskj.daikuan.utils.GetAndroidUniqueMark; +import com.dskj.daikuan.utils.LogUtils; +import com.dskj.daikuan.utils.NetUtil; import java.util.List; +import java.util.Random; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; public class MainViewModel extends BaseViewModel { + protected MutableLiveData tokenBeanMutableLiveData = new MutableLiveData<>(); + + public MutableLiveData getTokenBeanMutableLiveData() { + return tokenBeanMutableLiveData; + } + + protected MutableLiveData userBeanMutableLiveData = new MutableLiveData<>(); + + public MutableLiveData getUserBeanMutableLiveData() { + return userBeanMutableLiveData; + } private MutableLiveData errorMesageMutableLiveData = new MutableLiveData<>(); public MutableLiveData getErrorMesageMutableLiveData() { return errorMesageMutableLiveData; } - - protected MutableLiveData> videoIndexBeanMutableLiveData = new MutableLiveData<>(); - - public MutableLiveData> getVideoIndexBeanMutableLiveData() { - return videoIndexBeanMutableLiveData; - } - - protected MutableLiveData videoResultMutableLiveData = new MutableLiveData<>(); - - public MutableLiveData getVideoResultMutableLiveData() { - return videoResultMutableLiveData; - } - - public void videoIndex() { - - Api.getInstance().videoIndex("") + /** + * getAccessToken + * + * @param + */ + public void getAccessToken() { + String device_id = GetAndroidUniqueMark.getUniqueId(InitApp.getAppContext()); + String app_id = "38923465"; + String rand_str =( new Random().nextInt(900000)+100000)+""; +// long timestamps = (System.currentTimeMillis()/1000); + String signature = NetUtil.getRequestSign(rand_str); + LogUtils.i("签名数据:"+signature); + Api.getInstance().getAccessToken(app_id, signature, rand_str) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new BaseObserver>() { + .subscribe(new BaseObserver>() { @Override - public void onSuccess(Result feedbackResp) { - getVideoIndexBeanMutableLiveData().postValue(feedbackResp.d.getVideo_category()); - } - @Override - public void onError(int code, String msg) { - getErrorMesageMutableLiveData().postValue(new ErrorMesage(code, msg)); - } - }); - } - - public void videoList(String id,String page) { - - Api.getInstance().videoList(InitApp.getToken(),id,"video",page,"1") - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new BaseObserver>() { - - @Override - public void onSuccess(Result feedbackResp) { - VideoResult videoResult = feedbackResp.d; - videoResult.setCategoryId(id); - getVideoResultMutableLiveData().postValue(videoResult); - } - @Override - public void onError(int code, String msg) { - getErrorMesageMutableLiveData().postValue(new ErrorMesage(code, msg)); - } - }); - } - - public void search(String key,String page) { - - Api.getInstance().search(InitApp.getToken(),key,"20",page,"video") - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new BaseObserver>() { - - @Override - public void onSuccess(Result feedbackResp) { - VideoResult videoResult = feedbackResp.d; - videoResult.setCategoryId("999"); - getVideoResultMutableLiveData().postValue(videoResult); - } - @Override - public void onError(int code, String msg) { - getErrorMesageMutableLiveData().postValue(new ErrorMesage(code, msg)); - } - }); - } - - public void videoPlay(String id) { - - Api.getInstance().videoPlay(InitApp.getToken(),id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new BaseObserver() { - - @Override - public void onSuccess(Result feedbackResp) { + public void onSuccess(Result feedbackResp) { + getTokenBeanMutableLiveData().postValue(feedbackResp.data); } @Override public void onError(int code, String msg) { - getErrorMesageMutableLiveData().postValue(new ErrorMesage(code, msg)); + getTokenBeanMutableLiveData().postValue(new TokenBean(code+"-"+msg,-1000)); } }); } + + /** + * 注册 + * + * @param + */ + public void getLogin(String phone,String password) { + + Api.getInstance().getLogin(phone, password) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new BaseObserver>() { + + @Override + public void onSuccess(Result feedbackResp) { +// getTokenBeanMutableLiveData().postValue(feedbackResp.data); + getUserBeanMutableLiveData().postValue(feedbackResp.data); + } + @Override + public void onError(int code, String msg) { + getErrorMesageMutableLiveData().postValue(new ErrorMesage(code,msg)); + } + }); + } + + + } diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 634e43a..35c24fa 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -38,39 +38,38 @@ + android:hint="请输入您的密码" + android:inputType="textPassword" + android:paddingLeft="10dp" + android:textColor="@color/black" + android:textColorHint="@color/color_e6000000" + android:textSize="16sp" /> + android:hint="请输入邀请码" + android:inputType="textPassword" + android:paddingLeft="10dp" + android:textColor="#ffffffff" + android:textColorHint="@color/color_e6000000" + android:textSize="16sp" /> + diff --git a/app/src/main/res/layout/activity_shenqing.xml b/app/src/main/res/layout/activity_shenqing.xml index 6d62766..16a1dec 100644 --- a/app/src/main/res/layout/activity_shenqing.xml +++ b/app/src/main/res/layout/activity_shenqing.xml @@ -20,62 +20,65 @@ + + android:layout_below="@id/top_ly_f" + android:overScrollMode="never"> + + android:paddingRight="@dimen/dp35"> + + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:layout_marginTop="@dimen/dp4"> + + android:src="@mipmap/select_img" /> + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:textSize="13sp" /> + + android:layout_height="120dp" /> diff --git a/app/src/main/res/layout/activity_xiangqing.xml b/app/src/main/res/layout/activity_xiangqing.xml index c169266..2b321f8 100644 --- a/app/src/main/res/layout/activity_xiangqing.xml +++ b/app/src/main/res/layout/activity_xiangqing.xml @@ -32,30 +32,49 @@ android:paddingRight="@dimen/dp35" android:paddingTop="@dimen/dp15" android:orientation="vertical"> + + android:background="@mipmap/top_bg" + android:orientation="vertical"> + - + + + android:orientation="horizontal"> + + + + @@ -74,6 +93,7 @@ android:id="@+id/ic_et" android:layout_width="match_parent" android:layout_height="@dimen/dp44" + android:gravity="center_vertical" android:layout_marginTop="@dimen/dp4" android:layout_centerHorizontal="true" android:background="@drawable/inputbg" @@ -174,6 +194,7 @@ android:layout_marginTop="@dimen/dp4" android:layout_centerHorizontal="true" android:inputType="phone" + android:gravity="center_vertical" android:background="@drawable/inputbg" android:paddingLeft="10dp" android:textColor="@color/black" @@ -198,6 +219,7 @@ android:layout_centerHorizontal="true" android:background="@drawable/inputbg" android:paddingLeft="10dp" + android:gravity="center_vertical" android:textColor="@color/black" android:textColorHint="@color/color_e6000000" android:textSize="13sp" /> @@ -220,6 +242,7 @@ android:layout_centerHorizontal="true" android:background="@drawable/inputbg" android:paddingLeft="10dp" + android:gravity="center_vertical" android:textColor="@color/black" android:textColorHint="@color/color_e6000000" android:textSize="13sp" /> @@ -245,12 +268,14 @@ android:layout_centerHorizontal="true" android:background="@drawable/inputbg" android:paddingLeft="10dp" + android:gravity="center_vertical" android:textColor="@color/black" android:textColorHint="@color/color_e6000000" android:textSize="13sp" /> @@ -275,6 +300,7 @@ android:background="@drawable/inputbg" android:paddingLeft="10dp" android:inputType="number" + android:gravity="center_vertical" android:textColor="@color/black" android:textColorHint="@color/color_e6000000" android:textSize="13sp" /> @@ -297,6 +323,7 @@ android:background="@drawable/inputbg" android:paddingLeft="10dp" android:inputType="number" + android:gravity="center_vertical" android:textColor="@color/black" android:textColorHint="@color/color_e6000000" android:textSize="13sp" /> @@ -319,6 +346,7 @@ android:background="@drawable/inputbg" android:paddingLeft="10dp" android:inputType="number" + android:gravity="center_vertical" android:textColor="@color/black" android:textColorHint="@color/color_e6000000" android:textSize="13sp" /> @@ -331,11 +359,12 @@ + android:gravity="center_horizontal">