| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- /**
- * 嗨值定时任务
- */
- namespace addons\HiGo\console\controllers;
- use addons\HiGo\common\enums\HiGoEnum;
- use addons\HiGo\common\logic\HiValueLogic;
- use common\enums\RedisKeyEnum;
- use common\enums\StatusEnum;
- use common\helpers\LockHelper;
- use common\models\goods\GoodsMarketing;
- use common\models\mall\Mall;
- use common\models\mall\MallAddons;
- use yii\console\Controller;
- use yii\console\ExitCode;
- class HiValueCrontabController extends Controller
- {
- /**
- * 嗨值销毁
- */
- public function actionDestroy()
- {
- try {
- echo '嗨值销毁,start:';
- \Yii::$app->db->close();
- $lock_key = RedisKeyEnum::suffix('lock_hi_value_destory_');
- $identification = uniqid();
- if (!LockHelper::lock($lock_key, $identification, 60, 10)) throw new \Exception('嗨值销毁进入处理阶段,当前访问过多');
- $mall_list = Mall::getEnableMallList(true);
- $mall_ids = array_column($mall_list, 'id');
- if (empty($mall_ids)) {
- echo '没有可用商城,不做处理 ... ' . PHP_EOL;
- return ExitCode::UNSPECIFIED_ERROR;
- }
- $redis = \Yii::$app->redis;
- foreach ($mall_ids as $mall_id) {
- if (MallAddons::isInstall($mall_id, HiGoEnum::ADDONS_NAME) == 0) continue;
- $setting = \Yii::$app->services->setting->addons->get($mall_id, HiGoEnum::ADDONS_NAME, 'basic');
- if(!$setting || !$setting['is_enable'] || !$setting['destroy_time']) continue;
- //判断时间
- $destroy_time = strtotime(date('Y-m-d'.$setting['destroy_time']));
- if($destroy_time > time()) continue;
- //今天是否执行过
- $check_key = 'mall_hi_value_destroy_'.$mall_id;
- $check = $redis->set($check_key,1,'NX','EX',86400);
- if(!$check) continue;
- //destroy_formula : 嗨值销毁方式
- HiValueLogic::destroy($mall_id,$setting['destroy_formula'],$setting['destroy_ratio']);
- }
- LockHelper::uLock($lock_key,$identification);
- return ExitCode::OK;
- } catch (\Exception $e) {
- echo '嗨值销毁,执行结束失败任务处理出错:' . $e->getMessage() . PHP_EOL;
- \Yii::error('嗨值销毁,执行结束失败任务处理出错:' . $e->getMessage());
- \Yii::getLogger()->flush(true);
- return ExitCode::UNSPECIFIED_ERROR;
- }
- }
- }
|