* 商品管理(SPU) */ namespace app\fastshop\model; use think\Model; use filter\Filter; class Item extends Model{ protected $pk = 'id'; protected $table = 'ai_fastshop_item'; protected $autoWriteTimestamp = true; protected $createTime = false; /** * 商品基础库 * @return void */ public function Category(){ return $this->hasOne('Category','id','category_id'); } /** * 搜索封装 */ public function searchNameAttr($query, $value, $data){ $query->where('name','like','%' . $value . '%'); } /** * 查询单个商品(包裹委托价格) * @param string $status * @param string $keyword * @return void */ public function getfind(int $id){ return self::view('fastshop_item','*') ->view('fastshop_entrust', 'entrust_price','fastshop_item.id = fastshop_entrust.item_id','left') ->where(['fastshop_item.id' => $id]) ->find(); } /** * 读取商品列表 * @param string $status * @param string $keyword * @return void */ public function list(int $miniapp_id,string $status,string $keyword = null,$input = null){ switch ($status) { case 'trash': //回收站 $condition['is_sale'] = 1; break; case 'off_sale': //在售 $condition['is_sale'] = 2; break; case 'on_sale': //在售 $condition['is_sale'] = 0; break; default: $condition[] = ['is_sale','<>',1]; break; } if(!empty($keyword)){ $keyword = Filter::filter_escape($keyword); $condition[] = ["name","like","%{$keyword}%"]; } return self::where(['member_miniapp_id' => $miniapp_id])->where($condition)->order('id desc')->paginate(20,false,['query'=>['status' => $status,'keyword' => $keyword,'input'=> $input]]); } /** * 检测单个SPU商品是否上架 * @param integer $spu_id * @return void */ public function isSell(int $spu_id){ return self::where(['id' => $spu_id,'is_sale'=>2])->find(); } //添加或编辑 public function edit(int $miniapp_id,array $param){ $data['member_miniapp_id'] = $miniapp_id; $data['category_id'] = (int)$param['category_id']; $data['category_path_id'] = $param['category_path_id']; $data['name'] = $param['name']; $data['types'] = $param['types']; $data['price'] = (float)$param['price']*100; $data['market_price'] = (float)$param['market_price']; $data['sell_price'] = (float)$param['sell_price']; $data['cost_price'] = (float)$param['cost_price']; $data['points'] = (int)$param['points']; $data['repoints'] = (int)$param['repoints']; $data['weight'] = (int)$param['weight']; $data['content'] = $param['content']; $data['img'] = $param['img']; $data['imgs'] = json_encode($param['imgs']); $data['update_time'] = time(); if(isset($param['id'])){ $id = (int)$param['id']; self::where('id',$id)->update($data); return $id; }else{ $data['is_sale'] = 0; return self::insertGetId($data); } } //批量操作 public function ids_action(int $is_sale,string $ids){ switch ($is_sale) { case 1: $data['is_sale'] = 1; //删除 break; case 2: $data['is_sale'] = 2; //在售 break; default: $data['is_sale'] = 0; //恢复商品到未审核状态 break; } return self::whereIn('id',ids($ids))->data($data)->update(); //操作所有SPU商品 } /** * 删除SPU商品 * * @param [type] $id * @param [type] $ids * @return void */ public function spu_delete(int $id,$ids){ if(!empty($id)){ $ids = (int)$id; }elseif(!empty($ids)){ $ids = ids($ids); }else{ return false; } $rel = self::whereIn('id',$ids)->field('is_sale,id,imgs,img,content')->select()->toArray(); if(!empty($rel)){ $del_data = []; $up_data = []; foreach ($rel as $key => $value) { if($value['is_sale'] == 1){ $del_data[] = $value['id']; $imgs[] = json_decode($value['imgs']); $content[] = $value['content']; $src[] = $value['img']; }else{ $up_data[] = $value['id']; } } if(!empty($del_data)){ $img = []; array_walk_recursive($imgs, function($value) use (&$img) { array_push($img,$value); }); $imgc = []; array_walk_recursive($content, function($value) use (&$img) { array_push($img, $value); }); $imgfile = []; foreach ($img as $key => $value) { foreach ($src as $rs) { if($value != $rs){ $str = PATH_PUBLIC.$value; if(file_exists($str)){ unlink($str); } } } } self::whereIn('id',$del_data)->delete(); } if(!empty($up_data)){ self::whereIn('id',$up_data)->update(['is_sale' => 1]); } } return true; } }