|
@@ -3,6 +3,7 @@
|
|
|
namespace app\admin\controller;
|
|
|
|
|
|
use app\common\controller\Backend;
|
|
|
+use app\common\model\GoodsInstallLink;
|
|
|
|
|
|
/**
|
|
|
* 安装费管理
|
|
@@ -72,6 +73,11 @@ class GoodsInstall extends Backend
|
|
|
}
|
|
|
|
|
|
public function goods(){
|
|
|
+ $id=input('id/d');
|
|
|
+ $skus=[];
|
|
|
+ if($id){
|
|
|
+ $skus=GoodsInstallLink::where('goods_install_id',$id)->column('goods_sku_id');
|
|
|
+ }
|
|
|
$category=\app\common\model\Category::mall(['goods','goods.sku']);
|
|
|
$data=[];
|
|
|
foreach ($category as $cate){
|
|
@@ -96,10 +102,10 @@ class GoodsInstall extends Backend
|
|
|
];
|
|
|
foreach ($goods['sku'] as $sku){
|
|
|
$data[]=[
|
|
|
- 'id'=>"sku-".$sku['id'],
|
|
|
+ 'id'=>"goods-{$goods['id']}|"."sku-".$sku['id'],
|
|
|
'parent'=>"goods-".$goods['id'],
|
|
|
'state'=>[
|
|
|
- 'selected'=>false,
|
|
|
+ 'selected'=>in_array($sku['id'],$skus),
|
|
|
],
|
|
|
'text'=>$sku['name'],
|
|
|
'type'=>'menu',
|
|
@@ -115,27 +121,61 @@ class GoodsInstall extends Backend
|
|
|
return $this->makeAdd();
|
|
|
}
|
|
|
|
|
|
+ public function edit($ids = null)
|
|
|
+ {
|
|
|
+ return $this->makeAdd($ids);
|
|
|
+ }
|
|
|
+
|
|
|
protected function makeAdd($id=null){
|
|
|
if($this->request->isGet()){
|
|
|
- return $this->fetch();
|
|
|
+ if($id){
|
|
|
+ $row=$this->model->find($id);
|
|
|
+ $this->assign('row',$row);
|
|
|
+ }
|
|
|
+ return $this->fetch('add');
|
|
|
}else{
|
|
|
$data=input('row/a');
|
|
|
$this->validate($data,[
|
|
|
- 'name'=>['require'],
|
|
|
- 'goods'=>['require'],
|
|
|
+ 'name|名称'=>['require'],
|
|
|
+ 'goods|商品'=>['require'],
|
|
|
'fee'=>['require','array','min:1']
|
|
|
]);
|
|
|
+ $fee=$data['fee'];
|
|
|
+ foreach ($fee as $feeItem){
|
|
|
+ $this->validate($feeItem,[
|
|
|
+ 'num_min|最小数量'=>['require','egt:0'],
|
|
|
+ 'num_max|最大数量'=>['require','egt:0'],
|
|
|
+ 'amount|安装费'=>['require','egt:0'],
|
|
|
+ ]);
|
|
|
+ }
|
|
|
|
|
|
+ $data['goods']=array_filter(explode(',',$data['goods']));
|
|
|
if($id) {
|
|
|
$install = $this->model->find($id);
|
|
|
- $install['name']=$data['name'];
|
|
|
- $install['fee']=$data['fee'];
|
|
|
- foreach ($data['goods'] as $good){
|
|
|
-
|
|
|
- }
|
|
|
}else{
|
|
|
$install = new $this->model;
|
|
|
}
|
|
|
+ $install['name']=$data['name'];
|
|
|
+ $install['fee']=array_values($data['fee']);
|
|
|
+ $install->save();
|
|
|
+ $ids=[0];
|
|
|
+ foreach ($data['goods'] as $good){
|
|
|
+ if(strpos($good,'|')){
|
|
|
+ list($goodsStr,$skuStr)=explode('|',$good);
|
|
|
+ $goods_id=str_replace('goods-','',$goodsStr);
|
|
|
+ $sku_id=str_replace('sku-','',$skuStr);
|
|
|
+ $link=$install->link()->sku($sku_id,$goods_id)->find();
|
|
|
+ if(!$link){
|
|
|
+ $link=$install->link()->save([
|
|
|
+ 'goods_id'=>$goods_id,
|
|
|
+ 'goods_sku_id'=>$sku_id ,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ $ids[]=$link['id'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $install->link()->whereNotIn('id',$ids)->delete();
|
|
|
+ $this->success();
|
|
|
}
|
|
|
}
|
|
|
}
|