handle(); }); }); /** * 积分自动转入爱心值 */ \Event::listen('cron.collectJobs', function () { \Cron::add('PointToLoveQueue', '*/10 * * * *', function () { (new PointToLoveQueue())->handle(); }); }); /** * 每月初定时更新缓存 */ \Event::listen('cron.collectJobs', function () { \Cron::add('Update-cache', '0 0 1 * *', function () { (new UpdateCache())->handle(); return; }); }); /** * 商品购买每月赠送优惠券 */ \Event::listen('cron.collectJobs', function () { \Cron::add('MonthParentRewardPoint', '*/13 * * * *', function () { (new MonthParentRewardPoint())->handle(); return; }); }); /** * 商城订单统计 */ \Event::listen('cron.collectJobs', function () { \Cron::add('OrderStatistics', '0 1 * * *', function () { (new ShopOrderStatistics())->handle(); return; }); }); /** * 会员下线统计定时任务 */ \Event::listen('cron.collectJobs', function () { \Cron::add('MemberLower', '0 1 * * *', function () { (new MemberLower())->handle(); return; }); }); /** * 微信v3提现 */ \Event::listen('cron.collectJobs', function () { \Cron::add('WechatWithdraw', '*/5 * * * *', function () { (new WechatWithdraw())->handle(); return; }); }); \Event::listen('cron.collectJobs', function () { \Cron::add('PhoneAttributions', '0 1 * * *', function () { (new PhoneAttributions())->handle(); return; }); }); /** * 余额短信提醒定时任务 */ \Event::listen('cron.collectJobs', function () { foreach (UniAccount::getEnable() as $uniAccount) { \Setting::$uniqueAccountId = \YunShop::app()->uniacid = $uniAccount->uniacid; if (!\Setting::get('finance.balance.sms_send')) continue; $cron_time = (string)\Setting::get('finance.balance.sms_hour') ?: '0'; \Cron::add('SmsMessage' . $uniAccount->uniacid, '0 ' . $cron_time . ' * * *', function () use ($uniAccount) { (new SmsBalance())->handle($uniAccount->uniacid); }); } }); /** * 商品默认好评 */ \Event::listen('cron.collectJobs', function () { //该功能对时效性要求不高,选个任务少的时间段执行即可 \Cron::add('GoodsDefaultComment', '*/30 3 * * *', function () { (new GoodsDefaultComment())->handle(); }); }); /** * 商品上下架 */ \Event::listen('cron.collectJobs', function () { \Cron::add('UpperLowerShelves', '*/5 * * * *', function () { (new UpperLowerShelves())->handle(); }); }); /** * 商品限时购 */ \Event::listen('cron.collectJobs', function () { \Cron::add('Limit-buy', '*/10 * * * *', function () { (new LimitBuy())->handle(); return; }); }); /** * 定时任务、队列情况记录 */ \Event::listen('cron.collectJobs', function () { \Cron::add('HeartbeatStatusLog', '*/1 * * * *', function () { (new HeartbeatStatusLog())->handle(); }); }); /** * 删除系统消息 */ \Event::listen('cron.collectJobs', function () { \Cron::add('SystemMsgDestroy', '0 1 * * *', function () {//每天1点删 (new SystemMsgDestroy())->handle(); }); }); /** * 每分钟清除超时的预扣库存记录 */ \Event::listen('cron.collectJobs', function () { \Cron::add("ClearWithholdStock", '*/1 * * * *', function () { (new ClearWithholdStock())->handle(); }); }); /** * 订单自动任务 */ \Event::listen('cron.collectJobs', function () { // 订单支付回调时间超过订单关闭时间,报错误自动退款 \Cron::add('PayExceptionRefund', '*/30 * * * *', function () { (new PayExceptionRefund())->handle(); }); \Cron::add("DaemonQueue", '*/1 * * * *', function () { (new DaemonQueue())->handle(); }); // 虚拟订单修复 \Log::info("--虚拟订单修复--"); \Cron::add("VirtualOrderFix", '* */1 * * *', function () { $orders = DB::table('yz_order')->whereIn('status', [1, 2])->where('is_virtual', 1)->where('refund_id', 0)->where('is_pending', 0)->get(); // 所有超时未收货的订单,遍历执行收货 $orders->each(function ($order) { OrderService::fixVirtualOrder($order); }); // todo 使用队列执行 }); $uniAccount = UniAccount::getEnable(); foreach ($uniAccount as $u) { \Setting::$uniqueAccountId = \YunShop::app()->uniacid = $accountId = $uniacid = $u->uniacid; //订单自动发货 $sendMin = 5; // 开启自动收货时 \Log::info("--{$accountId}订单自动发货任务注册--"); \Cron::add("OrderSend{$u->uniacid}", '*/' . $sendMin . ' * * * *', function () use ($accountId) { \Log::info("--{$accountId}订单自动发货开始执行--"); OrderService::autoSend($accountId); }); // 订单自动收货执行间隔时间 默认60分钟 $receive_min = 5;//(int)\Setting::get('shop.trade.receive_time') ?: 60; if ((int)\Setting::get('shop.trade.receive')) { // 开启自动收货时 \Log::info("--{$u->uniacid}订单自动完成任务注册--"); \Cron::add("OrderReceive{$u->uniacid}", '*/' . $receive_min . ' * * * *', function () use ($uniacid) { \Log::info("--{$uniacid}订单自动完成开始执行--"); // 所有超时未收货的订单,遍历执行收货 OrderService::autoReceive($uniacid); // todo 使用队列执行 }); } // 订单自动关闭执行间隔时间 默认60分钟 $close_min = 5;//(int)\Setting::get('shop.trade.close_order_time') ?: 59; if ((int)\Setting::get('shop.trade.close_order_days')) { // 开启自动关闭时 \Log::info("--订单自动关闭start--"); \Cron::add("OrderClose{$u->uniacid}", '*/' . $close_min . ' * * * * ', function () use ($uniacid) { // 所有超时付款的订单,遍历执行关闭 OrderService::autoClose($uniacid); // todo 使用队列执行 }); } } }); /** * 优惠券定时任务 */ \Event::listen('cron.collectJobs', function () { \Cron::add('CouponExpired', '*/10 * * * *', function () { (new CouponExpired())->handle(); }); \Cron::add('CouponExpiredNear', '0 2 * * *', function () { (new CouponExpired())->handle(1); }); \Cron::add('CouponSysMessage', '0 2 * * *', function () { (new CouponSysMessage())->handle(); }); /** * 购买商品按月发放优惠券 */ \Cron::add('MonthCouponSend', '0 1 1 * *', function() { (new MonthCouponSend())->handle(); }); // 购买商品 每月支付时间发放优惠券 \Cron::add('MonthPayTimeCouponSend', '*/1 * * * *', function() { (new MonthPayTimeCouponSend())->handle(); }); /** * 购买商品订单完成发放优惠券 */ \Cron::add('OrderCouponSend', '*/1 * * * *', function() { (new OrderCouponSend())->handle(); }); \Cron::add('CouponExpireNotice', '*/10 * * * *', function () { (new CouponExpireNotice())->handle(); }); \Cron::add('CouponSend', '*/10 * * * *', function () { (new CouponSend())->handle(); }); }); /** * 会员等级过期 */ \Event::listen('cron.collectJobs', function () { \Cron::add('MemberLevelValidity', '*/10 * * * *', function () { (new MemberLevelValidity())->handle(); }); }); \Event::listen('cron.collectJobs', function () { \Cron::add('DisableUserAccount', '0 * * * *', function () { (new DisableUserAccount())->handle(); }); }); } }