<?php

namespace wstmart\admin\model;

use think\Db;

/**

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

 * 文章业务处理

 */

class Articles extends Base{

	/**

	 * 分页

	 */

	public function pageQuery(){

		$key = input('key');

		$catId = (int)input('catId');

		$sort = input('sort');

		$catIds = [];

		if($catId>0){

		    $catIds = model('ArticleCats')->getChild($catId);

        }

		$where = [];

		$where['a.dataFlag'] = 1;

		if(count($catIds)>0)$where['a.catId'] = ['in',$catIds];

		if($key!='')$where['a.articleTitle'] = ['like','%'.$key.'%'];

		$order = 'a.articleId desc';

		if($sort){

			$sort =  str_replace('.',' ',$sort);

			$order = $sort;

		}

		$page = Db::name('articles')->alias('a')

		->join('__ARTICLE_CATS__ ac','a.catId= ac.catId','left')

		->join('__STAFFS__ s','a.staffId= s.staffId','left')

		->where($where)

		->field('a.articleId,a.catId,a.articleTitle,a.isShow,a.articleContent,a.articleKey,a.createTime,ac.catName,s.staffName')

		->order($order)

		->paginate(input('post.limit/d'))->toArray();

		if(count($page['Rows'])>0){

			foreach ($page['Rows'] as $key => $v){

				$page['Rows'][$key]['articleContent'] = strip_tags(htmlspecialchars_decode($v['articleContent']));

			}

		}

		return $page;

	}

	

	/**

	 * 显示是否显示/隐藏

	 */

	public function editiIsShow(){

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

		$isShow = (input('post.isShow/d')==1)?1:0;

		$result = $this->where(['articleId'=>$id])->update(['isShow' => $isShow]);

		if(false !== $result){

			WSTClearAllCache();

			return WSTReturn("操作成功", 1);

		}else{

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

		}

	}

	

	/**

	 * 获取指定对象

	 */

	public function getById($id){

		$single = $this->where(['articleId'=>$id,'dataFlag'=>1])->find();

		$singlec = Db::name('article_cats')->where(['catId'=>$single['catId'],'dataFlag'=>1])->field('catName')->find();

		$single['catName']=$singlec['catName'];

		$single['articleContent'] = htmlspecialchars_decode($single['articleContent']);

		return $single;

	}

	

	/**

	 * 新增

	 */

	public function add(){

		$data = input('post.');

		WSTUnset($data,'articleId,dataFlag');

		$data["staffId"] = (int)session('WST_STAFF.staffId');

		$data['createTime'] = date('Y-m-d H:i:s');

		Db::startTrans();

        try{

        	$result = $this->validate('Articles.add')->allowField(true)->save($data);

        	if(false !== $result){

        		WSTClearAllCache();

        		// 预览图

				WSTUseImages(1, $this->articleId, $data['coverImg']);

				//文章描述图片

				WSTEditorImageRocord(1, $this->articleId, '',$data['articleContent']);

	        	Db::commit();

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

			}

        }catch(\Exception $e){

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

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

        }	

    }

	

	/**

	 * 编辑

	 */

	public function edit(){

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

		$data = input('post.');

		WSTUnset($data,'articleId,dataFlag,createTime');

		$data["staffId"] = (int)session('WST_STAFF.staffId');

		Db::startTrans();

        try{

        	// 预览图

			WSTUseImages(0, $articleId, $data['coverImg'],'articles','coverImg');

        	//文章描述图片

			$oldArticleContent = $this->where('articleId',$articleId)->value('articleContent');// 旧描述

			WSTEditorImageRocord(1, $articleId, $oldArticleContent,$data['articleContent']);

        	$result = $this->validate('Articles.edit')->allowField(true)->save($data,['articleId'=>$articleId]);

        	if(false !== $result){

        		WSTClearAllCache();

				Db::commit();

				return WSTReturn("修改成功", 1);

			}

		}catch(\Exception $e){

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

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

        }

	}

	

	/**

	 * 删除

	 */

	public function del(){

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

		$data = [];

		$data['dataFlag'] = -1;

		Db::startTrans();

		try{

			$result = $this->where(['articleId'=>$id])->update($data);

			if(false !== $result){

				WSTClearAllCache();

				// 预览图

				WSTUnuseImage('articles','coverImg',$id);

	        	//文章描述图片

				$oldArticleContent = $this->where('articleId',$id)->value('articleContent');// 旧描述

				WSTEditorImageRocord(1, $id, $oldArticleContent,'');

				Db::commit();

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

			}

		}catch (\Exception $e) {

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

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

        }

	}

	/**

	 * 批量删除

	 */

	public function delByBatch(){

		$ids = input('post.ids');

		$data = [];

		$data['dataFlag'] = -1;

		Db::startTrans();

		try{

			$result = $this->where(['articleId'=>['in',$ids]])->update($data);

			if(false !== $result){

				$oldArticleContent = $this->field('articleId,articleContent')->where(['articleId'=>['in',$ids]])->select();// 旧描述

				foreach($oldArticleContent as $k=>$v){

					// 预览图

					WSTUnuseImage('articles','coverImg',$v['articleId']);

					//文章描述图片

					WSTEditorImageRocord(1, $v['articleId'], $v['articleContent'],'');

				}

				WSTClearAllCache();

				Db::commit();

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

			}

		}catch (\Exception $e) {

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

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

        }

	}

}