You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
4.6 KiB

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/24
* Time: 16:23
*/
namespace app\modules\mch\models;
use app\models\Goods;
use app\models\Mch;
use app\models\MsOrder;
use app\models\Order;
use app\models\OrderMessage;
use app\models\PtOrder;
use app\models\User;
use app\models\YyOrder;
use yii\data\Pagination;
class OrderMessageForm extends MchModel
{
public $store_id;
public $limit;
public $page;
public $is_read;
public function rules()
{
return [
[['limit', 'page'], 'integer'],
[['limit'], 'default', 'value' => 5],
[['page'], 'default', 'value' => 1]
];
}
public function search()
{
if (!$this->validate()) {
return $this->errorResponse;
}
$query = OrderMessage::find()->alias('om')->where([
'om.store_id' => $this->store_id,
'om.is_delete' => 0,
'om.order_type' => [0, 1, 2, 3, 4]
]);
if ($this->is_read) {
$query->andWhere(['or',['om.is_read' => 0],['om.is_sound'=>0]]);
}
$count = $query->count();
$pagination = new Pagination(['totalCount' => $count, 'pageSize' => $this->limit]);
$list = $query->orderBy(['om.addtime' => SORT_DESC])
->limit($pagination->limit)
->offset($pagination->offset)
->asArray()
->all();
$urlManager = \Yii::$app->urlManager;
// 此处考虑在 cache 或 setting 内做缓存,存储 order_message 表的更新时间,以及查询结果
// 插入 order_message 时,在 beforeInsert 内清空缓存
// -- wi1dcard
foreach ($list as $index => &$value) {
switch ($value['order_type']) {
case 3:
$yy_order = YyOrder::findOne(['id' => $value['order_id'], 'store_id' => $this->store_id]);
if ($value['type'] == 0) {
$value['url'] = $urlManager->createUrl(['mch/book/order/index', 'status' => 1]);
} else {
$value['url'] = $urlManager->createUrl(['mch/book/order/index', 'status' => 3]);
}
$user = User::findOne(['id' => $yy_order->user_id]);
$order['order_no'] = $yy_order->order_no;
$order['name'] = $user->nickname;
break;
case 4:
$mch_goods = Goods::findOne(['id' => $value['order_id']]);
$mch = Mch::findOne(['id' => $mch_goods->mch_id]);
$value['url'] = $urlManager->createUrl(['mch/mch/goods/goods', 'keyword' => $mch_goods->name]);
$order['order_no'] = $mch_goods->name;
$order['name'] = $mch->name;
break;
default:
if ($value['type'] == 0) {
$value['url'] = $urlManager->createUrl(['mch/order/index', 'status' => 1]);
} else {
$value['url'] = $urlManager->createUrl(['mch/order/refund']);
}
switch ($value['order_type']) {
case 0:
$class = "app\models\Order";
break;
case 1:
$class = "app\models\MsOrder";
break;
case 2:
$class = "app\models\PtOrder";
break;
default:
break;
}
$order = $class ? $class::findOne(['id' => $value['order_id'], 'store_id' => $this->store_id]) : [];
}
$value['order_no'] = $order['order_no'];
$value['name'] = $order['name'];
$value['platform'] = User::find()->where(['id' => $order['user_id']])->select('platform')->scalar();
$time = time() - $value['addtime'];
if ($time < 60) {
$value['time'] = $time . '秒前';
} elseif ($time < 3600) {
$value['time'] = ceil($time / 60) . '分钟前';
} elseif ($time < 86400) {
$value['time'] = ceil($time / 3600) . '小时前';
} else {
$value['time'] = ceil($time / 86400) . '天前';
}
}
return [
'list' => $list,
'pagination' => $pagination
];
}
}