IndexCrontabController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace addons\SecondaryCard\console\controllers;
  3. use addons\ReservationService\common\enums\ReservationServiceEnum;
  4. use addons\ReservationService\common\models\ReservationServiceOrder;
  5. use addons\SecondaryCard\common\enums\SecondaryCardEnum;
  6. use addons\SecondaryCard\common\models\SecondaryCard;
  7. use addons\SecondaryCard\common\models\SecondaryCardOrder;
  8. use addons\SecondaryCard\common\service\SecondaryCardOrderService;
  9. use addons\Store\common\models\Store;
  10. use addons\Store\common\models\StoreOrder;
  11. use common\enums\OrderStatusEnum;
  12. use common\enums\StatusEnum;
  13. use common\models\mall\Mall;
  14. use common\models\mall\MallAddons;
  15. use yii\console\Controller;
  16. use yii\console\ExitCode;
  17. use common\models\order\Order;
  18. class IndexCrontabController extends Controller
  19. {
  20. public function actionOrderRefund()
  21. {
  22. try {
  23. $malls = Mall::getEnableMallList();
  24. $mall_ids = array_column($malls, 'id');
  25. $time = time();
  26. foreach ($mall_ids as $mall_id) {
  27. $is_install = MallAddons::isInstall($mall_id, 'SecondaryCard');
  28. if (!$is_install) continue;
  29. $list = SecondaryCardOrder::find()->where(['mall_id' => $mall_id])
  30. ->andWhere(['<=', 'expire_time', $time])
  31. ->andWhere(['>', 'verifiable_times', 0])
  32. ->andWhere(['>', 'open_time', 0])
  33. ->andWhere(['>', 'pay_money', 0])
  34. ->andWhere(['!=', 'order_status', SecondaryCardEnum::REFUNDED])
  35. ->with('secondaryCard')->all();
  36. foreach ($list as $item) {
  37. try {
  38. if ($item['open_type'] == SecondaryCardEnum::OPEN_TYPE_EXCHANGE) {
  39. $item->order_status = SecondaryCardEnum::EXPIRED;
  40. $item->save();
  41. } else {
  42. if ($item['secondaryCard']['refund_type'] == 0) {
  43. $params['mall_id'] = $mall_id;
  44. $params['id'] = $item['id'];
  45. $params['user_id'] = $item['user_id'];
  46. SecondaryCardOrderService::orderRefund($params);
  47. } else {
  48. $item->order_status = SecondaryCardEnum::EXPIRED;
  49. $item->save();
  50. }
  51. }
  52. $list = ReservationServiceOrder::lists([
  53. 'where' => [
  54. ['secondary_card_no' => $item['order_no']],
  55. ['service_status' => [
  56. ReservationServiceEnum::RESERVE_ORDER_STATUS_NORMAL,
  57. ReservationServiceEnum::RESERVE_ORDER_STATUS_TALKING,
  58. ]]
  59. ]
  60. ], false);
  61. if (!empty($list)) {
  62. $ids = array_column($list, 'id');
  63. $order_ids = array_column($list, 'order_id');
  64. $order_list = Order::lists(['where' => [
  65. ['id' => $order_ids]
  66. ]
  67. ]
  68. );
  69. $order_nos = array_column($order_list, 'order_no');
  70. if ($item['secondaryCard']['store_type'] == SecondaryCardEnum::STORE_TYPE_O2O) {
  71. StoreOrder::updateAll(['order_status' => OrderStatusEnum::REPEAL, 'status' => StatusEnum::DISABLED], ['order_no' => $order_nos]);
  72. }
  73. Order::updateAll(['order_status' => OrderStatusEnum::REPEAL,'status' => StatusEnum::DISABLED], ['id' => $order_ids]);
  74. ReservationServiceOrder::updateAll(['service_status' => ReservationServiceEnum::RESERVE_ORDER_STATUS_CLOSED], ['id' => $ids]);
  75. }
  76. } catch (\Exception $e) {
  77. echo '次卡号:' . $item['order_no'] . '退款失败' . $e->getMessage();
  78. }
  79. }
  80. }
  81. return ExitCode::OK;
  82. } catch (\Exception $e) {
  83. \Yii::error($e->getMessage());
  84. return false;
  85. }
  86. }
  87. public function actionPutDown()
  88. {
  89. try {
  90. $malls = Mall::getEnableMallList();
  91. $mall_ids = array_column($malls, 'id');
  92. foreach ($mall_ids as $mall_id) {
  93. $is_install = MallAddons::isInstall($mall_id, 'SecondaryCard');
  94. if (!$is_install) continue;
  95. $list = SecondaryCard::find()->where(['mall_id' => $mall_id])
  96. ->andWhere(['>', 'sell_time_start', 0])
  97. ->andWhere(['<', 'sell_time_end', time()])
  98. ->all();
  99. foreach ($list as $item) {
  100. $item->is_on_sales = 0;
  101. $item->save();
  102. }
  103. }
  104. return ExitCode::OK;
  105. } catch (\Exception $e) {
  106. \Yii::error($e->getMessage());
  107. return false;
  108. }
  109. }
  110. }