75 lines
2.8 KiB
PHP
75 lines
2.8 KiB
PHP
|
|
<?php
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
|
// +----------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
namespace app\jobs\activity;
|
|||
|
|
|
|||
|
|
use app\services\activity\holiday\HolidayGiftPushServices;
|
|||
|
|
use app\services\activity\holiday\HolidayGiftRecordServices;
|
|||
|
|
use crmeb\basic\BaseJobs;
|
|||
|
|
use crmeb\traits\QueueTrait;
|
|||
|
|
use think\facade\Log;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 节日有礼用户权益处理队列
|
|||
|
|
* Class HolidayGiftJob
|
|||
|
|
* @package app\jobs\activity
|
|||
|
|
*/
|
|||
|
|
class HolidayGiftJob extends BaseJobs
|
|||
|
|
{
|
|||
|
|
use QueueTrait;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 处理单个用户的节日有礼权益
|
|||
|
|
* @param int $uid 用户ID
|
|||
|
|
* @param array $giftInfo 活动信息
|
|||
|
|
* @return bool
|
|||
|
|
*/
|
|||
|
|
public function doJob(int $uid, array $giftInfo)
|
|||
|
|
{
|
|||
|
|
try {
|
|||
|
|
/** @var HolidayGiftPushServices $holidayGiftPushServices */
|
|||
|
|
$holidayGiftPushServices = app()->make(HolidayGiftPushServices::class);
|
|||
|
|
$holidayGiftRecordServices = app()->make(HolidayGiftRecordServices::class);
|
|||
|
|
|
|||
|
|
//检查是否需要提前推送或当天推送
|
|||
|
|
if (!$holidayGiftPushServices->checkAdvancePush($giftInfo, true, $uid)) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
// 检查用户是否符合活动条件
|
|||
|
|
if (!$holidayGiftPushServices->checkUserCondition($uid, $giftInfo)) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 检查是否可以推送(频次限制)
|
|||
|
|
if ($holidayGiftRecordServices->checkUserCanPush($uid, $giftInfo['id'])) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 执行赠送权益
|
|||
|
|
$grantResults = $holidayGiftPushServices->grantUserBenefits($uid, $giftInfo);
|
|||
|
|
|
|||
|
|
// 记录推送记录(无论成功失败都要记录)
|
|||
|
|
$holidayGiftPushServices->recordPushLog($uid, $giftInfo);
|
|||
|
|
|
|||
|
|
if ($grantResults) {
|
|||
|
|
Log::info("用户{$uid}节日有礼处理成功,活动ID:{$giftInfo['id']}");
|
|||
|
|
} else {
|
|||
|
|
Log::warning("用户{$uid}节日有礼权益赠送失败,活动ID:{$giftInfo['id']},详情:" . json_encode($grantResults['details']));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
} catch (\Exception $e) {
|
|||
|
|
Log::error("用户{$uid}节日有礼处理失败: " . $e->getMessage());
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|