| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\models\v1;
- use app\constants\OptionSetting;
- use app\cyy\ApiResponse;
- use app\models\Goods;
- use app\models\Option;
- use app\models\Order;
- use app\models\OrderComment;
- use app\models\OrderDetail;
- use app\models\Store;
- use app\models\User;
- use yii\base\Model;
- use yii\data\Pagination;
- class EvaluateCenterForm extends Model
- {
- public $store_id;
- public $type;
- public $page = 1;
- public $limit = 20;
- public function rules()
- {
- return [
- [['type'], 'required'],
- [['page'], 'integer'],
- [['type'], 'default', 'value' => 0],
- ];
- }
- public function search()
- {
- if (!$this->validate()) {
- return $this->errorResponse;
- }
- $unevaluatedquery = Order::find()->alias('o')
- ->leftJoin(['od' => OrderDetail::tableName()], 'o.id=od.order_id')
- ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
- ->where([
- 'o.is_delete' => 0,
- 'o.store_id' => $this->store_id,
- 'o.user_id' => get_user_id(),
- 'o.is_comment' => 0,
- 'o.type' => 0,
- 'o.is_recycle' => 0,
- 'od.is_delete' => 0,
- ])->andWhere([
- '<>', 'o.trade_status', Order::ORDER_FLOW_CANCEL
- ])->andWhere(['or', ['o.is_pay' => 1], ['o.pay_type' => 2]]);
- $unevaluatedcount = $unevaluatedquery->count();
- if ($this->type ==0){
- $pagination = new Pagination(['totalCount' => $unevaluatedcount, 'pageSize' => $this->limit, 'page' => $this->page-1]);
- $list = $unevaluatedquery->limit($pagination->limit)->offset($pagination->offset)->orderBy('o.id DESC')
- ->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();
- foreach ($list as $key => $item) {
- $goods = Goods::findOne($item['goods_id']);
- $goods_pic = isset($item['pic']) ? $item['pic'] ?: $goods->getGoodsPic(0)->pic_url : $goods->getGoodsPic(0)->pic_url;
- $list[$key]['store_name'] = Option::get(OptionSetting::STORE_NAME)['value'];
- $list[$key]['attr_list'] = json_decode($item['attr']);
- $list[$key]['goods_pic'] = $goods_pic;
- }
- }
- $evaluatedquery = OrderComment::find()->alias('oc')
- ->leftJoin(['od' => OrderDetail::tableName()], 'oc.order_detail_id=od.id')
- ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
- ->leftJoin(['u' => User::tableName()], 'oc.user_id=u.id')
- ->where([
- 'oc.store_id' => $this->store_id,
- 'oc.user_id' => get_user_id(),
- 'oc.is_delete' => 0
- ]);
- $evaluatedcount = $evaluatedquery->count();
- if ($this->type ==1){
- $pagination = new Pagination(['totalCount' => $evaluatedcount, 'pageSize' => $this->limit, 'page' => $this->page-1]);
- $list = $evaluatedquery->limit($pagination->limit)->offset($pagination->offset)->orderBy('oc.id DESC')
- ->select("u.nickname user_name, u.avatar_url, od.attr, od.goods_id, oc.content comment_content, oc.pic_list,
- g.name good_name, g.cover_pic good_cover, g.price good_price")->asArray()->all();
- foreach ($list as $k => $v) {
- $order_info_arr = json_decode($v['attr']);
- $list[$k]['attr'] = $order_info_arr[0];
- $list[$k]['pic_list'] = json_decode($v['pic_list']);
- }
- }
- $data = [
- 'list' => $list ? $list : [],
- 'not_evaluate_num' => $unevaluatedcount,
- 'all_evaluate_num' => $evaluatedcount,
- ];
- return [
- 'code' => 0,
- 'data' => $data
- ];
- }
- }
|