132 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			132 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								namespace app\shop\logic\goods;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use app\common\basics\Logic;
							 | 
						|||
| 
								 | 
							
								use app\common\model\goods\GoodsComment;
							 | 
						|||
| 
								 | 
							
								use app\common\model\user\UserLevel;
							 | 
						|||
| 
								 | 
							
								use app\common\server\UrlServer;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class CommentLogic extends Logic
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public static function lists($get)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $where = [
							 | 
						|||
| 
								 | 
							
								            ['gc.shop_id', '=', $get['shop_id']],
							 | 
						|||
| 
								 | 
							
								            ['gc.del', '=', 0],
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if($get['type'] == 0) { // 待回复
							 | 
						|||
| 
								 | 
							
								            $where[] = ['reply', '=', ''];
							 | 
						|||
| 
								 | 
							
								        }else{ // 已回复
							 | 
						|||
| 
								 | 
							
								            $where[] = ['reply', '<>', ''];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        // 评价信息
							 | 
						|||
| 
								 | 
							
								        if(isset($get['search_word']) && !empty($get['search_word'])) {
							 | 
						|||
| 
								 | 
							
								            switch($get['search_type']) {
							 | 
						|||
| 
								 | 
							
								                case 'name':
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['g.name', 'like', '%'. trim($get['search_word']) . '%'];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 'sn':
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['u.sn', '=', trim($get['search_word'])];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 'nickname':
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['u.nickname', '=', trim($get['search_word'])];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        // 评价等级
							 | 
						|||
| 
								 | 
							
								        if(isset($get['goods_comment']) && !empty($get['goods_comment'])) {
							 | 
						|||
| 
								 | 
							
								            switch ($get['goods_comment']) {
							 | 
						|||
| 
								 | 
							
								                case 1:
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['gc.goods_comment', '>', 3];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 2:
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['gc.goods_comment', '=', 3];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 3:
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['gc.goods_comment', '<', 3];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        // 显示状态
							 | 
						|||
| 
								 | 
							
								        if(isset($get['status']) && !empty($get['status'])) {
							 | 
						|||
| 
								 | 
							
								            switch ($get['status']) {
							 | 
						|||
| 
								 | 
							
								                case 1:
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['gc.status', '=', 1];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 2: // 隐藏状态  前端不使用0的原因:empty()时0会被认为false
							 | 
						|||
| 
								 | 
							
								                    $where[] = ['gc.status', '=', 0];
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        // 日期范围
							 | 
						|||
| 
								 | 
							
								        if(isset($get['start_end']) && !empty($get['start_end'])) {
							 | 
						|||
| 
								 | 
							
								            $arr = explode('~', $get['start_end']);
							 | 
						|||
| 
								 | 
							
								            $start_time = strtotime($arr[0]);
							 | 
						|||
| 
								 | 
							
								            $end_time = strtotime($arr[1]);
							 | 
						|||
| 
								 | 
							
								            $where[] = ['gc.create_time', '>=', $start_time];
							 | 
						|||
| 
								 | 
							
								            $where[] = ['gc.create_time', '<=', $end_time];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $lists = GoodsComment::alias('gc')
							 | 
						|||
| 
								 | 
							
								            ->with(['goods_comment_image'])
							 | 
						|||
| 
								 | 
							
								            ->field('gc.id,gc.goods_comment,gc.goods_comment as goods_comment_desc,gc.comment,gc.reply,gc.status,gc.status as status_desc,gc.create_time,u.sn,u.nickname,u.avatar,u.level,g.name as goods_name,g.image as goods_image,gi.image as item_image,gi.spec_value_str')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('user u', 'u.id=gc.user_id')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('goods g', 'g.id=gc.goods_id')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('goods_item gi', 'gi.id=gc.item_id')
							 | 
						|||
| 
								 | 
							
								            ->where($where)
							 | 
						|||
| 
								 | 
							
								            ->order('gc.create_time', 'desc')
							 | 
						|||
| 
								 | 
							
								            ->page($get['page'], $get['limit'])
							 | 
						|||
| 
								 | 
							
								            ->select()
							 | 
						|||
| 
								 | 
							
								            ->toArray();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $count = GoodsComment::alias('gc')
							 | 
						|||
| 
								 | 
							
								            ->field('gc.id,gc.goods_comment,gc.goods_comment as goods_comment_desc,gc.comment,gc.reply,gc.status,gc.status as status_desc,gc.create_time,u.sn,u.nickname,u.avatar,u.level,g.name as goods_name,g.image as goods_image,gi.image as item_image,gi.spec_value_str')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('user u', 'u.id=gc.user_id')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('goods g', 'g.id=gc.goods_id')
							 | 
						|||
| 
								 | 
							
								            ->leftJoin('goods_item gi', 'gi.id=gc.item_id')
							 | 
						|||
| 
								 | 
							
								            ->where($where)
							 | 
						|||
| 
								 | 
							
								            ->count();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $levelArr = UserLevel::where('del', 0)->column('name', 'id');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        foreach($lists as &$item) {
							 | 
						|||
| 
								 | 
							
								            // 类型
							 | 
						|||
| 
								 | 
							
								            $item['type'] = $get['type'];
							 | 
						|||
| 
								 | 
							
								            // 头像
							 | 
						|||
| 
								 | 
							
								            $item['avatar'] = UrlServer::getFileUrl($item['avatar']);
							 | 
						|||
| 
								 | 
							
								            // 会员等级
							 | 
						|||
| 
								 | 
							
								            $item['levelName'] = $levelArr[$item['level']] ?? '无等级';
							 | 
						|||
| 
								 | 
							
								            // 评价图片
							 | 
						|||
| 
								 | 
							
								            $item['comment_image'] = array_column($item['goods_comment_image'], 'uri');
							 | 
						|||
| 
								 | 
							
								            foreach($item['comment_image'] as $key => $subItem) {
							 | 
						|||
| 
								 | 
							
								                $item['comment_image'][$key] = UrlServer::getFileUrl($subItem);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            $item['goods_image'] = UrlServer::getFileUrl($item['goods_image']);
							 | 
						|||
| 
								 | 
							
								            $item['item_image'] = empty($item['item_image']) ? '' : UrlServer::getFileUrl($item['item_image']);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return [
							 | 
						|||
| 
								 | 
							
								            'count' => $count,
							 | 
						|||
| 
								 | 
							
								            'lists' => $lists
							 | 
						|||
| 
								 | 
							
								        ];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static function reply($post)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        try{
							 | 
						|||
| 
								 | 
							
								            GoodsComment::where('id', $post['id'])->update([
							 | 
						|||
| 
								 | 
							
								                'reply' => trim($post['reply']),
							 | 
						|||
| 
								 | 
							
								                'update_time' => time()
							 | 
						|||
| 
								 | 
							
								            ]);
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								        }catch(\Exception $e) {
							 | 
						|||
| 
								 | 
							
								            self::$error = $e->getMessage();
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |