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