<?php

namespace wstmart\admin\model;

/**

 * ============================================================================

 * 系统数据分类业务处理

 */

use think\Db;

class DataCats extends Base{

	protected $insert = ['dataFlag'=>1]; 

	/**

	 * 获取数据分类列表

	 */

	public function listQuery($catId = -1){

		if($catId==-1)return ['id'=>0,'name'=>'系统数据','isParent'=>true,'open'=>true];

		$rs = Db::name('data_cats')->where(['dataFlag'=>1])->field('catId id,catName name')->select();

		return $rs;

	}

	/**

	 * 获取数据分类

	 */

	public function getById($id){

		return $this->get(['dataFlag'=>1,'catId'=>$id]);

	}

	

	/**

	 * 新增数据分类

	 */

	public function add(){

		// 验证数据代码

		$catCode = input('catCode');

		$hasCode = $this->where(['catCode'=>$catCode,'dataFlag'=>1])->find();

		if(!empty($hasCode))return WSTReturn('数据分类代码已存在');

		// 执行新增

		$result = $this->validate('DataCats.add')->save(input('post.'));

        if(false !== $result){

        	return WSTReturn("新增成功", 1);

        }else{

        	return WSTReturn($this->getError(),-1);

        }

	}

    /**

	 * 编辑数据分类

	 */

	public function edit(){

		$id = input('post.catId/d');



		// 验证数据代码

		$catCode = input('catCode');

		$hasCode = $this->where(['catCode'=>$catCode,'dataFlag'=>1,'catId'=>['<>',$id]])->find();

		if(!empty($hasCode))return WSTReturn('数据分类代码已存在');





	    $result = $this->validate('DataCats.edit')->allowField(['catName','catCode'])->save(input('post.'),['catId'=>$id]);

        if(false !== $result){

        	return WSTReturn("编辑成功", 1);

        }else{

        	return WSTReturn($this->getError(),-1);

        }

	}

	/**

	 * 删除数据分类

	 */

	public function del(){

	    $id = input('post.id/d');

		$data = [];

		$data['dataFlag'] = -1;

		Db::startTrans();

		try{

			$result = $this->update($data,['catId'=>$id]);// 删除该数据分类

			if(false !== $result){

	        	// 删除该数据分类下所有子数据

	        	Db::name('datas')->where(['catId'=>$id])->setField('dataFlag',-1);

				Db::commit();

				return WSTReturn("删除成功", 1);

	        }

		}catch(\Exception $e){

			Db::rollback();errLog($e);

			return WSTReturn("删除失败",-1);

		}

        

	}

	

}