Commit e450890b by sikang

Do Uang v1.0.0

parent b1854b53
......@@ -45,7 +45,7 @@ repositories {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
//noinspection GradleCompatible
// noinspection GradleCompatible
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// multidex
......@@ -56,21 +56,21 @@ dependencies {
api "com.android.support:support-v4:$rootProject.ext.supportLibraryVersion"
api "com.android.support:recyclerview-v7:$rootProject.ext.supportLibraryVersion"
//protobuf
// protobuf
api "com.google.protobuf:protobuf-java:3.5.1"
// stream
api 'com.annimon:stream:1.1.4'
// litepal
api 'org.litepal.android:core:2.0.0'
api 'me.jessyan:autosize:1.0.6'
// api 'me.jessyan:autosize:1.0.6'
//同盾
api(name: 'android_shujumohe_sdk_beta_20180907_1.0.8.2', ext: 'aar')
api 'com.alibaba:fastjson:1.1.58.android'
//QMUI
api 'com.qmuiteam:qmui:1.1.3'
api 'com.qmuiteam:qmui:1.1.10'
//Eventbus
api 'org.greenrobot:eventbus:3.0.0'
......
......@@ -104,17 +104,17 @@ public class LibConfig {
// initFirebaseRemoteConfig();
//init SharePreferences
PreferencesManager.get().init(application);
PreferencesManager.get().init(CONTEXT);
//init gateway
Gateway.init(PreferencesManager.get().getGatewayInfo());
//init Bugly
if (!TextUtils.isEmpty(BUGLY_APP_ID)) {
CrashReport.initCrashReport(getApplicationContext(), BUGLY_APP_ID, DEBUG);
CrashReport.initCrashReport(CONTEXT, BUGLY_APP_ID, DEBUG);
}
initZendesk(application);
initZendesk(CONTEXT);
initTD();
}
......
......@@ -286,23 +286,11 @@ public abstract class BaseActivity extends AppCompatActivity implements IView {
return fragmentLauncher;
}
public boolean isDrawerOpen() {
return drawerLayout.isDrawerOpen(Gravity.LEFT);
public DrawerLayout getDrawer() {
return drawerLayout;
}
public void openDrawer() {
if (drawerLayout != null && !drawerLayout.isDrawerOpen(Gravity.LEFT)) {
drawerLayout.openDrawer(Gravity.LEFT);
}
}
public void closeDrawer() {
if (drawerLayout != null && drawerLayout.isDrawerOpen(Gravity.LEFT)) {
drawerLayout.closeDrawer(Gravity.LEFT);
}
}
//----------------------------------- Presenter ----------------------------------------
//----------------------------------- Presenter ----------------------------------------
/**
* 获取Presenter
......
......@@ -93,11 +93,15 @@ public abstract class HttpObserver<T> implements Observer<T> {
onError(Error.SERVER_ERROR, LibConfig.getContext().getString(R.string.show_not_login_yet));
return true;
case 409:
Gson gson = new Gson();
// 版本更新
BasicAck result = gson.fromJson(exception.response().body().toString(), BasicAck.class);
UpdateBean updateBean = gson.fromJson(result.getData(), UpdateBean.class);
EventBus.getDefault().post(updateBean);
if (exception.response().body() != null) {
Gson gson = new Gson();
// 版本更新
BasicAck result = gson.fromJson(exception.response().body().toString(), BasicAck.class);
UpdateBean updateBean = gson.fromJson(result.getData(), UpdateBean.class);
EventBus.getDefault().post(updateBean);
}else{
EventBus.getDefault().post(new UpdateBean());
}
return true;
case 412:
// 参数缺失
......
......@@ -172,6 +172,7 @@ public interface UserApi {
@Field("childrenNumber") String childrenNumber,
@Field("residenceDuration") String residenceDuration,
@Field("facebookId") String facebookId,
@Field("whatsappId") String whatsappId,
@Header("X-AUTH-TOKEN") String token);
/**
......
......@@ -9,6 +9,15 @@ public class DisplayBean implements Serializable {
private String description;
private String customerMobile;
private String loginType;
private long updateTime;
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
public String getDescription() {
return description;
......
......@@ -40,6 +40,7 @@ public class PersonalInfoServerBean implements Serializable {
private String province;
private String residenceDuration;
private String familyNameInLaw;
private String whatsappId="";
public String getRegion() {
StringBuffer buffer = new StringBuffer();
......@@ -51,6 +52,15 @@ public class PersonalInfoServerBean implements Serializable {
return buffer.toString();
}
public String getWhatsappId() {
return whatsappId;
}
public void setWhatsappId(String whatsappId) {
this.whatsappId = whatsappId;
}
@Nullable
private String facebookId;
......
......@@ -22,6 +22,7 @@ import tech.starwin.mvp.api.LoanApi;
import tech.starwin.mvp.api.UploadApi;
import tech.starwin.mvp.api.UserApi;
import tech.starwin.mvp.beans.BankBean;
import tech.starwin.mvp.beans.DisplayBean;
import tech.starwin.mvp.beans.EmploymentServerBean;
import tech.starwin.mvp.beans.GatewayInfoBean;
import tech.starwin.mvp.beans.LatestLoanAppBean;
......@@ -309,6 +310,7 @@ public class UserPresenter extends BasePresenter<UserApi> {
personalInfo.getChildrenNumber(),
personalInfo.getResidenceDuration(),
personalInfo.getFacebookId(),
personalInfo.getWhatsappId(),
LoginManager.get().getToken()));
}
......@@ -377,7 +379,36 @@ public class UserPresenter extends BasePresenter<UserApi> {
* 客户服务热线、公司介绍
*/
public void getCustomerMsg(String action) {
handleRequest(action, apiService.display());
DisplayBean displayBean = PreferencesManager.get().getCustomerInfo();
//一小时之内 不重复获取
if (displayBean == null || System.currentTimeMillis() - displayBean.getUpdateTime() > (1000 * 60 * 60)) {
handleRequest(apiService.display(), new HttpObserver<DisplayBean>() {
@Override
public void onStart() {
view.onHttpStart(action, true);
}
@Override
public void onSuccess(DisplayBean data) {
data.setUpdateTime(System.currentTimeMillis());
PreferencesManager.get().saveCustomerInfo(data);
view.onHttpSuccess(action, data);
}
@Override
public void onError(int code, String msg) {
view.onHttpError(action, msg);
}
@Override
public void onFinish() {
view.onHttpFinish(action);
}
});
} else {
view.onHttpSuccess(action, displayBean);
}
}
......
......@@ -11,7 +11,9 @@ import java.lang.reflect.Method;
import tech.starwin.BuildConfig;
import tech.starwin.LibConfig;
import tech.starwin.utils.GeneralUtils;
import tech.starwin.utils.LoginManager;
import tech.starwin.utils.ui_utils.UIHelper;
import zendesk.suas.Action;
import zendesk.support.request.RequestActivity;
import zendesk.support.request.RequestUiConfig;
......@@ -63,7 +65,6 @@ public class RefreshDeskActivity extends RequestActivity {
Intent intent = RequestActivity.builder()
.withTags("2.0", LibConfig.VERSION_NAME + LibConfig.VERSION_CODE)
.intent(context, config.config());
intent.setClass(context, RefreshDeskActivity.class);
context.startActivity(intent);
}
......@@ -104,5 +105,6 @@ public class RefreshDeskActivity extends RequestActivity {
if (isFinishing()) {
mHandler.removeCallbacksAndMessages(null);
}
UIHelper.closeKeybord(this);
}
}
......@@ -22,7 +22,6 @@ public class RefreshDeskListActivity extends RequestListActivity {
.Builder();
Intent intent = RequestListActivity.builder().
intent(context, config.config());
intent.setClass(context, RefreshDeskListActivity.class);
context.startActivity(intent);
}
......
......@@ -44,14 +44,21 @@ public class Gateway {
return gatewayInfo.gateway;
}
/**
* 注册协议和隐私政策
* */
public static String getAgreementPolicyUrl() {
return gatewayInfo.privacy.get(0);
}
/**
* 上传地址
* */
public static String getHarvesterUrl() {
return gatewayInfo.harvester.get(0);
}
public static String getAdminUrl() {
return gatewayInfo.admin.get(0);
}
......@@ -63,12 +70,6 @@ public class Gateway {
return getAdminUrl() + LibConfig.LOAN_AGREEMENT + "?loanId=" + loanId;
}
/**
* 隐私政策
*/
public static String getPrivacyPolicy() {
return getAdminUrl() + LibConfig.PRIVACY_POLICY;
}
/**
......
......@@ -143,7 +143,8 @@ public class LoginManager {
* 获取手机号
*/
public String getMobile() {
return getTokenInfo() == null ? "" : getTokenInfo().getMobile();
String mobile = getTokenInfo() == null ? "" : getTokenInfo().getMobile();
return mobile == null ? "" : mobile;
}
/**
......
......@@ -8,6 +8,7 @@ import android.util.Base64;
import java.util.Map;
import tech.starwin.mvp.beans.DisplayBean;
import tech.starwin.mvp.beans.GatewayInfoBean;
import tech.starwin.mvp.beans.OcrResultBean;
import tech.starwin.mvp.beans.TokenInfoBean;
......@@ -102,6 +103,19 @@ public class PreferencesManager {
/**
* 客户信息(客服电话、关于我们 等)
*/
public void saveCustomerInfo(DisplayBean displayBean) {
saveData("display_info", StringFormat.fromBean(displayBean));
}
public DisplayBean getCustomerInfo() {
String objStr = getString("display_info", "");
return TextUtils.isEmpty(objStr) ? null : (DisplayBean) StringFormat.toBean(objStr);
}
/**
* 手机默认短信应用的包名
*/
public void saveDefaultSmsPackage(String pkgName) {
......
......@@ -128,7 +128,7 @@ public class UploadManager {
.setVersion("2")
.setBody(datas.get(i))
.setImei(GeneralUtils.getAndroidID(context))
.setMobile("084564444490")
.setMobile(LoginManager.get().getMobile())
.setCTimestamp(System.currentTimeMillis())
.setType(IncomeMessageProto.Message.Type.TRACE)
.setSessionId(sessionId)
......@@ -216,7 +216,7 @@ public class UploadManager {
.setVersion("2")
.setBody(body + " permission=" + getPermissionState(context).toString())
.setImei(GeneralUtils.getAndroidID(context))
.setMobile(LoginManager.get().getMobile() != null ? LoginManager.get().getMobile() : "")
.setMobile(LoginManager.get().getMobile())
.setType(IncomeMessageProto.Message.Type.UNKNOWN)
.setControlCmd(cmd)
.setSessionId(sessionId)
......@@ -246,7 +246,7 @@ public class UploadManager {
object.put("checkTime", System.currentTimeMillis());
object.put("permissionType", permissionsTocheck[i]);
if (PermissionsHelper.isGranted(context,permissionsTocheck[i])) {
if (PermissionsHelper.isGranted(context, permissionsTocheck[i])) {
object.put("isGranted", "GRANTED");
} else {
object.put("isGranted", "REFUSED");
......@@ -267,7 +267,7 @@ public class UploadManager {
/**
* 上传异常信息
* */
*/
public static void uploadException(Throwable ex, @NonNull String tag) {
Observable.just(true)
......@@ -294,8 +294,7 @@ public class UploadManager {
.setVersion("2")
.setBody(exBody)
.setImei(GeneralUtils.getAndroidID(context))
.setMobile(LoginManager.get().getMobile() != null ?
LoginManager.get().getMobile() : "")
.setMobile(LoginManager.get().getMobile())
.setCTimestamp(System.currentTimeMillis())
.setType(IncomeMessageProto.Message.Type.TRACE)
.setSessionId(sessionId)
......
......@@ -8,6 +8,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.provider.Telephony;
import android.text.TextWatcher;
import android.view.View;
import java.io.Serializable;
......@@ -55,6 +56,8 @@ public class ActivityJumper {
context.startActivity(intent);
}
public Intent getIntent() {
return intent;
}
......
......@@ -16,7 +16,7 @@ public class AppLanguageUtils {
public static HashMap<String, Locale> allLanguages = new HashMap<String, Locale>(8) {{
put("en", Locale.ENGLISH);
put("zh", Locale.SIMPLIFIED_CHINESE);
put("in", Locale.FRANCE);//设置一个未翻译的语言,使用默认values,即印尼语
put("in", Locale.ROOT);//使用默认values,即印尼语
}};
@SuppressWarnings("deprecation")
......
......@@ -30,11 +30,11 @@ public class StringFormat {
* 格式化金额
*/
public static String moneyFormat(@Nullable Context context, double money) {
return String.format(context.getString(R.string.moneySymbol) + "%,.0f", money).replaceAll(",", ".");
return String.format(context.getString(R.string.moneySymbol) + "%.0f", money).replaceAll(",", ".");
}
public static String moneyConversion(double paidAmount) {
return String.format("%,.0f", paidAmount).replace(",", ".");
return String.format("%.0f", paidAmount).replace(",", ".");
}
/**
......
......@@ -71,18 +71,17 @@ public class DialogManager {
* 更新弹窗
*/
public static void showUpdateDialog(Context context, @DrawableRes int imgId, UpdateBean updateBean, View.OnClickListener listener) {
if (updateBean != null && updateBean.getReleaseNotes() != null && updateBean.getReleaseNotes().size() > 0) {
Dialog dialog = DialogFactory.createCustomDialog(context, R.layout.dialog_update, (dialog1, viewHolder) -> {
viewHolder.getImageView(R.id.tv_dialog_update_title).setImageResource(imgId);
viewHolder.getButton(R.id.btn_dialog_update_download).setOnClickListener(listener);
Dialog dialog = DialogFactory.createCustomDialog(context, R.layout.dialog_update, (dialog1, viewHolder) -> {
viewHolder.getImageView(R.id.tv_dialog_update_title).setImageResource(imgId);
viewHolder.getButton(R.id.btn_dialog_update_download).setOnClickListener(listener);
if (updateBean != null && updateBean.getReleaseNotes() != null && updateBean.getReleaseNotes().size() > 0) {
viewHolder.getTextView((R.id.tv_update_notes)).setText(updateBean.getReleaseNotesStr());
});
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
dialog.show();
}
});
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
dialog.show();
}
}
......
......@@ -290,11 +290,12 @@ public class UIHelper {
* 关闭软键盘
*/
public static void closeKeybord(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(activity.getWindow().getDecorView().getWindowToken(),
0);
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
View view = activity.getCurrentFocus();
if (view == null) {
view = new View(activity);
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
......
......@@ -48,8 +48,7 @@
<TextView
android:id="@+id/tv_update_notes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="test" />
android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>
......
......@@ -912,13 +912,13 @@
3.Semakin banyak dokumen yg dilengkapi akan semakin baik
</string>
<string name="take_work_certification_tips">
Choose one of the following options to upload:\n
Salary Slip\n
Work Permit\n
Driver\'s License\n
Photo of The Workplace
</string>
<!--<string name="take_work_certification_tips">-->
<!--Choose one of the following options to upload:\n-->
<!--Salary Slip\n-->
<!--Work Permit\n-->
<!--Driver\'s License\n-->
<!--Photo of The Workplace-->
<!--</string>-->
<string name="goto_add_bank_info">Add Bank Info</string>
......
......@@ -872,7 +872,7 @@
<string name="check_the_checkbox">请勾选复选框以同意政策</string>
<string name="text_field_identity_info">身份信息</string>
<string name="text_field_identity_info_2">身份\n信息</string>
<string name="double_click_exit_tip">再次点击退出应用程序</string>
<string name="double_click_exit_tip">再次点击退出应用程序</string>
<string name="upload_your_ktp_photo">上传您的KTP照片</string>
<string name="take_ktp_photo_tips">您上传的照片需要与您的KTP相匹配。您的KTP必须显得有效且清晰。</string>
<string name="personalinfo_bottom_tips">填写可选信息将有助于加快审核流程,并让您访问平台产品</string>
......@@ -890,13 +890,13 @@
3.Semakin banyak dokumen yg dilengkapi akan semakin baik
</string>
<string name="take_work_certification_tips">
选择以下选项之一上传:\n
薪资单\n
工作许可\n
驾驶执照\n
工作场所的照片
</string>
<!--<string name="take_work_certification_tips">-->
<!--选择以下选项之一上传:\n-->
<!--薪资单\n-->
<!--工作许可\n-->
<!--驾驶执照\n-->
<!--工作场所的照片-->
<!--</string>-->
<string name="goto_add_bank_info">添加银行信息</string>
......@@ -979,7 +979,7 @@
<string name="history_conversation">历史会话</string>
<string name="bank_repayment_statement">
付款成功后,请等待1-10分钟,Pop-Cash会给您贷款和还款的通知。如果您发现任何问题,请致电WA +86 081383163427与我们联系
付款成功后,请等待1-10分钟,Do-Uang会给您贷款和还款的通知。如果您发现任何问题,请致电WA +86 081383163427与我们联系
</string>
<string name="text_collect_tip">
......
......@@ -105,6 +105,7 @@
<string name="buttom_want_to_Repay">Saya ingin mengembalikan</string>
<string name="text_days_left">Jumlah hari tersisa</string>
<string name="text_whats_app_id">WhatsApp ID</string>
<string name="text_been_payment_text">Telah dikembalikan: </string>
......@@ -912,19 +913,19 @@
2.Untuk dokumen lainnya silahkan dipilih 3 jenis dokumen yg bisa dilengkapi \n
3.Semakin banyak dokumen yg dilengkapi akan semakin baik
</string>
<string name="take_work_certification_tips">
Pilih salah satu opsi berikut untuk diunggah: \n
\tSlip Gaji \n
\tID Pekerjaan \n
\tSIM Motor / Mobil \n
\tSTNK Motor / Mobil \n
\tFoto Tempat Kerja \n
\tNPWP \n
\tBPJS Ketenagakerjaan \n
\tBPJS KESEHATAN \n
\tFoto lokasi kerja \n
\tLainnya
</string>
<!--<string name="take_work_certification_tips">-->
<!--Pilih salah satu opsi berikut untuk diunggah: \n-->
<!--\tSlip Gaji \n-->
<!--\tID Pekerjaan \n-->
<!--\tSIM Motor / Mobil \n-->
<!--\tSTNK Motor / Mobil \n-->
<!--\tFoto Tempat Kerja \n-->
<!--\tNPWP \n-->
<!--\tBPJS Ketenagakerjaan \n-->
<!--\tBPJS KESEHATAN \n-->
<!--\tFoto lokasi kerja \n-->
<!--\tLainnya-->
<!--</string>-->
<string name="goto_add_bank_info">Tambahkan Info Bank</string>
......@@ -1010,7 +1011,7 @@ Pilih salah satu opsi berikut untuk diunggah: \n
<string name="history_conversation">Dialog historis</string>
<string name="bank_repayment_statement">
After the payment is successful, please wait 1-10 minutes, Pop-Cash will give you a notification of loan repayment.If you find any problems please contact us at WA +86 081383163427
After the payment is successful, please wait 1-10 minutes, Do-Uang will give you a notification of loan repayment.If you find any problems please contact us at WA +86 081383163427
</string>
<string name="text_collect_tip">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment