From c43c5003825049e725fb8e81c1b4cf3276ae2fc5 Mon Sep 17 00:00:00 2001
From: guozhen <878631970@qq.com>
Date: Tue, 15 Oct 2024 14:39:10 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecash=E5=82=A8=E5=80=BC?=
=?UTF-8?q?=E5=88=86=E6=9C=9F=E6=94=AF=E4=BB=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle.kts | 2 +
app/src/main/AndroidManifest.xml | 4 +
.../dskj/rbchat/model/InstallmentBean.java | 25 ++
.../com/dskj/rbchat/network/ApiService.java | 14 +
.../com/dskj/rbchat/wallet/TopUpActivity.java | 172 +++++++-
app/src/main/res/layout/activity_topup.xml | 367 ++++++++++--------
.../main/res/layout/item_bill_installment.xml | 30 ++
app/src/main/res/values-en/strings.xml | 7 +-
app/src/main/res/values-ja/strings.xml | 6 +-
app/src/main/res/values-zh/strings.xml | 7 +-
app/src/main/res/values/strings.xml | 7 +-
.../kit/chatkit/ui/network/ApiService.java | 2 +-
gradle.properties | 2 +-
13 files changed, 469 insertions(+), 176 deletions(-)
create mode 100644 app/src/main/java/com/dskj/rbchat/model/InstallmentBean.java
create mode 100644 app/src/main/res/layout/item_bill_installment.xml
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 3d3b1ed..c98cc21 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -13,6 +13,8 @@ plugins {
}
+
+
android {
signingConfigs {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8922763..15afec9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,6 +20,10 @@
+
+
>> getConfig();
+ /**
+ * 獲取分期費率
+ */
+ @POST("/payment/zero_card/get_fee")
+ Observable>> getFee(@Body Map param);
+
+
+ /**
+ * 零卡分期請求
+ */
+ @POST("/payment/sendOrder/zero_card")
+ Observable> payInstallment(@Body Map requestBody);
+
}
diff --git a/app/src/main/java/com/dskj/rbchat/wallet/TopUpActivity.java b/app/src/main/java/com/dskj/rbchat/wallet/TopUpActivity.java
index 543cbbc..7fad2f3 100644
--- a/app/src/main/java/com/dskj/rbchat/wallet/TopUpActivity.java
+++ b/app/src/main/java/com/dskj/rbchat/wallet/TopUpActivity.java
@@ -1,7 +1,7 @@
package com.dskj.rbchat.wallet;
import android.content.Intent;
-import android.content.res.ColorStateList;
+import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
@@ -9,7 +9,6 @@ import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
-import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -20,24 +19,21 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.ToastUtils;
-import com.bumptech.glide.Glide;
import com.dskj.rbchat.IMUIKitConfig;
import com.dskj.rbchat.R;
import com.dskj.rbchat.adapter.CommonAdapter;
import com.dskj.rbchat.adapter.ViewHolder;
import com.dskj.rbchat.databinding.ActivityTopupBinding;
-import com.dskj.rbchat.databinding.ActivityWalletInfoBinding;
import com.dskj.rbchat.dialog.ActionConfirmDialog;
-import com.dskj.rbchat.login.PhoneLoginActivity;
import com.dskj.rbchat.main.mine.ChangeAccoutActionActivity;
import com.dskj.rbchat.model.BindBean;
import com.dskj.rbchat.model.ExchangeConfBean;
+import com.dskj.rbchat.model.InstallmentBean;
import com.dskj.rbchat.model.SendOrderBean;
import com.dskj.rbchat.model.WalletBean;
import com.dskj.rbchat.network.Api;
import com.dskj.rbchat.network.BaseObserver;
import com.dskj.rbchat.network.Result;
-import com.dskj.rbchat.pay.LipinDuiHuanActivity;
import com.dskj.rbchat.utils.AnimUtil;
import com.dskj.rbchat.utils.AppUtils;
import com.dskj.rbchat.utils.GsonUtils;
@@ -61,8 +57,12 @@ public class TopUpActivity extends BaseActivity {
WalletBean walletBean;
BindBean bindBean;
private List globalAmountList = new ArrayList<>();
+ private List installmentBeans = new ArrayList<>();
CommonAdapter commonAdapter;
+ CommonAdapter installmentAdapter;
int defaultIndex = 0;
+ private boolean isFenqi = false;
+ private int installmentNum; //分期數
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -73,9 +73,30 @@ public class TopUpActivity extends BaseActivity {
super.onCreate(savedInstanceState);
viewBinding = ActivityTopupBinding.inflate(getLayoutInflater());
setContentView(viewBinding.getRoot());
+ setSelector(false);
+ setFenqiView(false);
initView();
bindInfo();
getConf();
+
+ }
+
+ public void setFenqiView(boolean show) {
+ viewBinding.lineInstall.setVisibility(show ? View.VISIBLE : View.GONE);
+ viewBinding.tvPaytypeFenqi.setVisibility(show ? View.VISIBLE : View.GONE);
+ viewBinding.recyclerInstallment.setVisibility(show ? View.VISIBLE : View.GONE);
+ }
+
+ public void setSelector(boolean fenqi) {
+ isFenqi = fenqi;
+ if (fenqi) {
+ viewBinding.tvPaytypeCard.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.mipmap.dialog_gou_ff), null);
+ viewBinding.tvPaytypeFenqi.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.mipmap.ic_single_selected), null);
+ } else {
+ viewBinding.tvPaytypeCard.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.mipmap.ic_single_selected), null);
+ viewBinding.tvPaytypeFenqi.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(R.mipmap.dialog_gou_ff), null);
+
+ }
}
@Override
@@ -103,14 +124,120 @@ public class TopUpActivity extends BaseActivity {
}
+ private void getFee() {
+ Map params = new HashMap<>();
+ params.put("amount", defaultIndex);
+ Api.getInstance().getFee(params)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver<>() {
+ @Override
+ public void onSuccess(Result> feedbackResp) {
+ LogUtils.i("获取到的数据:" + feedbackResp.data);
+ installmentBeans.clear();
+ if (feedbackResp.data != null && feedbackResp.data.size() > 0) {
+ installmentBeans.addAll(feedbackResp.data);
+ installmentNum = 0;
+ }
+ installmentAdapter.notifyDataSetChanged();
+
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.i("获取到的错误:" + code + "" + msg);
+ }
+ });
+ }
+
+ private void payInstallment(int installment) {
+ if (exchangeConfBean != null) {
+ if ((defaultIndex < exchangeConfBean.getMinAmount()) || (defaultIndex > exchangeConfBean.getMaxAmount())) {
+ ToastUtils.showShort(String.format(getString(R.string.taixiao_topup_txt), exchangeConfBean.getMinAmount() / exchangeConfBean.getExchangeRatio(), exchangeConfBean.getMaxAmount() / exchangeConfBean.getExchangeRatio()));
+ return;
+ }
+ Map maps = new HashMap<>();
+ maps.put("amount", defaultIndex);
+ maps.put("type", 5);
+ maps.put("installment", installment);
+ Api.getInstance().payInstallment(maps)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver<>() {
+ @Override
+ public void onSuccess(Result feedbackResp) {
+ LogUtils.i("获取到的数据:" + feedbackResp.data);
+ if (!TextUtils.isEmpty(feedbackResp.data)) {
+// String packageName = "com.chailease.tw.app.android.ccfappcust.uat"; // 目标应用的包名
+// PackageManager packageManager = getPackageManager();
+// Intent intent = new Intent();
+// intent = packageManager.getLaunchIntentForPackage(packageName);
+// intent.setData(Uri.parse(feedbackResp.data));
+// if (intent == null) {
+// ToastUtils.showShort("请安装银角零卡APP");
+// } else {
+// startActivity(intent);
+// }
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(feedbackResp.data));
+ startActivity(intent);
+// Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(feedbackResp.data));
+// startActivity(intent);
+// BrowseActivity.Companion.launch(
+// TopUpActivity.this, getString(R.string.cash_cuzhi_txt), feedbackResp.data);
+// startActivity(new Intent(TopUpActivity.this, PayWebActivity.class).putExtra("url", feedbackResp.data));
+
+ }
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.i("获取到的错误:" + code + "" + msg);
+ }
+ });
+ }
+
+ }
+
protected void initView() {
- Drawable drawable = viewBinding.contactListActivityTitleBar.getBackImageView().getDrawable().mutate();//
+ Drawable drawable = viewBinding.titlebar.getBackImageView().getDrawable().mutate();//
Drawable wrap = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(wrap, ContextCompat.getColor(this, R.color.color_d4ab90));
- viewBinding.contactListActivityTitleBar.getBackImageView().setImageDrawable(wrap);
- viewBinding.contactListActivityTitleBar.getBackImageView().setOnClickListener(v -> finish());
+ viewBinding.titlebar.getBackImageView().setImageDrawable(wrap);
+ viewBinding.titlebar.getBackImageView().setOnClickListener(v -> finish());
iniAdapter();
+ LinearLayoutManager linearLayoutManager = new LinearLayoutManager(TopUpActivity.this);
+ linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+ viewBinding.recyclerInstallment.setLayoutManager(linearLayoutManager);
+ installmentAdapter = new CommonAdapter(TopUpActivity.this, R.layout.item_bill_installment, installmentBeans) {
+ @Override
+ public void convert(ViewHolder holder, InstallmentBean s, int index) {
+ TextView titleTv = holder.getView(R.id.title_tv);
+ TextView desTv = holder.getView(R.id.des_tv);
+ titleTv.setText(getString(R.string.str_qi, s.getPeriodCount()));
+ desTv.setText(getString(R.string.str_installment_tips, s.getAmount()));
+ LinearLayout big_bg = holder.getView(R.id.big_bg);
+ if (s.getPeriodCount() == installmentNum) {
+ titleTv.setTextColor(Color.parseColor("#654C35"));
+ desTv.setTextColor(Color.parseColor("#654C35"));
+ big_bg.setBackgroundResource(R.drawable.logout_btn_main2);
+ } else {
+ titleTv.setTextColor(getColor(R.color.color_333333));
+ desTv.setTextColor(getColor(R.color.color_333333));
+ big_bg.setBackgroundResource(R.drawable.input_bg_t);
+ }
+ big_bg.setOnClickListener(v -> {
+ installmentNum = s.getPeriodCount();
+ notifyDataSetChanged();
+ viewBinding.tvCashvalue.setText("NT$:" + (defaultIndex + s.getAmount()));
+ setSelector(true);
+ });
+
+ }
+ };
+ viewBinding.recyclerInstallment.setAdapter(installmentAdapter);
viewBinding.editQueryEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -145,16 +272,40 @@ public class TopUpActivity extends BaseActivity {
} else if (!bindBean.getPayPasswordSet()) {
showDialogPay();
} else {
- sumbit();
+ if (isFenqi) {
+ if (installmentNum == 0) {
+ ToastUtils.showShort(getString(R.string.str_installment_toast));
+ return;
+ }
+ payInstallment(installmentNum);
+ } else {
+ sumbit();
+ }
+
}
}
});
+ viewBinding.tvPaytypeCard.setOnClickListener(v -> {
+ setSelector(false);
+ });
+ viewBinding.tvPaytypeFenqi.setOnClickListener(v -> {
+ setSelector(true);
+ if (defaultIndex > 0) {
+ getFee();
+ }
+ });
}
private void showBottomType() {
viewBinding.tvCashvalue.setText("NT$:" + defaultIndex);
+ setFenqiView(false);
+ if (defaultIndex >= 1000) {
+ setFenqiView(true);
+ getFee();
+ }
+
// if (exchangeConfBean != null) {
// if(TextUtils.isEmpty(viewBinding.editQueryEt.getText().toString().trim())){
// viewBinding.showZidingyiLy.setVisibility(View.GONE);
@@ -250,6 +401,7 @@ public class TopUpActivity extends BaseActivity {
viewBinding.editQueryEt.clearFocus();
notifyDataSetChanged();
showBottomType();
+
});
}
diff --git a/app/src/main/res/layout/activity_topup.xml b/app/src/main/res/layout/activity_topup.xml
index 92c4d3e..4f5487e 100644
--- a/app/src/main/res/layout/activity_topup.xml
+++ b/app/src/main/res/layout/activity_topup.xml
@@ -1,5 +1,5 @@
-
-
+ android:layout_height="0dp"
+ android:layout_marginBottom="@dimen/dp_70"
+ android:background="@color/color_fffbfb"
+ android:scrollbars="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/titlebar">
-
-
-
-
-
-
-
-
-
-
-
+ android:background="@color/color_403d51">
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:background="@mipmap/ic_topup_cashbg"
+ android:orientation="vertical"
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
-
-
-
-
-
+
-
-
-
-
+ android:layout_marginTop="@dimen/dp_120"
+ android:background="@color/color_fffbfb"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:id="@+id/tv_paytype_card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/dp_15"
+ android:layout_marginTop="@dimen/dp_15"
+ android:layout_marginEnd="@dimen/dp_15"
+ android:drawableRight="@mipmap/ic_single_selected"
+ android:gravity="center_vertical"
+ android:text="@string/cash_paytype_card"
+ android:textColor="@color/color_383838"
+ android:textSize="@dimen/sp_16" />
-
-
-
+
-
+
+
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_bill_installment.xml b/app/src/main/res/layout/item_bill_installment.xml
new file mode 100644
index 0000000..e5bedbe
--- /dev/null
+++ b/app/src/main/res/layout/item_bill_installment.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index c7df24e..2e771dd 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -882,12 +882,17 @@
Bead counting machine
Exchange for marbles
Wishing House deducts points
+ Wish House Points Refund
Merchant
%d You are the %dth user]]>
Search for a country or region
See more >>
Activity Details
- Payment Method
+ Payment Methods
Credit Card Payment
+ Zero Card Installment (The phone needs to install the Yin Jiao Zero Card APP)
After the account is closed, your user information will be erased and cannot be recovered. Any related rights, such as transaction history and account balance, will be considered automatically forfeited and void
+ %d Issue
+ Including service fee NT$ %d
+ Please select the number of installments
\ No newline at end of file
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index d7e405b..d2bfc7b 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -880,6 +880,7 @@
数珠機
パチンコを交換する
願掛け屋控除ポイント
+ 願い屋ポイント返還
商人
%d あなたは第%d番目のユーザーです]]>
国または地域を検索
@@ -887,6 +888,9 @@
イベントの詳細
支払い方法
クレジットカード支払い
+ ゼロカード分割払い (携帯電話に銀角ゼロカードAPPをインストールする必要があります)
アカウントを削除すると、ユーザー情報はすべて消去され、復元することはできません。取引履歴やアカウント残高などの関連する権利も自動的に放棄されたものと見なされ、無効になります
-
+ %d期
+ サービス料込み NT$ %d
+ 分割回数を選択してください
\ No newline at end of file
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 05f8b82..ccbdabf 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -873,12 +873,17 @@
数珠机
兑换弹珠
许愿屋扣除积分
+ 许愿屋退还积分
商家
%d 你是第%d位用户]]>
搜索国家或地区
查看更多 >>
活动详情
- 赠送方式
+ 付款方式
信用卡支付
+ 零卡分期(手机需需安装银角零卡APP)
账号注销后您的用户信息将被清空且无法找回,历史交易记录及账户余额等相关权益将视为自动放弃并自动作废
+ %d期
+ 含服务费NT$ %d
+ 请选择分期数
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 51bf26a..13e70b3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -880,13 +880,18 @@
数珠機
兌換彈珠
許願屋扣除積分
+ 許願屋退還積分
商家
%d 你是第%d位用戶]]>
搜尋國家或地區
查看更多 >>
活動詳情
- 贈送方式
+ 付款方式
信用卡支付
+ 零卡分期 (手機需安装銀角零卡APP)
帳號註銷後您的用戶資訊將被清空且無法找回,歷史交易記錄及帳戶餘額等相關權益將視為自動放棄並自動作廢
+ %d期
+ 含服務費NT$ %d
+ 請選擇分期數
\ No newline at end of file
diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java
index afe7473..2f6f2c9 100644
--- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java
+++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java
@@ -49,7 +49,7 @@ public interface ApiService {
/**
* 正式环境
*/
-// String URL = "https://api.letschat2023.com/";
+ // String URL = "https://api.letschat2023.com/";
/**
* 测试环境
diff --git a/gradle.properties b/gradle.properties
index fbf4a5f..71677a5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -30,5 +30,5 @@ android.nonTransitiveRClass=true
android.enableJetifier=true
android.defaults.buildfeatures.buildconfig=true
android.nonFinalResIds=false
-android.overridePathCheck=false
+#android.overridePathCheck=false
#android.suppressUnsupportedCompileSdk=34 #??????sdk??