leftJoin('goods_image gi','gd.goods_id=gi.goods_id') ->leftJoin('goods_sku gs','gd.goods_id=gs.goods_id') ->leftJoin('upload_file uf','gi.image_id=uf.file_id') ->where('gd.goods_id',$data['goods_id']) ->field('gd.goods_name,gd.goods_no,gd.goods_price_min,gd.status,gi.image_id,uf.domain,uf.file_path,gs.goods_props')->find(); $res->goods_props_obj = $res->goods_props?json_decode($res->goods_props):null; $res->goods_image = $res->domain.'/'.$res->file_path; return $res; } public function getResidueStockAttr($value,$data){ if(isset($data['limit_stock']) && isset($data['purchase_stock'])){ $residue_stock = $data['limit_stock']-$data['purchase_stock']; return $residue_stock>0?$residue_stock:0; } return 0; } public function add($coupon_activity_id,$data) { // 先删除全部 static::deleteAll(['group_buy_lb_activity_id' => $coupon_activity_id]); if (!empty($data)) { $dataset = []; foreach ($data as $item) { $goods = \app\store\model\Goods::detail($item['goods_id'],['images.file']); $dataset[] = [ 'group_buy_lb_activity_id'=>$coupon_activity_id, 'goods_id' => $item['goods_id'], 'limit_stock' => $item['limit_stock']??0, 'goods_sku_id' => $item['goods_sku_id']??0, 'goods_sku_no' => $item['goods_sku_no']??'', 'group_price' => $item['group_price'], 'limit_mount' => $item['limit_mount'], 'goods_name' => $goods['goods_name']??'', 'preview_url' => $goods['images'][0]['file']['preview_url']??'', ]; } (new static)->addAll($dataset); } } }