Commit 8c0c84cc authored by jianglx's avatar jianglx

优化待支付订单倒计时

parent 55f9810e
......@@ -2,6 +2,7 @@ package com.xxfc.rv;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
......@@ -21,10 +22,12 @@ import com.ruiwenliu.wrapper.util.listener.SwitchFragment;
import com.ruiwenliu.wrapper.weight.CustomScrollViewPager;
import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.camp.CampFragment;
import com.rv.component.utils.Cooker;
import com.rv.home.rv.module.ApiConfig;
import com.rv.home.rv.module.basic.presenter.CommonPresenter;
import com.rv.home.rv.module.ui.main.adapter.TabAdapter;
import com.rv.home.rv.module.ui.main.home.HomeFragment;
import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean;
import com.rv.rvmine.MineFragment;
import com.rv.tourism.R2;
import com.rv.tourism.TourismFragment;
......@@ -104,6 +107,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> {
@Override
protected void loadData(Bundle savedInstanceState, Intent intent) {
checkVersion();
getEffectiveTime();
}
@Override
......@@ -124,6 +128,14 @@ public class MainActivity extends BaseActivity<CommonPresenter> {
}
}
break;
case 1:
EffectiveTimeBean bean = (EffectiveTimeBean) result;
if (bean != null && bean.isRel() && bean.getData() != null) {
Cooker.save(getApplicationContext(), "actRent", bean.getData().getActRent());
Cooker.save(getApplicationContext(), "actTour", bean.getData().getActTour());
Cooker.save(getApplicationContext(), "insurePrice", bean.getData().getInsurePrice());
}
break;
default:
break;
}
......@@ -230,6 +242,10 @@ public class MainActivity extends BaseActivity<CommonPresenter> {
}
}
private void getEffectiveTime() {
mPresenter.getData(1, ApiConfig.HTTP_URL_EFFECTIVE_TIME, EffectiveTimeBean.class, false);
}
/**
* 退出APP
*/
......
package com.rv.component.utils;
import android.content.Context;
import android.content.SharedPreferences;
public class Cooker {
private final static String COOK_FILE = "cooker";
private static SharedPreferences preferences;
private static SharedPreferences getPreference(Context context) {
if (preferences == null) {
preferences = context.getSharedPreferences(COOK_FILE, Context.MODE_PRIVATE);
}
return preferences;
}
public static void save(Context context, String key, String s) {
getPreference(context).edit().putString(key, s).commit();
}
public static void save(Context context, String key, int i) {
getPreference(context).edit().putInt(key, i).commit();
}
public static void save(Context context, String key, long l) {
getPreference(context).edit().putLong(key, l).commit();
}
public static void save(Context context, String key, boolean b) {
getPreference(context).edit().putBoolean(key, b).commit();
}
public static void save(Context context, String key, float f) {
getPreference(context).edit().putFloat(key, f).commit();
}
public static String getStringValue(Context context, String key) {
return getStringValue(context, key, "");
}
public static String getStringValue(Context context, String key, String def) {
return getPreference(context).getString(key, def);
}
public static int getIntValue(Context context, String key) {
return getIntValue(context, key, -1);
}
public static int getIntValue(Context context, String key, int def) {
return getPreference(context).getInt(key, def);
}
public static long getLongValue(Context context, String key) {
return getLongValue(context, key, 0l);
}
public static long getLongValue(Context context, String key, long def) {
return getPreference(context).getLong(key, def);
}
public static float getFloatValue(Context context, String key) {
return getFloatValue(context, key, 0f);
}
public static float getFloatValue(Context context, String key, float def) {
return getPreference(context).getFloat(key, def);
}
public static boolean getBooleanValue(Context context, String key) {
return getBooleanValue(context, key, false);
}
public static boolean getBooleanValue(Context context, String key, boolean def) {
return getPreference(context).getBoolean(key, def);
}
}
......@@ -126,7 +126,7 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
@Override
protected void loadData(Bundle savedInstanceState) {
getEffectiveTime();
}
private Handler handler = new Handler(Looper.getMainLooper()) {
......@@ -177,24 +177,6 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
case 1:
pay((OrderPayBean) result);
break;
case 2:
EffectiveTimeBean bean = (EffectiveTimeBean) result;
if (bean != null && bean.isRel() && bean.getData() != null) {
effTime = bean.getData().getActRent();
startTime();
}
break;
}
}
/******
* 开始计时
* @param
*/
private void startTime() {
if (effTime != 0l && mAdapter != null && mAdapter.getData() != null) {
mAdapter.setEffTime(effTime);
}
}
......@@ -230,10 +212,6 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
}
}
private void getEffectiveTime() {
mPresenter.getData(2, ApiConfig.HTTP_URL_EFFECTIVE_TIME, EffectiveTimeBean.class, false);
}
private void orderData(int page) {
Map<String, Object> headMap = new LinkedHashMap<>();
if (OkGoUtil.getToken() != null)
......
......@@ -8,9 +8,12 @@ import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.ruiwenliu.wrapper.util.BaseGlideHolder;
import com.ruiwenliu.wrapper.util.TimeManager;
import com.rv.component.utils.Cooker;
import com.rv.home.R;
import com.rv.home.rv.module.ui.main.home.order.bean.OrderListBean;
import com.rv.home.rv.module.ui.main.home.order.view.MyTimerView;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
......@@ -22,10 +25,10 @@ import java.util.List;
*/
public class ForPaymentAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity, BaseGlideHolder> {
public static final int TYPE_FOR_PAYMENT = 1; //1--租车;2--旅游
public static final int TYPE_TO_TRAVEL = 2;
public static final int TYPE_TO_MEMBER = 3;
private long effTime = 0l;
public ForPaymentAdapter(List<MultiItemEntity> data) {
super(data);
......@@ -38,17 +41,13 @@ public class ForPaymentAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity
protected void convert(BaseGlideHolder helper, MultiItemEntity item) {
OrderListBean.DataBeanX.DataBean dataBean;
try {
setTimes(helper, (OrderListBean.DataBeanX.DataBean) item);
} catch (Exception e) {
e.printStackTrace();
}
switch (helper.getItemViewType()) {
case TYPE_FOR_PAYMENT:
dataBean = (OrderListBean.DataBeanX.DataBean) item;
if (dataBean == null) {
return;
}
setTimes(Cooker.getLongValue(mContext, "actRent"), helper, (OrderListBean.DataBeanX.DataBean) item);
helper.setText(R.id.tv_order_time, String.format("%1$s%2$s", mContext.getString(R.string.rv_order_time), dataBean.getCrtTime()));
if (dataBean.getOrderRentVehicleDetail() != null && dataBean.getOrderRentVehicleDetail().getStart_city_name() != null) {
helper.setText(R.id.tv_city, dataBean.getOrderRentVehicleDetail().getStart_city_name());
......@@ -75,6 +74,7 @@ public class ForPaymentAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity
if (dataBean.getOrderTourDetail() == null) {
return;
}
setTimes(Cooker.getLongValue(mContext, "actTour"), helper, (OrderListBean.DataBeanX.DataBean) item);
helper.setText(R.id.tv_order_time, String.format("%1$s%2$s", mContext.getString(R.string.rv_order_time), dataBean.getCrtTime()));
helper.setText(R.id.tv_city, dataBean.getOrderTourDetail().getStartCityName());
helper.loadRoundImage(mContext, dataBean.getPicture(), (ImageView) helper.getView(R.id.iv_goods), 10);
......@@ -101,15 +101,17 @@ public class ForPaymentAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity
helper.setText(R.id.tv_price, String.format("¥%1$s", dataBean.getOrderAmount()));
helper.setText(R.id.tv_member_pay, mContext.getString(R.string.rv_to_pay_for));
helper.addOnClickListener(R.id.tv_member_pay);
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_for_payment));
break;
}
}
private void setTimes(BaseGlideHolder helper, OrderListBean.DataBeanX.DataBean bean) throws Exception {
private void setTimes(long effTime, BaseGlideHolder helper, OrderListBean.DataBeanX.DataBean bean) {
if (bean != null) {
String crtStr = bean.getCrtTime();
if (!TextUtils.isEmpty(crtStr)) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = format.parse(crtStr);
long remain = effTime - (System.currentTimeMillis() - date.getTime());
if (remain <= 0) {
......@@ -129,6 +131,9 @@ public class ForPaymentAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_for_payment));
((MyTimerView) helper.itemView.findViewById(R.id.tv_remain_time)).setTime(effTime, date.getTime(), timerListener);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
......@@ -139,15 +144,6 @@ public class ForPaymentAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity
notifyDataSetChanged();
}
/******
* 设置失效时间
* @param effTime
*/
public void setEffTime(long effTime) {
this.effTime = effTime;
notifyDataSetChanged();
}
public MyTimerView.TimerListener timerListener = new MyTimerView.TimerListener() {
@Override
public void onTimeFinish() {
......
package com.rv.home.rv.module.ui.main.home.order.adapter;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.ruiwenliu.wrapper.util.BaseGlideHolder;
import com.ruiwenliu.wrapper.util.TimeManager;
import com.rv.component.utils.Cooker;
import com.rv.home.R;
import com.rv.home.R2;
import com.rv.home.rv.module.ui.main.home.order.bean.ForPaymentBean;
import com.rv.home.rv.module.ui.main.home.order.bean.OrderListBean;
import com.rv.home.rv.module.ui.main.home.order.bean.ToTravelBean;
import com.rv.home.rv.module.ui.main.home.order.view.MyTimerView;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
......@@ -80,6 +86,7 @@ public class OrderListAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity,
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_for_payment));
helper.setText(R.id.tv_process, mContext.getString(R.string.rv_to_pay_for));
helper.setVisible(R.id.tv_process, true);
setTimes(Cooker.getLongValue(mContext, "actRent"), helper, (OrderListBean.DataBeanX.DataBean) item);
break;
case 4:
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_to_travel));
......@@ -145,6 +152,7 @@ public class OrderListAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity,
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_for_payment));
helper.setText(R.id.tv_camp_process, mContext.getString(R.string.rv_to_pay_for));
helper.setVisible(R.id.tv_camp_process, true);
setTimes(Cooker.getLongValue(mContext, "actTour"), helper, (OrderListBean.DataBeanX.DataBean) item);
break;
case 4:
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_to_travel));
......@@ -228,4 +236,43 @@ public class OrderListAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity,
notifyDataSetChanged();
}
private void setTimes(long effTime, BaseGlideHolder helper, OrderListBean.DataBeanX.DataBean bean) {
if (bean != null) {
String crtStr = bean.getCrtTime();
if (!TextUtils.isEmpty(crtStr)) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = format.parse(crtStr);
long remain = effTime - (System.currentTimeMillis() - date.getTime());
if (remain <= 0) {
helper.setText(R.id.tv_order_state, mContext.getString(R.string.tv_order_cancel));
switch (bean.getType()) {
case TYPE_FOR_PAYMENT:
helper.itemView.findViewById(R.id.tv_process).setVisibility(View.GONE);
break;
case TYPE_TO_TRAVEL:
helper.itemView.findViewById(R.id.tv_camp_process).setVisibility(View.GONE);
break;
case TYPE_TO_MEMBER:
helper.itemView.findViewById(R.id.tv_member_pay).setVisibility(View.GONE);
break;
}
} else {
helper.setText(R.id.tv_order_state, mContext.getString(R.string.rv_order_for_payment));
((MyTimerView) helper.itemView.findViewById(R.id.tv_remain_time)).setTime(effTime, date.getTime(), timerListener);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
public MyTimerView.TimerListener timerListener = new MyTimerView.TimerListener() {
@Override
public void onTimeFinish() {
notifyDataSetChanged();
}
};
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment