hasMany(GoodsImage::class, 'goods_id', 'id'); } /** * @notes 关联服务评价模型 * @return \think\model\relation\HasMany * @author ljj * @date 2022/2/17 6:15 下午 */ public function goodsComment() { return $this->hasMany(GoodsComment::class, 'goods_id', 'id')->append(['goods_comment_image', 'user']); } public function goodsCity() { return $this->hasMany(GoodsCityIndex::class,'goods_id','id'); } /** * @notes 获取分类名称 * @param $value * @param $data * @return mixed|string * @author ljj * @date 2022/2/9 11:15 上午 */ public function getCategoryDescAttr($value, $data) { $category_arr = (new GoodsCategory())->column('name,pid', 'id'); $category_name = '未知'; $category_first = $category_arr[$data['category_id']] ?? []; if ($category_first) { $category_name = $category_first['name']; $category_second = $category_arr[$category_first['pid']] ?? []; if ($category_second) { $category_name = $category_second['name'] . '/' . $category_name; $category_third = $category_arr[$category_second['pid']] ?? []; if ($category_third) { $category_name = $category_third['name'] . '/' . $category_name; } } } return $category_name; } /** * @notes 获取状态 * @param $value * @param $data * @return string|string[] * @author ljj * @date 2022/2/9 11:22 上午 */ public function getStatusDescAttr($value, $data) { return GoodsEnum::getShowDesc($data['status']); } /** * @notes 分类搜索器 * @param $query * @param $value * @param $data * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author ljj * @date 2022/2/17 5:11 下午 */ public function searchCategoryIdAttr($query, $value, $data) { if ($value) { $goodsCategory = GoodsCategory::find($value); $level = $goodsCategory['level'] ?? ''; $categoryIds = []; switch ($level) { case 1: $categoryIds = GoodsCategory::where(['pid' => $value]) ->column('id'); Array_push($categoryIds, $value); break; case 2: $categoryIds = [$value]; break; } $goodsIds = Goods::where(['category_id' => $categoryIds])->column('id'); $query->where('id', 'in', $goodsIds); } } public function getSkillDescAttr($value,$data){ $skillLists = Skill::alias('S') ->join('goods_skill_index GSI','S.id = GSI.skill_id') ->where(['GSI.goods_id'=>$data['id']]) ->column('name'); if($skillLists){ return implode('、',$skillLists); } return ''; } /** * @notes 关键词搜索器 * @param $query * @param $value * @param $data * @author ljj * @date 2022/2/17 5:16 下午 */ public function searchKeywordAttr($query, $value, $data) { if ($value) { $query->where('name', 'like', '%' . $value . '%'); } } /** * @notes 城市搜索 * @param $query * @param $value * @param $data * @author ljj * @date 2022/2/17 5:16 下午 */ public function searchCityIdAttr($query, $value, $data) { $allCityGoodsIds = Goods::alias('G') ->leftjoin('goods_city_index GCI','G.id = GCI.goods_id') ->where(['GCI.id '=>null,'status'=>1]) ->column('G.id'); $cityGoodsIds = Goods::alias('G') ->leftjoin('goods_city_index GCI','G.id = GCI.goods_id') ->where(['status'=>1,'city_id'=>$value]) ->column('G.id'); $goodsIds = array_merge($allCityGoodsIds,$cityGoodsIds); empty($goodsIds) && $goodsIds = []; $query->where('id', 'in',implode(',',$goodsIds)); } /** * @notes 技能搜索 * @param $query * @param $value * @param $data * @return void * @author cjhao * @date 2024/8/19 16:52 */ public function searchSkillIdAttr($query, $value, $data) { if ($value) { $goodsId = GoodsSkillIndex::where(['skill_id'=>$value])->column('goods_id'); $query->where('id','in',$goodsId); } } /** * @notes 获取审核状态 * @param $value * @param $data * @return string|string[] * @author cjhao * @date 2024/8/21 17:48 */ public function getAuditStatusDescAttr($value,$data){ return GoodsEnum::getAuditStatusDesc($data['audit_status']); } }