/** * 生成短信验证码 * 判断用户获得验证码的资格: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; } }
/** * [点赞] * @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; }
/** * [联合操作,添加童鞋,添加宝贝并绑定] * @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']); } }
/** * [用户签到] * @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; } }
/** *亲人添加 */ 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]); } }
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; }
/** * [推送消息:通知主号给宝贝绑定] * @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; } } }
/** * 童鞋列表 */ 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)); }
/** * [报告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]); } }
/** * 编辑用户 * @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; } }
/** * 返回宝贝过期的童鞋个数 */ 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)); }
/** * 微信支付 */ 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]); } }
/** * [获取某一月份的归集列表] * @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)); }
/** * [扫描直接添加童鞋并绑定] * @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; }
/** * [解绑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()))); } }