diff --git a/app/src/main/java/com/xwad/os/activity/activation/ActivationActivity.java b/app/src/main/java/com/xwad/os/activity/activation/ActivationActivity.java index 7a9df0d..fe2cb2e 100644 --- a/app/src/main/java/com/xwad/os/activity/activation/ActivationActivity.java +++ b/app/src/main/java/com/xwad/os/activity/activation/ActivationActivity.java @@ -34,6 +34,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers; public class ActivationActivity extends BaseMvvmActivity { private Disposable pollingDisposable; + private String mCoupons; @Override protected int getLayoutId() { @@ -75,10 +76,10 @@ public class ActivationActivity extends BaseMvvmActivity() { + @Override + public void onChanged(String s) { + mViewDataBinding.llCouponsInput.setVisibility(View.GONE); + mViewDataBinding.llCouponsQrcode.setVisibility(View.VISIBLE); + mCoupons = s; + } + }); + mViewModel.mCouponsLegalData.observe(this, new Observer() { + @Override + public void onChanged(Boolean aBoolean) { + if (aBoolean) { + mViewModel.getCouponsVipList(); + } + } + }); + mViewModel.mCouponsVipInfoListData.observe(this, new Observer>() { + @Override + public void onChanged(List vipInfos) { + Optional optional = vipInfos.stream().findFirst(); + if (optional.isPresent()) { + VipInfo vipInfo = optional.get(); + mViewDataBinding.tvCouponsVipOriginPrice.setText("¥" + vipInfo.getOrigin_price()); +// mViewDataBinding.tvCouponsVipPrice.setText("¥" + vipInfo.getPrice()); + mViewModel.getCouponsPayInfo(vipInfo.getId(), mCoupons); + } + } + }); + mViewModel.mCouponsOrderInfoData.observe(this, new Observer() { + @Override + public void onChanged(OrderInfo orderInfo) { + if (orderInfo != null) { + mViewModel.getCouponsQrCodeUrl(orderInfo.getOrder_sn()); + } + } + }); + mViewModel.mCouponsAlreadyActivatedData.observe(this, new Observer() { + @Override + public void onChanged(Boolean aBoolean) { + finish(); + } + }); + + mViewModel.mCouponsPayInfoData.observe(this, new Observer() { + @Override + public void onChanged(PayInfo payInfo) { + if (payInfo != null) { + String url = payInfo.getCode_url(); + long expireTime = payInfo.getTime_expire(); +// initWechatCountdown(expireTime); + mViewDataBinding.tvCouponsVipPrice.setText("¥" + payInfo.getPrice()); + Bitmap bitmap = BitmapUtils.createQRImage(url, 400, getColor(R.color.black), getColor(R.color.white)); + mViewDataBinding.ivCouponsQrcode.setImageBitmap(bitmap); + } + } + }); + } @Override @@ -197,6 +256,8 @@ public class ActivationActivity extends BaseMvvmActivity { + private static final String TAG = "ActivationViewModel"; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); @@ -82,12 +84,12 @@ public class ActivationViewModel extends BaseViewModel>() { @Override public void onSubscribe(@NonNull Disposable d) { - Log.e("getPayUrl", "onSubscribe: "); + Log.e("getPayInfo", "onSubscribe: "); } @Override public void onNext(@NonNull BaseResponse baseResponse) { - Log.e("getPayUrl", "onNext: " + baseResponse); + Log.e("getPayInfo", "onNext: " + baseResponse); if (baseResponse.code == 200) { OrderInfo orderInfo = baseResponse.data; mOrderInfoData.setValue(orderInfo); @@ -102,12 +104,12 @@ public class ActivationViewModel extends BaseViewModel mCouponsLegalData = new MutableLiveData<>(); + public MutableLiveData mCouponsData = new MutableLiveData<>(); + + public void checkCoupons(String coupons) { + NetInterfaceManager.getInstance().getCheckCouponsControl(coupons) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("checkCoupons", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("checkCoupons", "onNext: " + baseResponse); + if (baseResponse.code == 200) { + mCouponsLegalData.setValue(true); + mCouponsData.setValue(coupons); + } else { + Toaster.show(baseResponse.msg); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("checkCoupons", "onError: "); + } + + @Override + public void onComplete() { + Log.e("checkCoupons", "onComplete: "); + } + }); + } + + public MutableLiveData> mCouponsVipInfoListData = new MutableLiveData<>(); + + public void getCouponsVipList() { + NetInterfaceManager.getInstance().getVipListControl() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getCouponsVipList", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getCouponsVipList", "onNext: " + listBaseResponse); + if (listBaseResponse.code == 200) { + List vipInfos = listBaseResponse.data; + mCouponsVipInfoListData.setValue(vipInfos); + } else { + Toaster.show(listBaseResponse.msg); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getCouponsVipList", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getCouponsVipList", "onComplete: "); + } + }); + } + + public MutableLiveData mCouponsOrderInfoData = new MutableLiveData<>(); + public MutableLiveData mCouponsAlreadyActivatedData = new MutableLiveData<>(); + + public void getCouponsPayInfo(String vipId, String coupons) { + NetInterfaceManager.getInstance().getBuyVipControl(vipId, coupons) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getCouponsPayInfo", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("getCouponsPayInfo", "onNext: " + baseResponse); + if (baseResponse.code == 200) { + OrderInfo orderInfo = baseResponse.data; + mCouponsOrderInfoData.setValue(orderInfo); + } else if (baseResponse.code == 4009) { + ActivationUtil.getInstance().setActivation(1); + + mCouponsAlreadyActivatedData.setValue(true); + } else { + Toaster.show(baseResponse.msg); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getCouponsPayInfo", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getCouponsPayInfo", "onComplete: "); + } + }); + } + + public MutableLiveData mCouponsPayInfoData = new MutableLiveData<>(); + + public void getCouponsQrCodeUrl(String orderSn) { + NetInterfaceManager.getInstance().getPayQrcodeControl(orderSn) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getQrCodeUrl", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("getQrCodeUrl", "onNext: " + baseResponse); + if (baseResponse.code == 200) { + PayInfo payInfo = baseResponse.data; + mCouponsPayInfoData.setValue(payInfo); + } else { + Toaster.show(baseResponse.data); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getQrCodeUrl", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getQrCodeUrl", "onComplete: "); + } + }); + } + } diff --git a/app/src/main/java/com/xwad/os/activity/homework/HomeworkDetailsActivity.java b/app/src/main/java/com/xwad/os/activity/homework/HomeworkDetailsActivity.java index a68b64d..79ccf73 100644 --- a/app/src/main/java/com/xwad/os/activity/homework/HomeworkDetailsActivity.java +++ b/app/src/main/java/com/xwad/os/activity/homework/HomeworkDetailsActivity.java @@ -109,9 +109,9 @@ public class HomeworkDetailsActivity extends BaseMvvmActivity> getBuyVipControl(String vipId, String coupons) { + return mRetrofit.create(UserApi.class) + .buyVip(getToken(), LenovoCsdkUtil.getInstance().getSerial(), vipId, coupons) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getCheckCouponsControl(String coupons) { + return mRetrofit.create(UserApi.class) + .checkCoupons(getToken(), coupons) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + public Observable getCodeActivationControl(String code) { return mRetrofit.create(UserApi.class) .codeActivation(getToken(), LenovoCsdkUtil.getInstance().getSerial(), code) @@ -1051,8 +1065,8 @@ public class NetInterfaceManager { public void updateAdminInfo() { String address = String.valueOf(mMMKV.decodeString(CommonConfig.MAP_ADDRESS_KEY, "-")); - String longitude = String.valueOf(mMMKV.decodeDouble(CommonConfig.MAP_LONGITUDE_KEY, 0L)); - String latitude = String.valueOf(mMMKV.decodeDouble(CommonConfig.MAP_LATITUDE_KEY, 0L)); + String longitude = String.valueOf(mMMKV.decodeString(CommonConfig.MAP_LONGITUDE_KEY, "0")); + String latitude = String.valueOf(mMMKV.decodeString(CommonConfig.MAP_LATITUDE_KEY, "0")); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("address", address); jsonObject.addProperty("longitude", longitude); diff --git a/app/src/main/java/com/xwad/os/network/UrlAddress.java b/app/src/main/java/com/xwad/os/network/UrlAddress.java index 0688892..ffa68da 100644 --- a/app/src/main/java/com/xwad/os/network/UrlAddress.java +++ b/app/src/main/java/com/xwad/os/network/UrlAddress.java @@ -24,6 +24,9 @@ public class UrlAddress { public static final String VIP_LIST = "user/vip-list"; /*购买VIP下订单*/ public static final String BUY = "user/buy"; + /*优惠口令查询*/ + public static final String DISCOUNT_CODE_QUERY = "user/discount-code-query"; + /*激活码激活*/ public static final String activation_code = "activation/code"; /*获取激活码(激活成功后才有)*/ diff --git a/app/src/main/java/com/xwad/os/network/api/UserApi.java b/app/src/main/java/com/xwad/os/network/api/UserApi.java index 8f9ec49..eb2bcdf 100644 --- a/app/src/main/java/com/xwad/os/network/api/UserApi.java +++ b/app/src/main/java/com/xwad/os/network/api/UserApi.java @@ -38,6 +38,21 @@ public interface UserApi { @Field("vip_level_id") String vip_level_id ); + @FormUrlEncoded + @POST(UrlAddress.BUY) + Observable> buyVip( + @Header("token") String token, + @Field("sn") String sn, + @Field("vip_level_id") String vip_level_id, + @Field("discount_code") String coupons + ); + + @GET(UrlAddress.DISCOUNT_CODE_QUERY) + Observable checkCoupons( + @Header("token") String token, + @Query("discount_code") String discount_code + ); + @FormUrlEncoded @POST(UrlAddress.activation_code) Observable codeActivation( diff --git a/app/src/main/res/drawable-xxhdpi/icon_activation_use_coupons.png b/app/src/main/res/drawable-xxhdpi/icon_activation_use_coupons.png index 3fb340b..f746af5 100644 Binary files a/app/src/main/res/drawable-xxhdpi/icon_activation_use_coupons.png and b/app/src/main/res/drawable-xxhdpi/icon_activation_use_coupons.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_activation_use_key.png b/app/src/main/res/drawable-xxhdpi/icon_activation_use_key.png index 0b27f3a..76dcdaa 100644 Binary files a/app/src/main/res/drawable-xxhdpi/icon_activation_use_key.png and b/app/src/main/res/drawable-xxhdpi/icon_activation_use_key.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_activation_use_qrcode.png b/app/src/main/res/drawable-xxhdpi/icon_activation_use_qrcode.png index 5b9929c..d9bddb4 100644 Binary files a/app/src/main/res/drawable-xxhdpi/icon_activation_use_qrcode.png and b/app/src/main/res/drawable-xxhdpi/icon_activation_use_qrcode.png differ diff --git a/app/src/main/res/layout/activity_activation.xml b/app/src/main/res/layout/activity_activation.xml index 0912630..7227396 100644 --- a/app/src/main/res/layout/activity_activation.xml +++ b/app/src/main/res/layout/activity_activation.xml @@ -162,7 +162,7 @@ android:textSize="9sp" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +