feat :app/src/module_bank_card

This commit is contained in:
eggmanQQQ2
2025-07-07 10:36:51 +08:00
parent 7f1dc54d7f
commit eac08699e9
34 changed files with 2025 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
package com.chwl.app.bank_card;
/**
* Created by MadisonRong on 2019-08-16
*/
public class TEMP {
}

View File

@@ -0,0 +1,178 @@
package com.chwl.app.bank_card.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.chwl.app.R;
import com.chwl.app.bank_card.presenter.AddBankCardAgreementPresenter;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.common.widget.OriginalDrawStatusClickSpan;
import com.chwl.app.ui.login.BindPhoneActivity;
import com.chwl.app.ui.setting.ModifyPwdActivity;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.ui.widget.password.PassWordFragment;
import com.chwl.app.ui.widget.password.PasswordEvent;
import com.chwl.core.UriProvider;
import com.chwl.core.bank_card.view.IAddBankCardAgreementView;
import com.chwl.library.base.factory.CreatePresenter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.Locale;
/**
* Created by MadisonRong on 2019-08-19
*/
@CreatePresenter(AddBankCardAgreementPresenter.class)
public class AddBankCardAgreementActivity extends BaseMvpActivity<IAddBankCardAgreementView, AddBankCardAgreementPresenter>
implements IAddBankCardAgreementView, View.OnClickListener {
private static final String TAG = "AddBankCardAgreementAct";
private TextView content;
private TextView disagree;
private TextView agree;
public static void start(Context context) {
context.startActivity(new Intent(context, AddBankCardAgreementActivity.class));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_bank_card_agreement);
findView();
initTitleBar(getString(R.string.title_add_bank_card_agreement));
setupAgreement();
EventBus.getDefault().register(this);
}
private void findView() {
content = findViewById(R.id.tv_add_bank_card_agreement_content);
disagree = findViewById(R.id.tv_disagree);
agree = findViewById(R.id.tv_agree);
disagree.setOnClickListener(this);
agree.setOnClickListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
private void setupAgreement() {
String appName = getString(R.string.app_name);
String privacyAgreementTip = getString(R.string.tip_privacy_agreement);
String userAgreementTip = getString(R.string.tip_user_agreement);
String agreementText = getString(R.string.text_add_bank_card_agreement, appName, appName,
appName, appName, privacyAgreementTip, userAgreementTip);
SpannableString ss = new SpannableString(agreementText);
int privacyAgreementTipIndex = agreementText.indexOf(privacyAgreementTip);
int userAgreementTipIndex = agreementText.indexOf(userAgreementTip);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(this, R.color.color_FE4C62)), privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan() {
@Override
public void onClick(@NonNull View widget) {
CommonWebViewActivity.start(AddBankCardAgreementActivity.this, UriProvider.getPrivacyAgreement());
}
}, privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(this, R.color.color_FE4C62)), userAgreementTipIndex, userAgreementTipIndex + userAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan() {
@Override
public void onClick(@NonNull View widget) {
CommonWebViewActivity.start(AddBankCardAgreementActivity.this, UriProvider.getUserProtocolUrl());
}
}, userAgreementTipIndex, userAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
content.setText(ss);
content.setMovementMethod(new LinkMovementMethod());
}
@Override
protected boolean needSteepStateBar() {
return true;
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
StatusBarUtil.StatusBarLightMode(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_disagree:
finish();
break;
case R.id.tv_agree:
getDialogManager().showProgressDialog(this);
getMvpPresenter().agree();
break;
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGetPaymentPassword(PasswordEvent event) {
getDialogManager().showProgressDialog(this);
getMvpPresenter().verifyPaymentPassword(event.getPassword());
}
@Override
public void displayError(String error) {
getDialogManager().dismissDialog();
toast(error);
LogUtil.e(TAG, String.format(Locale.getDefault(),
"on bank card list page error, msg: %s", error));
}
@Override
public void goToRealNamePage() {
getDialogManager().dismissDialog();
CommonWebViewActivity.start(this, UriProvider.getTutuRealNamePage());
}
@Override
public void openPaymentPasswordPage() {
getDialogManager().dismissDialog();
PassWordFragment.newInstance().show(getSupportFragmentManager());
}
@Override
public void goToSetPasswordActivity() {
getDialogManager().dismissDialog();
ModifyPwdActivity.start(this, ModifyPwdActivity.PAY_PWD);
}
@Override
public void goToBindPhoneActivity() {
getDialogManager().dismissDialog();
BindPhoneActivity.start(this);
}
@Override
public void goToAddBankCardPage() {
getDialogManager().dismissDialog();
BankCardBindActivity.start(this);
finish();
}
}

View File

@@ -0,0 +1,153 @@
package com.chwl.app.bank_card.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.chwl.app.R;
import com.chwl.app.bank_card.presenter.BankCardPresenter;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.ui.login.CodeDownTimer;
import com.chwl.core.bank_card.view.IBankCardView;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.utils.SingleToastUtil;
import java.util.Locale;
/**
* Created by MadisonRong on 2019-08-19
*/
@CreatePresenter(BankCardPresenter.class)
public class BankCardBindActivity extends BaseMvpActivity<IBankCardView, BankCardPresenter>
implements IBankCardView, View.OnClickListener {
private static final String TAG = "BankCardBindActivity";
private TextView cancel;
private TextView bindView;
private EditText etBankCardUserNumber;
private EditText etBankCardUserMobile;
private EditText etBankCardBindSmsCode;
private Button btnGetSmsCode;
private CodeDownTimer timer;
public static void start(Context context) {
context.startActivity(new Intent(context, BankCardBindActivity.class));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bank_card_bind);
findView();
initListener();
}
private void findView() {
cancel = findViewById(R.id.tv_cancel);
bindView = findViewById(R.id.tv_bind_bank_card);
etBankCardUserNumber = findViewById(R.id.et_bank_card_number);
etBankCardUserMobile = findViewById(R.id.et_bank_card_user_mobile);
etBankCardBindSmsCode = findViewById(R.id.et_bank_card_bind_sms_code);
btnGetSmsCode = findViewById(R.id.btn_get_code);
}
private void initListener() {
cancel.setOnClickListener(this);
bindView.setOnClickListener(this);
btnGetSmsCode.setOnClickListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
stopCountDownTimer();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_cancel:
finish();
break;
case R.id.btn_get_code:
// 银行卡号
String bankCardNumber = etBankCardUserNumber.getText().toString();
if (TextUtils.isEmpty(bankCardNumber)) return;
// 预留手机号
String bankCardUserMobile = etBankCardUserMobile.getText().toString();
if (TextUtils.isEmpty(bankCardUserMobile)) return;
getMvpPresenter().getBindBankCardSmsCode(bankCardNumber, bankCardUserMobile);
break;
case R.id.tv_bind_bank_card:
// 银行卡号
String bankCardNumberForBinding = etBankCardUserNumber.getText().toString();
if (TextUtils.isEmpty(bankCardNumberForBinding)) return;
// 预留手机号
String bankCardUserMobileForBinding = etBankCardUserMobile.getText().toString();
if (TextUtils.isEmpty(bankCardUserMobileForBinding)) return;
// 验证码
String bankCardBindSmsCode = etBankCardBindSmsCode.getText().toString();
if (TextUtils.isEmpty(bankCardBindSmsCode)) return;
getDialogManager().showProgressDialog(this);
getMvpPresenter().bindBankCard(bankCardNumberForBinding, bankCardUserMobileForBinding,
bankCardBindSmsCode);
break;
}
}
@Override
protected boolean needSteepStateBar() {
return true;
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
StatusBarUtil.StatusBarLightMode(this);
}
private void startCountDownTimer() {
stopCountDownTimer();
timer = new CodeDownTimer(btnGetSmsCode, 60000, 1000);
timer.start();
}
private void stopCountDownTimer() {
if (timer != null) {
timer.cancel();
timer = null;
}
}
@Override
public void onBindBankCardSuccess() {
getDialogManager().dismissDialog();
finish();
}
@Override
public void onGetSmsCodeSuccess() {
startCountDownTimer();
}
@Override
public void onError(int code, String error) {
getDialogManager().dismissDialog();
SingleToastUtil.showToast(error);
LogUtil.e(TAG, String.format(Locale.getDefault(),
"onError: bind bank card failed: code: %s, msg: %s", code, error));
}
}

View File

@@ -0,0 +1,214 @@
package com.chwl.app.bank_card.activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.OrientationHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.chwl.app.R;
import com.chwl.app.bank_card.adapter.BankCardListAdapter;
import com.chwl.app.bank_card.presenter.BankCardPresenter;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.base.TitleBar;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.app.ui.widget.ButtonItem;
import com.chwl.app.ui.widget.LinearLayoutManagerWrapper;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.core.bank_card.bean.BankCardBean;
import com.chwl.core.bank_card.bean.BankCardListResp;
import com.chwl.core.bank_card.view.IBankCardView;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
/**
* Created by MadisonRong on 2019-08-16
*/
@CreatePresenter(BankCardPresenter.class)
public class BankCardListActivity extends BaseMvpActivity<IBankCardView, BankCardPresenter>
implements IBankCardView, View.OnClickListener {
private static final String TAG = "BankCardListActivity";
private BankCardListAdapter adapter;
private RecyclerView recyclerView;
private View addBankCardBackground;
private ImageView addBankCardIcon;
private ImageView addBankCardArrow;
private TextView addBankCardTextView;
public static void start(Context context) {
context.startActivity(new Intent(context, BankCardListActivity.class));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bank_card_list);
findView();
TitleBar.Action action = new TitleBar.ImageAction(R.mipmap.common_ic_more) {
@Override
public void performAction(View view) {
showMoreActionDialog();
}
};
initTitleBar(getString(R.string.text_bank_card), action);
adapter = new BankCardListAdapter();
adapter.setOperation(BankCardListAdapter.OP_SET_DEFAULT);
adapter.setOnItemChildClickListener((adapter1, view, position) -> {
BankCardBean item = (BankCardBean) adapter1.getItem(position);
if (item == null) return;
switch (view.getId()) {
case R.id.iv_bank_card_set_default:
case R.id.tv_bank_card_set_default:
if (!item.isDefaultPaymentCard()) {
getDialogManager().showTipsDialog(getString(R.string.tips_bind_bank_card), () -> {
// set default payment card
getDialogManager().showProgressDialog(this);
getMvpPresenter().setDefaultBankCard(String.valueOf(item.getRecordId()), position);
});
}
break;
}
});
recyclerView.setLayoutManager(new LinearLayoutManagerWrapper(this,
OrientationHelper.VERTICAL, false));
recyclerView.setAdapter(adapter);
recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (parent.getChildAdapterPosition(view) != (adapter.getData().size() - 1)) {
outRect.bottom = -UIUtil.dip2px(BankCardListActivity.this, 50);
}
}
});
addBankCardBackground.setOnClickListener(this);
addBankCardIcon.setOnClickListener(this);
addBankCardArrow.setOnClickListener(this);
// 默认隐藏「添加银行卡」按钮,避免因为网络问题导致的添加流程出现
showAddBankCardLayout(false);
}
private void findView() {
recyclerView = findViewById(R.id.rv_bank_card_list);
addBankCardBackground = findViewById(R.id.view_add_bank_card);
addBankCardIcon = findViewById(R.id.iv_add_bank_card);
addBankCardArrow = findViewById(R.id.iv_add_bank_card_arrow);
addBankCardTextView = findViewById(R.id.tv_add_bank_card);
}
@Override
protected void onResume() {
super.onResume();
loadData();
}
private void loadData() {
if (getDialogManager().isDialogShowing()) {
getDialogManager().dismissDialog();
}
getDialogManager().showProgressDialog(this);
getMvpPresenter().loadData();
}
@Override
protected boolean needSteepStateBar() {
return true;
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
StatusBarUtil.StatusBarLightMode(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.view_add_bank_card:
case R.id.iv_add_bank_card:
case R.id.iv_add_bank_card_arrow:
AddBankCardAgreementActivity.start(this);
break;
}
}
private void showMoreActionDialog() {
ButtonItem deleteBankCardBtn = new ButtonItem(getString(R.string.text_unbind_bank_card),
() -> {
// 跳去删除页
BankCardListUnbindActivity.start(this);
});
List<ButtonItem> buttonItems = new ArrayList<>();
buttonItems.add(deleteBankCardBtn);
DialogManager dialogManager = getDialogManager();
if (dialogManager != null) {
dialogManager.showCommonPopupDialog(buttonItems, ResUtil.getString(R.string.bank_card_activity_bankcardlistactivity_01));
}
}
@Override
public void onGetBankCardSuccess(BankCardListResp bankCardListResp) {
getDialogManager().dismissDialog();
if (bankCardListResp == null) return;
List<BankCardBean> list = bankCardListResp.getList();
if (!ListUtils.isListEmpty(list)) {
adapter.setNewData(list);
} else {
adapter.setNewData(null);
}
int maxBindNum = bankCardListResp.getMaxBindNum();
showAddBankCardLayout(maxBindNum > list.size());
}
private void showAddBankCardLayout(boolean show) {
addBankCardBackground.setVisibility(show ? View.VISIBLE : View.GONE);
addBankCardIcon.setVisibility(show ? View.VISIBLE : View.GONE);
addBankCardArrow.setVisibility(show ? View.VISIBLE : View.GONE);
addBankCardTextView.setVisibility(show ? View.VISIBLE : View.GONE);
}
@Override
public void onError(int code, String error) {
getDialogManager().dismissDialog();
toast(error);
LogUtil.e(TAG, String.format(Locale.getDefault(),
"on bank card list page error, code: %s, msg: %s", code, error));
}
@Override
public void onSetDefaultSuccess(int position) {
getDialogManager().dismissDialog();
SingleToastUtil.showToast(this, R.string.toast_set_default_bank_card_success);
List<BankCardBean> data = adapter.getData();
BankCardBean bankCardBean = data.get(position);
for (BankCardBean bean : data) {
if (bean.isDefaultPaymentCard()) {
bean.setDefaultFlag(BankCardBean.CARD_NOT_DEFAULT_PAY);
continue;
}
if (Objects.equals(bean.getRecordId(), bankCardBean.getRecordId())) {
bean.setDefaultFlag(BankCardBean.CARD_DEFAULT_PAY);
}
}
adapter.notifyDataSetChanged();
}
}

View File

@@ -0,0 +1,165 @@
package com.chwl.app.bank_card.activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.OrientationHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.chwl.app.R;
import com.chwl.app.bank_card.adapter.BankCardListAdapter;
import com.chwl.app.bank_card.presenter.BankCardPresenter;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.ui.widget.LinearLayoutManagerWrapper;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.app.ui.widget.password.PassWordFragment;
import com.chwl.app.ui.widget.password.PasswordEvent;
import com.chwl.core.bank_card.bean.BankCardBean;
import com.chwl.core.bank_card.bean.BankCardListResp;
import com.chwl.core.bank_card.view.IBankCardView;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import java.util.Locale;
/**
* Created by MadisonRong on 2019-08-18
*/
@CreatePresenter(BankCardPresenter.class)
public class BankCardListUnbindActivity extends BaseMvpActivity<IBankCardView, BankCardPresenter>
implements IBankCardView {
private final String TAG = this.getClass().getSimpleName();
private ImageView addBankCardIcon;
private View addBankCardBackground;
private TextView addBankCardTextView;
private ImageView addBankCardArrow;
private RecyclerView recyclerView;
public BankCardListAdapter adapter;
public int recordId;
public static void start(Context context) {
context.startActivity(new Intent(context, BankCardListUnbindActivity.class));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bank_card_list);
findView();
initTitleBar(getString(R.string.text_bank_card));
hideAddBankCardLayout();
adapter = new BankCardListAdapter();
adapter.setOperation(BankCardListAdapter.OP_UNBIND);
adapter.setOnItemChildClickListener((adapter1, view, position) -> {
BankCardBean item = (BankCardBean) adapter1.getItem(position);
if (item == null) return;
if (view.getId() == R.id.tv_bank_card_unbind) {
recordId = item.getRecordId();
// 跳转到解绑银行卡页面,输入支付密码验证身份
PassWordFragment.newInstance().show(getSupportFragmentManager());
}
});
recyclerView.setLayoutManager(new LinearLayoutManagerWrapper(this,
OrientationHelper.VERTICAL, false));
recyclerView.setAdapter(adapter);
recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (parent.getChildAdapterPosition(view) != (adapter.getData().size() - 1)) {
outRect.bottom = -UIUtil.dip2px(BankCardListUnbindActivity.this, 50);
}
}
});
EventBus.getDefault().register(this);
loadData();
}
private void findView() {
addBankCardIcon = findViewById(R.id.iv_add_bank_card);
addBankCardBackground = findViewById(R.id.view_add_bank_card);
addBankCardTextView = findViewById(R.id.tv_add_bank_card);
addBankCardArrow = findViewById(R.id.iv_add_bank_card_arrow);
recyclerView = findViewById(R.id.rv_bank_card_list);
}
private void loadData() {
getDialogManager().showProgressDialog(this);
getMvpPresenter().loadData();
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Override
protected boolean needSteepStateBar() {
return true;
}
@Override
protected void setStatusBar() {
super.setStatusBar();
StatusBarUtil.transparencyBar(this);
StatusBarUtil.StatusBarLightMode(this);
}
private void hideAddBankCardLayout() {
addBankCardIcon.setVisibility(View.GONE);
addBankCardBackground.setVisibility(View.GONE);
addBankCardArrow.setVisibility(View.GONE);
addBankCardTextView.setVisibility(View.GONE);
}
@Override
public void onGetBankCardSuccess(BankCardListResp bankCardListResp) {
getDialogManager().dismissDialog();
if (bankCardListResp == null) return;
List<BankCardBean> list = bankCardListResp.getList();
if (!ListUtils.isListEmpty(list)) {
adapter.setNewData(list);
} else {
adapter.setNewData(null);
}
}
@Override
public void onUnbindBankCardSuccess() {
getDialogManager().dismissDialog();
SingleToastUtil.showToast(this, R.string.toast_unbind_bank_card_success);
loadData();
}
@Override
public void onError(int code, String error) {
getDialogManager().dismissDialog();
toast(error);
LogUtil.e(TAG, String.format(Locale.getDefault(),
"on bank card list page error, code: %s, msg: %s", code, error));
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGetPaymentPassword(PasswordEvent event) {
getDialogManager().showProgressDialog(this);
getMvpPresenter().unbindBankCard(String.valueOf(recordId), event.getPassword());
}
}

View File

@@ -0,0 +1,152 @@
package com.chwl.app.bank_card.adapter;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.chwl.app.R;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.core.bank_card.bean.BankCardBean;
import com.chwl.library.utils.ListUtils;
import java.util.Arrays;
/**
* Created by MadisonRong on 2019-08-18
*/
public class BankCardListAdapter extends BaseQuickAdapter<BankCardBean, BankCardListAdapter.ViewHolder> {
/**
* 设置默认支付
*/
public static final int OP_SET_DEFAULT = 1;
/**
* 解除绑定
*/
public static final int OP_UNBIND = 2;
public static final int PIC_ONE = 0;
public static final int PIC_TWO = 1;
public static final int PIC_THREE = 2;
public static final int MAX_BACKGROUND = 3;
/**
* 银行卡后四位
*/
public static final int BANK_CARD_LAST_NUM = 4;
private int operation = 0;
public BankCardListAdapter() {
this(R.layout.item_bank_card);
}
private BankCardListAdapter(int layoutResId) {
super(layoutResId);
}
@Override
protected void convert(ViewHolder helper, BankCardBean item) {
// background
int background = getBackground(helper.getAdapterPosition());
helper.layout.setBackgroundResource(background);
// icon
ImageLoadUtils.loadCircleImage(mContext, item.getBankLogo(),
helper.icon, R.drawable.icon_bank_card_default);
// name
helper.name.setText(item.getBankName());
// number
helper.number.setText(getBankCardNumberLast4Num(item.getBankCardNo()));
switch (operation) {
case OP_SET_DEFAULT:
helper.setDefaultView.setVisibility(View.VISIBLE);
helper.setDefaultTextView.setVisibility(View.VISIBLE);
helper.unbindView.setVisibility(View.GONE);
// isDefault
helper.setDefaultView.setSelected(isDefault(item.getDefaultFlag()));
// bind click listener
helper.addOnClickListener(helper.setDefaultTextView.getId());
helper.addOnClickListener(helper.setDefaultView.getId());
break;
case OP_UNBIND:
helper.setDefaultView.setVisibility(View.GONE);
helper.setDefaultTextView.setVisibility(View.GONE);
helper.unbindView.setVisibility(View.VISIBLE);
// bind click listener
helper.addOnClickListener(helper.unbindView.getId());
break;
}
}
private boolean isDefault(int defaultFlag) {
return defaultFlag == 1;
}
public void setOperation(int operation) {
this.operation = operation;
}
public int getBackground(int position) {
int num = position % MAX_BACKGROUND;
switch (num) {
default:
case PIC_ONE:
return R.drawable.background_bank_card_one;
case PIC_TWO:
return R.drawable.background_bank_card_two;
case PIC_THREE:
return R.drawable.background_bank_card_three;
}
}
/**
* 截取银行卡号后四位
* @param bankCardNo
* @return
*/
public String getBankCardNumberLast4Num(String bankCardNo) {
if (TextUtils.isEmpty(bankCardNo)) return "";
// 根据空格切割
String[] split = bankCardNo.split(" ");
if (ListUtils.isListEmpty(Arrays.asList(split))) {
if (bankCardNo.length() >= BANK_CARD_LAST_NUM) {
// 取后四位
return bankCardNo.substring(bankCardNo.length() - BANK_CARD_LAST_NUM);
} else {
return bankCardNo;
}
} else {
// 取最后一个
return split[split.length - 1];
}
}
public class ViewHolder extends BaseViewHolder {
private ImageView icon;
private TextView name;
private ImageView setDefaultView;
private TextView setDefaultTextView;
private TextView number;
private TextView unbindView;
private View layout;
public ViewHolder(View view) {
super(view);
icon = view.findViewById(R.id.iv_bank_card_icon);
name = view.findViewById(R.id.tv_bank_card_name);
setDefaultView = view.findViewById(R.id.iv_bank_card_set_default);
setDefaultTextView = view.findViewById(R.id.tv_bank_card_set_default);
number = view.findViewById(R.id.tv_bank_card_number);
unbindView = view.findViewById(R.id.tv_bank_card_unbind);
layout = view.findViewById(R.id.cl_bank_card_background);
}
}
}

View File

@@ -0,0 +1,41 @@
package com.chwl.app.bank_card.presenter;
import android.annotation.SuppressLint;
import com.chwl.app.base.BaseMvpPresenter;
import com.chwl.core.bank_card.view.IAddBankCardAgreementView;
import com.chwl.core.user.UserModel;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.base.PresenterEvent;
/**
* Created by MadisonRong on 2019-08-19
*/
public class AddBankCardAgreementPresenter extends BaseMvpPresenter<IAddBankCardAgreementView> {
public void agree() {
UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
if (userInfo == null) return;
if (!userInfo.isCertified()) {
getMvpView().goToRealNamePage();
} else if (!userInfo.isBindPaymentPwd()) {
getMvpView().goToSetPasswordActivity();
} else {
getMvpView().openPaymentPasswordPage();
}
}
@SuppressLint("CheckResult")
public void verifyPaymentPassword(String password) {
UserModel.get()
.verifyPaymentPassword(password)
.compose(bindUntilEvent(PresenterEvent.DESTROY))
.subscribe((s, throwable) -> {
if (throwable != null) {
getMvpView().displayError(throwable.getMessage());
} else {
getMvpView().goToAddBankCardPage();
}
});
}
}

View File

@@ -0,0 +1,126 @@
package com.chwl.app.bank_card.presenter;
import android.annotation.SuppressLint;
import com.chwl.app.base.BaseMvpPresenter;
import com.chwl.core.bank_card.model.BankCardModel;
import com.chwl.core.bank_card.view.IBankCardView;
import com.chwl.core.exception.FailReasonException;
import com.chwl.library.base.PresenterEvent;
/**
* Created by MadisonRong on 2019-08-16
*/
public class BankCardPresenter extends BaseMvpPresenter<IBankCardView> {
/**
* 加载银行卡列表
*/
@SuppressLint("CheckResult")
public void loadData() {
BankCardModel.getInstance()
.getBankCardList()
.compose(bindUntilEvent(PresenterEvent.PAUSE))
.subscribe((bankCardListResp, throwable) -> {
if (throwable == null) {
getMvpView().onGetBankCardSuccess(bankCardListResp);
} else {
displayError(throwable);
}
});
}
/**
* 统一处理错误信息toast 出来
*
* @param throwable
*/
public void displayError(Throwable throwable) {
if (throwable instanceof FailReasonException) {
FailReasonException exception = (FailReasonException) throwable;
getMvpView().onError(exception.getCode(), exception.getMessage());
} else {
getMvpView().onError(FailReasonException.CODE_UNKNOW, throwable.getMessage());
}
}
/**
* 绑定银行卡
*
* @param cardBank 银行卡号
* @param cardMobile 银行预留手机号
* @param smsCode 短信验证码
*/
@SuppressLint("CheckResult")
public void bindBankCard(String cardBank, String cardMobile, String smsCode) {
BankCardModel.getInstance()
.bindBankCard(cardBank, cardMobile, smsCode)
.compose(bindUntilEvent(PresenterEvent.PAUSE))
.subscribe((s, throwable) -> {
if (throwable == null) {
getMvpView().onBindBankCardSuccess();
} else {
displayError(throwable);
}
});
}
/**
* 解绑银行卡
*
* @param recordId 签约记录id
* @param paymentPwd 支付密码
*/
@SuppressLint("CheckResult")
public void unbindBankCard(String recordId, String paymentPwd) {
BankCardModel.getInstance()
.unbindBankCard(recordId, paymentPwd)
.compose(bindUntilEvent(PresenterEvent.PAUSE))
.subscribe((s, throwable) -> {
if (throwable == null) {
getMvpView().onUnbindBankCardSuccess();
} else {
displayError(throwable);
}
});
}
/**
* 设置默认银行卡
*
* @param recordId 签约记录id
*/
@SuppressLint("CheckResult")
public void setDefaultBankCard(String recordId, int position) {
BankCardModel.getInstance()
.setDefaultBankCard(recordId)
.compose(bindUntilEvent(PresenterEvent.PAUSE))
.subscribe((s, throwable) -> {
if (throwable == null) {
getMvpView().onSetDefaultSuccess(position);
} else {
displayError(throwable);
}
});
}
/**
* 获取短信验证码
*
* @param cardBank 银行卡号
* @param cardMobile 银行预留手机号
*/
@SuppressLint("CheckResult")
public void getBindBankCardSmsCode(String cardBank, String cardMobile) {
BankCardModel.getInstance()
.getBindBankCardSmsCode(cardBank, cardMobile)
.compose(bindUntilEvent(PresenterEvent.PAUSE))
.subscribe((s, throwable) -> {
if (throwable != null) {
displayError(throwable);
} else {
getMvpView().onGetSmsCodeSuccess();
}
});
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white_transparent_15" />
<corners android:radius="@dimen/dp_13" />
</shape>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="@dimen/dp_23" />
</shape>

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.chwl.app.base.TitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_add_bank_card_agreement_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_20"
android:text="@string/text_add_bank_card_agreement"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_15"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title_bar"
tools:ignore="SpUsage" />
<TextView
android:id="@+id/tv_disagree"
android:layout_width="135dp"
android:layout_height="43dp"
android:layout_marginStart="@dimen/dp_22"
android:layout_marginEnd="@dimen/dp_18"
android:layout_marginBottom="@dimen/dp_33"
android:background="@drawable/base_shape_negative_30dp"
android:gravity="center"
android:text="@string/text_disagree"
android:textColor="@color/base_color_negative_text"
android:textSize="@dimen/dp_15"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_agree"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="SpUsage" />
<TextView
android:id="@+id/tv_agree"
android:layout_width="180dp"
android:layout_height="43dp"
android:layout_marginEnd="@dimen/dp_21"
android:layout_marginBottom="@dimen/dp_33"
android:background="@drawable/base_shape_positive_30dp"
android:gravity="center"
android:text="@string/text_agree"
android:textColor="@color/base_color_positive_text"
android:textSize="@dimen/dp_15"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="SpUsage" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_25"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_18"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_15"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpUsage" />
<TextView
android:id="@+id/tv_bind_bank_card_title"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_25"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_18"
android:gravity="center"
android:text="@string/title_add_bank_card"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_18"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SpUsage" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_bank_card_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_35"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="start|center_vertical"
android:hint="@string/hint_bank_card_number"
android:inputType="number"
android:paddingBottom="15dp"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_b3b3b3"
android:textSize="@dimen/dp_15"
android:theme="@style/common_edittext_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_bind_bank_card_title"
tools:ignore="SpUsage" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_bank_card_user_mobile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_35"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="start|center_vertical"
android:hint="@string/hint_bank_card_user_mobile"
android:inputType="number"
android:maxLength="11"
android:paddingBottom="15dp"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_b3b3b3"
android:textSize="@dimen/dp_15"
android:theme="@style/common_edittext_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_bank_card_number"
tools:ignore="SpUsage" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_bank_card_bind_sms_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_35"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="start|center_vertical"
android:hint="@string/hint_bank_card_bind_sms_code"
android:inputType="number"
android:paddingBottom="15dp"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_b3b3b3"
android:textSize="@dimen/dp_15"
android:theme="@style/common_edittext_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/et_bank_card_user_mobile"
tools:ignore="SpUsage" />
<Button
android:id="@+id/btn_get_code"
android:layout_width="wrap_content"
android:layout_height="29dp"
android:layout_marginStart="@dimen/space_normal"
android:layout_marginEnd="10dp"
android:layout_marginBottom="5dp"
android:background="@color/transparent"
android:clickable="true"
android:focusable="true"
android:text="@string/text_request_code"
android:textColor="@color/design_color"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="@id/et_bank_card_bind_sms_code"
app:layout_constraintEnd_toEndOf="@id/et_bank_card_bind_sms_code"
app:layout_constraintTop_toTopOf="@id/et_bank_card_bind_sms_code"
tools:ignore="SpUsage" />
<TextView
android:id="@+id/tv_bind_bank_card"
android:layout_width="match_parent"
android:layout_height="43dp"
android:layout_marginStart="@dimen/dp_38"
android:layout_marginEnd="@dimen/dp_38"
android:layout_marginBottom="@dimen/dp_14"
android:background="@drawable/shape_semi_round_gray_solid"
android:gravity="center"
android:text="@string/text_bind_bank_card"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_15"
app:layout_constraintBottom_toTopOf="@+id/tv_bind_your_bank_card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="SpUsage" />
<TextView
android:id="@+id/tv_bind_your_bank_card"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_40"
android:gravity="center"
android:text="@string/tips_bind_your_bank_card"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_13"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="SpUsage" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.chwl.app.base.TitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_bank_card_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="310dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title_bar" />
<View
android:id="@+id/view_add_bank_card"
android:layout_width="match_parent"
android:layout_height="65dp"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_20"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rv_bank_card_list" />
<ImageView
android:id="@+id/iv_add_bank_card"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:src="@drawable/ic_add"
app:layout_constraintBottom_toBottomOf="@+id/view_add_bank_card"
app:layout_constraintStart_toStartOf="@+id/view_add_bank_card"
app:layout_constraintTop_toTopOf="@+id/view_add_bank_card" />
<TextView
android:id="@+id/tv_add_bank_card"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:text="@string/text_add_bank_card"
android:textColor="@color/color_333333"
android:textSize="@dimen/dp_14"
app:layout_constraintBottom_toBottomOf="@+id/view_add_bank_card"
app:layout_constraintStart_toEndOf="@+id/iv_add_bank_card"
app:layout_constraintTop_toTopOf="@+id/view_add_bank_card"
tools:ignore="SpUsage" />
<ImageView
android:id="@+id/iv_add_bank_card_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_15"
android:src="@drawable/arrow_right"
app:layout_constraintBottom_toBottomOf="@+id/view_add_bank_card"
app:layout_constraintEnd_toEndOf="@+id/view_add_bank_card"
app:layout_constraintTop_toTopOf="@+id/view_add_bank_card" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<com.chwl.app.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/status_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.chwl.app.common.widget.StatusLayout>

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18"
android:layout_marginEnd="@dimen/dp_15"
android:gravity="center_vertical"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="22dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10">
<View
android:id="@+id/view_guild"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_22"
android:background="@drawable/guild_one"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_guild"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_guild_icon"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_40"
android:layout_marginStart="@dimen/dp_10"
android:src="@drawable/default_avatar" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
tools:text="公會名稱" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ImageView
android:id="@+id/iv_guild_image"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="@dimen/dp_6" />
<TextView
android:id="@+id/tvApply"
android:layout_width="70dp"
android:layout_height="25dp"
android:background="@drawable/bg_common_select"
android:gravity="center"
android:textColor="@color/color_selector_6d6b89_false_ffffff"
android:textSize="@dimen/sp_12"
tools:text="@string/have_apply" />
</LinearLayout>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18"
android:gravity="center_vertical"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="22dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10">
<View
android:id="@+id/view_guild"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_22"
android:background="@drawable/guild_one"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_guild"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_guild_icon"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_40"
android:layout_marginStart="@dimen/dp_10"
android:src="@drawable/default_avatar" />
<LinearLayout
android:orientation="vertical"
android:layout_marginStart="@dimen/dp_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
android:singleLine="true"
android:ellipsize="end"
android:maxEms="8"
android:maxLines="1"
tools:text="公會名稱" />
<TextView
android:id="@+id/tv_room_id"
android:text="@string/association_room_id"
android:textSize="@dimen/sp_12"
android:textColor="@color/color_B3B3C3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/tvApply"
android:layout_width="70dp"
android:layout_height="25dp"
android:layout_marginEnd="@dimen/dp_16"
android:background="@drawable/base_shape_theme_15dp"
android:gravity="center"
android:textColor="@color/base_color_theme_text"
android:textSize="@dimen/sp_12"
tools:text="@string/have_apply" />
</LinearLayout>

View File

@@ -0,0 +1,236 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_bank_card_background"
android:layout_width="match_parent"
android:layout_height="142dp"
android:background="@drawable/background_bank_card_one">
<ImageView
android:id="@+id/iv_bank_card_icon"
android:layout_width="@dimen/dp_23"
android:layout_height="@dimen/dp_23"
android:layout_marginStart="34dp"
android:layout_marginTop="@dimen/dp_22"
android:background="@drawable/shape_white_round_23dp"
android:scaleType="center"
android:src="@drawable/icon_bank_card_default"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_bank_card_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:textColor="@color/white"
android:textSize="@dimen/dp_16"
app:layout_constraintBottom_toBottomOf="@+id/iv_bank_card_icon"
app:layout_constraintStart_toEndOf="@+id/iv_bank_card_icon"
app:layout_constraintTop_toTopOf="@+id/iv_bank_card_icon"
tools:ignore="SpUsage"
tools:text="@string/layout_item_bank_card_01" />
<!-- 设置默认支付 -->
<ImageView
android:id="@+id/iv_bank_card_set_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:src="@drawable/selector_check_box_pic_check_white"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@+id/iv_bank_card_icon"
app:layout_constraintEnd_toStartOf="@+id/tv_bank_card_set_default"
app:layout_constraintTop_toTopOf="@+id/iv_bank_card_icon"
tools:ignore="SpUsage"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_bank_card_set_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_35"
android:gravity="center"
android:text="@string/text_default_bank_card"
android:textColor="@color/white"
android:textSize="@dimen/dp_11"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@+id/iv_bank_card_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_bank_card_icon"
tools:ignore="SpUsage"
tools:visibility="visible" />
<!-- 设置默认支付 -->
<!-- 解除绑定 -->
<TextView
android:id="@+id/tv_bank_card_unbind"
android:layout_width="65dp"
android:layout_height="@dimen/dp_25"
android:layout_marginEnd="@dimen/dp_35"
android:background="@drawable/shape_white_opacity_15_round_13dp"
android:gravity="center"
android:text="@string/text_unbind_bank_card"
android:textColor="@color/white"
android:textSize="@dimen/dp_11"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/iv_bank_card_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_bank_card_icon"
tools:ignore="SpUsage"
tools:visibility="gone" />
<!-- 解除绑定 -->
<!-- 点点点 -->
<View
android:id="@+id/tv_bank_card_number_1"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_3"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toStartOf="@id/iv_bank_card_icon"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_2"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_1"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_3"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_2"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_4"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_3"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_5"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_36"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toStartOf="@+id/tv_bank_card_number_4"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_6"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_5"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_7"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_6"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_8"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_7"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_9"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_36"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_8"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_10"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_9"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_11"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_10"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<View
android:id="@+id/tv_bank_card_number_12"
android:layout_width="@dimen/dp_7"
android:layout_height="@dimen/dp_7"
android:layout_marginStart="@dimen/dp_6"
android:alpha="0.65"
android:background="@drawable/shape_white_corner_8dp"
app:layout_constraintBottom_toBottomOf="@+id/tv_bank_card_number"
app:layout_constraintStart_toEndOf="@+id/tv_bank_card_number_11"
app:layout_constraintTop_toTopOf="@+id/tv_bank_card_number" />
<!-- 点点点 -->
<TextView
android:id="@+id/tv_bank_card_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_32"
android:layout_marginTop="@dimen/dp_14"
android:layout_marginEnd="@dimen/dp_35"
android:fontFamily="@font/din_bold"
android:textColor="@color/white"
android:textSize="@dimen/dp_25"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintTop_toBottomOf="@+id/iv_bank_card_icon"
tools:ignore="SpUsage"
tools:text="1234" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="64dp"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:background="@color/bg_normal_1c1b22">
<FrameLayout
android:id="@+id/ll_nameplate_cover"
android:layout_width="136dp"
android:layout_height="64dp"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:background="@drawable/bg_secondary_radius_10"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_nameplate_cover"
android:layout_width="90dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:scaleType="fitCenter" />
<ImageView
android:id="@+id/iv_tag"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
tools:src="@drawable/ic_mark_limit" />
</FrameLayout>
<TextView
android:id="@+id/tv_nameplate_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_toStartOf="@id/tv_used"
android:layout_toEndOf="@+id/ll_nameplate_cover"
android:layout_alignTop="@id/ll_nameplate_cover"
android:drawablePadding="5dp"
android:gravity="start"
android:layout_marginTop="8dp"
android:singleLine="true"
android:textColor="@color/text_title_color"
android:textSize="14sp"
tools:text="@string/layout_item_nameplate_normal_01" />
<TextView
android:id="@+id/tv_used"
android:layout_width="64dp"
android:layout_height="20dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp_20"
android:gravity="center"
android:includeFontPadding="false"
android:textColor="@color/white"
android:textSize="11sp"
android:visibility="gone"
tools:background="@drawable/bg_my_head_buy"
tools:text="@string/label_can_use"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_counters"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="8dp"
android:layout_below="@id/tv_nameplate_name"
android:layout_toEndOf="@id/ll_nameplate_cover"
android:gravity="center"
android:maxLines="1"
android:textColor="@color/color_666666"
android:textSize="12sp"
tools:text="@string/layout_item_nameplate_normal_02" />
</RelativeLayout>

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:background="@color/bg_normal_1c1b22">
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/rriv_room_img"
android:layout_width="@dimen/dp_45"
android:layout_height="@dimen/dp_45"
android:layout_marginStart="15dp"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/default_avatar" />
<LinearLayout
android:id="@+id/ll_room_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_13"
android:layout_marginTop="@dimen/dp_10"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/rriv_room_img"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_room_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_title_color"
android:textSize="@dimen/sp_15"
tools:text="@string/layout_item_room_collection_01"
/>
<TextView
android:id="@+id/tv_room_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="@dimen/sp_13"
tools:text="ID:8695" />
</LinearLayout>
<TextView
android:id="@+id/tv_room_online_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5"
android:textColor="@color/app_248cfe"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/tv_play"
app:layout_constraintEnd_toStartOf="@id/tv_play"
app:layout_constraintTop_toTopOf="@id/tv_play"
tools:text="75" />
<TextView
android:id="@+id/tv_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_15"
android:text="@string/layout_item_room_collection_02"
android:textColor="@color/text_secondary_4f516a"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@id/ll_room_info"
app:layout_constraintEnd_toEndOf="parent"
/>
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="@dimen/dp_11"
android:layout_marginEnd="@dimen/dp_15"
android:background="@color/line_353548"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/ll_room_info"
app:layout_constraintTop_toBottomOf="@id/rriv_room_img" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tips_need_bind_bank_card_first">الرجاء ربط بطاقتك البنكية أولاً</string>
<string name="text_bank_card">بطاقة بنكية</string>
<string name="setting_text_bank_card">إدارة شحن البطاقة البنكية</string>
<string name="text_add_bank_card">إضافة بطاقة بنكية</string>
<string name="text_unbind_bank_card">إلغاء ربط البطاقة</string>
<string name="text_default_bank_card">الدفع الافتراضي</string>
<string name="tips_bind_bank_card">بعد تعيينها كوسيلة دفع افتراضية، \nسيتم استخدام هذه البطاقة البنكية افتراضيًا عند اختيار الدفع، \nهل أنت متأكد من تعيينها كوسيلة دفع افتراضية؟</string>
<string name="toast_set_default_bank_card_success">تم تعيين بطاقة الدفع الافتراضية بنجاح</string>
<string name="toast_unbind_bank_card_success">تم إلغاء ربط البطاقة البنكية بنجاح</string>
<string name="title_add_bank_card_agreement">اتفاقية خدمة المستخدم وسياسة الخصوصية</string>
<string name="text_add_bank_card_agreement">
عزيزي مستخدم MoliStar:\n\u3000\u3000من أجل حماية حقوقك ومصالحك الشرعية بشكل أفضل،
والسماح لك باستخدام خدمات %s بشكل طبيعي، تلتزم %s بتنفيذ إدارة الهوية الحقيقية لحسابات الدفع وفقًا للقوانين والتشريعات الوطنية،
وتنفيذ مسؤوليات منع غسيل الأموال، واتخاذ تدابير الوقاية من المخاطر. تحتاج إلى تقديم معلومات هوية ومعلومات الاتصال ومعلومات المعاملات إلى %s وشركات الشراكة (Converge Pay).
%s ستقوم الشركة بجمع وتخزين واستخدام معلوماتك الشخصية بصرامة وفقًا للقوانين والتشريعات الوطنية لضمان أمان المعلومات.
يرجى قراءة %s و %s بعناية.\n\u3000\u3000إذا كنت توافق على قبول الاتفاقية أعلاه، يرجى النقر فوق "موافق" ومتابعة عملية التسجيل. خلاف ذلك،
يرجى النقر فوق "غير موافق" لإنهاء عملية التسجيل.
</string>
<string name="title_add_bank_card">إضافة بطاقة بنكية</string>
<string name="hint_bank_card_user_name">اسم حامل البطاقة</string>
<string name="hint_bank_card_number">رقم البطاقة البنكية</string>
<string name="hint_bank_card_user_id">رقم الهوية</string>
<string name="hint_bank_card_user_mobile">رقم الجوال المرتبط بالبنك</string>
<string name="hint_bank_card_bind_sms_code">رمز التحقق</string>
<string name="text_bind_bank_card">ربط</string>
<string name="tips_bind_your_bank_card">يرجى ربط بطاقتك البنكية الخاصة بك مع التحقق من الهوية الحقيقية</string>
</resources>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tips_need_bind_bank_card_first">請先綁定銀行卡</string>
<string name="text_bank_card">銀行卡</string>
<string name="setting_text_bank_card">銀行卡充值管理</string>
<string name="text_add_bank_card">添加銀行卡</string>
<string name="text_unbind_bank_card">解除綁定</string>
<string name="text_default_bank_card">默認支付</string>
<string name="tips_bind_bank_card">設為默認支付後,\n選擇付款將默認使用該銀行卡\n確定設為默認支付嗎</string>
<string name="toast_set_default_bank_card_success">設置默認支付銀行卡成功</string>
<string name="toast_unbind_bank_card_success">解除綁定銀行卡成功</string>
<string name="title_add_bank_card_agreement">用戶服務協議及隱私政策</string>
<string name="text_add_bank_card_agreement">
尊敬的MoliStar用戶\n\u3000\u3000為了更好地保障你的合法權益
讓你正常使用%s服務%s公司依照國家法律法規對支付賬戶進行實名製管理、
履行反洗錢職責並采取風險防控措施。你需要向%s公司以及合作公司匯聚支付提交身份信息、
聯系方式、交易信息。\n\u3000\u3000%s公司將嚴格依據國家法律法規收集、存儲、使用你的個人信息確保信息安全。
請你務必審慎閱讀並充分理解%s和%s\n\u3000\u3000若你同意接受前述協議請點擊「同意」並繼續註冊操作否則
請點擊「不同意」,中止註冊操作。
</string>
<string name="title_add_bank_card">添加銀行卡</string>
<string name="hint_bank_card_user_name">持卡人</string>
<string name="hint_bank_card_number">銀行卡號</string>
<string name="hint_bank_card_user_id">身份證號</string>
<string name="hint_bank_card_user_mobile">銀行預留手機號</string>
<string name="hint_bank_card_bind_sms_code">驗證碼</string>
<string name="text_bind_bank_card">綁定</string>
<string name="tips_bind_your_bank_card">請綁定實名認證本人銀行卡</string>
</resources>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tips_need_bind_bank_card_first">Please bind your bank card first</string>
<string name="text_bank_card">Bank Card</string>
<string name="setting_text_bank_card">Bank Card Recharge Management</string>
<string name="text_add_bank_card">Add Bank Card</string>
<string name="text_unbind_bank_card">Unbind Card</string>
<string name="text_default_bank_card">Default Payment</string>
<string name="tips_bind_bank_card">After setting as default payment, \nselecting payment will default to using this bank card, \nare you sure to set as default payment?</string>
<string name="toast_set_default_bank_card_success">Successfully set default payment bank card</string>
<string name="toast_unbind_bank_card_success">Successfully unbound bank card</string>
<string name="title_add_bank_card_agreement">User Service Agreement and Privacy Policy</string>
<string name="text_add_bank_card_agreement">
Dear MoliStar User:\n\u3000\u3000In order to better protect your legitimate rights and interests,
and allow you to use %s services normally, %s company complies with national laws and regulations to implement real-name system management for payment accounts,
fulfill anti-money laundering responsibilities, and take risk prevention measures. You need to submit identity information, contact information, and transaction information to %s company and cooperative companies (Converge Pay).\n\u3000\u3000%s company will strictly collect, store, and use your personal information in accordance with national laws and regulations to ensure information security.
Please read and fully understand %s and %s carefully.\n\u3000\u3000If you agree to accept the above agreement, please click "Agree" and continue the registration process. Otherwise,
please click "Disagree" to terminate the registration process.
</string>
<string name="title_add_bank_card">Add Bank Card</string>
<string name="hint_bank_card_user_name">Cardholder</string>
<string name="hint_bank_card_number">Bank Card Number</string>
<string name="hint_bank_card_user_id">ID Number</string>
<string name="hint_bank_card_user_mobile">Mobile Number Associated with Bank</string>
<string name="hint_bank_card_bind_sms_code">Verification Code</string>
<string name="text_bind_bank_card">Bind</string>
<string name="tips_bind_your_bank_card">Please bind your own bank card with real-name authentication</string>
</resources>