Example #1
0
	public function actionSaveinfo()
	{
		if(isset($_POST['term']))
		{
			//检查参数
			$arr = $this->ajaxCheckParm();
			$code = $arr['route'];
			$orderModel = $this->getOrderByRandCode($code);
			
			if($orderModel->updatetime != 0){
				echo json_encode($arr);
				exit;
			}
			
			
			$now =time();
			//防止重复提交,五秒内只能提交一次
			if(isset(Yii::app()->session['submitrepeat'])&&Yii::app()->session['submitrepeat']>($now-7)){
				$arr['statuCode'] = 302;
				$arr['msg'] = '五秒内,请不要重复提交!';
				echo json_encode($arr);
				exit;
			}else{
				Yii::app()->session['submitrepeat'] = $now;
			}
			
			//验证表单项是否为空
			$verflag = false;
			foreach($_POST['Contacter'] as $key=>$value){
				switch($key)
				{
					case 'name':
						empty($value)&&($verflag = true)?$arr['msg'] = '请填写您的姓!':'';break;
					case 'first':
						empty($value)&&($verflag = true)?$arr['msg'] = '请填写您的名!':'';break;
					case 'moblie':
						empty($value)&&($verflag = true)?$arr['msg'] = '请填写您的手机号码!':'';break;
					case 'email':
						empty($value)&&($verflag = true)?$arr['msg'] = '请填写您的邮箱!':'';break;
					case 'addr':
						empty($value)&&($verflag = true)?$arr['msg'] = '请填写您的地址!':'';break;
				}
			}
			
			if($verflag){
				echo json_encode($arr);
				exit;
			}
			$mid = 0;//Yii::app()->session['myuserid'];判断是否登录//会员ID
			if(isset(Yii::app()->session['myuserid'])){
				$mid = Yii::app()->session['myuserid'];
			}
			//存储联系人
			//过滤参数
			foreach($_POST['Contacter'] as $key=>$value){
				$_POST['Contacter'][$key] = strip_tags($value);
			}
			//判断是否存在该会员关联的联系人,如果存在则跟新,不存在则添加
			$CModel = Contacter::model()->find(array('condition'=>"mid=$mid and mid<>0"));
			if($CModel == null){//未登录
				$CModel = new Contacter;
				//自动注册,添加email,fullname,first,gender,tel,address到会员表
				$registerModel = new Member;
				$registerModel->email = strip_tags($_POST['Contacter']['email']);
				$registerModel->password = md5('123456');
				$registerModel->fullname = strip_tags($_POST['Contacter']['name']);
				$registerModel->first = strip_tags($_POST['Contacter']['first']);
				$registerModel->gender = intval($_POST['Contacter']['gender']);
				$registerModel->tel = intval($_POST['Contacter']['moblie']);
				$registerModel->address = strip_tags($_POST['Contacter']['addr']);
				$registerModel->createtime = $now;
				$registerModel->updatetime = $now;
				$registerModel->flag = 1;
				if($registerModel->save(false)){
					//注册成功,自动登录
					$CModel->mid = $registerModel->id;
					$loginModel = new LoginForm;
					$loginModel->username = $registerModel->email;
					$loginModel->password = '******';
					$loginModel->login();//登录
				}else{
					$CModel->mid = $mid;
				}
			}
			$CModel->name = strip_tags($_POST['Contacter']['name']);
			$CModel->first = strip_tags($_POST['Contacter']['first']);
			$CModel->gender = intval($_POST['Contacter']['gender']);
			$CModel->moblie = strip_tags($_POST['Contacter']['moblie']);
			$CModel->phone = strip_tags($_POST['Contacter']['phone']);
			$CModel->email = strip_tags($_POST['Contacter']['email']);
			$CModel->wechat = strip_tags($_POST['Contacter']['wechat']);
			$CModel->qq = strip_tags($_POST['Contacter']['qq']);
			/* $CModel->whatup = strip_tags($_POST['Contacter']['whatup']); */
			$CModel->addr = strip_tags($_POST['Contacter']['addr']);
			$CModel->createtime = $now;
			if(!$CModel->save(false))
			{
				$arr['statuCode'] = 302;
				$arr['msg'] = '请正确提交表单信息!';
			}else{
				$cid = $CModel->id;//联系人ID
				//将信息添加到订单表
				//$travelModel = Travel::model()->findByPk($tid);

				$orderModel->mid = $mid;
				$orderModel->cid = $cid;//联系人表 contracter 自增ID
				$orderModel->donate = $this->getDonatePrice('donate'.$orderModel->id);
				$orderModel->additionmesg = strip_tags($_POST['addimsg']);
				$orderModel->howway = $_POST['callme'] == 1?strip_tags($_POST['otherway']):strip_tags($_POST['callme']);
				$orderModel->updatetime = $now;

				if(!$orderModel->save(false)){
					$arr['statuCode'] = 302;
					$arr['msg'] = '提交订单不成功,请重试!---订单保存不成功';
				}else{
					$oid = $orderModel->id;
					
					for($i=0;$i<count($_POST['name']);$i++){
						$clientModel = new Client;
						$clientModel->oid = $oid;
						$clientModel->name = strip_tags($_POST['name'][$i]);
						$clientModel->first = strip_tags($_POST['first'][$i]);
						$clientModel->gender = strip_tags($_POST['gender'][$i]);
						$clientModel->national = strip_tags($_POST['national'][$i]);
						$clientModel->dob = strtotime($_POST['dob'][$i]);
						$clientModel->passpost = strip_tags($_POST['passpost'][$i]);
						/* $clientModel->expiration = strtotime($_POST['expiration'][$i]); */
						$clientModel->createtime = $now;
						$clientModel->save();
					}
					
					$additoninfo = $this->additionList($orderModel->tid);
					$addsToken = 'adds'.$orderModel->id;
					$addArr = $this->checkAdditionsStep($addsToken);
					if(empty($addArr)){
						$addArr[1] = array();
					}
					foreach($addArr[1] as $key=>$value){
						if($value > 0){
							$OAModel = new OrderAdditional;
							$OAModel->oid = $oid;
							$aid = $addArr[0][$key];
							$OAModel->name = $additoninfo[$aid]['name'];
							$OAModel->num = $value;
							$OAModel->price = $additoninfo[$aid]['price'];
							$OAModel->createtime = $now;
							$OAModel->save();
						}
					}
					
					//存储保险信息
					$insToken = 'ins'.$orderModel->id;
					$insurancesid = $this->getInsuranceId($insToken);
					if($insurancesid!=0){
						$insuranceArr = $this->getNowInsurance($insurancesid);
						$insModel = new OrderInsurance;
						$insModel->oid = $oid;
						$insModel->name = $insuranceArr['name'];
						$insModel->price = $insuranceArr['price'];
						$insModel->save(false);
					}
					
					//将房间信息存储到订单相应下的房间表中
					$token = 'order'.$orderModel->id;
					$roomArr = $this->checkOrderRoomStep($token);
					$roPriceArr = $this->getHousePrice();
					foreach($roomArr['type'] as $ke=>$val){
						$rModel = new OrderRoom;
						$rModel->oid = $oid;
						$rModel->aduit = $roomArr['aduit'][$ke];
						$rModel->child = $roomArr['child'][$ke];
						$rModel->type = $this->getHouseName($val);
						$arprice = ($roPriceArr[$val][0]) * ($roomArr['aduit'][$ke]);
						$crprice = ($roPriceArr[$val][1]) * ($roomArr['child'][$ke]);
						$rModel->price = $arprice + $crprice;
						$rModel->save(false);
					}
					
					//发送邮件给客户
					if(isset(Yii::app()->session['mysueremail'])){
						$useremail = Yii::app()->session['mysueremail'];
						/* $username = Yii::app()->user->name; */
					}else{
						$useremail = strip_tags($_POST['Contacter']['email']);
						/* $username = strip_tags($_POST['Contacter']['name']); */
					}
					$message = array('email'=>$useremail,'ordernumber'=>$orderModel->trackcode);
					
					$this->sendEmail($useremail,$message);
				}
			}
		 	}else{
				$arr['statuCode'] = 302;
				$arr['msg'] = '合同条款必须同意!';
			}
		echo json_encode($arr);
		exit;
	}
	protected function orderStatistics($cal_id)
	{
		//参团人
		$allPrice = 0;
		$PeopleCount = 0;
		//保险
		$insuranceCount = 0;
		$insurancePrice = 0;
		//门票
		$addPrice = 0;
		$addCount = 0;
		
		//房间
		$roomPrice = 0;
		$roomCount = 0;
		
		//捐款
		$dotadePrice = 0;
		$dotadeCount = 0;
		
		$allArr = Order::model()->findAll(array(
				'select'=>'id,aduit,child,daynumber,aduit_price,chilend_price,donate',
				'condition'=>"cal_id=$cal_id and status=1"
				));
		//单个订单总价格
		foreach($allArr as $arr){
			//基础价格
			$allPrice += ($arr->aduit *$arr->aduit_price) + ($arr->child * $arr->chilend_price);
			$PeopleCount += ($arr->aduit) + ($arr->child);
			//捐款
			if($arr->donate != 0){
				$dotadePrice += $arr->donate;
				$dotadeCount += 1;
			}
			//保险
			$insuranceModel = OrderInsurance::model()->find(array('select'=>'price','condition'=>"oid=$arr->id"));
			if($insuranceModel){
				$insuranceCount += ($arr->aduit) + ($arr->child);
				$insurancePrice += ($arr->aduit + $arr->child) * $insuranceModel->price * $arr->daynumber;
			}
			//门票
			$addModel = OrderAdditional::model()->findAll(array('select'=>'num,price','condition'=>"oid=$arr->id"));
			if($addModel){
				foreach($addModel as $add){
					$addCount += $add->num;
					$addPrice += $add->price * $add->num;
				}
			}
			//房间
			$rooModel = OrderRoom::model()->findAll(array('select'=>'price','condition'=>"oid=$arr->id"));
			if($rooModel){
				$roomCount += count($rooModel);
				foreach($rooModel as $roo){
					$roomPrice += $roo->price;
				}
			}
		}
		return array($allPrice,$PeopleCount,$insurancePrice,$insuranceCount,$addPrice,$addCount,$roomPrice,$roomCount,$dotadePrice,$dotadeCount);
	}
Example #3
0
	protected function getRoomTypeAndCount($token)
	{
		$oid = intval($token);
		
		$arr = OrderRoom::model()->findAll(array('select'=>'type','condition'=>"oid=$oid"));
		
		$roomTypeArr = array();
		foreach($arr as $onearr){
			$roomTypeArr[] = $onearr->type;
		}
		if(empty($roomTypeArr)){
			return "没有预定房间";
			exit;
		}
		$str = '';
		$tempArr = array_count_values($roomTypeArr);//返回一个数组,键名为 房型名称,键值为该值出行的次数
		foreach($tempArr as $key=>$value){
			$str .= $key."×".$value."  ";
		}
	
		return $str;
	}
Example #4
0
	protected function roomsTotalPrice($oid)
	{
		$totalPrice = 0;
		$arr = OrderRoom::model()->findAll(array(
				'select'=>'price',
				'condition'=>"oid=$oid"
		));
	
		if(!empty($arr)){
			foreach($arr as $model){
				$totalPrice += $model->price;
			}
		}
	
		return $totalPrice;
	}
Example #5
0
	public function actionDelete($id)
	{
		$orderModel = $this->loadModel($id);
		$cid = $orderModel->cid;//联系人ID
		if($orderModel->delete()){
			Yii::app()->user->setFlash('success','删除成功!');
			//删除房间信息
			$roomModel = new OrderRoom;
			$roomModel->deleteAll(array(
					'condition'=>"oid=$id",
					));
			//删除保险
			$insuranceModel = OrderInsurance::model()->find(array('condition'=>"oid=$id"));
			if($insuranceModel){
				$insuranceModel->delete();
			}
			//删除附加项(门票)
			$addsModel = new OrderAdditional;
			$addsModel->deleteAll(array('condition'=>"oid=$id"));
			//删除联系人
			$contacterModel = Contacter::model()->find(array('condition'=>"id=$cid and mid=0"));
			if($contacterModel){
				$contacterModel->delete();
			}
			//删除参团人信息
			$clientModel = new Client;
			$clientModel->deleteAll(array('condition'=>"oid=$id"));
		}else{
			Yii::app()->user->setFlash('error','删除失败!');
		}
		$this->redirect(array('list'));
		exit;
		
		/* // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
		if(!isset($_GET['ajax']))
			$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('list')); */
	}
Example #6
0
	public function getTotalPriceFormDb($oid)
	{
		// 参团人基础价格 + 房间价格 + 附加项目(门票) + 保险 + 捐赠
	
		//基础价格
		$orderModel = Order::model()->findByPk($oid);
		$basePrice = 0;
		//保险价格
		$insruancePrice = 0;
		//捐赠价格
		$donatePrice = 0;
		//附加项目总价
		$addsPrice = 0;
		//房间价格
		$roomPrice = 0;
	
		if($orderModel!==null){
			$basePrice = ($orderModel->aduit * $orderModel->aduit_price) + ($orderModel->child * $orderModel->chilend_price);
			//捐赠价格
			$donatePrice = $orderModel->donate;
			//保险价格
			$insruanceModel = OrderInsurance::model()->find(array('select'=>'price','condition'=>"oid=$oid"));
			if($insruanceModel!==null){
				$insruancePrice = ($orderModel->aduit + $orderModel->child) * $insruanceModel->price * $orderModel->daynumber;
			}
			//房间价格
			$roomModel = OrderRoom::model()->findAll(array('select'=>'price','condition'=>"oid=$oid"));
			if(!empty($roomModel)){
				foreach($roomModel as $m){
					$roomPrice += $m->price;
				}
			}
			//附加项目总价
			$addsModel = OrderAdditional::model()->findAll(array('select'=>'num,price','condition'=>"oid=$oid"));
			foreach($addsModel as $adds){
				$addsPrice += $adds->num * $adds->price;
			}
		}
		return $basePrice + $insruancePrice + $donatePrice + $addsPrice + $roomPrice;
	}