OrderController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace addons\Course\backend\controllers;
  3. use addons\Course\common\enums\CourseEnum;
  4. use addons\Course\common\logic\OrderRefuseLogic;
  5. use addons\Course\common\models\AddonsCourse;
  6. use addons\Course\common\models\AddonsCourseOrders;
  7. use addons\Course\common\services\CourseService;
  8. use common\enums\PayTypeEnum;
  9. use common\enums\StatusEnum;
  10. use common\models\user\User;
  11. use Exception;
  12. use Yii;
  13. class OrderController extends BaseController
  14. {
  15. public function actionIndex()
  16. {
  17. if (\Yii::$app->request->isAjax) {
  18. if (\Yii::$app->request->isGet) {
  19. $params = \Yii::$app->request->get();
  20. $where[] = ['mall_id' => $this->mall_id];
  21. $where[] = ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]];
  22. if (!empty($params['course_name'])) {
  23. $course_list = AddonsCourse::lists(['where' => [['like', 'name', $params['course_name'] . '%', false]], 'select' => 'id']);
  24. $cid = array_column($course_list, 'id');
  25. $where[] = ['course_id' => $cid];
  26. }
  27. if (!empty($params['user_id'])) $where[] = ['user_id' => $params['user_id']];
  28. if (!empty($params['user_info'])) {
  29. $user_list = User::lists([
  30. 'where' => [
  31. [
  32. 'or',
  33. ['like', 'nickname', $params['user_info'] . '%', false],
  34. ['like', 'mobile', $params['user_info'] . '%', false],
  35. ]
  36. ],
  37. 'select' => 'id'
  38. ]);
  39. $user_id_arr = array_column($user_list, 'id');
  40. $where[] = ['user_id' => $user_id_arr];
  41. }
  42. if (!empty($params['order_no'])) $where[] = ['order_no' => $params['order_no']];
  43. if (!empty($params['start_time'])) {
  44. $where[] = ['>=', 'created_at', strtotime($params['start_time'] . ' 00:00:00')];
  45. }
  46. if (!empty($params['end_time'])) {
  47. $where[] = ['<=', 'created_at', strtotime($params['end_time'] . ' 23:59:59')];
  48. }
  49. $params = [
  50. 'where' => $where,
  51. 'order' => 'created_at desc',
  52. ];
  53. $page_data = AddonsCourseOrders::listPage($params);
  54. if (!empty($page_data['list'])) {
  55. $user_id_arr = array_column($page_data['list'], 'user_id');
  56. $course_id = array_column($page_data['list'], 'course_id');
  57. $user_list = User::lists(['where' => [['id' => $user_id_arr]], 'index' => 'id', 'select' => 'id,nickname,avatar_url,mobile']);
  58. $course_list = AddonsCourse::lists(['where' => [['id' => $course_id]], 'index' => 'id', 'select' => 'id,name,logo']);
  59. foreach ($page_data['list'] as &$item) {
  60. $item['course_name'] = '';
  61. $item['course_picture'] = '';
  62. $item['nickname'] = '';
  63. $item['avatar_url'] = '';
  64. $item['mobile'] = '';
  65. if (isset($course_list[$item['course_id']])) {
  66. $item['course_name'] = $course_list[$item['course_id']]['name'];
  67. $item['course_picture'] = $course_list[$item['course_id']]['logo'];
  68. }
  69. if (isset($user_list[$item['user_id']])) {
  70. $item['nickname'] = $user_list[$item['user_id']]['nickname'];
  71. $item['avatar_url'] = $user_list[$item['user_id']]['avatar_url'];
  72. $item['mobile'] = $user_list[$item['user_id']]['mobile'];
  73. }
  74. $item['show_refund_botton'] = 0;
  75. //判断订单是否为课程订单
  76. if (substr($item['order_no'], 0, 1) == 'C' && is_numeric(substr($item['order_no'], 1, 1))) {
  77. if (strtotime("+3 months", $item['created_at']) > time()) {
  78. $item['show_refund_botton'] = 1;
  79. }
  80. }
  81. }
  82. }
  83. $page_data['payment_type_list'] = PayTypeEnum::getMap();
  84. $page_data['order_status_map'] = CourseEnum::getOrderStatusMap();
  85. return $this->success('success', $page_data);
  86. } else {
  87. return $this->error('请求方式错误');
  88. }
  89. } else {
  90. return $this->render('index');
  91. }
  92. }
  93. public function actionGetCourseCommissionList()
  94. {
  95. $request = Yii::$app->request;
  96. if ($request->isAjax && $request->isGet) {
  97. try {
  98. $get = $request->get();
  99. $res = Yii::$app->services->validate->validate($get, [
  100. [['order_id'], 'integer'],
  101. [['wallet_type'], 'string'],
  102. ]);
  103. if (!$res) throw new Exception(Yii::$app->services->validate->getErrorMessage());
  104. $list = (new CourseService(['mall_id' => $this->mall_id]))->getCourseCommissionList($get);
  105. return $this->success('操作成功', ['list' => $list]);
  106. } catch (\Exception $e) {
  107. throw new Exception($e->getMessage());
  108. }
  109. }
  110. }
  111. public function actionDoRefundSubmit()
  112. {
  113. $request = Yii::$app->request;
  114. if ($request->isAjax && $request->isPost) {
  115. try {
  116. $post = $request->post();
  117. $res = Yii::$app->services->validate->validate($post, [
  118. [['user_id', 'order_id', 'id', 'balance_pre'], 'integer'],
  119. [['refund_price'], 'number'],
  120. [['remark'], 'string']
  121. ]);
  122. if (!$res) throw new Exception(Yii::$app->services->validate->getErrorMessage());
  123. $res = (new CourseService(['mall_id' => $this->mall_id]))->doRefundSubmit($post);
  124. return $this->success('退款成功');
  125. } catch (\Exception $e) {
  126. return $this->error($e->getMessage());
  127. }
  128. }
  129. }
  130. }