LoseOrderController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace addons\Store\api\modules\v1\controllers;
  3. use addons\Store\common\enums\StoreEnum;
  4. use addons\Store\common\models\Store;
  5. use addons\Store\common\models\StoreLoseOrder;
  6. use addons\Store\common\models\StoreOrder;
  7. use api\controllers\OnAuthController;
  8. use common\enums\OrderStatusEnum;
  9. use common\enums\StatusEnum;
  10. use Yii;
  11. /**
  12. * Class LoseOrderController
  13. * @package api\modules\order\controllers
  14. */
  15. class LoseOrderController extends OnAuthController
  16. {
  17. public $modelClass = '';
  18. /**
  19. * 不用进行登录验证的方法
  20. *
  21. * 例如: ['index', 'update', 'create', 'view', 'delete']
  22. * 默认全部需要验证
  23. *
  24. * @var array
  25. */
  26. protected $authOptional = [];
  27. // 流失订单
  28. public function actionIndex()
  29. {
  30. $store = Store::findOne(['user_id' => $this->user_id, 'status' => StatusEnum::ENABLED, 'check_status' => StoreEnum::CHECK_ADOPT]);
  31. if ($store) {
  32. $data = [
  33. "list" => [],
  34. "count" => 0,
  35. "page" => 1,
  36. "page_size" => 10,
  37. "row_count" => 1,
  38. "page_count" => 1,
  39. ];
  40. return $this->success('success', $data);
  41. }
  42. $where[] = [
  43. 'lo.mall_id' => $this->mall_id,
  44. 'lo.user_id' => $this->user_id,
  45. 'lo.status' => StatusEnum::ENABLED,
  46. 'o.status' => StatusEnum::ENABLED,
  47. ];
  48. $where[] = ['>', 'order_status', OrderStatusEnum::NOT_PAY];
  49. $params['where'] = $where;
  50. $params['alias'] = 'o';
  51. $params['join'] = [['INNER JOIN', StoreLoseOrder::tableName() . ' lo', 'lo.order_id = o.id']];
  52. $params['select'] = 'o.id, o.order_status, o.pay_money, o.user_id';
  53. $params['with'] = [
  54. 'detail' => function ($query) {
  55. $query->select('id, goods_name, goods_attr_name, price, num, pic_url, order_id');
  56. },
  57. 'base_user'
  58. ];
  59. $params['order'] = 'o.id DESC';
  60. $list = StoreOrder::listPage($params);
  61. if ($list === false) return $this->error('服务错误');
  62. if ($list['list']) {
  63. foreach ($list['list'] as &$item) {
  64. $item['num'] = array_sum(array_column($item['detail'], 'num'));
  65. }
  66. }
  67. return $this->success('success', $list);
  68. }
  69. }