2019-09-06 23:53:10 +08:00

276 lines
7.8 KiB
PHP
Executable File

<?php
namespace wstmart\common\model;
use think\Db;
/**
* ============================================================================
* 门店分类
*/
class ShopCats extends Base{
/**
* 批量保存商品分类
*/
public function batchSaveCats(){
$shopId = (int)session('WST_USER.shopId');
$createTime = date("Y-m-d H:i:s");
//先保存了已经有父级的分类
$otherNo = input('post.otherNo/d');
for($i=0;$i<$otherNo;$i++){
$data = array();
$data['catName'] = input('post.catName_o_'.$i);
if($data['catName']=='')continue;
$data['shopId'] = $shopId;
$data['parentId'] = input('post.catId_o_'.$i."/d");
$data['catSort'] = input('post.catSort_o_'.$i."/d");
$data['isShow'] = input('post.catShow_o_'.$i."/d");
$data['createTime'] = $createTime;
$rs = $this->where(["dataFlag"=>1,"shopId"=>$shopId,"catId"=>$data['parentId']])->find();
if(empty($rs))continue;
$this->isUpdate(false)->allowField(["catName","shopId","parentId","catSort","isShow","createTime"])->save($data);
}
//保存没有父级分类的
$fristNo = input('post.fristNo/d');
for($i=0;$i<$fristNo;$i++){
$data = array();
$data['catName'] = input('post.catName_'.$i);
if($data['catName']=='')continue;
$data['parentId'] = 0;
$data['shopId'] = $shopId;
$data['catSort'] = input('post.catSort_'.$i."/d");
$data['isShow'] = input('post.catShow_'.$i."/d");
$data['createTime'] = $createTime;
$parentRs = $this->isUpdate(false)->allowField(["catName","shopId","parentId","catSort","isShow","createTime"])->save($data);
if(false !== $parentRs){
$parentId = $this->catId;
unset($this->catId);
//新增子类
$catSecondNo = (int)input('post.catSecondNo_'.$i."/d");
for($j=0;$j<$catSecondNo;$j++){
$data = array();
$data['catName'] = input('post.catName_'.$i."_".$j);
if($data['catName']=='')continue;
$data['shopId'] = $shopId;
$data['parentId'] = $parentId;
$data['catSort'] = input('post.catSort_'.$i."_".$j."/d");
$data['isShow'] = input('post.catShow_'.$i."_".$j."/d");
$data['createTime'] = $createTime;
$this->isUpdate(false)->allowField(["catName","shopId","parentId","catSort","isShow","createTime"])->save($data);
}
unset($this->catId);
}
}
return WSTReturn("",1);
}
/**
* 修改名称
*/
public function editName(){
$rd = array('status'=>-1);
$id = input("post.id/d");
$data = array();
$data["catName"] = input("catName");
$shopId = (int)session('WST_USER.shopId');
$rs = $this->validate("ShopCats.edit")->save($data,["catId"=>$id,"shopId"=>$shopId]);
if(false !== $rs){
return WSTReturn("",1);
}
return WSTReturn($this->getError());
}
/**
* 修改排序号
*/
public function editSort(){
$rd = array('status'=>-1);
$id = input("post.id/d");
$data = array();
$data["catSort"] = input("post.catSort/d");
$shopId = (int)session('WST_USER.shopId');
$rs = $this->save($data,["catId"=>$id,"shopId"=>$shopId]);
if(false !== $rs){
return WSTReturn("",1);
}
return WSTReturn($this->getError());
}
/**
* 获取指定对象
*/
public function getById($id){
return $this->where(["catId"=>(int)$id])->find();
}
/**
* 获取树形分类
*/
public function getCatAndChild($shopId){
//获取第一级分类
$rs1 = $this->where(['shopId'=>$shopId,'dataFlag'=>1,'parentId'=>0])->order('catSort asc')->select();
if(count($rs1)>0){
$ids = array();
foreach ($rs1 as $key => $v){
$ids[] = $v['catId'];
}
$rs2 = $this->where(['shopId'=>$shopId,'dataFlag'=>1])
->where('parentId', 'in', implode(',',$ids))
->order('catSort asc,catId asc')->select();
if(count($rs2)>0){
$tmpArr = array();
foreach ($rs2 as $key => $v){
$tmpArr[$v['parentId']][] = $v;
}
foreach ($rs1 as $key => $v){
$rs1[$key]['child'] = array_key_exists($v['catId'],$tmpArr)?$tmpArr[$v['catId']]:null;
$rs1[$key]['childNum'] = array_key_exists($v['catId'],$tmpArr)?count($tmpArr[$v['catId']]):0;;
}
}
}
return $rs1;
}
/**
* 获取列表
*/
public function listQuery($shopId,$parentId){
$rs = $this->where(['shopId'=>$shopId,'dataFlag'=>1,'isShow'=>1,'parentId'=>$parentId,'shopId'=>$shopId])
->order('catSort asc')->select();
return $rs;
}
/**
* 删除
*/
public function del(){
$id = input("post.id/d");
if($id==0)return $rd;
$shopId = (int)session('WST_USER.shopId');
//把相关的商品下架了
$data = array();
$data['isSale'] = 0;
$gm = new \wstmart\home\model\Goods();
$gm->save($data,['shopId'=>$shopId,"shopCatId1"=>$id]);
$gm->save($data,['shopId'=>$shopId,"shopCatId2"=>$id]);
//删除商品分类
$data = array();
$data["dataFlag"] = -1;
$rs = $this->where("catId|parentId",$id)->where(["shopId"=>$shopId])->update($data);
if(false !== $rs){
return WSTReturn("",1);
}else{
return WSTReturn($this->getError());
}
}
/**
* 获取店铺商品分类列表
*/
public function getShopCats($shopId = 0){
$data = [];
if(!$data){
$data = $this->field("catId,parentId,catName,shopId")->where(["shopId"=>$shopId,"parentId"=>0,"isShow"=>1 ,"dataFlag"=>1])->order("catSort asc")->select();
if(count($data)>0){
$ids = array();
foreach ($data as $v){
$ids[] = $v['catId'];
}
$crs = $this->field("catId,parentId,catName,shopId")
->where(["shopId"=>$shopId,"isShow"=>1 ,"dataFlag"=>1])
->where("parentId","in",implode(',',$ids))
->order("catSort asc")->select();
$ids = array();
foreach ($crs as $v){
$ids[$v['parentId']][] = $v;
}
foreach ($data as $key =>$v){
$data[$key]['children'] = '';
if(isset($ids[$v['catId']])){
$data[$key]['children'] = $ids[$v['catId']];
}
}
}
}
return $data;
}
/**
* 显示状态
*/
public function changeCatStatus(){
$id = input("post.id/d");
$isShow = input("post.isShow/d");
$parentId = input("post.pid/d");
$data = array();
$data["isShow"] = $isShow;
$shopId = (int)session('WST_USER.shopId');
$this->save($data,["catId"=>$id,"shopId"=>$shopId]);
$this->save($data,["parentId"=>$id,"shopId"=>$shopId]);
if($parentId>0 && $isShow==1){
$this->save($data,["catId"=>$parentId,"shopId"=>$shopId]);
}
//如果是隐藏的话还要下架的商品
if($isShow==0){
$gm = new \wstmart\home\model\Goods();
$data = array();
$data["isSale"] = 0;
$gm->save($data,["shopId"=>$shopId,"shopCatId1|shopCatId2"=>['=',$id]]);
}
return WSTReturn("",1);
}
/**
* 获取自营店铺首页楼层
*/
public function getFloors(){
$shopId = (int)input('shopId');
$cats1 = $this->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>0,'shopId'=>$shopId])
->field("catName,catId")->order('catSort asc')->select();
if(!empty($cats1)){
$ids = [];
foreach ($cats1 as $key =>$v){
$ids[] = $v['catId'];
}
$cats2 = [];
$rs = $this->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>['in',$ids],'shopId'=>$shopId])
->field("parentId,catName,catId")->order('catSort asc')->select();
foreach ($rs as $key => $v){
$cats2[$v['parentId']][] = $v;
}
foreach ($cats1 as $key =>$v){
$cats1[$key]['children'] = (isset($cats2[$v['catId']]))?$cats2[$v['catId']]:[];
}
}
return $cats1;
}
/**
* 获取省份 mark 20180514
*/
public function getAreas(){
// header("Content-type:text/html;charset=utf-8");
$areas = Db::name('areas')->where(['parentId'=>0])->order('areaId asc')->select();
return $areas;
}
/**
* 设置分类特产 mark 20180518
*/
public function setSpecial(){
$data = input('post.');
$where['catId'] =$data['catId'];
$rs = $this->isUpdate(true)->save($data);
if($rs !== false){
return WSTReturn('保存成功',1);
}else{
return WSTReturn('保存失败',-1);
}
}
}