diff --git a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyCarAdapter.java b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyCarAdapter.java index 13e7dff86..7bf4919f4 100644 --- a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyCarAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyCarAdapter.java @@ -55,7 +55,7 @@ public class MyCarAdapter extends BaseAdapter { if (remainingDay >= 0 && status == CarInfo.STATUS_USER_CAN_USE) { String days; if (item.getRemainingDay() > 99){ - days = item.getRemainingDay()+"+"; + days = "99+"; }else { days = item.getRemainingDay()+""; } diff --git a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyHeadWearAdapter.java b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyHeadWearAdapter.java index 08a290f8b..0a183660c 100644 --- a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyHeadWearAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyHeadWearAdapter.java @@ -63,7 +63,7 @@ public class MyHeadWearAdapter extends BaseAdapter { } else { String days; if (item.getExpireDays() > 99){ - days = item.getExpireDays()+"+"; + days = "99+"; }else { days = item.getExpireDays()+""; } diff --git a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyNamePlateAdapter.java b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyNamePlateAdapter.java index 88b9660a5..058c841ba 100644 --- a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyNamePlateAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyNamePlateAdapter.java @@ -49,7 +49,7 @@ public class MyNamePlateAdapter extends BaseQuickAdapter 99) { - days = item.getExpireDays() + "+"; + days = "99+"; } else { days = item.getExpireDays() + ""; } diff --git a/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyUserCardWearAdapter.java b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyUserCardWearAdapter.java new file mode 100644 index 000000000..e0d6601f6 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/decoration/adapter/MyUserCardWearAdapter.java @@ -0,0 +1,80 @@ +package com.yizhuan.erban.decoration.adapter; + +import android.view.View; + +import androidx.annotation.NonNull; + +import com.yizhuan.erban.R; +import com.yizhuan.erban.bindadapter.BaseAdapter; +import com.yizhuan.erban.bindadapter.BindingViewHolder; +import com.yizhuan.erban.databinding.ItemMyHeadWearBinding; +import com.yizhuan.erban.databinding.ItemMyUserCardWearBinding; +import com.yizhuan.erban.ui.utils.ImageLoadUtils; +import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; +import com.yizhuan.xchat_android_core.decoration.headwear.bean.UserCardWearInfo; +import com.yizhuan.xchat_android_core.noble.NobleUtil; + +/** + * Created by huangmeng1 on 2018/5/11. + */ + +public class MyUserCardWearAdapter extends BaseAdapter { + + public MyUserCardWearAdapter(int layoutResId, int brid) { + super(layoutResId, brid); + } + + @Override + protected void convert(@NonNull BindingViewHolder helper, UserCardWearInfo item) { + super.convert(helper, item); + ItemMyUserCardWearBinding binding = (ItemMyUserCardWearBinding) helper.getBinding(); + ImageLoadUtils.loadImage(mContext, item.getPic(), binding.ivUserCardWear); + helper.addOnClickListener(R.id.tv_used); + + if (item.getLabelType() == HeadWearInfo.LABEL_TYPE_NORMAL) { + binding.ivTag.setVisibility(View.GONE); + + } else if (HeadWearInfo.LABEL_TYPE_NEW == item.getLabelType()) { + binding.ivTag.setVisibility(View.VISIBLE); + binding.ivTag.setImageResource(R.drawable.ic_mark_new); + + } else if (HeadWearInfo.LABEL_TYPE_DISCOUNT == item.getLabelType()) { + binding.ivTag.setVisibility(View.VISIBLE); + binding.ivTag.setImageResource(R.drawable.ic_mark_discount); + + } else if (HeadWearInfo.LABEL_TYPE_LIMIT == item.getLabelType()) { + binding.ivTag.setVisibility(View.VISIBLE); + binding.ivTag.setImageResource(R.drawable.ic_mark_limit); + + } else if (HeadWearInfo.LABEL_TYPE_EXCLUSIVE == item.getLabelType()) { + binding.ivTag.setVisibility(View.VISIBLE); + binding.ivTag.setImageResource(R.drawable.ic_mark_exclusive); + } + + // 过期状态不可使用 + if (item.isHasExpired()) { + binding.tvUsed.setVisibility(View.GONE); + binding.tvUsed.setEnabled(false); + binding.tvUsed.setText("使用"); + } else { + binding.tvUsed.setVisibility(View.VISIBLE); + binding.tvUsed.setEnabled(true); + + } + + // 日期展示 + if (item.isHasExpired()) { // 过期 + binding.tvCounters.setText(mContext.getString(R.string.past_due)); + } else { + String days; + if (item.getExpireDays() > 99) { + days = "99+"; + } else { + days = item.getExpireDays() + ""; + } + binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + days + mContext.getString(R.string.day)); + } + + } + +} diff --git a/app/src/main/java/com/yizhuan/erban/decoration/view/MyDecorationActivity.java b/app/src/main/java/com/yizhuan/erban/decoration/view/MyDecorationActivity.java index 2fde47d3b..6f98ee589 100644 --- a/app/src/main/java/com/yizhuan/erban/decoration/view/MyDecorationActivity.java +++ b/app/src/main/java/com/yizhuan/erban/decoration/view/MyDecorationActivity.java @@ -8,6 +8,7 @@ import android.graphics.drawable.GradientDrawable; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -56,17 +57,18 @@ import io.reactivex.disposables.Disposable; public class MyDecorationActivity extends BaseBindingActivity implements ICarView, View.OnClickListener, CarMagicIndicator.OnItemSelectListener { + /** + * 我的装饰Banner + */ + private static final String BANNER_TYPE = "3"; private ViewPager viewPager; private int mPosition; private boolean carGarageNeedUpdate = true; private MyHeadWearFragment myHeadWearFragment; private MyCarFragment mMyCarFragment; private MyNamePlateFragment mMyNamePlateFragment; + private MyUserCardWearFragment mMyUserCardWearFragment; private MagicIndicator mMagicIndicator; - /** - * 我的装饰Banner - */ - private static final String BANNER_TYPE = "3"; public static void start(Context context, int position) { Intent intent = new Intent(context, MyDecorationActivity.class); @@ -87,10 +89,11 @@ public class MyDecorationActivity extends BaseBindingActivity tabInfoList = new ArrayList<>(2); + List tabInfoList = new ArrayList<>(4); tabInfoList.add(new TabInfo(1, "头饰")); tabInfoList.add(new TabInfo(2, "座驾")); tabInfoList.add(new TabInfo(3, "铭牌")); + tabInfoList.add(new TabInfo(4, "资料卡")); CommonNavigator commonNavigator = new CommonNavigator(this); commonNavigator.setAdjustMode(true); CarMagicIndicator indicator = new CarMagicIndicator(this, tabInfoList, 0); @@ -102,20 +105,24 @@ public class MyDecorationActivity extends BaseBindingActivity CarModel.get().driveThisCar(carInfo.getCarId()) - .compose(bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe((voidServiceResult, throwable1) -> { - if (voidServiceResult != null && voidServiceResult.isSuccess()) { - SingleToastUtil.showToastShort("驾驶成功"); - // 实时更新座驾被选中 - mMyCarFragment.getAdapter().check(carInfo); - } else if (voidServiceResult != null && !voidServiceResult.isSuccess()) { - SingleToastUtil.showToastShort("驾驶失败: 网络异常!"); - } else if (throwable1 != null) { - SingleToastUtil.showToastShort("驾驶失败: 网络异常!"); - } else { - SingleToastUtil.showToastShort("驾驶失败: 网络异常!"); - } - })); + // 提示是否需要立即驾驶 + getDialogManager().showOkCancelDialog("购买成功,是否立即驾驶?", + true, + () -> CarModel.get().driveThisCar(carInfo.getCarId()) + .compose(bindUntilEvent(ActivityEvent.DESTROY)) + .subscribe((voidServiceResult, throwable1) -> { + if (voidServiceResult != null && voidServiceResult.isSuccess()) { + SingleToastUtil.showToastShort("驾驶成功"); + // 实时更新座驾被选中 + mMyCarFragment.getAdapter().check(carInfo); + } else if (voidServiceResult != null && !voidServiceResult.isSuccess()) { + SingleToastUtil.showToastShort("驾驶失败: 网络异常!"); + } else if (throwable1 != null) { + SingleToastUtil.showToastShort("驾驶失败: 网络异常!"); + } else { + SingleToastUtil.showToastShort("驾驶失败: 网络异常!"); + } + })); } }); @@ -255,7 +262,7 @@ public class MyDecorationActivity extends BaseBindingActivity { + private UserCardWearVm wearVm; + private MyUserCardWearAdapter shopAdapter; + + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + } + + @Override + public void initiate() { + wearVm = new UserCardWearVm(); + mBinding.setViewmodel(wearVm); + + shopAdapter = new MyUserCardWearAdapter(R.layout.item_my_user_card_wear, BR.headWearInfo); + shopAdapter.setOnItemChildClickListener((adapter, view, position) -> { + if (view.getId() == R.id.tv_used) { + setUsedStatus(position); + } + }); + + mBinding.swipeRefresh.setOnRefreshListener(() -> loadData(false)); + shopAdapter.setOnLoadMoreListener(() -> loadData(true), mBinding.recyclerView); + mBinding.recyclerView.setAdapter(shopAdapter); + mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + + loadData(false); + } + + private void loadData(boolean isLode) { + wearVm.loadData(isLode) + .compose(bindToLifecycle()) + .doAfterTerminate(() -> { + if (ListUtils.isListEmpty(shopAdapter.getData())) { + showNoData(R.drawable.icon_common_failure, "亲爱的用户,你还没有头饰哦!"); + } + }) + .subscribe(); + } + + @Override + public void showNoData(View view, int drawable, CharSequence charSequence) { + if (!checkActivityValid()) + return; + + if (view == null) { + return; + } + View status = view.findViewById(R.id.status_layout); + if (status == null || status.getId() == View.NO_ID) { + return; + } + NoDataFragment fragment = NoDataFragment.newInstance(R.layout.fragment_no_data_large_iv, drawable, charSequence); + fragment.setListener(getLoadListener()); + getChildFragmentManager().beginTransaction().replace(status.getId(), fragment, STATUS_TAG).commitAllowingStateLoss(); + } + + @SuppressLint("CheckResult") + private void setUsedStatus(int position) { + UserCardWearInfo headWearInfo = shopAdapter.getData().get(position); + + + // id == 0标识不使用头饰 + + wearVm.userHeadWear(headWearInfo.isUsed() ? null : headWearInfo.getCardId()) + .compose(bindUntilEvent(FragmentEvent.DESTROY)) + .doOnError(throwable -> { + toast(throwable.getMessage()); + }) + .subscribe(s -> { + for (int i = 0; i < shopAdapter.getData().size(); i++) { + shopAdapter.getData().get(i).setUsed(headWearInfo.getCardId().equals(shopAdapter.getData().get(i).getCardId())); + } + shopAdapter.notifyDataSetChanged(); + //更新用户信息 + UserModel.get().updateCurrentUserInfo().subscribe(); + }); + } + +} diff --git a/app/src/main/java/com/yizhuan/erban/decoration/viewmodel/UserCardWearVm.java b/app/src/main/java/com/yizhuan/erban/decoration/viewmodel/UserCardWearVm.java new file mode 100644 index 000000000..a5b67323b --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/decoration/viewmodel/UserCardWearVm.java @@ -0,0 +1,27 @@ +package com.yizhuan.erban.decoration.viewmodel; + +import com.yizhuan.erban.base.BaseListViewModel; +import com.yizhuan.xchat_android_core.bean.response.ServiceResult; +import com.yizhuan.xchat_android_core.decoration.headwear.HeadwearModel; +import com.yizhuan.xchat_android_core.decoration.headwear.bean.UserCardWearInfo; + +import java.util.List; + +import io.reactivex.Single; + +/** + * Created by huangmeng1 on 2018/5/10. + */ + +public class UserCardWearVm extends BaseListViewModel { + + @Override + public Single>> getSingle() { + return HeadwearModel.get().getUserCardWearList(page , pageSize ); + } + + public Single userHeadWear(String wearId) { + return HeadwearModel.get().useUserCardWear(wearId); + } + +} diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/UserInfoDialog.java b/app/src/main/java/com/yizhuan/erban/ui/widget/UserInfoDialog.java index 63e8e0d44..bdcb99dd1 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/widget/UserInfoDialog.java +++ b/app/src/main/java/com/yizhuan/erban/ui/widget/UserInfoDialog.java @@ -130,6 +130,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe private AppCompatImageView mIvGoodNumber; private AppCompatImageView mIvUserLevel; private AppCompatImageView mIvUserCharm; + private ImageView ivUserCardWear; private TextView tvFamilyNameLabel; private TextView tvFamilyName; private FlexboxLayout flexbox; @@ -206,6 +207,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe mIvGoodNumber = findViewById(R.id.iv_good_number); mIvUserLevel = findViewById(R.id.iv_user_level); mIvUserCharm = findViewById(R.id.iv_user_charm); + ivUserCardWear = findViewById(R.id.iv_user_card_wear); tvFamilyNameLabel = (TextView) findViewById(R.id.tv_family_name_label); tvFamilyName = (TextView) findViewById(R.id.tv_family_name); @@ -530,6 +532,13 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe setOfficialMask(null, null); } + //资料卡装扮 + if (!TextUtils.isEmpty(userInfo.getUserInfoCardPic())) { + ImageLoadUtils.loadImage(context, userInfo.getUserInfoCardPic(), ivUserCardWear); + } else { + ivUserCardWear.setImageDrawable(null); + } + if (null != findHimView) { //获取用户房间信息 AvRoomModel.get().getUserRoom(userInfo.getUid()) diff --git a/app/src/main/res/drawable-xhdpi/bg_user_card_wear.png b/app/src/main/res/drawable-xhdpi/bg_user_card_wear.png new file mode 100644 index 000000000..6432cd560 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_user_card_wear.png differ diff --git a/app/src/main/res/drawable-xhdpi/bg_user_card_wear_mask.png b/app/src/main/res/drawable-xhdpi/bg_user_card_wear_mask.png new file mode 100644 index 000000000..3dae51f3d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_user_card_wear_mask.png differ diff --git a/app/src/main/res/layout/dialog_user_info.xml b/app/src/main/res/layout/dialog_user_info.xml index 37dc34c2e..1104240d0 100644 --- a/app/src/main/res/layout/dialog_user_info.xml +++ b/app/src/main/res/layout/dialog_user_info.xml @@ -8,291 +8,304 @@ android:orientation="vertical" tools:background="#000"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="wrap_content"> + android:id="@+id/iv_user_card_wear" + android:layout_width="match_parent" + android:layout_height="180dp" + tools:background="@drawable/bg_user_card_wear" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_my_user_card_wear.xml b/app/src/main/res/layout/item_my_user_card_wear.xml new file mode 100644 index 000000000..0fcb4de34 --- /dev/null +++ b/app/src/main/res/layout/item_my_user_card_wear.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 57bbb6826..727cb98df 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -181,7 +181,7 @@ 9sp 33dp 31dp - 314dp + 330dp 44dp 19dp 23dp diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/HeadwearModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/HeadwearModel.java index c583763be..b442538cd 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/HeadwearModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/HeadwearModel.java @@ -4,8 +4,8 @@ import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.base.BaseModel; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; +import com.yizhuan.xchat_android_core.decoration.headwear.bean.UserCardWearInfo; import com.yizhuan.xchat_android_core.decoration.headwear.throwable.HeadwearPulledOffShelvesException; -import com.yizhuan.xchat_android_core.decoration.nameplate.bean.NamePlateInfo; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.utils.net.BalanceNotEnoughExeption; @@ -27,6 +27,10 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { private volatile static IHeadwearModel model; private Api api; + private HeadwearModel() { + api = RxNet.create(Api.class); + } + public static IHeadwearModel get() { if (model == null) { synchronized (HeadwearModel.class) { @@ -38,13 +42,9 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { return model; } - private HeadwearModel() { - api = RxNet.create(Api.class); - } - - /** * 获取商城头饰列表 + * * @param page * @param pageSize * @return @@ -66,11 +66,12 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 获取头饰详情 + * * @param headwearId * @return */ @Override - public Single> getHeadWearDetail(String headwearId){ + public Single> getHeadWearDetail(String headwearId) { return api.getHeadWearDetai(headwearId) .compose(RxHelper.handleSchedulers()); } @@ -100,6 +101,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 获取头饰账单 + * * @param uid * @param page * @param pageSize @@ -108,27 +110,28 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { @Override public Single>> getMyHeadWearBill(String uid, String page, - String pageSize){ - return api.getMyHeadWearBill(uid,page,pageSize) + String pageSize) { + return api.getMyHeadWearBill(uid, page, pageSize) .compose(RxHelper.handleSchedulers()); } /** * 使用已经购买的头饰 + * * @param headwearId * @return */ @Override - public Single userMyHeadWear(String headwearId){ + public Single userMyHeadWear(String headwearId) { long uid = AuthModel.get().getCurrentUid(); String ticket = AuthModel.get().getTicket(); - return api.userMyHeadWear(String.valueOf(uid),headwearId,ticket) + return api.userMyHeadWear(String.valueOf(uid), headwearId, ticket) .flatMap(new Function, SingleSource>() { @Override public SingleSource apply(ServiceResult stringServiceResult) throws Exception { if (stringServiceResult.isSuccess()) { return Single.just("使用成功"); - }else { + } else { return Single.error(new Throwable(stringServiceResult.getMessage())); } } @@ -142,13 +145,15 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { .compose(RxHelper.handleSchedulers()); } + /** * 购买/续费头饰 + * * @param headwearId * @return */ @Override - public Single buyHeadWear(long headwearId, String type){ + public Single buyHeadWear(long headwearId, String type) { long uid = AuthModel.get().getCurrentUid(); String ticket = AuthModel.get().getTicket(); return api.buyHeadWear( @@ -160,13 +165,13 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { .flatMap(new Function, SingleSource>() { @Override public SingleSource apply(ServiceResult stringServiceResult) throws Exception { - if (stringServiceResult.isSuccess()){ + if (stringServiceResult.isSuccess()) { return Single.just("购买成功."); - }else if (BalanceNotEnoughExeption.code == stringServiceResult.getCode()){ + } else if (BalanceNotEnoughExeption.code == stringServiceResult.getCode()) { return Single.error(new BalanceNotEnoughExeption(stringServiceResult.getMessage())); - }else if (HeadwearPulledOffShelvesException.code == stringServiceResult.getCode()){ + } else if (HeadwearPulledOffShelvesException.code == stringServiceResult.getCode()) { return Single.error(new HeadwearPulledOffShelvesException(stringServiceResult.getMessage())); - }else { + } else { return Single.error(new Throwable(stringServiceResult.getMessage())); } } @@ -202,12 +207,13 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 赠送头饰给某人 + * * @param headwearId * @param targetUid * @return */ @Override - public Single sendHeadWear(String headwearId, String targetUid){ + public Single sendHeadWear(String headwearId, String targetUid) { long uid = AuthModel.get().getCurrentUid(); String ticket = AuthModel.get().getTicket(); return api.sendHeadWear(String.valueOf(uid), @@ -218,13 +224,13 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { .flatMap(new Function, SingleSource>() { @Override public SingleSource apply(ServiceResult stringServiceResult) throws Exception { - if (stringServiceResult.isSuccess()){ + if (stringServiceResult.isSuccess()) { return Single.just("赠送成功."); - }else if (BalanceNotEnoughExeption.code == stringServiceResult.getCode()){ + } else if (BalanceNotEnoughExeption.code == stringServiceResult.getCode()) { return Single.error(new BalanceNotEnoughExeption(stringServiceResult.getMessage())); - }else if (HeadwearPulledOffShelvesException.code == stringServiceResult.getCode()){ + } else if (HeadwearPulledOffShelvesException.code == stringServiceResult.getCode()) { return Single.error(new HeadwearPulledOffShelvesException(stringServiceResult.getMessage())); - }else { + } else { return Single.error(new Throwable(stringServiceResult.getMessage())); } } @@ -257,10 +263,43 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { } + + /** + * 获取头饰列表 + * + * @return + */ + @Override + public Single>> getUserCardWearList(int page, int pageSize) { + return api.getMyUserCardWearList(page,pageSize) + .compose(RxHelper.handleSchedulers()); + } + + + /** + * 使用已经购买的头饰 + * + * @param wearId + * @return + */ + @Override + public Single useUserCardWear(String wearId) { + return api.userMyUserCardWear(wearId) + .flatMap(serviceResult -> { + if (serviceResult.isSuccess()) { + return Single.just("使用成功"); + } else { + return Single.error(new Throwable(serviceResult.getMessage())); + } + }) + .compose(RxHelper.handleSchedulers()); + } + private interface Api { /** * 获取商城头饰列表 + * * @param uid * @param page * @param pageSize @@ -281,6 +320,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 获取头饰详情 + * * @param headwearId * @return */ @@ -289,6 +329,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 获取我的头饰 + * * @param uid * @return */ @@ -306,6 +347,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 获取头饰账单 + * * @param uid * @param page * @param pageSize @@ -318,6 +360,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 使用头饰 + * * @param uid * @param headwear_id * @param ticket @@ -330,6 +373,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 购买/续费头饰 + * * @param uid * @param headwearId * @param ticket @@ -356,6 +400,7 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { /** * 赠送头饰 + * * @param uid * @param headwearId * @param target_uid @@ -378,6 +423,24 @@ public class HeadwearModel extends BaseModel implements IHeadwearModel { @Query("currencyType") int currencyType, @Query("headwearId") String headwearId, @Query("targetUid") String targetUid); + + /** + * 使用资料卡装扮 + * + * @param cardId + * @return + */ + @GET("userInfoCard/optUserInfoCard") + Single> userMyUserCardWear(@Query("cardId") String cardId); + + /** + * 分页获取用户资料卡装扮列表 + */ + @GET("userInfoCard/listByPage") + Single>> getMyUserCardWearList(@Query("page") int page, + @Query("pageSize") int pageSize); + } + } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/IHeadwearModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/IHeadwearModel.java index 2b6baae80..f28626738 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/IHeadwearModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/IHeadwearModel.java @@ -3,6 +3,7 @@ package com.yizhuan.xchat_android_core.decoration.headwear; import com.yizhuan.xchat_android_core.base.IModel; import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; +import com.yizhuan.xchat_android_core.decoration.headwear.bean.UserCardWearInfo; import com.yizhuan.xchat_android_core.decoration.nameplate.bean.NamePlateInfo; import java.util.List; @@ -93,4 +94,8 @@ public interface IHeadwearModel extends IModel { * 支付货币类型:0钻石,1萝卜 */ Single sendHeadWearV2(int currencyType, String headwearId, String targetUid); + + Single>> getUserCardWearList(int page, int pageSize); + + Single useUserCardWear(String wearId); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/bean/UserCardWearInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/bean/UserCardWearInfo.java new file mode 100644 index 000000000..2501eca51 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/decoration/headwear/bean/UserCardWearInfo.java @@ -0,0 +1,16 @@ +package com.yizhuan.xchat_android_core.decoration.headwear.bean; + +import lombok.Data; + +@Data +public class UserCardWearInfo { + private String cardId; + private int comeFrom; + private int expireDays; + private String expireTime; + private boolean hasExpired; + private String name; + private String pic; + private boolean used; + private int labelType; +}