コード例 #1
0
ファイル: CaptchaModule.php プロジェクト: nicklos17/appserver
 /**
  * 生成短信验证码
  * 判断用户获得验证码的资格:type:
  * 1 - 只有未注册的用户才能获取注册验证码
  * 3 - 只有注册过的用户才能获取添加亲人验证码
  * 7 - 只有注册过的用户才能获取忘记密码的验证码
  * 9 - 只有注册过的用户才能获取修改密码的验证码
  * 11 - 只有注册过的用户才能获取第三方注册验证码
  */
 public function makeCaptcha($type, $mobi = '', $babyId = '')
 {
     $userInfo = $this->userSwoole->getUserInfoByMobi($mobi);
     if (($type == '1' || $type == '11') && !empty($userInfo['data'])) {
         return self::EXIST_MOBILE;
     }
     if (($type == '3' || $type == '7' || $type == '9') && empty($userInfo['data'])) {
         return self::NON_EXIST_MOBILE;
     }
     //如果是添加副号,则须判断是否登录以及该手机号是否已经添加
     if ($type == '3') {
         //如果该号已经是宝贝亲人号,则不发送短信
         $checkRel = $this->family->checkRelation($userInfo['data']['u_id'], $babyId);
         if (!empty($checkRel)) {
             return self::HAVE_FAMILY_RELATION;
         }
         $babyInfo = $this->baby->getBabyName($babyId);
     }
     $RedisLib = new \Appserver\Utils\RedisLib($this->di);
     $redis = $RedisLib::getRedis();
     //生成验证码ename123
     if ($redis->get($mobi . $type) == FALSE) {
         $captchaCode = \Appserver\Utils\Common::random(4);
         $redis->setex($mobi . $type, $this->di['sysconfig']['capTime'], $captchaCode);
     } else {
         $captchaCode = $redis->get($mobi . $type);
     }
     switch ($type) {
         case 1:
             $message = sprintf($this->di['sysconfig']['regCaptchaMsg'], $captchaCode);
             break;
         case 3:
             $message = sprintf($this->di['sysconfig']['addRelCaptchaMsg'], $captchaCode, $babyInfo['baby_nick']);
             break;
         case 7:
             $message = sprintf($this->di['sysconfig']['resetCaptchaMsg'], $captchaCode);
             break;
         case 9:
             $message = sprintf($this->di['sysconfig']['changeCaptchaMsg'], $captchaCode);
             break;
         case 11:
             $message = sprintf($this->di['sysconfig']['regCaptchaMsg'], $captchaCode);
             break;
     }
     $lastCapthaInfo = $this->captcha->getLastCapthaInfo($mobi, $type);
     if ($_SERVER['REQUEST_TIME'] - $lastCapthaInfo['mc_addtime'] < 60) {
         return self::GET_TOO_CAPTCHA;
     }
     //验证码入库
     $data = $this->captcha->addCaptcha($mobi, $type, $_SERVER['REQUEST_TIME'], $captchaCode);
     if ($data) {
         $sendMsg = new RpcService($this->di['sysconfig']['thriftConf']['ip'], $this->di['sysconfig']['thriftConf']['port']);
         $sendMsg->smsSend($mobi, $message);
         return self::SUCCESS;
     } else {
         return self::FAIL;
     }
 }
コード例 #2
0
ファイル: PraisesModule.php プロジェクト: nicklos17/appserver
 /**
  * [点赞]
  * @param  [type] $token [description]
  * @param  [type] $mobi  [description]
  * @return [type]        [description]
  */
 public function hit($token, $locusId)
 {
     $redis = RedisLib::getRedis($this->di);
     $userInfo = $redis->get('token:' . $token);
     $locusInfo = $this->locusmodel->getLocateInfo($locusId);
     if (empty($locusInfo)) {
         return self::NON_LOCUS;
     }
     //检查用户是否有权限进行操作
     if (!$this->_checkRelation($userInfo['uid'], $locusInfo['baby_id'])) {
         return self::NO_FAMILY;
     }
     $praisesCheck = $this->praisesmodel->getLsidByUid($userInfo['uid'], $locusId);
     if (!empty($praisesCheck)) {
         return self::PRAISED;
     }
     //获取宝贝昵称
     $babyInfo = $this->babymodel->getBabyInfoById($locusInfo['baby_id']);
     if (empty($babyInfo)) {
         return self::NON_LOCUS;
     }
     $familymodel = $this->initModel('\\Appserver\\Mdu\\Models\\FamilyModel');
     //获取角色名
     $rolename = $familymodel->getRelationByUidBabyId($userInfo['uid'], $locusInfo['baby_id']);
     if (!empty($rolename)) {
         $relName = $rolename['family_rolename'];
     } else {
         $relName = $userInfo['mobi'];
     }
     $this->di['db']->begin();
     if ($this->praisesmodel->hit($userInfo['uid'], $relName, $_SERVER['REQUEST_TIME'], $locusId)) {
         if ($this->locusmodel->hit($locusId)) {
             if ($familymodel->hit($userInfo['uid'], $locusInfo['baby_id'], $_SERVER['REQUEST_TIME'])) {
                 $this->di['db']->commit();
                 //type = 1001到代表赞, type = 1003代表评论
                 $result = array('rel_id' => (string) $userInfo['uid'], 'type' => '1001', 'addtime' => (string) $_SERVER['REQUEST_TIME'], 'content' => '', 'rel_name' => $relName, 'rel_pic' => $userInfo['pic'], 'baby_id' => (string) $locusInfo['baby_id'], 'locus_id' => (string) $locusId);
                 // $uid是宝贝对应的主号,或者监护号或者是主号和监护号的集合;如果uid为空,则不执行推送的操作
                 $uid = Common::getPushUid($locusId, $userInfo['uid']);
                 if (!empty($uid)) {
                     for ($i = 0; $i < sizeof($uid); $i++) {
                         if ($uid[$i] != '') {
                             $result['uid'] = $uid[$i];
                             $result['alert'] = sprintf($this->di['sysconfig']['praPush'], $babyInfo['baby_nick'], $relName, $babyInfo['baby_nick'], date('m月d日', $locusInfo['locus_date']));
                             $redis->lPush($this->di['sysconfig']['pushForActive'], json_encode($result));
                         }
                     }
                 }
                 return array('flag' => '1', 'praises' => (string) ($locusInfo['praises'] + 1));
             }
             $this->di['db']->rollback();
             return self::FAILED_PRAISE;
         }
         $this->di['db']->rollback();
         return self::FAILED_PRAISE;
     }
     return self::FAILED_PRAISE;
 }
コード例 #3
0
ファイル: UnionModule.php プロジェクト: nicklos17/appserver
 /**
  * [联合操作,添加童鞋,添加宝贝并绑定]
  * @param [type] $uid      [description]
  * @param [type] $nick     [description]
  * @param [type] $sex      [description]
  * @param [type] $birthday [description]
  * @param [type] $addtime  [description]
  * @param [type] $shoeQr   [description]
  * @param [type] $rolename [description]
  * @param [type] $file     [description]
  */
 public function add($uid, $nick, $sex, $birthday, $addtime, $shoeQr, $rolename, $file, $weight = '', $height = '')
 {
     if (!empty($file['file']['tmp_name'])) {
         $upload = new ImgUpload($this->di);
         $imageName = substr(md5(uniqid(true)), 8, 16);
         $rePath = substr($imageName, 0, 2) . '/' . substr($imageName, 2, 2);
         $picInfo = $upload->uploadFile($file['file'], $this->di['sysconfig']['babyPic'], $imageName, $rePath);
         if (is_numeric($picInfo)) {
             return $picInfo;
         } else {
             $pic = $this->di['sysconfig']['babyPic'] . '/' . $picInfo;
         }
     } else {
         return self::NON_IMG_UPLOAD;
     }
     //判断鞋子是否存在
     $shoeInfo = $this->devices->getDevInfoByQr($shoeQr);
     if (!$shoeInfo) {
         return self::NON_EXIST_SHOE;
     }
     //开始计算服务期,如果值为0,则第一次添加
     if (empty($shoeInfo['expire'])) {
         $expires = Common::expires($_SERVER['REQUEST_TIME']);
     } else {
         $expires = $shoeInfo['expire'];
     }
     $this->di['db']->begin();
     //添加宝贝
     $babyId = $this->baby->add($nick, $sex, $birthday, $addtime, $pic, $weight, $height, '1');
     if (!$babyId) {
         $this->di['db']->rollback();
         return self::FAILED_ADD;
     }
     if (!$this->family->addRel($babyId, $uid, empty($rolename) ? '' : $rolename, '1', $addtime, '1')) {
         $this->di['db']->rollback();
         return self::FAILED_ADD;
     }
     //设备过期就不让添加
     if ($_SERVER['REQUEST_TIME'] < $expires) {
         $devId = $this->devices->addShoe($uid, $shoeInfo['uuid'], $shoeInfo['imei'], $shoeInfo['mobi'], $shoeInfo['pass'], $shoeInfo['dver'], $expires, $shoeInfo['qr'], $shoeInfo['pic'], $_SERVER['REQUEST_TIME'], $babyId);
         if (!$babyId) {
             $this->di['db']->rollback();
             return self::FAILED_ADD;
         }
         if (!$this->devices->updateExpires($shoeInfo['uuid'], $expires)) {
             $this->di['db']->rollback();
             return self::FAILED_ADD;
         }
         $this->di['db']->commit();
         return array('flag' => '1', 'shoe_info' => array('shoe_id' => (string) $devId), 'baby_info' => array('baby_id' => (string) $babyId, 'baby_pic' => $this->di['sysconfig']['babyPicServer'] . $pic));
     } else {
         $this->di['db']->commit();
         return array('flag' => '11077', 'target' => 'target', 'expires' => $expires, 'msg' => $this->di['flagmsg']['11077'], 'tel' => $this->di['sysconfig']['service-phone']);
     }
 }
コード例 #4
0
ファイル: CheckinModule.php プロジェクト: nicklos17/appserver
 /**
  * [用户签到]
  * @param  [type] $uid   [用户id]
  * @param  [type] $level [用户当前等级]
  * @return [type]        [description]
  */
 public function userCheckin($uid, $level)
 {
     //第二天零点
     $tomorrow = strtotime(date('Y-m-d', strtotime('+1 day')));
     //第二天连续签到的最后时刻
     $finalSign = strtotime(date('Y-m-d', strtotime('+2 day'))) - 1;
     $nowtime = $_SERVER['REQUEST_TIME'];
     $redisObj = new RedisLib($this->di);
     $redis = $redisObj->getRedis();
     //用redis设置签到状态值,如果这个这key存在表示今天已经签到,不存在表示尚未签到
     $checkinStatus = sprintf($this->di['sysconfig']['checkinStatus'], $uid);
     if ($redis->get($checkinStatus)) {
         return self::HAVE_CHECKINED;
     }
     //redis签到的key
     $signKey = sprintf($this->di['sysconfig']['signcount'], $uid);
     //multi是否处理是否连续签到,连续+1,不连续值为1
     $redis->multi()->incr($signKey)->setTimeout($signKey, $finalSign - $nowtime)->exec();
     //获得连续签到天数
     $seriesCheckin = $redis->get($signKey);
     //签到奖励的云币数
     $coins = Common::checkinCoin($this->di, $seriesCheckin);
     if ($this->checkinlogs->addCheckin($uid, $nowtime, $coins) == 0) {
         return self::FAILED_CHECKIN;
     }
     //获取用户签到总天数
     $totalDays = $redis->get($uid . ':' . $this->di['sysconfig']['checkinTotal']);
     if ($totalDays == FALSE) {
         $totalDays = '0';
     }
     //计算用户升级到下一级所需总签到天数
     $needDays = UserHelper::levelCheck($level);
     $swoole = new SwooleUserClient($this->di['sysconfig']['swooleConfig']['ip'], $this->di['sysconfig']['swooleConfig']['port']);
     if ($totalDays <= 1050) {
         if ($totalDays > $needDays) {
             //更新用户等级
             $res = $swoole->updateLevel($uid);
             if ($res['data'] == 0) {
                 return self::FAILED_GET_DATA;
             }
             $level = $this->userInfo['level'] + 1;
         }
     }
     //发放奖励
     $res = $swoole->checkInReceive($uid, $coins);
     if ($res['data'] == 1) {
         //设置签到状态:置1表示已签到
         $redis->setex($checkinStatus, $tomorrow - $nowtime, '1');
         //用redis保存签到总天数
         $redis->set($uid . ':' . $this->di['sysconfig']['checkinTotal'], $totalDays + 1);
         return array('flag' => '1', 'checkindays' => (string) $seriesCheckin, 'coins' => (string) $coins, 'level' => (string) $level);
     } else {
         return self::FAILED_GET_COINS;
     }
 }
コード例 #5
0
 /**
  *亲人添加
  */
 public function addAction()
 {
     if (isset($this->_sanReq['flag'])) {
         if (!strstr($this->_sanReq['user_qr'], '@')) {
             $this->_showMsg(self::INVALID_USER_QR, $this->di['flagmsg'][self::INVALID_USER_QR]);
         }
         $famInfoByUid = $this->family->getUserInfo($this->_sanReq['user_qr']);
         if (!$famInfoByUid['data']) {
             $this->_showMsg(self::INVALID_USER_QR, $this->di['flagmsg'][self::INVALID_USER_QR]);
         }
         //如果是二维码扫描,则判断二维码的正确性
         if (Common::makeQr($famInfoByUid['data']['u_id'], $famInfoByUid['data']['u_mobi'], $famInfoByUid['data']['u_regtime']) != $this->_sanReq['user_qr']) {
             $this->_showMsg(self::INVALID_USER_QR, $this->di['flagmsg'][self::INVALID_USER_QR]);
         }
     } else {
         //===========验证码的时效性=================
         $this->captchaObj = new Captcha();
         if (($res = $this->captchaObj->checkCaptcha($this->_sanReq['mobi'], 3, $this->_sanReq['captcha'], $_SERVER['REQUEST_TIME'])) != self::SUCCESS) {
             $this->_showMsg($res, $this->di['flagmsg'][$res]);
         }
         $famInfo = $this->family->getUserInfoByMobi($this->_sanReq['mobi']);
         if (!$famInfo['data']) {
             $this->_showMsg(self::NOT_REGISTER_MOBI, $this->di['flagmsg'][self::NOT_REGISTER_MOBI]);
         }
         $famInfoByUid['data'] = $famInfo['data'];
     }
     if ($this->_sanReq['ishost'] == 5) {
         if (($res = $this->family->issetHost($this->_sanReq['baby_id'])) != self::SUCCESS) {
             $this->_showMsg($res, $this->di['flagmsg'][$res]);
         }
     }
     $relation = $this->family->checkRelation($famInfoByUid['data']['u_id'], $this->_sanReq['baby_id']);
     if ($relation) {
         $this->_showMsg(self::HAVE_FAMILY_RELATION, $this->di['flagmsg'][self::HAVE_FAMILY_RELATION]);
     }
     $res = $this->family->addRel($this->_sanReq['baby_id'], $famInfoByUid['data']['u_id'], $this->_sanReq['name'], $this->_sanReq['ishost'], $_SERVER['REQUEST_TIME'], 1);
     if ($res == self::SUCCESS) {
         $babyInfo = $this->baby->getBabyName($this->_sanReq['baby_id']);
         if (!$babyInfo) {
             $this->_showMsg(self::NOT_BABY_OWN, $this->di['flagmsg'][self::NOT_BABY_OWN]);
         }
         //组装推送数据
         //推送alert
         $content = sprintf($this->di['sysconfig']['addfamilyMsg'], $babyInfo['baby_nick'], $babyInfo['baby_nick']);
         //推送内容
         $data = array('baby_id' => (string) $this->_sanReq['baby_id'], 'nick' => $babyInfo['baby_nick'], 'baby_pic' => $this->di['sysconfig']['babyPicServer'] . $babyInfo['baby_pic'], 'nearly' => $babyInfo['baby_nearly'], 'nearlyTime' => (string) $babyInfo['baby_nearlytime'], 'devs' => (string) $babyInfo['baby_devs'], 'sex' => $babyInfo['baby_sex'], 'relation' => (string) $this->_sanReq['ishost'], 'birthday' => (string) $babyInfo['baby_birthday'], 'battery' => (string) $babyInfo['baby_nearbattery']);
         $redisObj = new RedisLib($this->di);
         $redis = $redisObj->getRedis();
         $redis->lPush($this->di['sysconfig']['addfamily'], json_encode(array('uid' => $famInfoByUid['data']['u_id'], 'content' => $content, 'data' => $data, 'type' => '19')));
         $this->_showMsg(self::SUCCESS);
     } else {
         $this->_showMsg($res, $this->di['flagmsg'][$res]);
     }
 }
コード例 #6
0
ファイル: RenewModule.php プロジェクト: nicklos17/appserver
 public function renewOperate($outTradeNo, $addTime, $tradeNo)
 {
     $renewInfo = $this->renew->getRenewByRono($outTradeNo);
     if (!$renewInfo) {
         return self::FAILED_OPERATE;
     }
     //获取设备原本到期时间和imei
     $shoeInfo = $this->devices->getBabyDevByShoeId($renewInfo['dev_id']);
     if (!$shoeInfo) {
         return self::FAILED_OPERATE;
     }
     //如果续费的时候设备尚未到期,则延长到期时间
     if ($shoeInfo['dev_expires'] - $addTime > 0) {
         $expires = Common::expires($shoeInfo['dev_expires'], $renewInfo['ro_period']);
     } else {
         //如果已经到期,则从现在开始续费
         $expires = Common::expires($addTime, $renewInfo['ro_period']);
     }
     //现在的日期
     $today = getdate($addTime);
     //到期日
     $deaddate = getdate($expires);
     $content = sprintf($this->di['sysconfig']['renewPushMsg']['success'], $renewInfo['ro_rolename'], $today['year'] . '年' . $today['mon'] . '月' . $today['mday'] . '日', $renewInfo['dev_imei'], $deaddate['year'] . '年' . $deaddate['mon'] . '月' . $deaddate['mday'] . '日');
     $this->di['db']->begin();
     if (!$this->devices->updateExpires($shoeInfo['dev_uuid'], $expires)) {
         $this->di['db']->rollback();
         return self::FAILED_OPERATE;
     }
     if (!$this->devices->setExpiresByDevid($renewInfo['dev_id'], $expires)) {
         $this->di['db']->rollback();
         return self::FAILED_OPERATE;
     }
     if (!$this->renew->addRenewLog($renewInfo['ro_id'], 3, $addTime)) {
         $this->di['db']->rollback();
         return self::FAILED_OPERATE;
     }
     if (!$this->msg->insertMsg($renewInfo['baby_id'], $addTime, $content, 17)) {
         $this->di['db']->rollback();
         return self::FAILED_OPERATE;
     }
     if (!$this->renew->setOrderStatus($outTradeNo, 3, $tradeNo)) {
         $this->di['db']->rollback();
         return self::FAILED_OPERATE;
     }
     $this->di['db']->commit();
     //赠送云币
     $swoole = new SwooleUserClient($this->di['sysconfig']['swooleConfig']['ip'], $this->di['sysconfig']['swooleConfig']['port']);
     $res = $swoole->checkInReceive($renewInfo['u_id'], $renewInfo['ro_coins']);
     return self::SUCCESS;
 }
コード例 #7
0
ファイル: PushModule.php プロジェクト: nicklos17/appserver
 /**
  * [推送消息:通知主号给宝贝绑定]
  * @param  [type] $babyId [description]
  * @param  [string] $uname [用户名字]
  * @return [type]         [description]
  */
 public function pushBinddevMsg($babyId, $uname)
 {
     //获取宝贝的信息
     $babyInfo = $this->baby->getBabyInfoById($babyId);
     //获取宝贝的主号信息
     $hostInfo = $this->family->getHostByBabyId($babyId);
     //根据用户要求的推送时段进行推送
     $disturb = (string) date('H', $_SERVER['REQUEST_TIME']);
     //拿到用户推送相关的信息
     $tokenInfo = $this->deviceTagsModel->getUserInfoByUid($hostInfo['u_id'], '3', $disturb, $disturb);
     if (empty($tokenInfo)) {
         return self::SUCCESS;
     }
     $content = sprintf($this->di['sysconfig']['bindDevForHost'], $uname, $babyInfo['baby_nick']);
     if ($tokenInfo['type'] == '1') {
         $fpForIOS = $this->IosPush->readyToSendForIOS($this->di['sysconfig']['pemUrl'], $this->di['sysconfig']['passphrase'], $this->di['sysconfig']['sslUrl']);
         if (!$fpForIOS) {
             return self::FAILED_IOS_PUSH;
         }
         //如果deviceken存在,一条一条将消息推送到apns
         if ($this->IosPush->sendSingleForIOS($content, $tokenInfo['deviceToken'], $fpForIOS, $this->di['sysconfig']['pushKey'], '', '', $_SERVER['REQUEST_TIME'], '')) {
             Common::writeLog(dirname(dirname(dirname(__FILE__))) . '/public/logs/askbind.log', '通知发送成功:对方id:' . $hostInfo['u_id']);
             return self::SUCCESS;
         } else {
             Common::writeLog(dirname(dirname(dirname(__FILE__))) . '/public/logs/askbind.log', '通知发送失败:对方id:' . $hostInfo['u_id']);
             return self::FAILED_IOS_PUSH;
         }
     } elseif ($tokenInfo['type'] == '3') {
         $pushMsg = array('type' => '', 'content' => $content);
         $resObj = (array) $this->AndroidPush->sendSingleNoticeForJPush($this->di, $content, $tokenInfo['deviceToken'], $pushMsg);
         foreach ($resObj as $val) {
             $res[] = $val;
         }
         if ($res[0] === 0) {
             Common::writeLog(dirname(dirname(dirname(__FILE__))) . '/public/logs/askbind.log', '通知发送成功:对方id:' . $hostInfo['u_id']);
             return self::SUCCESS;
         } else {
             Common::writeLog(dirname(dirname(dirname(__FILE__))) . '/public/logs/askbind.log', '通知发送失败:对方id:' . $hostInfo['u_id'] . ';message:');
             return self::FAILED_ANDROID_PUSH;
         }
     }
 }
コード例 #8
0
 /**
  * 童鞋列表
  */
 public function listAction($code = '')
 {
     if ($code == '') {
         if (empty($this->_sanReq['baby_id'])) {
             $result = $this->devices->shoeListByUid($this->userInfo['uid'], $this->_sanReq['count']);
         } else {
             $this->_checkRelation($this->userInfo['uid'], $this->_sanReq['baby_id']);
             $result = $this->devices->shoeListByBabyId($this->_sanReq['baby_id']);
         }
         if (!empty($result)) {
             foreach ($result as $key => $value) {
                 if (!empty($value['baby_pic'])) {
                     $result[$key]['baby_pic'] = $this->di['sysconfig']['babyPicServer'] . $value['baby_pic'];
                 } else {
                     $result[$key]['baby_id'] = '';
                     $result[$key]['baby_pic'] = '';
                 }
                 if ($_SERVER['REQUEST_TIME'] <= Common::expires($value['expdate'])) {
                     $result[$key]['target'] = '1';
                 } else {
                     $result[$key]['target'] = '3';
                 }
             }
         }
     } elseif ($code == '1') {
         $result = $this->devices->shoeListUnbind($this->userInfo['uid']);
         //获取截止续费的时间戳:判断设备是否可以续费 target为1可续,为3不可续
         foreach ($result as $key => $val) {
             if ($_SERVER['REQUEST_TIME'] <= Common::expires($val['expdate'])) {
                 $result[$key]['target'] = '1';
             } else {
                 $result[$key]['target'] = '3';
             }
         }
     } else {
         $this->_showMsg(self::INVALID_OPERATE, $this->di['flagmsg'][self::INVALID_OPERATE]);
     }
     $this->_returnResult(array('flag' => self::SUCCESS, 'shoelist' => $result));
 }
コード例 #9
0
 /**
  * [报告android客户端错误]
  * @return [type] [description]
  */
 public function androidAction()
 {
     //手机型号
     $mode = isset($this->_sanReq['mode']) ? $this->_sanReq['mode'] : '';
     $filename = $mode . '_' . $this->_sanReq['time'];
     if ($_FILES) {
         //判断文件大小
         if ($_FILES['logs']['size'] > 50000) {
             return $this->_showMsg(self::FILE_TOO_BIG, $this->di['flagmsg'][self::FILE_TOO_BIG]);
         }
         //判断文件类型
         if (pathinfo($_FILES['logs']['name'])['extension'] != 'log') {
             return $this->_showMsg(self::INVALID_CONTENT, $this->di['flagmsg'][self::INVALID_CONTENT]);
         }
         $url = dirname(dirname(dirname(dirname(dirname(__FILE__))))) . $this->di['sysconfig']['clientErrorLogs'];
         if (!file_exists($url)) {
             Common::_createdir($url);
         }
         move_uploaded_file($_FILES['logs']['tmp_name'], $url . '/' . $filename . '.log');
         $this->_showMsg(self::SUCCESS);
     } else {
         return $this->_showMsg(self::NON_FILE, $this->di['flagmsg'][self::NON_FILE]);
     }
 }
コード例 #10
0
ファイル: UserModule.php プロジェクト: nicklos17/appserver
 /**
  * 编辑用户
  * @param  [string] $userInfo [存在用户token中的信息,方便重新构造token]
  * @param  [string] $newFile  [新的用户图片]
  * @return [type]           [description]
  */
 public function userEdit($token, $userInfo, $newname, $newFile)
 {
     //对修改的名字
     if ($newname != '' && $newname != $userInfo['uname']) {
         if (!UserHelper::nameCheck($newname)) {
             return self::ERROR_NAME;
         }
         $res = $this->swoole->checkUserName($newname, $userInfo['uid']);
         if ($res['data'] == '1') {
             return self::EXIST_NAME;
         }
     } else {
         $newname = $userInfo['uname'];
     }
     if (!empty($newFile)) {
         $picInfo = Common::makePath($this->di['sysconfig']['userPic'], $userInfo['mobi']);
         $pic = $picInfo['picUrl'];
     } else {
         $pic = $userInfo['pic'];
     }
     $res = $this->swoole->modifyUser($newname, $userInfo['uid'], $pic);
     if ($res['data'] == '1') {
         if (!empty($newFile)) {
             //上传图片
             if ($this->swoole->uploadAvatar($newFile['tmp_name'], filesize($newFile['tmp_name']), $picInfo['rename'], $picInfo['path'])) {
                 //更新用户的缓存头像
                 $userInfo['pic'] = $this->di['sysconfig']['userPicServer'] . $picInfo['picUrl'];
             } else {
                 return self::FAILED_UPLOAD;
             }
         }
         $redisObj = new RedisLib($this->di);
         $redis = $redisObj->getRedis();
         $redis->setex('token:' . $token, $this->di['sysconfig']['tokenTime'], $userInfo);
         return array('flag' => (string) self::SUCCESS, 'u_pic' => $userInfo['pic']);
     } else {
         return self::FAILED_UPDATE;
     }
 }
コード例 #11
0
 /**
  * 返回宝贝过期的童鞋个数
  */
 public function invalidAction()
 {
     $shoes = $this->baby->getExpireDevs($this->_sanReq['baby_id'], $_SERVER['REQUEST_TIME']);
     $num = sizeof($shoes);
     if ($num == 0) {
         $shoeId = '';
         $num = '';
         $target = '';
     } elseif ($num == 1) {
         $shoeId = $shoes[0]['dev_id'];
         //获取截止续费的时间戳:判断设备是否可以续费 target为1可续,为3不可续
         $deadline = Common::expires($shoes[0]['dev_expires']);
         if ($_SERVER['REQUEST_TIME'] <= $deadline) {
             $target = self::SUCCESS;
         } else {
             $target = '3';
         }
     } else {
         $shoeId = '';
         $target = '';
     }
     $this->_returnResult(array('flag' => self::SUCCESS, 'shoe_id' => $shoeId, 'shoe_count' => (string) $num, 'target' => $target));
 }
コード例 #12
0
 /**
  * 微信支付
  */
 public function wechatAction()
 {
     $babyId = $this->devices->getBabyIdByShoeId($this->userInfo['uid'], $this->_sanReq['shoe_id']);
     if (!$babyId) {
         $this->_showMsg(self::NON_SHOE, $this->di['flagmsg'][self::NON_SHOE]);
     }
     //角色名
     if (!empty($rel) && $rel['family_rolename'] != '') {
         $rolename = $rel['family_rolename'];
     } else {
         $rolename = '';
     }
     //获取套餐
     $renew = $this->renew->getRenew($serviceId, 1);
     if (!$renew) {
         $this->_showMsg(self::NON_PACKAGE, $this->di['flagmsg'][self::NON_PACKAGE]);
     }
     //订单号
     $orderNo = (string) Common::makeOrderSn();
     //生成续费订单,入库
     if (($res = $this->renew->renewUpdate($shoeId, $this->userInfo['uid'], $serviceId, $_SERVER['REQUEST_TIME'], 1, $orderNo, 3, $renew['cr_real_price'], $renew['cr_name'], $renew['cr_period'], $renew['cr_coins'], $rolename, $babyId['baby_id'], $babyId['dev_imei'])) != self::SUCCESS) {
         $this->_showMsg($res, $this->di['flagmsg'][$res]);
     }
     include_once __DIR__ . '/../../utils/wechat/classes/RequestHandler.class.php';
     include_once __DIR__ . '/../../utils/wechat/tenpay_config.php';
     include __DIR__ . '/../../utils/wechat/classes/client/TenpayHttpClient.class.php';
     //获取token值
     $reqHandler = new RequestHandler();
     //配置
     $wechatConf = $this->di->get('sysconfig')['payment']['wechat'];
     $reqHandler->init($wechatConf['app_id'], $wechatConf['app_secret'], $wechatConf['partner_key'], $wechatConf['app_key']);
     $Token = $reqHandler->GetToken();
     if ($Token != '') {
         //设置package支付参数
         $packageParams = array();
         $packageParams['bank_type'] = 'WX';
         //支付类型
         $packageParams['body'] = $renew['cr_name'];
         //商品描述
         $packageParams['fee_type'] = '1';
         //银行币种
         $packageParams['input_charset'] = 'UTF-8';
         //字符集  renewServer
         $packageParams['notify_url'] = $this->di->get['sysconfig']['renewServer'] . $wechatConf['notify_url'];
         //通知地址
         $packageParams['out_trade_no'] = $orderNo;
         //商户订单号
         $packageParams['partner'] = $wechatConf['partner'];
         //设置商户号
         $packageParams['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];
         //支付机器IP
         $packageParams['total_fee'] = $renew['cr_real_price'] * 100;
         //商品总金额,以分为单位
         $package = $reqHandler->genPackage($packageParams);
         $time_stamp = (string) time();
         $nonce_str = md5(rand());
         //设置支付参数
         $signParams = array();
         $signParams['appid'] = $APP_ID;
         $signParams['appkey'] = $APP_KEY;
         $signParams['noncestr'] = $nonce_str;
         $signParams['package'] = $package;
         $signParams['timestamp'] = $time_stamp;
         $signParams['traceid'] = 'yunduo_wechat';
         //生成支付签名
         $sign = $reqHandler->createSHA1Sign($signParams);
         //增加非参与签名的额外参数
         $signParams['sign_method'] = 'sha1';
         $signParams['app_signature'] = $sign;
         //剔除appkey
         unset($signParams['appkey']);
         //获取prepayid
         $prepayid = $reqHandler->sendPrepay($signParams);
         if ($prepayid != null) {
             $pack = 'Sign=WXPay';
             //输出参数列表
             $prePayParams = array();
             $prePayParams['appid'] = $APP_ID;
             $prePayParams['appkey'] = $APP_KEY;
             $prePayParams['noncestr'] = $nonce_str;
             $prePayParams['package'] = $pack;
             $prePayParams['partnerid'] = $PARTNER;
             $prePayParams['prepayid'] = $prepayid;
             $prePayParams['timestamp'] = $time_stamp;
             //生成签名
             $sign = $reqHandler->createSHA1Sign($prePayParams);
             $outparams['retcode'] = '0';
             $outparams['retmsg'] = 'ok';
             $outparams['partnerid'] = $PARTNER;
             $outparams['noncestr'] = $nonce_str;
             $outparams['package'] = $pack;
             $outparams['prepayid'] = $prepayid;
             $outparams['timestamp'] = $time_stamp;
             $outparams['sign'] = $sign;
             //增加返回相关产品信息
             $outparams['order_no'] = $orderNo;
             $outparams['order_subject'] = $renew['cr_name'];
             $outparams['total_fee'] = $renew['cr_real_price'];
             $this->_returnResult(array('flag' => self::SUCCESS, 'data' => $outparams));
         } else {
             $this->_showMsg(self::FAILED_GET_PREPAYID, $this->di['flagmsg'][self::FAILED_GET_PREPAYID]);
         }
     } else {
         $this->_showMsg(self::FAILED_GET_TOKEN, $this->di['flagmsg'][self::FAILED_GET_TOKEN]);
     }
 }
コード例 #13
0
ファイル: LocusModule.php プロジェクト: nicklos17/appserver
 /**
  * [获取某一月份的归集列表]
  * @param  [string] $babyId [宝贝id]
  * @param  [string] $month  [月份,如2014-7]
  * @return [type]         [description]
  */
 public function getCalList($babyId, $month)
 {
     //如果month没设置,则第一天为当月的1号,最后一天为当月最后一天
     if ($month == '') {
         $firstday = strtotime(date('Y-m-01 00:00:00', $_SERVER['REQUEST_TIME']));
         $endday = strtotime(date('Y-m-t 23:59:59', $_SERVER['REQUEST_TIME']));
     } else {
         $res = explode('-', $month);
         $day = Common::monthToDay($res['0'], $res['1']);
         $firstday = $day['0'];
         $endday = $day['1'];
     }
     return array('flag' => '1', 'callist' => $this->locusmodel->callist($babyId, $firstday, $endday));
 }
コード例 #14
0
ファイル: DevicesModule.php プロジェクト: nicklos17/appserver
 /**
  * [扫描直接添加童鞋并绑定]
  * @param [string] $shoeQr     [童鞋qr码]
  */
 public function addAndBind($uid, $shoeQr, $babyId)
 {
     //判断鞋子是否存在
     $shoeInfo = $this->devices->getDevInfoByQr($shoeQr);
     if (!$shoeInfo) {
         $this->_showMsg(self::NON_EXIST_SHOE, $this->di['flagmsg'][self::NON_EXIST_SHOE]);
     }
     //开始计算服务期,如果值为0,则第一次添加
     if ($shoeInfo['expire'] == 0) {
         $expires = Common::expires($_SERVER['REQUEST_TIME']);
     } else {
         $expires = $shoeInfo['expire'];
     }
     $this->di['db']->begin();
     //判断鞋子是否已经添加
     $checkQr = $this->devices->getShoeIdByQr($shoeQr);
     if (!empty($checkQr)) {
         if ($checkQr['baby_id'] != '0') {
             return self::SHOE_ADDED;
         } else {
             //如果鞋子已添加但是还未绑定童鞋,执行绑定
             if (!$this->devices->setShoeBindBabyId($babyId, $checkQr['dev_id'])) {
                 $this->di['db']->rollback();
                 return self::FAILED_ADD;
             }
             if (!$this->devices->updateExpires($shoeInfo['uuid'], $expires)) {
                 $this->di['db']->rollback();
                 return self::FAILED_ADD;
             }
         }
     } else {
         if ($_SERVER['REQUEST_TIME'] < $expires) {
             //添加鞋子
             if (!$this->devices->addShoe($uid, $shoeInfo['uuid'], $shoeInfo['imei'], $shoeInfo['mobi'], $shoeInfo['pass'], $shoeInfo['dver'], $expires, $shoeInfo['qr'], $shoeInfo['pic'], $_SERVER['REQUEST_TIME'], $babyId)) {
                 $this->di['db']->rollback();
                 return self::FAILED_ADD;
             }
             if (!$this->devices->updateExpires($shoeInfo['uuid'], $expires)) {
                 $this->di['db']->rollback();
                 return self::FAILED_ADD;
             }
         } else {
             return self::VALIDED_SHOE;
         }
     }
     if (!$this->baby->setDevNum($babyId)) {
         $this->di['db']->rollback();
         return self::FAILED_UPDATE_DATA;
     }
     //往排行榜里面插入宝贝记录
     if (!$this->babyRanks->getBabyId($babyId)) {
         if (!$this->babyRanks->addBabyId($babyId)) {
             $this->di['db']->rollback();
             return self::FAILED_UPDATE_DATA;
         }
     }
     $this->di['db']->commit();
     return self::SUCCESS;
 }
コード例 #15
0
ファイル: OauthModule.php プロジェクト: nicklos17/appserver
 /**
  * [解绑QQ和设备的关系]
  * @param  [type] $uid   [description]
  * @param  [type] $qqUid [description]
  * @return [type]        [description]
  */
 public function _unbindDevAndQQ($uid, $qqUid)
 {
     try {
         $family = $this->initModel('\\Appserver\\Mdu\\Models\\FamilyModel');
         $devices = $this->initModel('\\Appserver\\Mdu\\Models\\DevicesModel');
         $babys = $family->getAuthBaby($uid);
         if (!empty($babys)) {
             foreach ($babys as $v) {
                 $bids[] = $v['baby_id'];
             }
             $uuid = $devices->getUUidByBidUid(implode(',', $bids), $uid);
             foreach ($uuid as $v) {
                 $uuids[] = $v['dev_uuid'];
             }
             if (!empty($uuids)) {
                 $snInfos = $devices->getDevInfoByUuids(implode(',', $uuids));
             }
         }
         if (isset($snInfos) && !empty($snInfos)) {
             foreach ($snInfos as $v) {
                 $sns[] = $v['sn'];
             }
             $bindDevices = new QQBindRpcService($this->di['sysconfig']['thriftConf']['ip'], $this->di['sysconfig']['thriftConf']['qqPort']);
             //解绑设备和QQ
             $bindDevices->QQUnbindDevices($sns, $qqUid, $this->redis->get('accessToken:' . $uid));
         }
     } catch (\Exception $e) {
         Common::writeLog(dirname(dirname(dirname(__FILE__))) . '/public/logs/binddevs.log', json_encode(array('action' => 'bind', 'sn' => $sns, 'qqUid' => $qqUid, 'reason' => $e->getMessage())));
     }
 }