You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.3 KiB

<?php
namespace app\integral\controller\api;
use app\integral\model\IntegralConfig;
use app\integral\model\IntegralOrder;
use think\facade\Db;
class Crontab extends Base
{
/**
* 每5分钟--定时取消超过时间的未支付订单
* @date 2022-11-21
*/
public function orderCancel()
{
$order_model = new IntegralOrder();
$config_model = new IntegralConfig();
$order_logic = new \app\integral\logic\Order();
// 获取全部满足条件的订单
$where = [
// 待支付
['status', '=', 1]
];
$order_list = $order_model->getAllData($where, 'id,uid,create_time');
//获取积分商城配置-X分钟后未付款订单自动取消
$order_cancel_minute = $config_model->column('order_cancel_minute', 'uid');
foreach ($order_list as $k => $v) {
if (strtotime($v['create_time']) + $order_cancel_minute[$v['uid']] * 60 <= time()) {
Db::startTrans();
$res = $order_logic->cancelOrder($v['id'], 3);
if ($res['code'] != 0) {
Db::rollback();
}
Db::commit();
}
}
dump('success');
}
/**
* 每天0:01--定时确认收货超过时间的未收货订单
* @date 2022-02-11
*/
public function orderFinish()
{
$order_model = new IntegralOrder();
$config_model = new IntegralConfig();
$order_logic = new \app\integral\logic\Order();
// 获取全部满足条件的订单
$where = [
// 待收货
['status', '=', 3]
];
$order_list = $order_model->getAllData($where,'id,uid,express_time');
// 获取积分商城配置-X天自动确认收货
$order_confirm_day = $config_model->column('order_confirm_day', 'uid');
foreach ($order_list as $k => $v) {
if (strtotime($v['express_time']) + $order_confirm_day[$v['uid']] * 24 * 3600 <= time()) {
Db::startTrans();
$res = $order_logic->finishOrder($v['id'], 3);
if ($res['code'] != 0) {
Db::rollback();
}
Db::commit();
}
}
dump('success');
}
}