| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- <?php
- namespace app\controller\admin\gong;
- use app\common\repositories\store\product\ProductRepository;
- use crmeb\basic\BaseController;
- use think\facade\Db;
- class Product extends BaseController
- {
- protected $chengben = 0.13;
- protected $lingshou = 0.65;
- protected $ot = 0.8;
- //商品列表
- public function lst()
- {
- $mer_id=$this->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 .= '<img src="'.$value.'"></img>';
- }
- }
- 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++;
- }
- }
- }
- }
|