| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- /**
- * 商户订单-打赏后 走模式
- */
- namespace addons\HiGo\console\controllers;
- use addons\HiGo\common\enums\HiGoEnum;
- use addons\HiGo\common\logic\HiValueLogic;
- use addons\HiGo\common\models\HigoMerchantRewardLog;
- use common\enums\OrderStatusEnum;
- 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 common\models\order\Order;
- use yii\console\Controller;
- use yii\console\ExitCode;
- class MerchantCrontabController extends Controller
- {
- /**
- * 打赏完成后订单模式处理
- * @return void
- */
- public function actionOrderToMode()
- {
- try {
- \Yii::$app->db->close();
- $lock_key = RedisKeyEnum::suffix('lock_higo_order_to_mode');
- $identification = uniqid();
- if (!LockHelper::lock($lock_key, $identification, 300, 10)) throw new \Exception('打赏完成后订单模式处理进入处理阶段,当前访问过多');
- $log_list = HigoMerchantRewardLog::find()->where(['handle_status' => 1,'status' => StatusEnum::ENABLED,
- 'mode_status' => HigoMerchantRewardLog::MODE_STATUS_WAIT
- ])->limit(1000)->all();
- foreach($log_list as $log){
- /** @var HigoMerchantRewardLog $log */
- $mall_id = $log->mall_id;
- if (MallAddons::isInstall($mall_id, HiGoEnum::ADDONS_NAME) == 0){
- //商城可能卸载了 插件
- $log->mode_status = HigoMerchantRewardLog::MODE_STATUS_FAIL;
- $log->save();
- continue;
- }
- if($log->source_table != Order::tableName()) continue;
- //触发事件
- $event = new \addons\HiGo\common\events\MerchantOrderPayEvent($log->mall_id);
- \Yii::$app->services->events->dispatch($event, ['id' => $log->source_table_id], $event->listeners);
- $log->mode_status = HigoMerchantRewardLog::MODE_STATUS_FROZEN;
- $log->save();
- }
- LockHelper::uLock($lock_key,$identification);
- return ExitCode::OK;
- } catch (\Exception $e) {
- $msg = '打赏完成后订单模式处理,执行结束失败任务处理出错:' . $e->getMessage() . PHP_EOL;
- echo $msg;
- \Yii::error($msg);
- \Yii::getLogger()->flush(true);
- return ExitCode::UNSPECIFIED_ERROR;
- }
- }
- public function actionOrderFinishMode()
- {
- try {
- \Yii::$app->db->close();
- $lock_key = RedisKeyEnum::suffix('lock_higo_order_finish_mode');
- $identification = uniqid();
- if (!LockHelper::lock($lock_key, $identification, 300, 10)) throw new \Exception('打赏完成后订单模式处理进入处理阶段,当前访问过多');
- $log_list = HigoMerchantRewardLog::find()->where(['handle_status' => 1,'status' => StatusEnum::ENABLED,
- 'mode_status' => HigoMerchantRewardLog::MODE_STATUS_FROZEN
- ])->limit(1000)->all();
- foreach($log_list as $log){
- /** @var HigoMerchantRewardLog $log */
- $mall_id = $log->mall_id;
- $order_id = $log->source_table_id;
- if (MallAddons::isInstall($mall_id, HiGoEnum::ADDONS_NAME) == 0){
- //商城可能卸载了 插件
- // $log->mode_status = HigoMerchantRewardLog::MODE_STATUS_FAIL;
- // $log->save();
- continue;
- }
- if($log->source_table != Order::tableName()) continue;
- //判断结算方式,订单是否完成
- //$setting = \Yii::$app->services->setting->addons->get($mall_id, HiGoEnum::ADDONS_NAME, 'basic');
- $order = Order::findOne($order_id);
- if($order['order_status'] != OrderStatusEnum::ACCOMPLISH) continue;
- //触发事件
- $event = new \addons\HiGo\common\events\MerchantOrderFinishEvent($log->mall_id);
- \Yii::$app->services->events->dispatch($event, ['id' => $log->source_table_id], $event->listeners);
- $log->mode_status = HigoMerchantRewardLog::MODE_STATUS_FINISH;
- $log->save();
- }
- LockHelper::uLock($lock_key,$identification);
- return ExitCode::OK;
- } catch (\Exception $e) {
- $msg = '打赏完成后订单模式处理,执行结束失败任务处理出错:' . $e->getMessage() . PHP_EOL;
- echo $msg;
- \Yii::error($msg);
- \Yii::getLogger()->flush(true);
- return ExitCode::UNSPECIFIED_ERROR;
- }
- }
- }
|