request->merId(); $chengbenjiabili=0.04; $lingshoujiabili=0.3; [$page, $limit] = $this->getPage(); $params=$this->request->param(); $product_sql=Db::name('douhuomall')->where('status',1)->field('spu_id,title,cost_price,market_price,profit,spuId_info'); $count=$product_sql->count('spu_id'); $product_sql=$this->product_where($product_sql,$params); $product_lst=$product_sql->page($page,$limit)->select()->toArray(); foreach ($product_lst as $k=>&$v){ if(isset($v['is_show'])){ $v['is_show']=(int)$v['is_show']; } //商品图片处理 $v['spuId_info']=json_decode($v['spuId_info'],true); $v['img']=$v['spuId_info']['cover_url']; unset($v['spuId_info']); $store_product_data=Db::name('store_product')->where('mer_id',$mer_id)->where('spu_id',$v['spu_id'])->value('product_id'); if($store_product_data){ $v['is_join']=0; }else{ $v['is_join']=1; } $cost_price = $v['cost_price']; //成本价 加价 $product_lst[$k]['cost_price'] = sprintf("%01.2f", $cost_price + $cost_price * $this -> chengben);//四舍五入保留两位小数 //零售价 加价 $product_lst[$k]['market_price']= sprintf("%01.2f", $cost_price + $cost_price * $this -> lingshou);//四舍五入保留两位小数 //最小利润 $product_lst[$k]['small_profit']=bcsub($product_lst[$k]['market_price'],$product_lst[$k]['cost_price'],2); //利润率 $product_lst[$k]['profit'] = sprintf("%01.2f", ($product_lst[$k]['market_price'] - $product_lst[$k]['cost_price']) / $product_lst[$k]['cost_price']);//四舍五入保留两位小数 // //利润率处理 // $v['profit']=explode('.',$v['profit']); // if($v['profit'][1]=='00'){ // $v['profit']=$v['profit'][0].'%'; // }else{ // $v['profit']=$v['profit'][0].'.'.$v['profit'][1].'%'; // } } $retrun_data=[ 'count'=>$count, 'data'=>$product_lst ]; return app('json')->success($retrun_data); } public function product_where($sql,$where) { //商品名称 if (isset($where['title'])&&$where['title']!=''){ $sql->whereLike('title','%'.$where['title'].'%'); } //商品分类 if (isset($where['cate_ids'])&&$where['cate_ids']!==''){ $sql->whereLike('cate_ids',$where['cate_ids'].',%'); } //最高利润率 if(isset($where['profit_max'])&&$where['profit_max']){ $sql->where('profit','<',$where['profit_max']); } //最低利润率 if(isset($where['profit_small'])&&$where['profit_small']){ $sql->where('profit','>',$where['profit_small']); } //成本价 if (isset($where['cost_price'])&&$where['cost_price']==1){ $sql->order('cost_price','desc'); }elseif(isset($where['cost_price'])&&$where['cost_price']==2){ $sql->order('cost_price','asc'); } //零售价 if (isset($where['market_price'])&&$where['market_price']==1){ $sql->order('market_price','desc'); }elseif(isset($where['cost_price'])&&$where['market_price']==2){ $sql->order('market_price','asc'); } return $sql; } //分类列表 public function get_category() { [$page, $limit] = $this->getPage(); $data=Db::name('douhuomall_category')->page($page,$limit)->select()->toArray(); $count=Db::name('douhuomall_category')->count('id'); $retrun_data=[ 'count'=>$count, 'data'=>$data ]; return app('json')->success($retrun_data); } //商品详情 public function product_details($spu_id) { $chengbenjiabili=0.04; $lingshoujiabili=0.3; $product_data=Db::name('douhuomall')->where('spu_id',$spu_id)->field('skuId_info,spuId_info,cost_price,market_price,profit')->find(); $product_data['spuId_info']=json_decode($product_data['spuId_info'],true); // foreach ($product_data['spuId_info'] as $k=> &$spuid){ //成本价 成本价=供应链成本价+供应链成本价*成本价加价比例 // $product_data['cost_price']=bcadd(bcmul($product_data['cost_price'],$chengbenjiabili,2),$product_data['cost_price'],2); // //零售价 零售价=平台成本价+平台成本价*零售价格加价比例 // $product_data['market_price']=bcadd($product_data['cost_price'],bcmul($product_data['cost_price'],$lingshoujiabili,2),2); // $product_data['retail_price']=$product_data['market_price']; $cost_price = $product_data['cost_price']; //成本价 加价45% $product_data['cost_price'] = sprintf("%01.2f", $cost_price + $cost_price * $this -> chengben);//四舍五入保留两位小数 //零售价 加价65% $product_data['market_price']= sprintf("%01.2f", $cost_price + $cost_price * $this -> lingshou);//四舍五入保留两位小数 $product_data['retail_price']=$product_data['market_price']; // } $product_data['skuId_info']=json_decode($product_data['skuId_info'],true); foreach ($product_data['skuId_info'] as &$skuId){ // //成本价 成本价=供应链成本价+供应链成本价*成本价加价比例 // $skuId['cost_price']=bcadd(bcmul($skuId['cost_price'],$chengbenjiabili,2),$skuId['cost_price'],2); // //零售价 零售价=平台成本价+平台成本价*零售价格加价比例 // $skuId['market_price']=bcadd($skuId['cost_price'],bcmul($skuId['cost_price'],$lingshoujiabili,2),2); // $skuId['retail_price']=$skuId['market_price']; // $sku_cost_price = $product_data['cost_price']; // //成本价 加价45% // $product_data['cost_price'] = sprintf("%01.2f", $sku_cost_price + $sku_cost_price * 0.45);//四舍五入保留两位小数 // //零售价 加价65% // $product_data['market_price']= sprintf("%01.2f", $sku_cost_price + $sku_cost_price * 0.65);//四舍五入保留两位小数 // $product_data['retail_price']=$product_data['market_price']; $name=''; foreach($skuId['attribute_json'] as $k=>$v){ // $skuId['attribute_json']=$skuId['attribute_json'][0]['val'].$skuId['attribute_json'][1]['val']; $name.=$v['val']; } $skuId['attribute_json']=$name; } return app('json')->success($product_data); } //加入选品库 public function join_selection_library() { $data = $this->request->params(['spu_id']); $spu_id = $data['spu_id']; $mer_id=$this->request->merId(); $store_product_data=Db::name('store_product')->where('mer_id',$mer_id)->where('spu_id',$spu_id)->value('product_id'); if($store_product_data) return app('json')->fail('此商品已加入选品库'); $cate_id=$this->request->param('cate_id',''); if($cate_id==''){ return app('json')->fail('请选择分类ID'); } $chengbenjiabili=0.04; $lingshoujiabili=0.3; $data=Db::name('douhuomall')->where('spu_id',$spu_id)->find(); //最低售价 $sku_data=json_decode($data['skuId_info'],true); $spec_type=count($sku_data); if($spec_type>1){ $spec_type=1; }else{ $spec_type=0; } // $price=array_column($sku_data,'cost_price_f');//使用加完运费的成本价 原成本价字段是 cost_price // //成本价 成本价=供应链成本价+供应链成本价*成本价加价比例 // $cost_price=bcadd(bcmul(min($price),$chengbenjiabili,2),min($price),2); // //零售价 零售价=平台成本价+平台成本价*零售价格加价比例 // $price=bcadd($cost_price,bcmul($cost_price,$lingshoujiabili,2),2); $cost_price_g = $data['cost_price']; //成本价 加价 $cost_price = sprintf("%01.2f", $cost_price_g + $cost_price_g * $this -> chengben);//四舍五入保留两位小数 //零售价 加价 $price= sprintf("%01.2f", $cost_price_g + $cost_price_g * $this -> lingshou);//四舍五入保留两位小数 //零售价 加价 $ot_price= sprintf("%01.2f", $cost_price_g + $cost_price_g * $this -> ot);//四舍五入保留两位小数 //商品主图 $spuId_info=json_decode($data['spuId_info'],true); $slider_image=$spuId_info['detail_img_list']??''; $image=$spuId_info['cover_url']??''; try { $slider_image = implode(',',json_decode($slider_image,true)); }catch (\Exception $exception){ $slider_image = $image; } //商品入库数据 $product_insert_data=[ 'mer_id'=>$mer_id, 'image'=>$image, 'slider_image'=>$slider_image, 'store_name'=>$data['title'], 'store_info'=>1, 'keyword'=>mb_substr($data['title'],0,3), 'is_show'=>0, 'status'=>1, 'cate_id'=>$cate_id, 'unit_name'=>'个', 'price'=>$price, 'cost'=>$cost_price, 'ot_price'=>$ot_price, 'stock'=>'1000', 'spec_type'=>$spec_type, 'extension_type'=>1, 'mer_status'=>1, 'is_used'=>1, 'old_product_id'=>$data['id'], 'volunteer'=>0, 'type'=>1, 'pension'=>'0.00', 'commission'=>5, 'spu_id'=>$data['spu_id'], 'temp_id' => 105 ]; $insert_id=Db::name('store_product')->insertGetId($product_insert_data); // $insert_id=440; $detail = $spuId_info['detail']; if(!is_null(json_decode($detail))){ $detail_list = json_decode($detail); $detail = ''; foreach($detail_list as $value){ $detail .= ''; } } Db::name('store_product_content')->insert(['content'=>$detail,'product_id'=>$insert_id]); $this->insert_sku($insert_id,$sku_data); return app('json')->success('操作成功'); } public function insert_sku($id,$data) { $chengbenjiabili=0.04; $lingshoujiabili=0.3; $sku_attr_data=array_column($data,'attribute_json'); $name=''; $ProductRepository = app()->make(ProductRepository::class); if(empty($sku_attr_data[0][0])){ Db::name('store_product_attr')->insert(['product_id'=>$id,'attr_name'=>'规格','attr_values'=>$name]); $key=''; $num=1; foreach ($data as $k=>$v){ // $cost=bcadd(bcmul($v['cost_price_f'],$chengbenjiabili,2),$v['cost_price_f'],2); // $price=bcadd($cost,bcmul($cost,$lingshoujiabili,2),2); $cost = $v['cost_price']; //成本价 加价45% $v['cost_price'] = sprintf("%01.2f", $cost + $cost * $this -> chengben);//四舍五入保留两位小数 //销售价 加价65% $price = sprintf("%01.2f", $cost + $cost * $this -> lingshou);//四舍五入保留两位小数 //原价 $ot_price = sprintf("%01.2f", $cost + $cost * $this -> ot);//四舍五入保留两位小数 Db::name('store_product_attr_value')->insert([ 'product_id'=>$id, 'detail'=>json_encode(['规格'=>$key]), 'sku'=>$key, 'image'=>$v['img_url'], 'cost'=>$v['cost_price'], 'ot_price'=>$ot_price, 'price'=>$price, 'unique'=>$ProductRepository->setUnique($id,'',0), 'stock'=>100, 'cost_price'=>$cost, 'extension_one'=>5, 'gong_sku_id'=>$v['sku_sn'] ]); $key=''; $num++; } }else{ foreach ($sku_attr_data as $kk=>$vv){ foreach ($vv as $k1=>$v1){ $name.=$v1['val']; } $name.='-!-'; } $name=rtrim($name,'-!-'); Db::name('store_product_attr')->insert(['product_id'=>$id,'attr_name'=>'规格','attr_values'=>$name]); $key=''; $num=1; foreach ($data as $k=>$v){ foreach ($v['attribute_json'] as $k2=>$v2){ $key.=$v2['val']; } // $cost=bcadd(bcmul($v['cost_price_f'],$chengbenjiabili,2),$v['cost_price_f'],2); // $price=bcadd($cost,bcmul($cost,$lingshoujiabili,2),2); $cost = $v['cost_price']; //成本价 加价45% $v['cost_price'] = sprintf("%01.2f", $cost + $cost * $this -> chengben);//四舍五入保留两位小数 //销售价 加价65% $price = sprintf("%01.2f", $cost + $cost * $this -> lingshou);//四舍五入保留两位小数 //原价 $ot_price = sprintf("%01.2f", $cost + $cost * $this -> ot);//四舍五入保留两位小数 Db::name('store_product_attr_value')->insert([ 'product_id'=>$id, 'detail'=>json_encode(['规格'=>$key]), 'sku'=>$key, 'image'=>$v['img_url'], 'cost'=>$v['cost_price'], 'ot_price'=>$ot_price, 'price'=>$price, 'unique'=>$ProductRepository->setUnique($id,'',0), 'stock'=>100, 'cost_price'=>$cost, 'extension_one'=>5, 'gong_sku_id'=>$v['sku_sn'] ]); $key=''; $num++; } } } }