168 lines
4.1 KiB
PHP
168 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace app\common\model\order;
|
|
|
|
use think\Model;
|
|
use app\common\model\order\Item as OrderItem;
|
|
/**
|
|
* 订单评价
|
|
*/
|
|
class Evaluate extends Model
|
|
{
|
|
|
|
|
|
// 表名
|
|
protected $name = 'order_evaluate';
|
|
|
|
// 自动写入时间戳字段
|
|
protected $autoWriteTimestamp = 'integer';
|
|
|
|
// 定义时间戳字段名
|
|
protected $createTime = 'createtime';
|
|
protected $updateTime = false;
|
|
protected $deleteTime = false;
|
|
|
|
/**
|
|
* 获取被评价的商品信息
|
|
* @return void
|
|
*/
|
|
public function getToItemInfo($orderNo,$itemId){
|
|
|
|
$data = OrderItem::where([
|
|
'evaluate'=>0,
|
|
'order_no'=>$orderNo,
|
|
'item_id'=>$itemId
|
|
])->find();
|
|
|
|
if(!$data){
|
|
return false;
|
|
}
|
|
|
|
$data['snapshoot'] = json_decode($data['snapshoot'],true);
|
|
|
|
$data = (new \app\api\model\order\Order())->limitItemField($data);
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取评价列表
|
|
* @param $userId
|
|
* @param $params
|
|
* @return array
|
|
*/
|
|
public function getList($userId,$params = []){
|
|
$rows = self::with(['user']);
|
|
$where = [];
|
|
|
|
if(isset($params['status']) && $params['status'] && in_array($params['status'],$this->getStatus())){
|
|
switch ($params['status']){
|
|
case 'good':
|
|
$where['rate'] = ['>=' , 3];
|
|
break;
|
|
case 'bad':
|
|
$where['rate'] = ['<' , 3];
|
|
break;
|
|
case 'img':
|
|
$where['imgs'] = ['<>',''];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if($userId){
|
|
$where['user_id'] = $userId;
|
|
}
|
|
|
|
$where['item_id'] = $params['item_id'];
|
|
|
|
$where['evaluate.status'] = 1;
|
|
|
|
$list = $rows
|
|
->where($where)
|
|
->order('createtime','desc')
|
|
->limit($params['limit'])->page($params['page'])
|
|
->select();
|
|
|
|
$data = [];
|
|
|
|
if(!empty($list)){
|
|
foreach ($list as $index => $item){
|
|
|
|
try{
|
|
$item->getRelation('user')->visible(['nickname','avatar']);
|
|
$item->visible(['content','anonymity','createtime','imgs','rate','user']);
|
|
|
|
if($item['imgs']){
|
|
$imgs = explode(",",$item['imgs']);
|
|
|
|
foreach ($imgs as &$img){
|
|
$img = cdnurl($img);
|
|
}
|
|
|
|
$item['imgs'] = $imgs;
|
|
}else{
|
|
$item['imgs'] = [];
|
|
}
|
|
|
|
$item->user['avatar'] = cdnurl($item->user['avatar']);
|
|
if($item['anonymity'] == 1){
|
|
$item->user['nickname'] = '匿名评价';
|
|
$item->user['url'] = '-';
|
|
$item->user['avatar'] = letter_avatar('匿');;
|
|
}
|
|
$data[] = $item;
|
|
|
|
}catch (\Exception $e){}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取推荐的评论列表
|
|
* @return void
|
|
*/
|
|
public function getRecommendList($itemId){
|
|
$data = [];
|
|
$data['list'] = $this->getList(0,[
|
|
'item_id'=>$itemId,
|
|
'limit'=>2,
|
|
'page'=>0
|
|
]);
|
|
$data['count'] = self::where([
|
|
'item_id'=>$itemId,
|
|
'status'=>1
|
|
])->count();
|
|
|
|
$orderItem = OrderItem::where('item_id', $itemId)->find();
|
|
if ($orderItem) {
|
|
$goodsType = $orderItem['goods_type'] ?? '';
|
|
$isVirtualPay = \app\common\library\pay\VirtualPayService::isUseVirtualPay($goodsType);
|
|
$data['is_virtual_pay'] = $isVirtualPay ? 1 : 0;
|
|
} else {
|
|
$data['is_virtual_pay'] = 0;
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
public function getStatus()
|
|
{
|
|
return [
|
|
'good',
|
|
'bad',
|
|
'img'
|
|
];
|
|
}
|
|
|
|
public function user()
|
|
{
|
|
return $this->belongsTo('\app\common\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
|
}
|
|
|
|
} |