Пример #1
0
 /**
  * find()
  * 核实信息
  * @param number 学号
  * @param name   姓名
  */
 public function find()
 {
     $uid = use_id();
     $number = I('number', false, C('REGEX_NUMBER'));
     $name = I('name', false, 'trim');
     $User = M('User');
     $Card = M('Card');
     $send_user = $uid ? $User->field('id,sch_id,student_number,name,phone,email')->getById($uid) : false;
     if (!$send_user) {
         $this->error('请登录!', '/');
     } elseif (!$send_user['phone']) {
         $this->error('尚未绑定手机', '/User/index');
     } elseif ($send_user['student_number'] == $number) {
         $this->error('不要用自己的做实验哦!');
     } elseif ($Card->cache(true)->getFieldById($uid, 'blocked')) {
         $this->error('由于恶意使用,您的此功能已被禁用', '/Card/help');
     } elseif (!$name && !$number) {
         $this->error('信息不足');
     } else {
         /*尝试 验证 匹配 通知*/
         $School = M('School');
         $recv_user = $User->field('id,name,student_number AS number,sch_id,phone,email')->getByStudentNumber($number);
         if (!$recv_user) {
             /* 判断学校*/
             if (preg_match(C('REGEX_NUMBER_NKU'), $number)) {
                 $this->_saveReceiver($name, $number, 1, false);
             } elseif (preg_match(C('REGEX_NUMBER_TJU'), $number)) {
                 $this->_saveReceiver($name, $number, 2, false);
             } else {
                 $this->error('对不起,目前平台仅对南开大学和天津大学在校生开放,其他需求或者学校请联系我们!');
             }
             $this->error($name . "({$number})尚未加入,你可以在此广播到社交网络", '/Card/broadcast');
         } elseif ($name !== $recv_user['name']) {
             $this->error('失主信息核对失败!');
         } elseif ($recv_off = $Card->cache(120)->getFieldById($recv_user['id'], 'off')) {
             $this->error('对方关闭了此功能,不希望你打扰TA,我们爱莫能助╮(╯-╰)╭');
         } elseif (!($recv_user['phone'] || $recv_user['email'])) {
             $this->_saveReceiver($recv_user['name'], $recv_user['number'], $recv_user['sch_id'], $recv_user['id']);
             $this->error($name . "({$number})尚未绑定联系方式,你可以在此广播到社交网络", '/Card/broadcast');
         } else {
             /*验证成功 ,手机或者邮箱存在 通知并记录*/
             if ($recv_off === null) {
                 //该同学不在card记录之中,则先创建
                 $Card->add(array('id' => $recv_user['id']));
             }
             $msg = '';
             //提示消息
             $success = false;
             import('Common.Encrypt', COMMON_PATH, '.php');
             $send_phone = decrypt_phone($send_user['phone'], $send_user['student_number'], $send_user['id']);
             if ($recv_user['phone']) {
                 /*发送短信通知*/
                 $recv_phone = decrypt_phone($recv_user['phone'], $recv_user['number'], $recv_user['id']);
                 $SMS = new \Vendor\Sms();
                 $info = array('send_phone' => $send_phone, 'send_name' => $send_user['name'], 'recv_name' => $recv_user['name']);
                 $sms_result = $SMS->findCard($recv_phone, $info);
                 $success |= $sms_result;
                 if ($sms_result) {
                     $msg = '短信已发送!<br/>';
                 } else {
                     $msg = '短信发送失败!<br/>';
                 }
             }
             if ($recv_user['email']) {
                 /*发送邮件通知*/
                 $recv_email = decrypt_email($recv_user['email']);
                 $send_user['school'] = $School->cache(true)->getFieldById($send_user['sch_id'], 'name');
                 if ($send_user['email']) {
                     $send_user['email'] = decrypt_email($send_user['email']);
                 }
                 /*拼装邮件*/
                 $mail_msg = L('MAIL_CARD', array('name' => $recv_user['name'], 'school' => $send_user['school'], 'sender_name' => $send_user['name'], 'phone' => $send_user['phone'], 'email' => $send_user['email']));
                 $mail_result = send_mail($recv_user, $mail_msg, C('MAIL_NOTIFY'));
                 $success |= $mail_result;
                 if ($mail_result) {
                     $msg .= '邮件已发送!<br/>';
                 } else {
                     $msg .= '邮件发送失败!';
                 }
             }
             if (!$success) {
                 $this->_saveReceiver($recv_user['name'], $recv_user['number'], $recv_user['sch_id'], $recv_user['id']);
                 $this->error('消息发送失败!请重试或者交由第三方平台!', '/Card/broadcast');
             } else {
                 /*记录招领信息*/
                 $log = array('find_id' => $send_user['id'], 'lost_id' => $recv_user['id']);
                 if (!M('Cardlog')->add($log)) {
                     $this->error('记录失败!!!<br/>' . $msg);
                 } else {
                     $this->success($msg);
                 }
             }
         }
     }
 }