<?php

namespace wstmart\admin\model;

use wstmart\admin\model\Goods as M;

use think\Db;

/**

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

 * 订单投诉业务处理

 */

class Informs extends Base{

	/**

	 * 获取举报列表

	 */

	public function pageQuery(){

     	$informStatus = (int)Input('informStatus',-1);

	 	if($informStatus>-1)$where['o.informStatus']=$informStatus;

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

		$order = [];

		$rs = Db::name('informs')->alias('o')

		                      ->field('o.*,s.shopId,s.shopName,u.userName,u.loginName,oc.goodsImg,oc.goodsId,oc.goodsName')

						      ->join('__SHOPS__ s','o.shopId=s.shopId','inner','left')

						      ->join('__USERS__ u','o.informTargetId=u.userId','inner')

						      ->join('__GOODS__ oc','oc.goodsId=o.goodId','inner')

						      ->where($where)

						      ->order('informId desc')

						      ->paginate()

						      ->toArray();

	    $reason = WSTDatas('INFORMS_TYPE');

	    for($i=1;$i<=count($reason);$i++){

	    	for($j=0;$j<count($rs['Rows']);$j++)

	    		if($rs['Rows'][$j]['informType'] == $i){

	    			$rs['Rows'][$j]['informType'] = $reason[$i]['dataName'];

	    		}

	    	}

		return $rs;

	}



	/**

	 * 获取举报信息

	 */

	 public function getDetail(){

	 	$informId = (int)Input('cid');

	 	$data = $this->alias('oc')

	 	             ->join('__SHOPS__ s','oc.shopId=s.shopId','inner','left')

					 ->join('__USERS__ u','oc.informTargetId=u.userId','inner')

	 				 ->where("oc.informId=$informId")

	 				 ->find();

	 	if($data){

	 		if($data['informAnnex']!='')$data['informAnnex'] = explode(',',$data['informAnnex']);

			$data['userName'] = ($data['userName']=='')?$data['loginName']:$data['userName'];

		   

	 	}

	 	 return $data;

	 }



	



	 /**

	  * 处理

	  */

	 public function finalHandle(){

	 	$rd = array('status'=>-1,'msg'=>'无效的举报信息');

	 	$informId = (int)Input('cid');

	 	$finalResult = Input('finalResult');

	 	$informStatus = Input('informStatus');

	 	if($informId==0){

	 		return WSTReturn('无效的举报信息',-1);

	 	}

	 	//判断是否已经处理过了

	 	$rs = Db::name('informs')->alias('oc')

	 			   ->field('oc.informTargetId,oc.informStatus,oc.goodId,oc.shopId,oc.informTargetId')

	 			   ->where("oc.informId=$informId")

	 			   ->find();

	    if($informStatus == 3){

	    	 try{

	    	 	$data['isInform'] = 0;

	 	        $ers = Db::name('informs')->where('informTargetId='.$rs['informTargetId'])->delete();

	 	        $res = Db::name('users')->where('userId='.$rs['informTargetId'])->update($data);

	 	        if($ers!==false){

					//发站内用户信息提醒

		 	    	WSTSendMsg($rs['informTargetId'],"由于您被检验出恶意举报,您所有未处理举报商品已被取消并且已被禁止举报!",['from'=>3,'dataId'=>$informId]);                

					Db::commit();

					return WSTReturn('操作成功',2);

	 	        }

	 	    }catch(\Exception $e){

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

	            return WSTReturn('操作失败',-1);

	 	    }

	    }

	 	if($rs['informStatus']!=1 && $rs['informStatus']!=2){

	 		if($informStatus == 2){

	 			$m = new M();

	 			$m->illegal($rs['goodId'],1);

	 		}

	 		$data = array();

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

	 		$data['informStatus'] = $informStatus;

	 		$data['respondContent'] = Input('finalResult');

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

	 		Db::startTrans();

		    try{

	 	        $ers = Db::name('informs')->where('informId='.$informId)->update($data);

	 	        if($ers!==false){

		 	        //发站内商家信息提醒

					$shopId = $rs["shopId"];

					$tpl = WSTMsgTemplates('SHOP_GOODS_INFORM');

			        if( $tpl['tplContent']!='' && $tpl['status']=='1'){

			        	$goodId = $rs['goodId'];

			        	$goods = Db::name("goods")->where(["goodsId"=>$goodId])->field("goodsName")->find();

			            $find = ['${GOODS}'];

			            $replace = [$goods['goodsName']];

			            

			            $msg = array();

			            $msg["shopId"] = $shopId;

			            $msg["tplCode"] = $tpl["tplCode"];

			            $msg["msgType"] = 1;

			            $msg["content"] = str_replace($find,$replace,$tpl['tplContent']);

			            $msg["msgJson"] = ['from'=>3,'dataId'=>$informId];

			            model("common/MessageQueues")->add($msg);

			        }



					//发站内用户信息提醒

		 	    	WSTSendMsg($rs['informTargetId'],"您举报的商品已有回复,请查看违规举报详情。",['from'=>3,'dataId'=>$informId]);                

					Db::commit();

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

	 	        }

	 	    }catch(\Exception $e){

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

	            return WSTReturn('操作失败',-1);

	 	    }

	 	}else{

	 	    return WSTReturn('操作失败,该举报状态已发生改变,请刷新后重试!',-1);

	 	}



	 }

}