<?php
namespace wstmart\admin\model;
use think\Db;
use think\Loader;
use think\Validate;
/**
 * ============================================================================
 * 店铺业务处理
 */
class Shops extends Base{
	/**
	 * 分页
	 */
	public function pageQuery($shopStatus=1){
		$areaIdPath = input('areaIdPath');
		$shopName = input('shopName');
		$telephone = input('userPhone');
		$catId =(int)input('cat');
		$isInvestment = (int)input('isInvestment/d',-1);
		$where = [];
		$where['s.dataFlag'] = 1;
		$where['s.applyStatus'] = 2;
		$where['s.shopStatus'] = $shopStatus;
		if($catId!="0"){
			$where['c.catId'] = $catId;
		}
		if(in_array($isInvestment,[0,1]))$where['ss.isInvestment'] = $isInvestment;
		if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
		if($telephone!='')$where['telephone'] = ['like','%'.$telephone.'%'];
		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
		if($catId !='')$where['catId'] = ['like',$catId."%"];
		$sort = input('sort');
		$order = [];
		if($sort!=''){
			$sortArr = explode('.',$sort);
			$order = $sortArr[0].' '.$sortArr[1];
		}
		$result=Db::table('__SHOPS__')->alias('s')
		           ->join('__AREAS__ a2','s.areaId=a2.areaId','left')
			       ->join('__USERS__ u','u.userId=s.userId','left')
			       ->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
			       ->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
			       ->join('__SHOP_PAY__ sp','sp.shopId=s.shopId','left')
			       ->join('__SHOP_COMMISSION__ sc','sc.shopId=s.shopId','left')
			       ->where($where)
			       ->field('u.loginName,s.shopId,shopSn,shopName,a2.areaName,shopkeeper,telephone,shopAddress,shopCompany,shopAtive,shopStatus,s.applyTime,s.createTime,sp.status,sc.commission')
			       ->order('createTime desc')->group('s.shopId')
			       ->paginate(input('limit/d'))->toArray();
		foreach ($result['Rows'] as &$value) {
			$catName=db('cat_shops')->alias('a')->join('goods_cats g','g.catId=a.catId')
			    ->where('shopId',$value['shopId'])->field('catName')->select();
			$value['catName']="";
			    if(count($catName)>1){
			    	foreach ($catName as &$v) {
			    	$value['catName']=$value['catName'].$v['catName'].',';
			    	}
			    }
			$goodsNum=db('goods')->alias('g')->where(['shopId'=>$value['shopId'],'isSale'=>1,'dataFlag'=>1])->field('count(goodsId)goodsNum')->select();
			$value['goodsNum']="";
				foreach ($goodsNum as &$v) {
					$value['goodsNum']=$value['goodsNum'].$v['goodsNum'];
				}
		}
		return $result;
	}
	/**
	 * 分页>where('a.orgin_id=b.id AND a.orgin_id=c.orgin_id AND b.status='.$status.' AND a.task_name like %'.$serch_val.'%')
	 */
	public function pageQueryByApply(){
		$areaIdPath = input('areaIdPath');
		//$catId = input('cat/d');
		$shopName = input('shopName');
		$investmentStaff = input('investmentStaff');// mark hsf 20180112
		$isInvestment = (int)input('isInvestment/d',-1);
		$where = [];
		$where['s.dataFlag'] = 1;
		$where['s.applyStatus'] = ['in',[-1,1,2]];// mark hsf 20180112
		if(in_array($isInvestment,[0,1]))$where['ss.isInvestment'] = $isInvestment;
		if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
		if($investmentStaff!='')$where['ss.investmentStaff'] = ['like','%'.$investmentStaff.'%'];// mark hsf 20180112		
		//if($catId !='')$where['catId'] = ['like',$catId."%"];
		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
		return Db::table('__SHOPS__')->alias('s')->join('__AREAS__ a2','s.areaId=a2.areaId','left')
		       ->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
		       ->join('__USERS__ u','u.userId=s.userId','left')
			    //->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
		       ->where($where)
		       ->field('u.loginName,s.shopId,applyLinkMan,applyLinkTel,investmentStaff,isInvestment,shopName,a2.areaName,shopAddress,shopCompany,applyTime,applyStatus')
		       ->order('s.applyStatus=1 DESC,s.applyStatus ASC,s.shopId desc')->paginate(input('limit/d'));// mark hsf 20180112
	}
	/**
	 * 开店申请列表
	 */
	public function shopApplyList(){
		//$areaIdPath = input('areaIdPath');
		$shopName = input('shopName');
		$where = [];
		$where['s.dataFlag'] = 1;	
		if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];	
		//if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
		return Db::name('shops')->alias('s')
		       ->join('__USERS__ u','u.userId=s.userId','left')
		       ->where($where)
		       ->field('u.loginName,u.trueName,s.*,from_unixtime(s.createTime) applyTime')
		       ->order('s.status ASC,s.createTime ASC')->paginate(input('limit/d'));// mark hsf 20180112
		// return Db::table('__SHOPS__')->alias('s')->join('__AREAS__ a2','s.areaId=a2.areaId','left')
		//        ->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
		//        ->join('__USERS__ u','u.userId=s.userId','left')
		// 	    //->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
		//        ->where($where)
		//        ->field('u.loginName,s.shopId,applyLinkMan,applyLinkTel,investmentStaff,isInvestment,shopName,a2.areaName,shopAddress,shopCompany,applyTime,applyStatus')
		//        ->order('s.applyStatus=1 DESC,s.applyStatus ASC,s.shopId desc')->paginate(input('limit/d'));// mark hsf 20180112
	}

	/**
	 * 为店铺添加质保金
	 */
	public function topDeposit(){
		Db::startTrans();
		try{
			$shopId = input('shopId');
			$applyStatus = (int)input('applyStatus');
			$cashDeposit = input('addDeposit');//充值质保金金额
			$offDeposit = input('offDeposit');//扣除质保金金额
			$offCause = input('offCause');//扣除质保金原因
			// echo $offCause;die;
			// echo $applyStatus;die;
			if($applyStatus == 1){
				$deposit_info = Db::name('shops_deposit')->where('shopId',$shopId)->field('shopId,payDeposit,cashDeposit')->find();
				// dump($deposit_info);die;
				$data_deposit['cashDeposit'] = $deposit_info['cashDeposit'] + $cashDeposit;
				// echo $data_deposit['cashDeposit'];die;
				
				if($deposit_info['payDeposit'] < $data_deposit['cashDeposit']){
					return WSTReturn("质保金大于店铺应交剩余金额",2);
				}elseif($deposit_info['payDeposit'] == $data_deposit['cashDeposit']){
					$data_deposit['isFinish'] = 1;
					$data_deposit['completeTime'] = time();
				}

				$res = Db::name('shops_deposit')->where('shopId',$shopId)->update($data_deposit);//商户充值质保金
				//添加到质保金变动记录表
				$detail = [];
		        $detail['shopId'] = $shopId;
		        $detail['cashDeposit'] = $cashDeposit;
		        $detail['payType'] = 3;
		        $detail['payTime'] = time();
		        Db::name('shops_deposit_detail')->insert($detail);
			}else{

				$deposit_info = Db::name('shops_deposit')->where('shopId',$shopId)->field('shopId,payDeposit,cashDeposit')->find();
				$data_deposit['cashDeposit'] = $deposit_info['cashDeposit'] - $offDeposit;
				$data_deposit['isFinish'] = 2;
				Db::name('shops_deposit')->where('shopId',$shopId)->update($data_deposit);//扣除商户质保金
				//添加到质保金变动记录表
				$detail = [];
		        $detail['shopId'] = $shopId;
		        $detail['cashDeposit'] = $offDeposit;
		        $detail['payType'] = 4;
		        $detail['payTime'] = time();
		        Db::name('shops_deposit_detail')->insert($detail);
		        //为商户发送扣除质保金提醒
		        $userId = Db::name('shops')->where('shopId',$shopId)->field('userId')->find();
		        // dump($userId);die;
		        $messages = [];
		        $messages['msgType'] = 1;
	            $messages['sendUserId'] = 1;
	            $messages['receiveUserId'] = $userId['userId'];
	            $messages['msgContent'] = $offCause;
	            $messages['msgStatus'] = 0;
	            $messages['msgJson'] = '{"from":0,"dataId":"0"}';
	            $messages['dataFlag'] = 1;
	            $messages['from'] = 0;
	            $messages['createTime'] = date('Y-m-d',time());
	            Db::name('messages')->insert($messages);
			}
			Db::commit();
			return WSTReturn('操作成功',1); 
	    }catch (\Exception $e) {
		    Db::rollback();errLog($e);
	        return WSTReturn('操作失败',2);
	    }
	}

	/**
	 * 删除
	 */
    public function del(){
	    $id = input('post.id/d');
	    if($id==1)return WSTReturn('无法删除自营店铺');
		Db::startTrans();
        try{
	        $shop = $this->get($id);
	        $shop->dataFlag = -1;
	        $result = $shop->save();
	        WSTUnuseImage('shops','shopImg',$id);
	        // 店铺申请表的图片标记为删除
	        $imgArr = model('shopExtras')->field('legalCertificateImg,businessLicenceImg,bankAccountPermitImg,organizationCodeImg,taxRegistrationCertificateImg,taxpayerQualificationImg')->where(['shopId'=>$id])->find();
	        WSTUnuseImage($imgArr->getData());
            if(false !== $result){
            	//删除推荐店铺
            	Db::name('recommends')->where(['dataSrc'=>1,'dataId'=>$id])->delete();
            	//删除店铺与商品分类的关系
            	Db::name('cat_shops')->where(['shopId'=>$id])->delete();
            	//删除用户店铺身份
        	    Db::name('users')->where(['userId'=>$shop->userId])->update(['dataFlag'=>-1]);
            	//下架及下架商品
        	    model('goods')->delByshopId($id);
        	    //删除店铺钩子事件
        	    hook('afterChangeShopStatus',['shopId'=>$id]);
        	    Db::commit();
        	    return WSTReturn("删除成功", 1);
            }
        }catch (\Exception $e) {
            Db::rollback();errLog($e);
        }
        return WSTReturn('删除失败',-1);
	}
	/**
	 * 根据根据userId删除店铺
	 */
	public function delByUserId($userId){
		if($userId==1)return WSTReturn('无法删除自营店铺');
	    $shop = $this->where('userId',$userId)->find();
	    if(!$shop)return;
	    $shop->dataFlag = -1;
	    $result = $shop->save();
	    WSTUnuseImage('shops','shopImg',$shop->shopId);
        if(false !== $result){
            //删除推荐店铺
            Db::name('recommends')->where(['dataSrc'=>1,'dataId'=>$shop->shopId])->delete();
            //删除店铺与商品分类的关系
            Db::name('cat_shops')->where(['shopId'=>$shop->shopId])->delete();
            //下架及删除商品
        	model('goods')->delByshopId($shop->shopId);
        	//删除店铺钩子事件
        	hook('afterChangeShopStatus',['shopId'=>$shop->shopId]);
        	return WSTReturn("删除成功", 1);
        }
        return WSTReturn('删除失败',-1);
	}
	/**
     * 获取商家入驻资料
     */
    public function getShopApply($id){
        $shop = $this->alias('s')->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','inner')
                   ->join('__USERS__ u','u.userId=s.userId','inner')
                   ->where('s.shopId',$id)
                   ->find()
                   ->toArray();
        //获取经营范围
		$goodscats = Db::name('cat_shops')->where('shopId',$id)->select();
		$shop['catshops'] = [];
		foreach ($goodscats as $v){
			$shop['catshops'][$v['catId']] = true;
		}
		$shop['auxiliary']=db('shop_auxiliary')->where('shopId',$shop['shopId'])->select();
		$shop['taxRegistrationCertificateImgVO'] = ($shop['taxRegistrationCertificateImg']!='')?explode(',',$shop['taxRegistrationCertificateImg']):[];
		return $shop;
    }
	/**
	 * 获取店铺信息
	 */
	public function getById($id){
		$shop = $this->alias('s')->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','inner')
                   ->where('s.shopId',$id)
                   ->find()
                   ->toArray();
		//获取经营范围
		$goodscats = Db::name('cat_shops')->where('shopId',$id)->select();
		$shop['catshops'] = [];
		foreach ($goodscats as $v){
			$shop['catshops'][$v['catId']] = true;
		}
		//获取认证类型
	    $shopAccreds = Db::name('shop_accreds')->where('shopId',$id)->select();
	    $shop['accreds'] = [];
		foreach ($shopAccreds as $v){
			$shop['accreds'][$v['accredId']] = true;
		}
        $shop['taxRegistrationCertificateImgVO'] = ($shop['taxRegistrationCertificateImg']!='')?explode(',',$shop['taxRegistrationCertificateImg']):[];
		return $shop;
	}
	/**
	 * 生成店铺编号
	 * @param $key 编号前缀,要控制不要超过int总长度,最好是一两个字母
	 */
	public function getShopSn($key = ''){
		$rs = $this->Max("REPLACE(shopSn,'S','')+''");
		if($rs==''){
			return $key.'000000001';
		}else{
			for($i=0;$i<1000;$i++){
			   $num = (int)str_replace($key,'',$rs);
			   $shopSn = $key.sprintf("%09d",($num+1));
			   $ischeck = $this->checkShopSn($shopSn);
			   if(!$ischeck)return $shopSn;
			}
			return '';//一直都检测到那就不要强行添加了
		}
	}
	
	/**
	 * 检测店铺编号是否存在
	 */
	public function checkShopSn($shopSn,$shopId=0){
		$dbo = $this->where(['shopSn'=>$shopSn,'dataFlag'=>1]);
		if($shopId>0)$dbo->where('shopId','<>',$shopId);
		$num = $dbo->Count();
		if($num==0)return false;
		return true;
	}
	
    /**
	 * 处理申请
	 */
	public function handleApply(){
		$data = input('post.');
		$shopId=$data['shopId'];
		Db::startTrans();
        try{	        
        	$shops = $this->get($shopId);
	        if($data['status']==1){
	        	//建立店铺配置信息
		        $sc = [];
		        $sc['shopId'] = $shopId;
		        if(!Db::name('ShopConfigs')->where($sc)->value('shopId')){
		        	Db::name('ShopConfigs')->insert($sc);
		        }
		        if(!Db::name('shop_users')->where($sc)->value('shopId')){
		        	$su = [];
		        	$su["shopId"] = $shopId;
		        	$su["userId"] = $shops->userId;
		        	$su["roleId"] = 0;
		        	Db::name('shop_users')->insert($su);
		        }
		        if(!Db::name('shop_scores')->where($sc)->value('shopId')){
		        	//建立店铺评分记录
					$ss = [];
					$ss['shopId'] = $shopId;
					Db::name('shop_scores')->insert($ss);
		        }	        
		        
				Db::name('shops')->where(['shopId'=>$shopId])->update(['status'=>1]);
				if($shops->status!=$data['status']){
					$userInfo = getUserInfo(['userId'=>$shops->userId],'userLevel,userType');
					if($userInfo['userLevel'] == 0 || $userInfo['userType'] == 0){
						$user_data['userLevel'] = empty($userInfo['userLevel']) ? 1 : $userInfo['userLevel'];
						$user_data['userType'] = empty($userInfo['userType']) ? 1 :  $userInfo['userType'];
				    	Db::name('users')->where(['userId'=>$shops->userId])->update($user_data);
					}
		        	//发送开店成功短信
		        	$tpl = WSTMsgTemplates('PHONE_USER_SHOP_OPEN_SUCCESS');
				    if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['phone']!=''){
				        $params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'LOGIN_NAME'=>$data['userName']]];
				        $rv = model('admin/LogSms')->sendSMS(0,$shops->userId,$data['phone'],$params,'handleApply');
				    }
				}
				 //店铺申请成功之后钩子 mark 20180530 by zll
	       		//hook('afterShopHandleApply',['userId'=>$shops->userId]);
	        }else{	        	
	        	if($shops->status!=$data['status']){
					//发送开店失败短信
		        	$tpl = WSTMsgTemplates('PHONE_SHOP_OPEN_FAIL');
				    if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['phone']!=''){
				        $params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'REASON'=>$data['applyDesc']]];
				        $rv = model('admin/LogSms')->sendSMS(0,$shops->userId,$data['phone'],$params,'handleApply');
				    }
	        	}	        	
	        }
	        $this->allowField(true)->save($data,['shopId'=>$shopId]);
	       	Db::commit();
	       // //店铺申请成功之后钩子 mark 20180530 by zll
	       // hook('afterShopHandleApply',['userId'=>$shops->userId,'applyStatus'=>$data['applyStatus']]);
	       return WSTReturn("操作成功", 1);
        }catch (\Exception $e) {
           Db::rollback();errLog($e);
           //return WSTReturn($e->getMessage());
           return WSTReturn('操作失败',-1);
           //echo $e->getMessage();
       }
	}
   	public function handleApplyTest(){	
		$shopId = input('post.shopId/d',0);
		$shops = $this->get($shopId);
		$shopAds=input('shopAds');
		$auxiliary=explode(',',$shopAds);
		if(empty($shops))return WSTReturn('删除失败,该入驻申请不存在');
		if($shops->applyStatus==2)return WSTReturn('该入驻申请已通过',1);
		$validate = Loader::validate('Shops');
        if(!$validate->check(Input('post.')))return WSTReturn($validate->getError());
        
        //判断经营范围
        $goodsCatIds = input('post.goodsCatIds');
        $accredIds = input('post.accredIds');
        if($goodsCatIds=='')return WSTReturn('请选择经营范围');
        $data = input('post.');
        $data['createTime']=date('Y-m-d');
        $data['applyStatus'] = ($data['applyStatus']==2)?2:-1;
        if($data['applyStatus']!=2 && $data['applyDesc']==''){
            return WSTReturn('请输入审核不通过原因');
        }
        if($data['applyStatus']==2 && $data['cashDeposit'] ==''){
        	return WSTReturn('请输入实缴保证金');
        }
        if($data['applyStatus']==2 && !is_numeric($data['cashDeposit'])){
        	return WSTReturn('实缴保证金请输入数字');
        }
        $shopLicense=input('shopLicense');
        if((strpos($data['goodsCatIds'],'393')!==false)||$data['goodsCatIds']=='393'){
           	if($shopLicense==""){
			    return WSTReturn('食品许可证不能为空');
			}
        }else{
            $data['shopLicense']='';
        }

        // $goodsCatIds = $data['goodsCatIds'];
        if($data['payDeposit'] !=''){
        	if(!is_numeric($data['payDeposit'])){
        		return WSTReturn('应缴保证金请输入数字');
        	}
        	$payDeposit['payDeposit'] = $data['payDeposit'];
        }else{
        	$payDeposit = Db::name('goods_cats')->where('catId',$goodsCatIds)->field('payDeposit')->find();
        }
        // dump($payDeposit);die;
		$cashDeposit = $data['cashDeposit'];
		$isFinish = '';
		$completeTime = '';
		if($payDeposit['payDeposit'] > $cashDeposit){
			$isFinish = 2;
			$completeTime = '';
		}elseif($payDeposit['payDeposit'] <= $cashDeposit){
			$isFinish = 1;
			$completeTime = time();
		}//elseif($payDeposit['payDeposit'] < $cashDeposit){
			//return WSTReturn('通过保证金大于经营类目质保金,请重新输入');
		//}
		// echo $isFinish;die;
        Db::startTrans();
        try{
	        //保存店铺基础信息
			$auxiliary_data=[];
			$shopAuxiliary =  Db::name('shop_auxiliary')->where('shopId='.$shopId)->find();
			WSTUseImages(0, $shopAuxiliary['id'], $auxiliary,'shopauxiliary');
			Db::name('shop_auxiliary')->where('shopId='.$shopId)->delete();
			foreach($auxiliary as $k=>$v){
				$auxiliary_data[$k]['shopId']=$shopId;
				$auxiliary_data[$k]['auxiliaryImg']=$v;
			}
			//dump($shopAuxiliary);die;
			Db::name('shop_auxiliary')->insertAll($auxiliary_data);
	        $areaIds = model('Areas')->getParentIs($data['areaId']);
		    if(!empty($areaIds))$data['areaIdPath'] = implode('_',$areaIds)."_";
		    $areaIds = model('Areas')->getParentIs($data['bankAreaId']);
		    if(!empty($areaIds))$data['bankAreaIdPath'] = implode('_',$areaIds)."_";
	        WSTUnset($data,'id,shopId,userId,dataFlag,goodsCatIds,accredIds,isSelf');
	        if($data['applyStatus']==2 && $data['shopSn']=='')$data['shopSn'] = $this->getShopSn('S');
            $row=db('shop_license')->where('shopId',$shopId)->update(['shopLicense'=>$shopLicense]);
	        //启用上传图片
			WSTUseImages(1, $shopId, $data['shopImg'],'shops','shopImg');
			//WSTUseImages(1, $shopId, $shopLicense,'shops','shopLicense');
	        $this->allowField(true)->save($data,['shopId'=>$shopId,'dataFlag'=>1,'shopStatus'=>1]);
	        //更改用户身份
	        if($data['applyStatus']==2){
                 Db::name('users')->where('userId',$shops->userId)->update(['userType'=>1]);
	        }
	        //保存店铺其他信息
	        $areaIds = model('Areas')->getParentIs($data['businessAreaPath0']);
	        if(!empty($areaIds))$data['businessAreaPath0'] = implode('_',$areaIds)."_";
	        //if($data['establishmentDate']=='')unset($data['establishmentDate']);
	        //if($data['businessEndDate']=='')unset($data['businessEndDate']);
	        //if($data['businessStartDate']=='')unset($data['businessStartDate']);
	        //if($data['legalCertificateStartDate']=='')unset($data['legalCertificateStartDate']);
	        //if($data['legalCertificateEndDate']=='')unset($data['legalCertificateEndDate']);
	        //if($data['organizationCodeStartDate']=='')unset($data['organizationCodeStartDate']);
	        //if($data['organizationCodeEndDate']=='')unset($data['organizationCodeEndDate']);
	        //$data['registeredCapital'] = (float)$data['registeredCapital'];
	        
	        $seModel = model('ShopExtras');
	        $Id = $seModel->where(['shopId'=>$shopId])->value('id');
	        /*
				legalCertificateImg
				businessLicenceImg
				bankAccountPermitImg
				organizationCodeImg
				taxRegistrationCertificateImg
				taxpayerQualificationImg
	        */
	        // 启用上传图片[extras表]
	        WSTUseImages(1, $Id, $data['legalCertificateImg'], 'shop_extras', 'legalCertificateImg');
	        WSTUseImages(1, $Id, $data['businessLicenceImg'], 'shop_extras', 'businessLicenceImg');
	        WSTUseImages(1, $Id, $data['bankAccountPermitImg'], 'shop_extras', 'bankAccountPermitImg');
	        //WSTUseImages(1, $Id, $data['organizationCodeImg'], 'shop_extras', 'organizationCodeImg');
	        //WSTUseImages(1, $Id, $data['taxRegistrationCertificateImg'], 'shop_extras', 'taxRegistrationCertificateImg');
	        //WSTUseImages(1, $Id, $data['taxpayerQualificationImg'], 'shop_extras', 'taxpayerQualificationImg');
	        $seModel->allowField(true)->save($data,['shopId'=>$shopId]);


		    //经营范围
		    Db::name('cat_shops')->where('shopId','=',$shopId)->delete();
		    $goodsCats = explode(',',$goodsCatIds);
		    foreach ($goodsCats as $key =>$v){
		        if((int)$v>0){
		        	Db::name('cat_shops')->insert(['shopId'=>$shopId,'catId'=>$v]);
		        }
		    }
		    //认证类型
		    Db::name('shop_accreds')->where('shopId','=',$shopId)->delete();
	        if($accredIds!=''){
	            $accreds = explode(',',$accredIds);
		        foreach ($accreds as $key =>$v){
			        if((int)$v>0){
			        	Db::name('shop_accreds')->insert(['shopId'=>$shopId,'accredId'=>$v]);
			        }
			    }
	        }
	        if($data['applyStatus']==2){
	        	//建立店铺配置信息
		        $sc = [];
		        $sc['shopId'] = $shopId;
		        Db::name('ShopConfigs')->insert($sc);
		        $su = [];
	        	$su["shopId"] = $shopId;
	        	$su["userId"] = $shops->userId;
	        	$su["roleId"] = 0;
	        	Db::name('shop_users')->insert($su);
		        //建立店铺评分记录
				$ss = [];
				$ss['shopId'] = $shopId;
				Db::name('shop_scores')->insert($ss);
				//店铺申请通过添加质保金
				$deposit = [];
				$deposit['shopId'] = $shopId;
	        	$deposit['cashDeposit'] = $cashDeposit;
	        	$deposit['passTime'] = time();
	        	$deposit['payDeposit'] = $payDeposit['payDeposit'];
	        	$deposit['isFinish'] = $isFinish;
	        	$deposit['completeTime'] = $completeTime;
	        	// dump($deposit);die;
	        	Db::name('shops_deposit')->insert($deposit);
	        	//加入商家质保金缴纳记录表
	        	$detail = [];
	        	$detail['shopId'] = $shopId;
	        	$detail['cashDeposit'] = $cashDeposit;
	        	$detail['payType'] = 1;
	        	$detail['payTime'] = time();
	        	Db::name('shops_deposit_detail')->insert($detail);
				 //店铺申请成功之后钩子 mark 20180530 by zll
	       		hook('afterShopHandleApply',['userId'=>$shops->userId]);
	        }
	        if($shops->applyStatus!=$data['applyStatus'])$this->sendMessages($shopId,$shops->userId,$data,'handleApply');
	       Db::commit();
	       // //店铺申请成功之后钩子 mark 20180530 by zll
	       // hook('afterShopHandleApply',['userId'=>$shops->userId,'applyStatus'=>$data['applyStatus']]);
	       return WSTReturn("操作成功", 1);
        }catch (\Exception $e) {
           Db::rollback();errLog($e);
           //return WSTReturn($e->getMessage());
           return WSTReturn('操作失败',-1);
           //echo $e->getMessage();
       }
	}

	/**
	 * 发送信息
	 */
	public function sendMessages($shopId,$userId,$data,$method){
	    $user = model('users')->get($userId);
	    $shops = model('shops')->get($shopId);
	    if((int)$data['applyStatus']==2){
            //如果存在手机则发送手机号码提示
		    $tpl = WSTMsgTemplates('PHONE_USER_SHOP_OPEN_SUCCESS');
		    if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkTel']!=''){
		        $params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'LOGIN_NAME'=>$user->loginName]];
		        $rv = model('admin/LogSms')->sendSMS(0,$userId,$data['applyLinkTel'],$params,$method);
		    }
		    //发送邮件
		    /*
		    $tpl = WSTMsgTemplates('EMAIL_USER_SHOP_OPEN_SUCCESS');
		    if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkEmail']){
		        $find = ['${LOGIN_NAME}','${MALL_NAME}'];
		        $replace = [$user->loginName,WSTConf("CONF.mallName")];
		        $sendRs = WSTSendMail($data['applyLinkEmail'],'申请入驻审核通过',str_replace($find,$replace,$tpl['content']));
		    }
		    关闭发送邮件 20180203 make cheng	*/
		    // 会员发送一条商城消息
	        $tpl = WSTMsgTemplates('SHOP_OPEN_SUCCESS');
		    if( $tpl['tplContent']!='' && $tpl['status']=='1'){
		        $find = ['${LOGIN_NAME}','${MALL_NAME}'];
		        $replace = [$user->loginName,WSTConf("CONF.mallName")];
		        WSTSendMsg($userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>0,'dataId'=>$shopId]);
		    }
		    //微信消息
		    if((int)WSTConf('CONF.wxenabled')==1){
			    $params = [];
			    $params['SHOP_NAME'] = $shops['shopName'];
				$params['APPLY_TIME'] = $shops['applyTime'];
				$params['NOW_TIME'] = date('Y-m-d H:i:s');
				$params['REASON'] = "申请入驻成功";
				WSTWxMessage(['CODE'=>'WX_SHOP_OPEN_SUCCESS','userId'=>$userId,'params'=>$params]);
			} 
	    }else{   	
	        //如果存在手机则发送手机号码提示
		    $tpl = WSTMsgTemplates('PHONE_SHOP_OPEN_FAIL');
		    if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkTel']!=''){
		        $params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'REASON'=>$data['applyDesc']]];
		        $rv = model('admin/LogSms')->sendSMS(0,$userId,$data['applyLinkTel'],$params,$method);
		    }
		    //发送邮件
		    // $tpl = WSTMsgTemplates('EMAIL_SHOP_OPEN_FAIL');
		    // if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkEmail']){
		    //     $find = ['${LOGIN_NAME}','${MALL_NAME}','${REASON}'];
		    //     $replace = [$user->loginName,WSTConf("CONF.mallName"),$data['applyDesc']];
		    //     $sendRs = WSTSendMail($data['applyLinkEmail'],'申请入驻失败',str_replace($find,$replace,$tpl['content']));
		    // }
	    	// 会员发送一条商城消息
	    	$tpl = WSTMsgTemplates('SHOP_OPEN_FAIL');
		    if( $tpl['tplContent']!='' && $tpl['status']=='1'){
		        $find = ['${LOGIN_NAME}','${MALL_NAME}','${REASON}'];
		        $replace = [$user->loginName,WSTConf("CONF.mallName"),$data['applyDesc']];
		        WSTSendMsg($userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>0,'dataId'=>$shopId]);
		    }
		    //微信消息
			if((int)WSTConf('CONF.wxenabled')==1){
				$params = [];
				$params['SHOP_NAME'] = $shops['shopName'];
				$params['APPLY_TIME'] = $shops['applyTime'];
				$params['NOW_TIME'] = date('Y-m-d H:i:s');
				$params['REASON'] = $data['applyDesc'];
				WSTWxMessage(['CODE'=>'WX_SHOP_OPEN_FAIL','userId'=>$userId,'params'=>$params]);
			} 
	    }
	}
	/**
	 * 删除申请
	 */
	public function delApply(){
	    $id = input('post.id/d');
	    $shop = $this->get($id);
	    if($shop->applyStatus==2)return WSTReturn('通过申请的店铺不允许删除');
		Db::startTrans();
        try{
            //删除店铺信息
            Db::name('cat_shops')->where(['shopId'=>$id])->delete();
            Db::name('shop_extras')->where(['shopId'=>$id])->delete();
            Db::name('shops')->where(['shopId'=>$id])->delete();
            WSTUnuseImage('shops','shopImg',$id);
            Db::commit();
            return WSTReturn("删除成功", 1);
        }catch (\Exception $e) {
            Db::rollback();errLog($e);
        }
        return WSTReturn('删除失败',-1);
	}
	/**
	 * 新增
	 */
	public function add(){
    	$validate = Loader::validate('Shops');
        if(!$validate->check(Input('post.')))return WSTReturn($validate->getError());
        //判断经营范围
        $goodsCatIds = Input('post.goodsCatIds');
        $accredIds = Input('post.accredIds');
        if($goodsCatIds=='')return WSTReturn('请选择经营范围');
        Db::startTrans();
        try{
        	$userId = 0;
        	$isNewUser = (int)input('post.isNew/d');
        	if($isNewUser==1){
	        	//创建用户账号
	        	$user = [];
				$user['loginName'] = input('post.loginName');
				$user['loginPwd'] = input('post.loginPwd');
				$ck = WSTCheckLoginKey($user['loginName']);
				if($ck['status']!=1)return $ck;
				if($user['loginPwd']=='')$user['loginPwd'] = '88888888';
				$loginPwd = $user['loginPwd'];
				$user["loginSecret"] = rand(1000,9999);
		    	$user['loginPwd'] = md5($user['loginPwd'].$user['loginSecret']);
		    	$user["userType"] = 1;
		    	$user['createTime'] = date('Y-m-d H:i:s');
	            model('users')->save($user);
		        $userId = model('users')->userId;
		    }else{
		    	$userId = (int)input('post.shopUserId/d');
		    	//检查用户是否可用
		    	$shopUser = model('users')->where(['userId'=>$userId,'dataFlag'=>1])->find();
		    	if(empty($shopUser))return WSTReturn('无效的账号信息');
		    	$tmpShop = $this->where(['dataFlag'=>1,'userId'=>$userId])->find();
		    	if(!empty($tmpShop))return WSTReturn('所关联账号已有店铺信息');
		    	$shopUser->userType = 1;
		    	$shopUser->save();
		    }
	        if($userId>0){
	        	//创建商家基础信息
		        $data = input('post.');
		        $data['createTime'] = date('Y-m-d H:i:s');
		        $areaIds = model('Areas')->getParentIs($data['areaId']);
			    if(!empty($areaIds))$data['areaIdPath'] = implode('_',$areaIds)."_";
			    $areaIds = model('Areas')->getParentIs($data['bankAreaId']);
			    if(!empty($areaIds))$data['bankAreaIdPath'] = implode('_',$areaIds)."_";
		        WSTUnset($data,'id,shopId,dataFlag,isSelf');
		        if($data['shopSn']=='')$data['shopSn'] = $this->getShopSn('S');
		        $data['userId'] = $userId;
		        $data['applyStatus'] = 2;
	        	$this->allowField(true)->save($data);
	        	$shopId = $this->shopId;
	        	//启用上传图片
				WSTUseImages(1, $shopId, $data['shopImg']);
				//保存店铺其他信息
		        $areaIds = model('Areas')->getParentIs($data['businessAreaPath0']);
		        if(!empty($areaIds))$data['businessAreaPath'] = implode('_',$areaIds)."_";
		        //if($data['establishmentDate']=='')unset($data['establishmentDate']);
		        //if($data['businessEndDate']=='')unset($data['businessEndDate']);
		        //if($data['businessStartDate']=='')unset($data['businessStartDate']);
		        //if($data['legalCertificateStartDate']=='')unset($data['legalCertificateStartDate']);
		        //if($data['legalCertificateEndDate']=='')unset($data['legalCertificateEndDate']);
		       //if($data['organizationCodeStartDate']=='')unset($data['organizationCodeStartDate']);
		       // if($data['organizationCodeEndDate']=='')unset($data['organizationCodeEndDate']);
		        //$data['registeredCapital'] = (float)$data['registeredCapital'];
		        $data['shopId'] = $shopId;

		        $seModel = model('ShopExtras');
		        $seModel->allowField(true)->save($data);
		        $Id = $seModel->where(['shopId'=>$shopId])->value('id');
		        // 判断是否有上传图片资料,启用上传图片[extras表]
		        WSTUseImages(1, $Id, $data['legalCertificateImg'], 'shop_extras');
		        WSTUseImages(1, $Id, $data['businessLicenceImg'], 'shop_extras');
		        WSTUseImages(1, $Id, $data['bankAccountPermitImg'], 'shop_extras');
		        //WSTUseImages(1, $Id, $data['organizationCodeImg'], 'shop_extras');
		       // WSTUseImages(1, $Id, $data['taxRegistrationCertificateImg'], 'shop_extras');
		       // WSTUseImages(1, $Id, $data['taxpayerQualificationImg'], 'shop_extras');
	        	//建立店铺配置信息
	        	$sc = [];
	        	$sc['shopId'] = $shopId;
	        	Db::name('ShopConfigs')->insert($sc);
	        	$su = [];
	        	$su["shopId"] = $shopId;
	        	$su["userId"] = $userId;
	        	$su["roleId"] = 0;
	        	Db::name('shop_users')->insert($su);
	        	//建立店铺评分记录
				$ss = [];
				$ss['shopId'] = $shopId;
				Db::name('shop_scores')->insert($ss);
	        	//经营范围
		        $goodsCats = explode(',',$goodsCatIds);
		        foreach ($goodsCats as $v){
		        	if((int)$v>0)Db::name('cat_shops')->insert(['shopId'=>$shopId,'catId'=>$v]);
		        }
		        //认证类型
	            if($accredIds!=''){
	                $accreds = explode(',',$accredIds);
		            foreach ($accreds as $v){
			        	if((int)$v>0)Db::name('shop_accreds')->insert(['shopId'=>$shopId,'accredId'=>$v]);
			        }
	            }
	            $data['applyStatus'] = 2;
	            $data['applyDesc'] = '';
	            $this->sendMessages($shopId,$userId,$data,'add');
	        }
	        Db::commit();
	        return WSTReturn("新增成功", 1);
        }catch (\Exception $e) {
            Db::rollback();errLog($e);
            return WSTReturn('新增失败',-1);
        }
	}
    /**
	 * 编辑
	 */
	public function edit(){
		$shopId = input('post.shopId/d',0);
		$shops = $this->get($shopId);
		$shopAds=input('shopAds');
		$auxiliary=explode(',',$shopAds);
		if(empty($shops) || $shops->dataFlag!=1)return WSTReturn('店铺不存在');
		$validate = Loader::validate('Shops');
        if(!$validate->check(Input('post.')))return WSTReturn($validate->getError());
        //判断经营范围
        $goodsCatIds = input('post.goodsCatIds');
        $accredIds = input('post.accredIds');
        if($goodsCatIds=='')return WSTReturn('请选择经营范围');
        Db::startTrans();
        try{
	        $data = input('post.');
			$auxiliary_data=[];
			$shopAuxiliary =  Db::name('shop_auxiliary')->where('shopId='.$shopId)->find();
			WSTUseImages(0, $shopAuxiliary['id'], $auxiliary,'shopauxiliary');
			Db::name('shop_auxiliary')->where('shopId='.$shopId)->delete();
			foreach($auxiliary as $k=>$v){
				$auxiliary_data[$k]['shopId']=$shopId;
				$auxiliary_data[$k]['auxiliaryImg']=$v;
			}
			Db::name('shop_auxiliary')->insertAll($auxiliary_data);
	        //保存店铺基础信息
	        $areaIds = model('Areas')->getParentIs($data['areaId']);
		    if(!empty($areaIds))$data['areaIdPath'] = implode('_',$areaIds)."_";
		    $areaIds = model('Areas')->getParentIs($data['bankAreaId']);
		    if(!empty($areaIds))$data['bankAreaIdPath'] = implode('_',$areaIds)."_";
	        WSTUnset($data,'id,shopId,userId,dataFlag,goodsCatIds,accredIds,isSelf,applyStatus,applyDesc');
	        //启用上传图片
			WSTUseImages(1, $shopId, $data['shopImg'],'shops','shopImg');
	        $this->allowField(true)->save($data,['shopId'=>$shopId,'dataFlag'=>1]);
	        //保存店铺其他信息
	        $areaIds = model('Areas')->getParentIs($data['businessAreaPath0']);
	        if(!empty($areaIds))$data['businessAreaPath'] = implode('_',$areaIds)."_";
	        //if($data['establishmentDate']=='')unset($data['establishmentDate']);
	        //if($data['businessEndDate']=='')unset($data['businessEndDate']);
	        //if($data['businessStartDate']=='')unset($data['businessStartDate']);
	        //if($data['legalCertificateStartDate']=='')unset($data['legalCertificateStartDate']);
	        //if($data['legalCertificateEndDate']=='')unset($data['legalCertificateEndDate']);
	        //if($data['organizationCodeStartDate']=='')unset($data['organizationCodeStartDate']);
	        //if($data['organizationCodeEndDate']=='')unset($data['organizationCodeEndDate']);
	        //$data['registeredCapital'] = (float)$data['registeredCapital'];
	        $seModel = model('ShopExtras');
	        $Id = $seModel->where(['shopId'=>$shopId])->value('id');
	        // 启用上传图片[extras表]
	        WSTUseImages(1, $Id, $data['legalCertificateImg'], 'shop_extras','legalCertificateImg');
	        WSTUseImages(1, $Id, $data['businessLicenceImg'], 'shop_extras','businessLicenceImg');
	        WSTUseImages(1, $Id, $data['bankAccountPermitImg'], 'shop_extras','bankAccountPermitImg');
	        //WSTUseImages(1, $Id, $data['organizationCodeImg'], 'shop_extras','organizationCodeImg');
	        //WSTUseImages(1, $Id, $data['taxRegistrationCertificateImg'], 'shop_extras','taxRegistrationCertificateImg');
	       // WSTUseImages(1, $Id, $data['taxpayerQualificationImg'], 'shop_extras','taxpayerQualificationImg');



	        $seModel->allowField(true)->save($data,['shopId'=>$shopId]);




		    //经营范围
		    Db::name('cat_shops')->where('shopId','=',$shopId)->delete();
		    $goodsCats = explode(',',$goodsCatIds);
		    foreach ($goodsCats as $key =>$v){
		        if((int)$v>0){
		        	Db::name('cat_shops')->insert(['shopId'=>$shopId,'catId'=>$v]);
		        }
		    }
		    //认证类型
		    Db::name('shop_accreds')->where('shopId','=',$shopId)->delete();
	        if($accredIds!=''){
	            $accreds = explode(',',$accredIds);
		        foreach ($accreds as $key =>$v){
			        if((int)$v>0){
			        	Db::name('shop_accreds')->insert(['shopId'=>$shopId,'accredId'=>$v]);
			        }
			    }
	        }
		    if((int)input('shopStatus')!=1){
		        //店铺状态不正常就停用所有的商品
		        model('goods')->unsaleByshopId($shopId);
		    } 
		    //删除店铺钩子事件
        	hook('afterChangeShopStatus',['shopId'=>$shopId]);
	        Db::commit();
	        return WSTReturn("编辑成功", 1);
        }catch (\Exception $e) {
            Db::rollback();errLog($e);
            return WSTReturn('编辑失败',-1);
        }
	}
	/**
	* 获取所有店铺id
	*/
	public function getAllShopId(){
		return $this->where(['dataFlag'=>1,'shopStatus'=>1])->column('shopId');
	}

	/**
	 * 根据店铺ID获取店铺名称
	 */
	public function upShopName(){
		$shopId = input('shopId/d');
		// $shopId = 1;
		$res = Db::name('shops')->where('shopId',$shopId)->field('shopId,shopName')->find();
		// dump($res);die;
		return $res;
	}
	
	/**
	 * 搜索经验范围的店铺
	 */
	public function searchQuery(){
		$goodsCatatId = (int)input('post.goodsCatId');
		if($goodsCatatId<=0)return [];
		$key = input('post.key');
		$where = [];
		$where['dataFlag'] = 1;
		$where['shopStatus'] = 1;
		$where['catId'] = $goodsCatatId;
		if($key!='')$where['shopName|shopSn'] = ['like','%'.$key.'%'];
		return $this->alias('s')->join('__CAT_SHOPS__ cs','s.shopId=cs.shopId','inner')
		            ->where($where)->field('shopName,s.shopId,shopSn')->select();
	}
	
    /**
	 * 自营自动登录
	 */
	public function selfLogin($id){
		$shopId = $id;
		$userid = $this->where(["dataFlag"=>1, "status"=>1,"shopId"=>$shopId])->field('userId')->find();
		if(!empty($userid['userId'])){
			$userId = $userid['userId'];
			//获取用户信息
			$u = new Users();
			$rs = $u->getById($userId);
			//获取用户等级
			$rrs = WSTUserRank($rs['userTotalScore']);
			$rs['rankId'] = $rrs['rankId'];
			$rs['rankName'] = $rrs['rankName'];
			$rs['userrankImg'] = $rrs['userrankImg'];
			$ip = request()->ip();
			$u->where(["userId"=>$userId])->update(["lastTime"=>date('Y-m-d H:i:s'),"lastIP"=>$ip]);
			//加载店铺信息
			$shops= new Shops();
			$shop = $shops->where(["userId"=>$userId,"dataFlag" =>1])->find();
			if(!empty($shop))$rs = array_merge($shop->toArray(),$rs->toArray());
			//记录登录日志
			$data = array();
			$data["userId"] = $userId;
			$data["loginTime"] = date('Y-m-d H:i:s');
			$data["loginIp"] = $ip;
			Db::name('log_user_logins')->insert($data);
			if($rs['userPhoto']=='')$rs['userPhoto'] = WSTConf('CONF.userLogo');
			session('WST_USER',$rs);
			return WSTReturn("","1");
		}
		return WSTReturn("",-1);	
	}

	/**
	 * 查询店铺佣金扣点
	 */
	public function commission($shopId){
		$obj = Db::name('shops')->alias('s')
		->join('__SHOP_COMMISSION__ sc','sc.shopId=s.shopId','left')->where('s.shopId',$shopId)->field('s.shopId,sc.commission,sc.userId,sc.userName,sc.usersPhone,sc.deductMoney')->find();
		// dump($obj);die;
		return $obj;
	}
	/**
	 * 设置店铺佣金扣点
	 */
	public function upCommission(){
		$data['shopId'] = input('shopId/d');
		$data['commission'] = input('commission');
		$data['userName'] = input('userName');
		//$data['userId'] = input('userId/d');
		$data['usersPhone'] = input('usersPhone');
		$user = Db::name('users')->where(['loginName|userPhone'=>$data['usersPhone']])->field('userId')->find();
		if(!$user){
			return WSTReturn('该职员不存在',-1);die;
		}
		$data['userId'] = $user['userId'];
		$com = Db::name('shop_commission')->where('shopId',$data['shopId'])->find();
		if($com){
			$result = Db::name('shop_commission')->where('shopId',$data['shopId'])->update(['commission'=>$data['commission'],'usersPhone'=>$data['usersPhone'],'userName'=>$data['userName'],'userId'=>$data['userId']]);
		}else{
			$result = Db::name('shop_commission')->insert($data);
		}
		if($result){
			return WSTReturn("操作成功",1);
		}else{
			return WSTReturn("操作失败",-1);
		}
	}

	/**
	 * 查询业务员信息
	 */
	public function staffs(){
		$userName = input('userName');
		$data = Db::name('users')->where(['loginName'=>$userName,'userStatus'=>1,'dataFlag'=>1])->field('userPhone,userId')->find();
		if($data){
			return $data;
		}else{
			return WSTReturn('该职员不存在',-1);
		}
	}


	/**
	 * 导出订单
	 */
	public function toExport($shopStatus=1){
		$name="店铺列表";
		$areaIdPath = input('areaIdPath');
		$shopName = input('shopName');
		$telephone = input('userPhone');
		$catId =(int)input('cat');
		$isInvestment = (int)input('isInvestment/d',-1);
		$where = [];
		$where['s.dataFlag'] = 1;
		$where['s.applyStatus'] = 2;
		$where['s.shopStatus'] = $shopStatus;
		if($catId!="0"){
			$where['c.catId'] = $catId;
		}
		if(in_array($isInvestment,[0,1]))$where['ss.isInvestment'] = $isInvestment;
		if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
		if($telephone!='')$where['telephone'] = ['like','%'.$telephone.'%'];
		if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
		if($catId !='')$where['catId'] = ['like',$catId."%"];
		$sort = input('sort');
		$order = [];
		if($sort!=''){
			$sortArr = explode('.',$sort);
			$order = $sortArr[0].' '.$sortArr[1];
		}
		$list=Db::table('__SHOPS__')->alias('s')
				->join('__AREAS__ a2','s.areaId=a2.areaId','left')
				->join('__USERS__ u','u.userId=s.userId','left')
				->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
				->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
				->join('__SHOP_PAY__ sp','sp.shopId=s.shopId','left')
				->where($where)
				->field('u.loginName,s.shopId,shopSn,shopName,a2.areaName,shopkeeper,telephone,shopAddress,shopCompany,shopAtive,shopStatus,s.applyTime,s.createTime,sp.status')
				->order('createTime desc')->group('s.shopId')
				->select();
		foreach ($list as &$value) {
			$catName=db('cat_shops')->alias('a')->join('goods_cats g','g.catId=a.catId')
					->where('shopId',$value['shopId'])->field('catName')->select();
			$value['catName']="";
			if(count($catName)>1){
				foreach ($catName as &$v) {
					$value['catName']=$value['catName'].$v['catName'].',';
				}
			}
			$goodsNum=db('goods')->alias('g')->where(['shopId'=>$value['shopId'],'isSale'=>1,'dataFlag'=>1])->field('count(goodsId)goodsNum')->select();
			$value['goodsNum']="";
			foreach ($goodsNum as &$v) {
				$value['goodsNum']=$value['goodsNum'].$v['goodsNum'];
			}
		}
		//dump($list);die;
		Loader::import('phpexcel.PHPExcel.IOFactory');
		$objPHPExcel = new \PHPExcel();
		// 设置excel文档的属性
		// $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
		// ->setLastModifiedBy("heyuanhui")//最后修改人
		// ->setTitle($name)//标题
		// ->setSubject($name)//题目
		// ->setDescription($name)//描述
		// ->setKeywords("订单")//关键字
		// ->setCategory("Test result file");//种类
	
		// 开始操作excel表
		$objPHPExcel->setActiveSheetIndex(0);
		// 设置工作薄名称
		$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
		// 设置默认字体和大小
		$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
		$objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
		$styleArray = array(
				'font' => array(
						'bold' => true,
						'color'=>array(
								'argb' => 'ffffffff',
						)
				),
				'borders' => array (
						'outline' => array (
								'style' => \PHPExcel_Style_Border::BORDER_THIN,  //设置border样式
								'color' => array ('argb' => 'FF000000'),     //设置border颜色
						)
				)
		);
		//设置宽
		$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
		$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->getStartColor()->setARGB('333399');
		
		$objPHPExcel->getActiveSheet()
								->setCellValue('A1', '用户名称')
								->setCellValue('B1', '店铺ID')
								->setCellValue('C1', '店铺编号')
								->setCellValue('D1', '店铺名称')
								->setCellValue('E1', '地区名称')
								->setCellValue('F1', '店主名称')
								->setCellValue('G1', '店主联系电话')
								->setCellValue('H1', '店铺地址')
								->setCellValue('I1', '公司名称')
								->setCellValue('J1', '门店状态')
								->setCellValue('K1', '门店状态')
								->setCellValue('L1', '商品数量')
								->setCellValue('M1', '申请时间')
								->setCellValue('N1', '通过时间')
								->setCellValue('O1', '经营类目');
		$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->applyFromArray($styleArray);
	for ($row = 0; $row < count($list); $row++){
			$i = $row+2;
			$objPHPExcel->getActiveSheet()
			 					->setCellValue('A'.$i, $list[$row]['loginName'])
			 					->setCellValue('B'.$i, $list[$row]['shopId'])
			 					->setCellValue('C'.$i, $list[$row]['shopSn'])
			 					->setCellValue('D'.$i, $list[$row]['shopName'])
								->setCellValue('E'.$i, $list[$row]['areaName'])
								->setCellValue('F'.$i, $list[$row]['shopkeeper'])
								->setCellValue('G'.$i, $list[$row]['telephone'])
								->setCellValue('H'.$i, $list[$row]['shopAddress'])
								->setCellValue('I'.$i, $list[$row]['shopCompany'])
								->setCellValue('J'.$i, $list[$row]['shopAtive'])
								->setCellValue('K'.$i, $list[$row]['shopStatus'])
								->setCellValue('L'.$i, $list[$row]['goodsNum'])
								->setCellValue('M'.$i, $list[$row]['applyTime'])
								->setCellValue('N'.$i, $list[$row]['createTime'])
								->setCellValue('O'.$i, $list[$row]['catName']);
		}
		//输出EXCEL格式
		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
		// 从浏览器直接输出$filename
		header('Content-Type:application/csv;charset=UTF-8');
		header("Pragma: public");
		header("Expires: 0");
		header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
		header("Content-Type:application/force-download");
		header("Content-Type:application/vnd.ms-excel;");
		header("Content-Type:application/octet-stream");
		header("Content-Type:application/download");
		header('Content-Disposition: attachment;filename="'.$name.'.xls"');
		header("Content-Transfer-Encoding:binary");
		$objWriter->save('php://output');
	}
	//商家登录
	public function detailByPage(){
		$where='s.shopStatus=1 AND s.dataFlag=1';
		$start=input('startDate');
		$end=input('endDate');
		$nonTime=input('nonTime');
		if($nonTime){
			$nonlogTime=date('Y-m-d H:i:s',strtotime('-'.$nonTime.'day'));
			$where.=' AND l.nonlogTime<"'.$nonlogTime.'"';
		}
		//dump($nonlogTime);
		// if($start!='' && $end!=''){
  //   		$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
  //   		$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
  //   		$where.=' AND lo.loginTime BETWEEN "'.$start.'" AND "'.$end.'"';
		// }else if($start!=''){
  //   		$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
  //           $where.= ' AND lo.loginTime>="'.$start.'"';
		// }else if($end!=''){
  //   		$end = date('Y-m-d 00:00:00',strtotime(input('endDate')));
  //           $where.= ' AND lo.loginTime<="'.$end.'"';
		// }
		// $result=Db::query('SELECT 
		// 						s.userId,s.shopName,l.loginNum,b.goodsNum
		// 					FROM 
		// 						'.config('database.prefix').'shops s 
		// 					LEFT JOIN 
		// 						(SELECT COUNT(*) loginNum,userId FROM '.config('database.prefix').'log_user_logins a GROUP BY a.userId) l on l.userId=s.userId
		// 					LEFT JOIN 
		// 						(SELECT COUNT(*) goodsNum,shopId FROM '.config('database.prefix').'goods g GROUP BY g.shopId) b on b.shopId=s.shopId
								
		// 					');
		$result=Db::table('__SHOPS__')->alias('s')
			//->join('__LOG_USER_LOGINS__ a','s.userId=a.userId','left')
			->join('(SELECT COUNT(*) loginNum,userId,loginTime,MAX(loginTime) nonlogTime FROM __LOG_USER_LOGINS__ a  GROUP BY a.userId) l','s.userId=l.userId','left')
			->join('(SELECT COUNT(*) goodsNum,shopId,isSale FROM __GOODS__ g WHERE g.isSale=1 GROUP BY g.shopId) go','s.shopId=go.shopId','left')
			->join('__LOG_USER_LOGINS__ lo','s.userId=lo.userId','left')
			// ->join('(SELECT COUNT(*) orderNum,shopId,orderStatus FROM __ORDERS__ o GROUP BY o.shopId) oo','s.shopId=oo.shopId','left')
			// ->join('(SELECT COUNT(*) orderNums,shopId,orderStatus FROM __ORDERS__ o2 GROUP BY o2.orderStatus) od','s.shopId=od.shopId','left')
			//->whereTime('l.loginTime','between',[$start,$end])
			->where($where)
			->field('s.shopName,l.loginNum,go.goodsNum,s.shopId,s.shopCompany,shopkeeper,telephone,applyTime,nonlogTime')
			->order('l.loginNum desc')
			->group('s.shopId')
			->paginate(input('limit/d'))->toArray();
			//dump(db::getlastsql());
		//dump($result);
		foreach ($result['Rows'] as &$value) {
			if($end=='')$end = date('Y-m-d 23:59:59',strtotime("now"));
			if($start=='')$start = date('Y-m-d 23:59:59',strtotime("0"));
			$value['nonTime']=sprintf("%.0f",(strtotime(date('Y-m-d H:i:s'))-strtotime($value['nonlogTime']))/86400);
			$value['successOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>2,'dataFlag'=>1])->count('shopId');
			$value['cancelOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>-1,'dataFlag'=>1])->count('shopId');
			$value['nonpayOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>-2,'dataFlag'=>1])->count('shopId');
			$value['deliveredOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>1,'dataFlag'=>1])->count('shopId');
		}
		// $result=Db::table('__SHOPS__')->alias('s')
		// 	->join('__LOG_USER_LOGINS__ a','s.userId=a.userId','left')
		// 	->join('__GOODS__ go','s.shopId=go.shopId','left')
		// 	->where($where)
		// 	->field('a.userId,shopName,count(a.userId)logNum,count(go.shopId)goodsNum')
		// 	->order('logNum desc')->group('a.userId,go.shopId,s.shopId,s.userId,a.userId')
		// 	->paginate(input('limit/d'))->toArray();
			
		return $result;
	}
	/**
	 * 导出商家登录活跃数据订单
	 */
	public function toExports(){
		$name="商家活跃信息列表";
		$start=input('startDate');
		$end=input('endDate');
		$nonTime=input('nonTime');
		$where='s.shopStatus=1 AND s.dataFlag=1';
		if($nonTime){
			$nonlogTime=date('Y-m-d H:i:s',strtotime('-'.$nonTime.'day'));
			$where.=' AND l.nonlogTime<"'.$nonlogTime.'"';
		}
		// if($start!='' && $end!=''){
  //   		$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
  //   		$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
  //   		$where.=' AND lo.loginTime BETWEEN "'.$start.'" AND "'.$end.'"';
		// }else if($start!=''){
  //   		$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
  //           $where.= ' AND lo.loginTime>="'.$start.'"';
		// }else if($end!=''){
  //   		$end = date('Y-m-d 00:00:00',strtotime(input('endDate')));
  //           $where.= ' AND lo.loginTime<="'.$end.'"';
		// }
		$list=Db::query('SELECT 
								s.shopId,s.shopName,l.loginNum,b.goodsNum,l.nonlogTime,s.shopCompany,s.applyTime,s.shopkeeper,s.telephone
							FROM 
								'.config('database.prefix').'shops s 
							LEFT JOIN 
								(SELECT COUNT(*) loginNum,userId,MAX(loginTime) nonlogTime FROM '.config('database.prefix').'log_user_logins a GROUP BY a.userId) l on l.userId=s.userId
							LEFT JOIN 
								(SELECT COUNT(*) goodsNum,shopId FROM '.config('database.prefix').'goods g WHERE g.isSale=1 GROUP BY g.shopId) b on b.shopId=s.shopId
							LEFT JOIN 
								(SELECT userId,loginTime FROM '.config('database.prefix').'log_user_logins)lo on lo.userId=s.userId	
							WHERE '.$where.' 
							GROUP BY s.shopId
							ORDER BY l.loginNum DESC');
		foreach ($list as &$value) {
			if($end=='')$end = date('Y-m-d 23:59:59',strtotime("now"));
			if($start=='')$start = date('Y-m-d 23:59:59',strtotime("0"));
			$value['nonTime']=sprintf("%.0f",(strtotime(date('Y-m-d H:i:s'))-strtotime($value['nonlogTime']))/86400);
			$value['successOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>2,'dataFlag'=>1])->count('shopId');
			$value['cancelOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>-1,'dataFlag'=>1])->count('shopId');
			$value['nonpayOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>-2,'dataFlag'=>1])->count('shopId');
			$value['deliveredOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
			->where(['shopId'=>$value['shopId'],'orderStatus'=>1,'dataFlag'=>1])->count('shopId');
		}
		Loader::import('phpexcel.PHPExcel.IOFactory');
		$objPHPExcel = new \PHPExcel();
		// 设置excel文档的属性
		// $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
		// ->setLastModifiedBy("heyuanhui")//最后修改人
		// ->setTitle($name)//标题
		// ->setSubject($name)//题目
		// ->setDescription($name)//描述
		// ->setKeywords("订单")//关键字
		// ->setCategory("Test result file");//种类
	
		// 开始操作excel表
		$objPHPExcel->setActiveSheetIndex(0);
		// 设置工作薄名称
		$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
		// 设置默认字体和大小
		$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
		$objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
		$styleArray = array(
				'font' => array(
						'bold' => true,
						'color'=>array(
								'argb' => 'ffffffff',
						)
				),
				'borders' => array (
						'outline' => array (
								'style' => \PHPExcel_Style_Border::BORDER_THIN,  //设置border样式
								'color' => array ('argb' => 'FF000000'),     //设置border颜色
						)
				)
		);
		//设置宽
		$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
		$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(25);
		$objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(12);
		$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
		$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->getStartColor()->setARGB('333399');
		
		$objPHPExcel->getActiveSheet()
								->setCellValue('A1', '店铺名称')
								->setCellValue('B1', '公司名称')
								->setCellValue('C1', '注册时间')
								->setCellValue('D1', '联系人姓名')
								->setCellValue('E1', '联系人电话')
								->setCellValue('F1', '未登录天数')
								->setCellValue('G1', '登录频次')
								->setCellValue('H1', '商品数量')
								->setCellValue('I1', '已成功订单')
								->setCellValue('J1', '已取消订单')
								->setCellValue('K1', '未付款订单')
								->setCellValue('L1', '已发货订单');
								
		$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->applyFromArray($styleArray);
	for ($row = 0; $row < count($list); $row++){
			$i = $row+2;
			$objPHPExcel->getActiveSheet()
			 					->setCellValue('A'.$i, $list[$row]['shopName'])
			 					->setCellValue('B'.$i, $list[$row]['shopCompany'])
			 					->setCellValue('C'.$i, $list[$row]['applyTime'])
			 					->setCellValue('D'.$i, $list[$row]['shopkeeper'])
			 					->setCellValue('E'.$i, $list[$row]['telephone'])
			 					->setCellValue('F'.$i, $list[$row]['nonTime'])
			 					->setCellValue('G'.$i, $list[$row]['loginNum'])
			 					->setCellValue('H'.$i, $list[$row]['goodsNum'])
			 					->setCellValue('I'.$i, $list[$row]['successOrder'])
								->setCellValue('J'.$i, $list[$row]['cancelOrder'])
								->setCellValue('K'.$i, $list[$row]['nonpayOrder'])
								->setCellValue('L'.$i, $list[$row]['deliveredOrder']);
		}
		//输出EXCEL格式
		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
		// 从浏览器直接输出$filename
		header('Content-Type:application/csv;charset=UTF-8');
		header("Pragma: public");
		header("Expires: 0");
		header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
		header("Content-Type:application/force-download");
		header("Content-Type:application/vnd.ms-excel;");
		header("Content-Type:application/octet-stream");
		header("Content-Type:application/download");
		header('Content-Disposition: attachment;filename="'.$name.'.xls"');
		header("Content-Transfer-Encoding:binary");
		$objWriter->save('php://output');
	}

}