| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- <?php
- namespace addons\DepositPresale\console\controllers;;
- use addons\DepositPresale\common\enums\DepositPresaleEnum;
- use addons\DepositPresale\common\models\DepositPresaleActive;
- use addons\DepositPresale\common\models\DepositPresaleOrder;
- use common\enums\StatusEnum;
- use common\models\common\AddonsMarketingSetting;
- use common\models\mall\Mall;
- use Exception;
- use Yii;
- use yii\console\Controller;
- class PresaleController extends Controller
- {
- /**废弃
- * @Description: 更改预售活动状态
- * @Author: code farmer 3
- * @DateTime 2022-04-27 23:42:54
- * @return void
- */
- public function actionDealActivity()
- {
- $malls = Mall::getEnableMallList();
- $mall_ids = array_column($malls, 'id');
- echo ' 获取到的 mall_id => ' . implode(', ', $mall_ids) . PHP_EOL;
- try {
- foreach ($mall_ids as $mall_id) {
- $activities = DepositPresaleActive::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['group_status' => [DepositPresaleEnum::NOT_STARTED, DepositPresaleEnum::OPEN_GROUP]],
- ['status' => StatusEnum::ENABLED],
- ]);
- /** @var DepositPresaleActive $activity */
- foreach ($activities->each() as $activity) {
- $is_change = 0;
- if ($activity->group_status == DepositPresaleEnum::NOT_STARTED) {
- if (time() >= $activity->deposit_start_at) {
- $is_change += 1;
- $activity->group_status = DepositPresaleEnum::OPEN_GROUP;
- }
- }
- if ($activity->group_status == DepositPresaleEnum::OPEN_GROUP) {
- if (time() > $activity->deposit_end_at) {
- $is_change += 1;
- $activity->group_status = DepositPresaleEnum::GROUP_FINISH;
- $result = DepositPresaleActive::delDiyGoods(['mall_id' => $mall_id, 'id' => $activity->id]);
- if ($result === false) throw new Exception(DepositPresaleActive::getStaticError());
- }
- }
- if ($is_change) {
- $res = $activity->save();
- if (!$res) throw new Exception($activity->getErrorMessage());
- }
- }
- }
- } catch (\Exception $e) {
- echo '执行失败的原因: ' . $e->getMessage();
- }
- }
- /**废弃
- * @Description: 处理过期的活动,已付定金的订单但是没有付尾款的退款
- * @Author: code farmer 3
- * @DateTime 2022-04-28 10:36:34
- * @return void
- */
- public function actionDealOrderOld()
- {
- $malls = Mall::getEnableMallList();
- $mall_ids = array_column($malls, 'id');
- echo ' 获取到的 mall_id => ' . implode(', ', $mall_ids) . PHP_EOL;
- foreach ($mall_ids as $mall_id) {
- $activities = DepositPresaleActive::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['group_status' => DepositPresaleEnum::GROUP_FINISH]
- ]);
- /** @var DepositPresaleActive $activity */
- foreach ($activities->each() as $activity) {
- // 付了定金但是没有付尾款
- try {
- $presale_orders = DepositPresaleOrder::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['deposit_presale_active_id' => $activity->id],
- ['order_status' => DepositPresaleEnum::JOINING],
- ['status' => StatusEnum::ENABLED],
- ['<=', 'final_payment_time', 0],
- ['>', 'pay_time', 0]
- ]);
- /** @var DepositPresaleOrder $presale_order */
- foreach ($presale_orders->each() as $presale_order) {
- $res = DepositPresaleOrder::finishDepositPresaleOrder($presale_order->mall_id, $presale_order->open_group_id);
- if ($res === false) {
- throw new Exception("预售订单ID:{$presale_order->id}, 主商城订单ID:{$presale_order->order_id}" . DepositPresaleOrder::getStaticError());
- }
- }
- } catch (\Exception $e) {
- Yii::error('退款执行失败的原因' . $e->getMessage());
- echo '退款执行失败的原因: ' . $e->getMessage() . PHP_EOL;
- }
- try {
- //未付款的
- $orders_query = DepositPresaleOrder::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['deposit_presale_active_id' => $activity->id],
- ['order_status' => DepositPresaleEnum::NOT_PAY],
- ['status' => StatusEnum::ENABLED],
- ]);
- /** @var DepositPresaleOrder $order */
- foreach ($orders_query->each() as $order) {
- $params = ['mall_id' => $mall_id, 'id' => $order->id, 'user_id' => $order->user_id, 'operator_id' => 0, 'operator_name' => '系统'];
- $result = DepositPresaleOrder::close($params);
- if ($result === false) {
- throw new Exception("预售订单ID:{$order->id}, 订单ID:{$order->order_id}," . DepositPresaleOrder::getStaticError());
- }
- }
- } catch (\Exception $e) {
- Yii::error('关闭订单执行失败的原因' . $e->getMessage());
- echo '关闭订单执行失败的原因: ' . $e->getMessage() . PHP_EOL;
- }
- }
- }
- }
- /**
- * @Description: 更改活动状态和订单状态
- * @Author: observer3
- * @DateTime 2022-06-10 15:46:57
- * @return void
- */
- public function actionDealOrder()
- {
- $malls = Mall::getEnableMallList();
- $mall_ids = array_column($malls, 'id');
- echo ' 获取到的 mall_id => ' . implode(', ', $mall_ids) . PHP_EOL;
- foreach ($mall_ids as $mall_id) {
- $activities = DepositPresaleActive::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['group_status' => [DepositPresaleEnum::NOT_STARTED, DepositPresaleEnum::OPEN_GROUP, DepositPresaleEnum::GROUP_FINISH]],
- ['status' => StatusEnum::ENABLED],
- ]);
- try {
- /** @var DepositPresaleActive $activity */
- foreach ($activities->each() as $activity) {
- if ($activity->group_status == DepositPresaleEnum::NOT_STARTED) {
- if (time() >= $activity->deposit_start_at) {
- $activity->group_status = DepositPresaleEnum::OPEN_GROUP;
- $res = $activity->save();
- if (!$res) throw new Exception($activity->getErrorMessage());
- }
- }
- if ($activity->group_status == DepositPresaleEnum::OPEN_GROUP) {
- if (time() > $activity->deposit_end_at) {
- $activity->group_status = DepositPresaleEnum::GROUP_FINISH;
- $res = $activity->save();
- if (!$res) throw new Exception($activity->getErrorMessage());
- $result = DepositPresaleActive::delDiyGoods(['mall_id' => $mall_id, 'id' => $activity->id]);
- if ($result === false) throw new Exception(DepositPresaleActive::getStaticError());
- $this->getUnpaidOrder($mall_id, $activity);
- }
- }
- if($activity->group_status == DepositPresaleEnum::GROUP_FINISH && time() > $activity->final_payment_end_at){
- $this->getNotPayFinalOrder($mall_id, $activity);
- }
- }
- } catch (Exception $e) {
- Yii::error('活动状态更改失败原因' . $e->getMessage());
- echo '活动状态更改失败原因: ' . $e->getMessage() . PHP_EOL;
- }
- }
- }
- public function getNotPayFinalOrder($mall_id, $activity)
- {
- try {
- $presale_orders = DepositPresaleOrder::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['deposit_presale_active_id' => $activity->id],
- ['order_status' => DepositPresaleEnum::JOINING],
- ['status' => StatusEnum::ENABLED],
- ['<=', 'final_payment_time', 0],
- ['>', 'pay_time', 0]
- ]);
- /** @var DepositPresaleOrder $presale_order */
- foreach ($presale_orders->each() as $presale_order) {
- try {
- $res = DepositPresaleOrder::finishDepositPresaleOrder($presale_order->mall_id, $presale_order->open_group_id);
- if ($res === false) {
- throw new Exception("预售订单ID:{$presale_order->id}, 主商城订单ID:{$presale_order->order_id}" . DepositPresaleOrder::getStaticError());
- }
- } catch (\Exception $e) {
- Yii::error('退款执行失败的原因' . $e->getMessage());
- echo '退款执行失败的原因: ' . $e->getMessage() . PHP_EOL;
- }
- }
- } catch (\Exception $e) {
- Yii::error('仅支付定金未付尾款订单处理失败:' . $e->getMessage());
- echo '仅支付定金未付尾款订单处理失败: ' . $e->getMessage() . PHP_EOL;
- }
- }
- public function getUnpaidOrder($mall_id, $activity)
- {
- try {
- $orders_query = DepositPresaleOrder::find()->where([
- 'and',
- ['mall_id' => $mall_id],
- ['deposit_presale_active_id' => $activity->id],
- ['order_status' => DepositPresaleEnum::NOT_PAY],
- ['status' => StatusEnum::ENABLED],
- ]);
- /** @var DepositPresaleOrder $order */
- foreach ($orders_query->each() as $order) {
- try {
- $params = ['mall_id' => $mall_id, 'id' => $order->id, 'user_id' => $order->user_id, 'operator_id' => 0, 'operator_name' => '系统'];
- $result = DepositPresaleOrder::close($params);
- if ($result === false) {
- throw new Exception("预售订单ID:{$order->id}, 订单ID:{$order->order_id}," . DepositPresaleOrder::getStaticError());
- }
- } catch (\Exception $e) {
- Yii::error('关闭订单执行失败的原因:' . $e->getMessage());
- echo '关闭订单执行失败的原因: ' . $e->getMessage() . PHP_EOL;
- }
- }
- } catch (\Exception $e) {
- Yii::error('未付定金订单关闭订单失败:' . $e->getMessage());
- echo '未付定金订单关闭订单失败: ' . $e->getMessage() . PHP_EOL;
- }
- }
- }
|