| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 | <?phpnamespace Survey\Src;use Dever;class Api{	/**	 * 获取问卷信息	 *	 * @return mixed	 */	public function get($uid, $product_id, $order_id, $page_number = false)	{		if ($product_id <= 0) {			Dever::alert('请传入正确的产品id');		}		$user = Dever::db('survey/user')->one(array('uid' => $uid, 'product_id' => $product_id, 'order_id' => $order_id));		if (!$user) {			$user['uid'] = $uid;			$user['index'] = 1;			$user['product_id'] = $product_id;			$user['order_id'] = $order_id;			$user['status'] = 2;			$user['id'] = Dever::db('survey/user')->insert($user);		}		if ($page_number > 0) {			$user['index'] = $page_number;		}		//$user['question_total'] = Dever::db('survey/info')->total(array('product_id' => $product_id));		$user['page'] = $user['index'];		$page = Dever::db('survey/info')->getOne(array('product_id' => $product_id));		if ($page) {			$user['page_total'] = $page['page_number'];		} else {			$user['page_total'] = 0;		}				$result['user'] = $user;		$result['info'] = Dever::db('survey/info')->state(array('product_id' => $product_id, 'page_number' => $user['index']));		if ($result['info']) {			foreach ($result['info'] as $k => $v) {				$answer = Dever::db('survey/user_answer')->one(array('info_id' => $v['id'], 'uid' => $uid, 'product_id' => $product_id, 'order_id' => $order_id));				if ($answer) {					$result['info'][$k]['answer'] = $answer['value'];				} else {					$result['info'][$k]['answer'] = '';				}				$result['info'][$k]['content'] = $this->getContent($v['type'], $v['content']);							}		}		return $result;	}	/**	 * 提交问卷信息	 *	 * @return mixed	 */	public function submit($uid, $product_id, $order_id, $page_number, $survey_id, $survey_answer)	{		$result = 1;		if ($survey_id && $survey_answer) {			$survey_id = explode('||', $survey_id);			$survey_answer = explode('||', $survey_answer);			$num = 0;			$total = count($survey_id);			foreach ($survey_id as $k => $v) {				$info = Dever::db('survey/info')->one($v);				if ($info) {					if ($info['must'] == 1 && !isset($survey_answer[$k]) && !$survey_answer[$k]) {						$page = false;						Dever::alert($info['name'] . '未填写答案');					}				}			}			foreach ($survey_id as $k => $v) {				$info = Dever::db('survey/info')->one($v);				if ($info) {					$answer = Dever::db('survey/user_answer')->one(array('info_id' => $v, 'uid' => $uid, 'product_id' => $product_id, 'order_id' => $order_id));					if ($answer) {						Dever::db('survey/user_answer')->update(array('where_id' => $answer['id'], 'value' => $survey_answer[$k], 'product_id' => $product_id, 'order_id' => $order_id));					} else {						Dever::db('survey/user_answer')->insert(array('info_id' => $v, 'uid' => $uid, 'value' => $survey_answer[$k], 'product_id' => $product_id, 'order_id' => $order_id));						$num++;					}				}			}			$user = Dever::db('survey/user')->one(array('uid' => $uid, 'product_id' => $product_id, 'order_id' => $order_id));			$page = Dever::db('survey/info')->getOne(array('product_id' => $product_id));			if ($page) {				$user['page_total'] = $page['page_number'];			} else {				$user['page_total'] = 0;			}			if ($user) {				if ($page_number >= $user['page_total']) {					$result = 2;				} else {					$result = 1;				}				if ($num == $total || $page_number > 0) {					$user['index'] = $user['index'] + 1;					if ($page_number) {						$user['index'] = $page_number + 1;					}					Dever::db('survey/user')->update(array('where_id' => $user['id'], 'index' => $user['index']));				}			}		}		return $result;	}	/**	 * 查看问卷信息	 *	 * @return mixed	 */	public function view($uid, $product_id, $order_id, $result = false)	{		$product = Dever::config('base', 'project')->product;		$user = Dever::db('survey/user')->one(array('uid' => $uid, 'product_id' => $product_id, 'order_id' => $order_id));		$data['userinfo'] = Dever::db('passport/user')->one($uid);		$data['product'] = Dever::db($product)->one($product_id);		$data['info'] = Dever::db('survey/info')->state(array('uid' => $uid, 'product_id' => $product_id));		$data['question'] = array();		$data['page_number'] = 1;		$i = 1;		foreach ($data['info'] as $k => $v) {			if ($v['page_number'] > $data['page_number']) {				$data['page_number'] = $v['page_number'];			}			$v['content'] = $this->getContent($v['type'], $v['content']);			$answer = Dever::db('survey/user_answer')->one(array('uid' => $uid, 'info_id' => $v['id'], 'product_id' => $product_id, 'order_id' => $order_id));			if ($answer) {				if (($v['type'] == 3 || $v['type'] == 4) && strstr($answer['value'], 'http')) {					if ($v) {						$answer['value'] = $this->getImg($answer['id'], $answer['value']);					} else {						$answer['value'] = Dever::local($answer['value']);					}				} elseif ($v['type'] == 12 || $v['type'] == 13) {					$v['content'] = $this->getOption($answer['id'], $answer['value'], $v['content']);				}				$v['answer'] = $answer['value'];			} else {				$v['answer'] = '未作答';			}						if ($result) {				$data['question'][$i] = $v;			} else {				$data['question'][$v['page_number']][$i] = $v;			}						$i++;		}		//$user['index'] = 3;		if ($user['index'] >= $data['page_number']) {			# 完成了			$data['page'] = '100%';		} else {			$num = ceil(($user['index'] / $data['page_number']) * 100);			$data['page'] = $num . '%';		}		if ($result) {			return $data;		}		return Dever::render('home', $data);	}	private function getOption($id, $answer, $option)	{		$array = explode(',', $answer);		$total = count($option) - 1;		foreach ($array as $k => $v) {			if (is_numeric($v)) {				$v = $v - 1;				if (isset($option[$v])) {					$option[$v]['checked'] = true;				}			} else {				$option[$total]['checked'] = $v;			}		}		return $option;	}	private function getImg($id, $answer)	{		$result = '<a class="dever-img" id="answer_'.$id.'">';		$array = explode(',', $answer);		foreach ($array as $k => $v) {			$result .= '<img layer-src="'.$v.'" src="' . $v . '" height="80" />  ';		}		$result .= '</a>';		return $result;	}	private function getContent($type, $content)	{		if ($type >= 11) {			$content = Dever::array_decode($content);		} else {			$content = array();		}		return $content;	}}
 |