Uniapp实现多个订单批量待付款倒计时

思路

当客户不付款生成一个待付款的订单这个待付款的订单需要获取它30分钟后的时间然后保存到数据库

然后前台将当前时间减去从数据库拿到的时间进行倒计时

注意 必须要24小时制的时间

首先准备一个times.js

/**
 * 订单未付款  倒计时 
 * @param {*} time  结束时间
 */
function countDownFun(time) {
	
    let startTime = new Date().getTime();
	console.log("startTime:"+startTime)
    // let startTime = new Date(); //当前时间
	
    let end = new Date(time).getTime(); //结束时间
	console.log("end:"+end)
    // console.log(end)
    let result = parseInt((end - startTime) / 1000); //计算出豪秒
    let d = parseInt(result / (24 * 60 * 60)); //用总共的秒数除以1天的秒数
    let h = parseInt((result / (60 * 60)) % 24); //精确小时,用去余
    let m = parseInt((result / 60) % 60); //剩余分钟就是用1小时等于60分钟进行趣余
    let s = parseInt(result % 60);
    //统一格式的显示
    d < 10 ? d = '0' + d : d;
    h < 10 ? h = '0' + h : h;
    m < 10 ? m = '0' + m : m;
    s < 10 ? s = '0' + s : s;
    //当倒计时结束时,改变内容
    if (result <= 0) {
        return "订单超时";
    }
    if (d == '00') {
        return h + "时" + m + "分" + s + "秒";;
    }
    if (d == '00' && h == '00') {
        return m + "分" + s + "秒";;
    }
    if (d == '00' && h == '00' && m == '00') {
        return s + "秒";;
    }
    return d + "天" + h + "时" + m + "分" + s + "秒";
}
 
module.exports = {
    countDownFun
 
}

方法(超时就重新获取一遍订单 times==你从后台获取的订单数据) toBePaid: []

	timer(times) {
				let that = this;
				this.myInterv = setInterval(() => {
					//reserveNo
					times.forEach((item, index) => {
						if (item.currentTime == '订单超时') {
							let url = "http://localhost:9977/reserve/UpdatePaYstate"
							uni.request({
								url: url,
								method: "post",
								header: {
									'content-type': 'application/x-www-form-urlencoded'
								},
								data: {
									reserveNo: item.reserveNo,
								},
								success: (res) => {
                                    //再查询一遍数据
									that.getToBePaid(that.optionsid)
								}
							})
						} else { //关键点   item.expiretime==你每次生成一个待付款的订单要把当前时间存储进数据库的时间
                            //必须要是24小时制不然会有问题
							item.expiretime;
							that.$set(item, 'currentTime', countDownFun(item.expiretime));
						}

					});
				}, 1000);


			},

后端

         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd :HH:mm:ss");
           long currentTime = System.currentTimeMillis();
                currentTime += 30 * 60 * 1000;
                Date dates = new Date(currentTime);
                String format = dateFormat.format(dates);
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐