EvaluateCenterForm.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1;
  8. use app\constants\OptionSetting;
  9. use app\cyy\ApiResponse;
  10. use app\models\Goods;
  11. use app\models\Option;
  12. use app\models\Order;
  13. use app\models\OrderComment;
  14. use app\models\OrderDetail;
  15. use app\models\Store;
  16. use app\models\User;
  17. use yii\base\Model;
  18. use yii\data\Pagination;
  19. class EvaluateCenterForm extends Model
  20. {
  21. public $store_id;
  22. public $type;
  23. public $page = 1;
  24. public $limit = 20;
  25. public function rules()
  26. {
  27. return [
  28. [['type'], 'required'],
  29. [['page'], 'integer'],
  30. [['type'], 'default', 'value' => 0],
  31. ];
  32. }
  33. public function search()
  34. {
  35. if (!$this->validate()) {
  36. return $this->errorResponse;
  37. }
  38. $unevaluatedquery = Order::find()->alias('o')
  39. ->leftJoin(['od' => OrderDetail::tableName()], 'o.id=od.order_id')
  40. ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
  41. ->where([
  42. 'o.is_delete' => 0,
  43. 'o.store_id' => $this->store_id,
  44. 'o.user_id' => get_user_id(),
  45. 'o.is_comment' => 0,
  46. 'o.type' => 0,
  47. 'o.is_recycle' => 0,
  48. 'od.is_delete' => 0,
  49. ])->andWhere([
  50. '<>', 'o.trade_status', Order::ORDER_FLOW_CANCEL
  51. ])->andWhere(['or', ['o.is_pay' => 1], ['o.pay_type' => 2]]);
  52. $unevaluatedcount = $unevaluatedquery->count();
  53. if ($this->type ==0){
  54. $pagination = new Pagination(['totalCount' => $unevaluatedcount, 'pageSize' => $this->limit, 'page' => $this->page-1]);
  55. $list = $unevaluatedquery->limit($pagination->limit)->offset($pagination->offset)->orderBy('o.id DESC')
  56. ->select("g.id goods_id,g.name goods_name,od.num,od.total_price price,od.attr,od.pic,o.id order_id")->asArray()->all();
  57. foreach ($list as $key => $item) {
  58. $goods = Goods::findOne($item['goods_id']);
  59. $goods_pic = isset($item['pic']) ? $item['pic'] ?: $goods->getGoodsPic(0)->pic_url : $goods->getGoodsPic(0)->pic_url;
  60. $list[$key]['store_name'] = Option::get(OptionSetting::STORE_NAME)['value'];
  61. $list[$key]['attr_list'] = json_decode($item['attr']);
  62. $list[$key]['goods_pic'] = $goods_pic;
  63. }
  64. }
  65. $evaluatedquery = OrderComment::find()->alias('oc')
  66. ->leftJoin(['od' => OrderDetail::tableName()], 'oc.order_detail_id=od.id')
  67. ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
  68. ->leftJoin(['u' => User::tableName()], 'oc.user_id=u.id')
  69. ->where([
  70. 'oc.store_id' => $this->store_id,
  71. 'oc.user_id' => get_user_id(),
  72. 'oc.is_delete' => 0
  73. ]);
  74. $evaluatedcount = $evaluatedquery->count();
  75. if ($this->type ==1){
  76. $pagination = new Pagination(['totalCount' => $evaluatedcount, 'pageSize' => $this->limit, 'page' => $this->page-1]);
  77. $list = $evaluatedquery->limit($pagination->limit)->offset($pagination->offset)->orderBy('oc.id DESC')
  78. ->select("u.nickname user_name, u.avatar_url, od.attr, od.goods_id, oc.content comment_content, oc.pic_list,
  79. g.name good_name, g.cover_pic good_cover, g.price good_price")->asArray()->all();
  80. foreach ($list as $k => $v) {
  81. $order_info_arr = json_decode($v['attr']);
  82. $list[$k]['attr'] = $order_info_arr[0];
  83. $list[$k]['pic_list'] = json_decode($v['pic_list']);
  84. }
  85. }
  86. $data = [
  87. 'list' => $list ? $list : [],
  88. 'not_evaluate_num' => $unevaluatedcount,
  89. 'all_evaluate_num' => $evaluatedcount,
  90. ];
  91. return [
  92. 'code' => 0,
  93. 'data' => $data
  94. ];
  95. }
  96. }