diff --git a/app/src/main/res/drawable-xhdpi/btn_box_buy.png b/app/src/main/res/drawable-xhdpi/btn_box_buy.png
new file mode 100644
index 000000000..bb9ba2382
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/btn_box_buy.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_add_num_bg.webp b/app/src/main/res/drawable-xhdpi/ic_add_num_bg.webp
index d02954e14..cfdcb522e 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_add_num_bg.webp and b/app/src/main/res/drawable-xhdpi/ic_add_num_bg.webp differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_box_selected.png b/app/src/main/res/drawable-xhdpi/ic_box_selected.png
new file mode 100644
index 000000000..d837f8084
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_box_selected.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_box_unselected.png b/app/src/main/res/drawable-xhdpi/ic_box_unselected.png
new file mode 100644
index 000000000..e51b8e1f8
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_box_unselected.png differ
diff --git a/app/src/main/res/drawable-xhdpi/treasure_box_ic_diamond.png b/app/src/main/res/drawable-xhdpi/treasure_box_ic_diamond.png
new file mode 100644
index 000000000..db2470f94
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_box_ic_diamond.png differ
diff --git a/app/src/main/res/drawable/selector_select_box.xml b/app/src/main/res/drawable/selector_select_box.xml
new file mode 100644
index 000000000..21a6eab97
--- /dev/null
+++ b/app/src/main/res/drawable/selector_select_box.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index a5b63c749..9831ab48b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -679,5 +679,16 @@
#B8B7C7
#FAFBFC
#767585
+ #F2DE84
+ #365A65
+ #F6F6F6
+ #66F6F6F6
+ #3AEAC7
+ #FFFEBB
+ #8651E0
+ #7748C7
+ #7147E6
+ #FF9A1F
+ #A3A0AD
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 24b279baa..bca75e71d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5122,5 +5122,7 @@
顏值女神聚集地
陪伴交友
有趣的人都在這
+ 購買%d個碎片
+ 購買%d個愛心
\ No newline at end of file
diff --git a/app/src/module_treasure_box/java/com/yizhuan/erban/event/BoxLoveEvent.java b/app/src/module_treasure_box/java/com/yizhuan/erban/event/BoxLoveEvent.java
new file mode 100644
index 000000000..7d8f16ceb
--- /dev/null
+++ b/app/src/module_treasure_box/java/com/yizhuan/erban/event/BoxLoveEvent.java
@@ -0,0 +1,4 @@
+package com.yizhuan.erban.event;
+
+public class BoxLoveEvent {
+}
diff --git a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java
index 6eb0c3305..7e162be13 100644
--- a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java
+++ b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/activity/TreasureBoxActivity.java
@@ -17,7 +17,6 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.text.Editable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
@@ -29,6 +28,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.alibaba.fastjson.JSON;
+import com.hjq.toast.ToastUtils;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
@@ -36,11 +36,15 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.databinding.ActivityTreasureBoxBinding;
+import com.yizhuan.erban.event.BoxLoveEvent;
+import com.yizhuan.erban.treasure_box.widget.dialog.BoxLoveLackDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.BoxMoreDialog;
+import com.yizhuan.erban.treasure_box.widget.dialog.BuyLoveDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.TreasureBoxDialog;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.treasure_box.bean.PrizeNewInfo;
+import com.yizhuan.treasure_box.bean.UserTicketInfo;
import com.yizhuan.treasure_box.model.BoxModel;
import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.auth.AuthModel;
@@ -59,13 +63,18 @@ import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.xchat_android_core.treasurefairy.FairyMsgInfoBean;
-import com.yizhuan.xchat_android_core.utils.StringUtils;
+import com.yizhuan.xchat_android_core.utils.Logger;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
-import com.yizhuan.xchat_android_library.common.util.SoftKeyboardStateHelper;
+import com.yizhuan.xchat_android_library.common.SpConstants;
+import com.yizhuan.xchat_android_library.common.util.SPUtils;
import com.yizhuan.xchat_android_library.utils.FormatUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
-import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper;
+import com.yizhuan.xchat_android_library.utils.TimeUtils;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Objects;
@@ -83,7 +92,10 @@ public class TreasureBoxActivity extends BaseBindingActivity 200) {
- mBinding.editNum.setText("200");
- mBinding.editNum.setSelection(3);
- SingleToastUtil.showToast(ResUtil.getString(R.string.treasure_box_activity_treasureboxactivity_01));
+
+ mBinding.view1.setOnClickListener(v -> setBoxPriceSelect(1));
+ mBinding.view2.setOnClickListener(v -> setBoxPriceSelect(2));
+ mBinding.view3.setOnClickListener(v -> setBoxPriceSelect(3));
+
+ mBinding.tvBuy.setOnClickListener(v -> {
+ if (userTicketInfo != null) {
+ long date = SPUtils.getLong(SpConstants.BOX_BUY_LOVE, 0L);
+ if (date != 0L) {
+ if (TimeUtils.isToday(date)) {
+ BoxModel.get()
+ .buyTicket(mNum)
+ .compose(bindToLifecycle())
+ .subscribe(userTicketInfo -> {
+ ToastUtils.show("購買成功");
+ loadUserTicket();
+ });
+ } else {
+ BuyLoveDialog.Companion.newInstance(mNum, (int) userTicketInfo.getTicketPrice()).show(this);
+ }
+ } else {
+ BuyLoveDialog.Companion.newInstance(mNum, (int) userTicketInfo.getTicketPrice()).show(this);
}
}
});
+ mBinding.view1.setSelected(true);
+ mBinding.tv1.setAlpha(1f);
+
+ loadUserTicket();
loadKeyInfo();
looperPrize();
looperHintPrize();
- new SoftKeyboardStateHelper(mBinding.editNum).addSoftKeyboardStateListener(new SoftKeyboardStateHelper.SoftKeyboardStateListener() {
- @Override
- public void onSoftKeyboardOpened(int keyboardHeightInPx) {
+ }
- }
+ /**
+ * 购买爱心回调
+ */
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onBoxLoveEvent(BoxLoveEvent event) {
+ loadUserTicket();
+ }
- @Override
- public void onSoftKeyboardClosed() {
- int num = StringUtils.toInt(mBinding.editNum.getText().toString(), 0);
- if (num == 0) {
- mBinding.editNum.setText("1");
- mBinding.editNum.setSelection(1);
- }
- }
- });
+ @SuppressLint("CheckResult")
+ private void loadUserTicket() {
+ BoxModel.get()
+ .getUserTicket()
+ .compose(bindToLifecycle())
+ .subscribe(userTicketInfo -> {
+ this.userTicketInfo = userTicketInfo;
+ mBinding.tvBoxNum.setText(String.valueOf(userTicketInfo.getTicketNum()));
+ });
+ }
+
+ private void setBoxPriceSelect(int pos) {
+ if (pos == 1) {
+ mNum = 1;
+ mBinding.view1.setSelected(true);
+ mBinding.view2.setSelected(false);
+ mBinding.view3.setSelected(false);
+ mBinding.tv1.setAlpha(1f);
+ mBinding.tv2.setAlpha(0.4f);
+ mBinding.tv3.setAlpha(0.4f);
+ } else if (pos == 2) {
+ mNum = 10;
+ mBinding.view1.setSelected(false);
+ mBinding.view2.setSelected(true);
+ mBinding.view3.setSelected(false);
+ mBinding.tv1.setAlpha(0.4f);
+ mBinding.tv2.setAlpha(1f);
+ mBinding.tv3.setAlpha(0.4f);
+ } else if (pos == 3) {
+ mNum = 100;
+ mBinding.view1.setSelected(false);
+ mBinding.view2.setSelected(false);
+ mBinding.view3.setSelected(true);
+ mBinding.tv1.setAlpha(0.4f);
+ mBinding.tv2.setAlpha(0.4f);
+ mBinding.tv3.setAlpha(1f);
+ }
}
@SuppressLint({"CheckResult", "ClickableViewAccessibility"})
private void loadKeyInfo() {
sendMessageSwitchLevel = AvRoomDataManager.get().mFindLoveSwitchVo.getSendMsgLevel();
- price = (int) AvRoomDataManager.get().mFindLoveSwitchVo.getPrice();
- mBinding.tvDiamond.setText(getString(R.string.text_diamond, price));
-
}
@Override
@@ -174,14 +235,14 @@ public class TreasureBoxActivity extends BaseBindingActivity Integer.parseInt(mBinding.tvBoxNum.getText().toString())){
+ if (userTicketInfo != null) {
+ BoxLoveLackDialog.Companion.newInstance(count, (int) userTicketInfo.getTicketPrice()).show(context);
+ }
+ return;
+ }
boolean sendMessage = (sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() < sendMessageSwitchLevel) || DemoCache.readNeedBoxMsg();
- mBinding.ivOpen.setEnabled(false);
+ setBoxEnable(false);
mBinding.ivBoxOpen.startAnimation();
long startTime = System.currentTimeMillis();
BoxModel.get().openBoxDraw(count, sendMessage)
.compose(bindToLifecycle())
.doOnError(throwable -> {
- mBinding.ivOpen.setEnabled(true);
+ setBoxEnable(true);
if (throwable instanceof FailReasonException) {
FailReasonException failReasonException = (FailReasonException) throwable;
if (failReasonException.getCode() == BoxModel.ERROR_CODE_DIAMOND) {
@@ -221,12 +288,21 @@ public class TreasureBoxActivity extends BaseBindingActivity {
- mBinding.ivOpen.setEnabled(true);
+ setBoxEnable(true);
cacheList.addAll(openBoxResult);
return Observable.fromIterable(openBoxResult);
})
.filter(prizeInfo -> prizeInfo.getLevel() > 2)
- .subscribe(prizeInfo -> hintPrizeCacheList.add(prizeInfo));
+ .subscribe(prizeInfo -> {
+ hintPrizeCacheList.add(prizeInfo);
+ loadUserTicket();
+ });
+ }
+
+ private void setBoxEnable(boolean status) {
+ mBinding.ivBox1.setEnabled(status);
+ mBinding.ivBox2.setEnabled(status);
+ mBinding.ivBox3.setEnabled(status);
}
@SuppressLint("CheckResult")
@@ -395,4 +471,9 @@ public class TreasureBoxActivity extends BaseBindingActivity() {
+
+ override var width = WindowManager.LayoutParams.MATCH_PARENT
+ override var height = WindowManager.LayoutParams.WRAP_CONTENT
+ override var gravity = Gravity.CENTER
+
+ companion object {
+ @JvmStatic
+ fun newInstance(num: Int, ticketPrice: Int): BoxLoveLackDialog {
+ val args = Bundle()
+ args.putInt("num", num)
+ args.putInt("ticketPrice", ticketPrice)
+ val fragment = BoxLoveLackDialog()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ private val num by lazy { requireArguments().getInt("num") }
+ private val ticketPrice by lazy { requireArguments().getInt("ticketPrice") }
+
+ @SuppressLint("CheckResult", "SetTextI18n")
+ override fun init() {
+ binding?.editNum?.setText(num.toString())
+ binding?.tvPrizeName?.text = (num * ticketPrice).toString()
+
+ binding?.ivSub?.setOnClickListener {
+ val editNum =
+ (StringUtils.toInt(binding?.editNum?.text.toString(), 0) - 1).coerceAtLeast(1)
+ binding?.editNum?.setText(editNum.toString())
+ binding?.tvPrizeName?.text = (editNum * ticketPrice).toString()
+ }
+
+ binding?.ivAdd?.setOnClickListener {
+ val editNum =
+ (StringUtils.toInt(binding?.editNum?.text.toString(), 0) + 1).coerceAtMost(9999)
+ binding?.editNum?.setText(editNum.toString())
+ binding?.tvPrizeName?.text = (editNum * ticketPrice).toString()
+ }
+
+ binding?.ivClose?.setOnClickListener {
+ dismissAllowingStateLoss()
+ }
+
+ binding?.tvBuy?.setOnClickListener {
+ val date = SPUtils.getLong(SpConstants.BOX_BUY_LOVE, 0L)
+ if (date != 0L) {
+ if (TimeUtils.isToday(date)) {
+ BoxModel.get()
+ .buyTicket(num)
+ .compose(bindToLifecycle())
+ .subscribe { userTicketInfo: UserTicketInfo ->
+ ToastUtils.show("購買成功")
+ dismissAllowingStateLoss()
+ }
+ } else {
+ BuyLoveDialog.newInstance(
+ binding?.editNum?.text.toString().toInt(),
+ ticketPrice * binding?.editNum?.text.toString().toInt()
+ ).show(context)
+ dismissAllowingStateLoss()
+ }
+ } else {
+ BuyLoveDialog.newInstance(
+ binding?.editNum?.text.toString().toInt(),
+ ticketPrice * binding?.editNum?.text.toString().toInt()
+ ).show(context)
+ dismissAllowingStateLoss()
+ }
+ }
+
+ binding?.editNum?.addTextChangedListener(object : TextWatcherWrapper() {
+ override fun afterTextChanged(editable: Editable) {
+ val num = StringUtils.toInt(binding?.editNum?.text.toString(), 0)
+ if (num > 200) {
+ binding?.editNum?.setText("200")
+ binding?.editNum?.setSelection(3)
+ SingleToastUtil.showToast(ResUtil.getString(R.string.treasure_box_activity_treasureboxactivity_01))
+ }
+ }
+ })
+
+ SoftKeyboardStateHelper(binding?.editNum).addSoftKeyboardStateListener(object :
+ SoftKeyboardStateListener {
+ override fun onSoftKeyboardOpened(keyboardHeightInPx: Int) {}
+ override fun onSoftKeyboardClosed() {
+ val num = StringUtils.toInt(binding?.editNum?.text.toString(), 0)
+ if (num == 0) {
+ binding?.editNum?.setText("1")
+ binding?.editNum?.setSelection(1)
+ }
+ }
+ })
+ }
+
+ override fun onDismiss(dialog: DialogInterface) {
+ super.onDismiss(dialog)
+ EventBus.getDefault().post(BoxLoveEvent())
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BuyLoveDialog.kt b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BuyLoveDialog.kt
new file mode 100644
index 000000000..617a3fe88
--- /dev/null
+++ b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BuyLoveDialog.kt
@@ -0,0 +1,99 @@
+package com.yizhuan.erban.treasure_box.widget.dialog
+
+import android.annotation.SuppressLint
+import android.content.DialogInterface
+import android.os.Bundle
+import android.view.Gravity
+import android.view.WindowManager
+import com.hjq.toast.ToastUtils
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseDialog
+import com.yizhuan.erban.databinding.TreasureBoxDialogBuyLoveBinding
+import com.yizhuan.erban.event.BoxLoveEvent
+import com.yizhuan.treasure_box.bean.UserTicketInfo
+import com.yizhuan.treasure_box.model.BoxModel
+import com.yizhuan.xchat_android_library.common.SpConstants
+import com.yizhuan.xchat_android_library.common.util.SPUtils
+import com.yizhuan.xchat_android_library.utils.TimeUtils
+import org.greenrobot.eventbus.EventBus
+
+/**
+ * 购买爱心
+ */
+class BuyLoveDialog : BaseDialog() {
+
+ override var width = WindowManager.LayoutParams.MATCH_PARENT
+ override var height = WindowManager.LayoutParams.WRAP_CONTENT
+ override var gravity = Gravity.CENTER
+
+ companion object {
+ @JvmStatic
+ fun newInstance(num: Int, ticketPrice: Int): BuyLoveDialog {
+ val args = Bundle()
+ args.putInt("num", num)
+ args.putInt("ticketPrice", ticketPrice)
+ val fragment = BuyLoveDialog()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ private val num by lazy { requireArguments().getInt("num") }
+ private val ticketPrice by lazy { requireArguments().getInt("ticketPrice") }
+
+ @SuppressLint("CheckResult", "SetTextI18n")
+ override fun init() {
+ binding?.tvLackLove?.text = getString(R.string.buy_love_num, num)
+ binding?.tvPrizeName?.text = ticketPrice.toString()
+
+ binding?.cbPay?.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ SPUtils.putLong(SpConstants.BOX_BUY_LOVE, System.currentTimeMillis())
+ } else {
+ SPUtils.putLong(SpConstants.BOX_BUY_LOVE, 0L)
+ }
+ }
+
+ binding?.ivClose?.setOnClickListener {
+ dismissAllowingStateLoss()
+ }
+
+ binding?.tvBuy?.setOnClickListener {
+ val date = SPUtils.getLong(SpConstants.BOX_BUY_SUCCESS, 0L)
+ if (date != 0L) {
+ if (TimeUtils.isToday(date)) {
+ BoxModel.get()
+ .buyTicket(num)
+ .compose(bindToLifecycle())
+ .subscribe { userTicketInfo: UserTicketInfo ->
+ ToastUtils.show("購買成功")
+ dismissAllowingStateLoss()
+ }
+ } else {
+ BoxModel.get()
+ .buyTicket(num)
+ .compose(bindToLifecycle())
+ .subscribe { userTicketInfo: UserTicketInfo ->
+ BuyLoveSuccessDialog.newInstance(num).show(context)
+ dismissAllowingStateLoss()
+ }
+ }
+ } else {
+ BoxModel.get()
+ .buyTicket(num)
+ .compose(bindToLifecycle())
+ .subscribe { userTicketInfo: UserTicketInfo ->
+ BuyLoveSuccessDialog.newInstance(num).show(context)
+ dismissAllowingStateLoss()
+ }
+ }
+ }
+
+ }
+
+ override fun onDismiss(dialog: DialogInterface) {
+ super.onDismiss(dialog)
+ EventBus.getDefault().post(BoxLoveEvent())
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BuyLoveSuccessDialog.kt b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BuyLoveSuccessDialog.kt
new file mode 100644
index 000000000..083b5ddd3
--- /dev/null
+++ b/app/src/module_treasure_box/java/com/yizhuan/erban/treasure_box/widget/dialog/BuyLoveSuccessDialog.kt
@@ -0,0 +1,64 @@
+package com.yizhuan.erban.treasure_box.widget.dialog
+
+import android.annotation.SuppressLint
+import android.content.DialogInterface
+import android.os.Bundle
+import android.view.Gravity
+import android.view.WindowManager
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseDialog
+import com.yizhuan.erban.databinding.TreasureBoxDialogBuyLoveBinding
+import com.yizhuan.erban.databinding.TreasureBoxDialogBuyLoveSuccessBinding
+import com.yizhuan.erban.event.BoxLoveEvent
+import com.yizhuan.treasure_box.bean.UserTicketInfo
+import com.yizhuan.treasure_box.model.BoxModel
+import com.yizhuan.xchat_android_library.common.SpConstants
+import com.yizhuan.xchat_android_library.common.util.SPUtils
+import org.greenrobot.eventbus.EventBus
+
+/**
+ * 购买爱心
+ */
+class BuyLoveSuccessDialog : BaseDialog() {
+
+ override var width = WindowManager.LayoutParams.MATCH_PARENT
+ override var height = WindowManager.LayoutParams.WRAP_CONTENT
+ override var gravity = Gravity.CENTER
+
+ companion object {
+ @JvmStatic
+ fun newInstance(num: Int): BuyLoveSuccessDialog {
+ val args = Bundle()
+ args.putInt("num", num)
+ val fragment = BuyLoveSuccessDialog()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ private val num by lazy { requireArguments().getInt("num") }
+
+ @SuppressLint("CheckResult", "SetTextI18n")
+ override fun init() {
+ binding?.tvPrizeName?.text = "x${num}"
+
+ binding?.cbPay?.setOnCheckedChangeListener { _, isChecked ->
+ if (isChecked) {
+ SPUtils.putLong(SpConstants.BOX_BUY_SUCCESS, System.currentTimeMillis())
+ } else {
+ SPUtils.putLong(SpConstants.BOX_BUY_SUCCESS, 0L)
+ }
+ }
+
+ binding?.ivClose?.setOnClickListener {
+ dismissAllowingStateLoss()
+ }
+
+ }
+
+ override fun onDismiss(dialog: DialogInterface) {
+ super.onDismiss(dialog)
+ EventBus.getDefault().post(BoxLoveEvent())
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/module_treasure_box/res/drawable-xhdpi/ic_love_token.png b/app/src/module_treasure_box/res/drawable-xhdpi/ic_love_token.png
new file mode 100644
index 000000000..fe69ae511
Binary files /dev/null and b/app/src/module_treasure_box/res/drawable-xhdpi/ic_love_token.png differ
diff --git a/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_bg_love_lack.png b/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_bg_love_lack.png
new file mode 100644
index 000000000..d783f3a1e
Binary files /dev/null and b/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_bg_love_lack.png differ
diff --git a/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_buy_love.png b/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_buy_love.png
new file mode 100644
index 000000000..d8f5b8a9a
Binary files /dev/null and b/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_buy_love.png differ
diff --git a/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_ic_close.png b/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_ic_close.png
new file mode 100644
index 000000000..fa50c0d91
Binary files /dev/null and b/app/src/module_treasure_box/res/drawable-xhdpi/treasure_box_ic_close.png differ
diff --git a/app/src/module_treasure_box/res/layout/treasure_box_dialog_buy_love.xml b/app/src/module_treasure_box/res/layout/treasure_box_dialog_buy_love.xml
new file mode 100644
index 000000000..856847e66
--- /dev/null
+++ b/app/src/module_treasure_box/res/layout/treasure_box_dialog_buy_love.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/module_treasure_box/res/layout/treasure_box_dialog_buy_love_success.xml b/app/src/module_treasure_box/res/layout/treasure_box_dialog_buy_love_success.xml
new file mode 100644
index 000000000..ecbdeb4bc
--- /dev/null
+++ b/app/src/module_treasure_box/res/layout/treasure_box_dialog_buy_love_success.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/module_treasure_box/res/layout/treasure_box_dialog_love_lack.xml b/app/src/module_treasure_box/res/layout/treasure_box_dialog_love_lack.xml
new file mode 100644
index 000000000..186da43ad
--- /dev/null
+++ b/app/src/module_treasure_box/res/layout/treasure_box_dialog_love_lack.xml
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/model_treasure_box/java/com/yizhuan/treasure_box/bean/UserTicketInfo.kt b/core/src/model_treasure_box/java/com/yizhuan/treasure_box/bean/UserTicketInfo.kt
new file mode 100644
index 000000000..720d7543e
--- /dev/null
+++ b/core/src/model_treasure_box/java/com/yizhuan/treasure_box/bean/UserTicketInfo.kt
@@ -0,0 +1,8 @@
+package com.yizhuan.treasure_box.bean
+
+data class UserTicketInfo(
+ val diamond: Double = 0.0,
+ val ticketNum: Int = 0,
+ val ticketPrice: Double = 0.0,
+ val uid: Int = 0
+)
\ No newline at end of file
diff --git a/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/BoxModel.java b/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/BoxModel.java
index c5ebc2da1..799037514 100644
--- a/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/BoxModel.java
+++ b/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/BoxModel.java
@@ -9,6 +9,7 @@ import com.yizhuan.treasure_box.bean.OpenBoxHonourResult;
import com.yizhuan.treasure_box.bean.OpenBoxResult;
import com.yizhuan.treasure_box.bean.PrizeInfo;
import com.yizhuan.treasure_box.bean.PrizeNewInfo;
+import com.yizhuan.treasure_box.bean.UserTicketInfo;
import com.yizhuan.xchat_android_core.R;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.base.BaseModel;
@@ -82,6 +83,20 @@ public class BoxModel extends BaseModel implements IBoxModel {
});
}
+ @Override
+ public Single getUserTicket() {
+ return api.getUserTicket()
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers());
+ }
+
+ @Override
+ public Single buyTicket(int num) {
+ return api.buyTicket(num)
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers());
+ }
+
@Override
public Single openBox(int boxType, int keyNum, boolean sendMessage) {
if (AvRoomDataManager.get().mCurrentRoomInfo == null) {
@@ -199,6 +214,21 @@ public class BoxModel extends BaseModel implements IBoxModel {
@Query("sortType") String sortType,
@Query("uid") long uid);
+ /**
+ * 获取用户vo(门票)
+ *
+ */
+ @GET("/findLove/user")
+ Single> getUserTicket();
+
+ /**
+ * 购买门票
+ *
+ */
+ @FormUrlEncoded
+ @POST("/findLove/buyTicket")
+ Single> buyTicket(@Field("num") int num);
+
/**
* 寻爱抽奖
*
diff --git a/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/IBoxModel.java b/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/IBoxModel.java
index f7482656b..98dece075 100644
--- a/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/IBoxModel.java
+++ b/core/src/model_treasure_box/java/com/yizhuan/treasure_box/model/IBoxModel.java
@@ -9,6 +9,7 @@ import com.yizhuan.treasure_box.bean.OpenBoxHonourResult;
import com.yizhuan.treasure_box.bean.OpenBoxResult;
import com.yizhuan.treasure_box.bean.PrizeInfo;
import com.yizhuan.treasure_box.bean.PrizeNewInfo;
+import com.yizhuan.treasure_box.bean.UserTicketInfo;
import com.yizhuan.xchat_android_core.base.IModel;
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
@@ -34,6 +35,20 @@ public interface IBoxModel extends IModel {
*/
Single> openBoxDraw(int keyNum, boolean sendMessage);
+ /**
+ * 获取用户vo(门票)
+ *
+ * @return
+ */
+ Single getUserTicket();
+
+ /**
+ * 购买门票
+ *
+ * @return
+ */
+ Single buyTicket(int num);
+
/**
* 开箱子
*
diff --git a/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt b/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt
index dc30c7cb4..bfa5cd183 100644
--- a/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt
+++ b/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt
@@ -1,10 +1,13 @@
package com.yizhuan.xchat_android_library.common
object SpConstants {
- const val TAB_INFO_LIST = "tab_info_list"
const val SET_PASSWORD = "set_password"
const val LOGIN_TYPE = "login_type"
const val GOOGLE = "google"
const val FACEBOOK = "facebook"
const val LINE = "line"
+ const val FAIRY_BUY_DEBRIS = "fairy_buy_debris"
+ const val FAIRY_BUY_SUCCESS = "fairy_buy_success"
+ const val BOX_BUY_LOVE = "box_buy_love"
+ const val BOX_BUY_SUCCESS = "box_buy_success"
}
\ No newline at end of file