Ejemplo n.º 1
0
 /**
  * 侧边导航
  * @param string $title
  * @param array $items
  * @param string $id
  * @param string $activeClass
  * @param string $mainTag
  * @param string $titleTag
  * @param string $itemTag
  * @return string
  */
 public static function side($title, $items, $id = null, $activeClass = null, $mainTag = null, $titleTag = null, $itemTag = null)
 {
     $id = self::getStrParam($id, 'side-' . Util::RandStr());
     $activeClass = self::getStrParam($activeClass, 'active');
     $mainTag = self::getStrParam($mainTag, '<div id="__ID__" class="list-group">__BODY__</div>');
     $titleTag = self::getStrParam($titleTag, '<a class="list-group-item list-group-item-title">__TITLE__</a>');
     $itemTag = self::getStrParam($itemTag, '<a href="__HREF__" class="list-group-item __CLASS__" __ATTR__>__TITLE__</a>');
     $html = [];
     array_push($html, Util::HtmlReplace($titleTag, ['title' => $title]));
     foreach ($items as $v) {
         array_push($html, Util::HtmlReplace($itemTag, ['class' => isset($v['active']) && $v['active'] ? $activeClass : '', 'attr' => isset($v['attr']) ? $v['attr'] : '', 'href' => $v['url'], 'title' => isset($v['icon']) ? $v['icon'] . $v['title'] : $v['title']]));
     }
     return Util::HtmlReplace($mainTag, ['id' => $id, 'body' => implode('', $html)]);
 }
Ejemplo n.º 2
0
 public function weiXin2AppPay($orderId = 0, $orderLongId = 0)
 {
     $perpayid = $this->weiXinUnifiedOrderByApp($orderId, $orderLongId);
     if ($perpayid == false) {
         return false;
     }
     $payConfig = (include APP_COMMON_PATH . "base-config/pay.php");
     $weixinConfig = $payConfig['weixin'];
     $params = ['appid' => $weixinConfig['appId'], 'partnerid' => $weixinConfig['mchId'], 'prepayid' => $perpayid, 'package' => 'Sign=WXPay', 'noncestr' => Util::RandStr(10), 'timestamp' => time()];
     $pay = new \WeiXin\Pay($weixinConfig);
     $params['sign'] = $pay->getSign($params);
     $params['_package'] = $params['package'];
     unset($params['package']);
     return $params;
 }
Ejemplo n.º 3
0
 /**
  * 获取用户基本信息
  * @param $token
  * @param $openid
  * @return bool|array
  */
 public function getUserInfo($token, $openid)
 {
     $params = ['access_token' => $token, 'openid' => $openid, 'lang' => 'zh_CN'];
     try {
         $res = PhalconPlusUtil::HttpGet(self::urlUserInfo, $params);
         $data = json_decode($res, true);
         if (isset($data['errcode'])) {
             return false;
         }
         return $data;
     } catch (\Exception $e) {
         $this->logError($e->getMessage());
         return false;
     }
 }
Ejemplo n.º 4
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $mobile = $this->getDataItem('mobile');
     $payType = $this->getDataItem('pay_type');
     $goods = $this->getDataItem('goods');
     if (empty($mobile) || empty($payType) || empty($goods) || !is_array($goods) || count($goods) == 0) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR);
     }
     $payTypeValue = $this->getPayTypeNum($payType);
     if ($payTypeValue <= 0) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '支付方式不支持.');
     }
     $userId = $this->getUserAuth()->userId;
     $goodsInfo = $this->getGoodsInfo($goods);
     if (count($goodsInfo) == 0) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '商品内容为空.');
     }
     // 计算总价格
     $money = 0;
     foreach ($goodsInfo as $gi) {
         $money = $money + $gi['order_number'] * $gi['service_price'];
     }
     $longId = Util::LongId(true);
     $orderId = $this->addOrderBase($longId, $mobile, $payTypeValue, $money, $userId);
     if ($orderId == 0) {
         return;
     }
     foreach ($goodsInfo as $gi) {
         $ogid = $this->addOrderGoods($userId, $orderId, $gi);
         if ($ogid <= 0) {
             UserOrder::SetOrderState($userId, $orderId, -1);
             return;
         }
     }
     $weixinPay = null;
     // 判断是否微信支付,微信支付需去下单
     if ($payTypeValue == 1) {
         $pay = new Pay();
         $weixinPay = $pay->weiXin2AppPay($orderId);
     }
     $this->setResult(['success' => 1, 'order_id' => $orderId, 'order_long_id' => $longId, 'weixin_pay' => $weixinPay ? $weixinPay : null]);
 }
Ejemplo n.º 5
0
 public function handle()
 {
     $method = $this->parameters->method;
     $methodConfig = $this->di->get('apiConfig')->method;
     if (!isset($methodConfig[$method])) {
         $this->error(ResultStatus::METHOD_NOT_EXIST, 'method不存在');
         return;
     }
     $classConfig = $methodConfig[$method];
     $classInstance = Util::NewInstance($classConfig->class, [$this->di, $this->parameters->postBody, $classConfig->offsetExists('config') ? $classConfig->config : [], $this->parameters, $this->apiAccess]);
     $classInstance->handle();
     $status = $classInstance->getStatus();
     if ($status == ResultStatus::SUCCESS) {
         $result = $classInstance->getResult();
         $this->setResponse($result);
     } else {
         $error = $classInstance->getError();
         $this->error($status, $error);
     }
 }
Ejemplo n.º 6
0
 /**
  * 处理业务
  */
 public function handle()
 {
     $accessToken = md5(PhalconPlusUtil::Guid());
     $secretToken = md5(PhalconPlusUtil::Guid());
     $expiresIn = $this->di->get('apiConfig')->expires_in;
     // 记录数据
     $access = new ApiAccessToken();
     $access->appAccess = $this->appAccess->id;
     $access->accessToken = $accessToken;
     $access->secretToken = $secretToken;
     $access->expiresIn = $expiresIn;
     $access->clientInfo = $this->parameters->postBody ? $this->parameters->postBody : ' ';
     if ($access->save()) {
         // 返回数据
         $this->setResponse(['access_token' => $accessToken, 'secret_token' => $secretToken, 'expires_in' => $expiresIn]);
     } else {
         $error = '';
         foreach ($access->getMessages() as $msg) {
             $error .= $msg . ',';
         }
         $this->error(ResultStatus::DATABASE_ERROR, '数据库异常.');
         $this->di->get('logger')->error('数据库异常, 保存授权信息异常, GET:' . json_encode($_GET) . ', POST:' . $this->request->getRawBody() . ', error: ' . $error);
     }
 }
Ejemplo n.º 7
0
 public function operatorLog($opId, $type, $content)
 {
     $log = new BackendOperatorLog();
     $log->operator_id = $opId;
     $log->log_type = $type;
     $log->log_content = $content;
     $clientInfo = ['ip' => Util::UserIp(), 'userAgent' => $this->request->getUserAgent(), 'headers' => Util::GetAllHeaders()];
     $log->log_client_info = json_encode($clientInfo);
     if (!$log->save()) {
         $error = '';
         foreach ($log->getMessages() as $msg) {
             $error .= $msg . ',';
         }
         $this->di->get('logger')->error('数据库异常,记录API请求日志出错, GET:' . json_encode($_GET) . ', POST:' . $this->request->getRawBody() . ', error: ' . $error);
     }
 }
Ejemplo n.º 8
0
 private static function SendSMSYunPian($mobile, $msg)
 {
     $url = 'http://yunpian.com/v1/sms/send.json';
     $params = ['apikey' => 'd532d8295db6b866e6eb33be32c19047', 'mobile' => $mobile, 'text' => $msg];
     return Util::HttpPost($url, $params);
 }
Ejemplo n.º 9
0
 /**
  * 保存用户授权
  * @param int $accessToken
  * @param int $userId
  * @return bool
  */
 public function saveUserAuth($accessToken, $userId)
 {
     $token = md5(PhalconPlusUtil::Guid());
     // 记录数据
     $userToken = new ApiUserAuth();
     $userToken->userId = $userId;
     $userToken->accessToken = $accessToken;
     $userToken->userToken = $token;
     if ($userToken->save()) {
         $this->userAuth = $userToken;
         return true;
     }
     $error = '';
     foreach ($userToken->getMessages() as $msg) {
         $error .= $msg . ',';
     }
     $this->errorLog(ResultStatus::DATABASE_ERROR, '数据库异常.');
     $this->di->get('logger')->errorLog('数据库异常, 保存授权信息异常, GET:' . json_encode($_GET) . ', accessToken:' . $accessToken . ', userId' . $userId . ', error: ' . $error);
     return false;
 }
Ejemplo n.º 10
0
 /**
  * 跟新活动基础信息
  * @date: 2016年1月5日 
  * @author: chenxiaolin
  */
 public function updateAction()
 {
     $this->setLeftNav('update');
     $req = $this->request;
     if (!$req->isPost()) {
         $id = intval($req->getQuery('id', null, 0));
         $this->view->setVar('id', $id);
         $this->view->setVar('openCity', SysOpenCity::find());
         $this->view->setVar('info', Activity::findFirst('activity_id = ' . $id));
         $this->view->setVar('positionList', Position::valuesExplain());
         return;
     }
     //修改
     $response = new ResponseResult();
     $response->callback = $req->getPost('callback', null, 'parent.setFormResult');
     $response->callbackJavascriptTag = true;
     $id = intval($req->getPost('activity_id'));
     if ($id < 1) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数异常!');
         return $response;
     }
     $type = intval($req->getPost('activity_type', null, 0));
     $title = $req->getPost('activity_title', null, '');
     $views = $req->getPost('views');
     //$cityId = intval ( $req->getPost ( 'city_id', null, 0 ) );
     //$posion_banner = intval ( $req->getPost ( 'posion_banner', null, 0 ) );
     //$time = $req->getPost ( 'activity_time', null, '' );
     $intro = $req->getPost('activity_intro', null, '');
     $out_link = $req->getPost('out_link', null, '');
     // 判断空数据
     if ($type <= 0 || empty($title)) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数异常!');
         return $response;
     }
     //判断是图文,还是外链地址
     if ($type == 1 && empty($intro)) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数异常!');
         return $response;
     }
     if ($type == 2 && empty($out_link)) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数异常!');
         return $response;
     }
     //判断外链地址是否合法
     if ($type == 2 && !Util::CheckUrl($out_link)) {
         $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '外链地址不合法!');
         return $response;
     }
     //$timeArr = explode ( ' 至 ', $time );
     // 保存封面
     $uploadFile = new UploadPic();
     $uploadFile->request = $req;
     $cover = $uploadFile->activityCover();
     if ($cover == false || !is_array($cover) || count($cover) == 0 || $cover[0] == false) {
         if ($_FILES['activity_cover']['error'] == 1) {
             $response->sendError(ResponseResultStatus::UPLOAD_FILE_ERROR, '文件大小超过了2M!');
             return $response;
         }
     }
     $cover = $cover[0];
     /* if ($cover == false || ! is_array ( $cover ) || count ( $cover ) == 0 || $cover [0] == false) {
     			$cover = null;
     		} else {
     			$cover = $cover [0];
     		} */
     // 保存基础数据
     $info = Activity::findFirst('activity_id = ' . $id);
     $data = [];
     if ($info->activity_type != $type) {
         $data['activity_type'] = $type;
     }
     if ($info->activity_title != $title) {
         $data['activity_title'] = $title;
     }
     /* if ($info->city_id != $cityId) {//其他城市
     			//判断广告位是否存在
     			//$activity2 = Activity::findFirst('city_id = '.$cityId.' and posion_banner = '.$posion_banner);
     			$activity2 = Activity::findFirst("city_id = $cityId and posion_banner = $posion_banner and activity_state in ('1','0')");
     			if($activity2){//广告位已存在
     				$response->sendError ( ResponseResultStatus::BUSINESS, '当前城市的此广告位已存在!' );
     				return $response;
     			}
     			$data ['city_id'] = $cityId;
     			$data ['posion_banner'] = $posion_banner;
     			//推荐到其他城市时:活动状态设置
     			$curTime = time();
     			$startTime = strtotime($timeArr[0]);
     			$endTime = strtotime($timeArr[1]);
     			//1、活动开始时间大于当前时间:未发布--0
     			if(($startTime - $curTime) > 0){
     				$data ['activity_state'] = 0;
     			}elseif(($endTime - $curTime) < 0 ){
     				//2、活动结束时间小于当前时间:已结束--2
     				$data ['activity_state'] = 2;
     			}else{
     				//3、当前时间大于开始时间,小于结束时间:正常--1
     				$data ['activity_state'] = 1;
     			}
     					
     		}else{//本城市			
     			//根据城市id和广告位编号判断该城市的此广告位是否已存在
     			if($info -> posion_banner != $posion_banner){
     				//$activity = Activity::findFirst('city_id = '.$cityId.' and posion_banner = '.$posion_banner);
     				$activity = Activity::findFirst("city_id = $cityId and posion_banner = $posion_banner and activity_state in ('1','0')");
     				if($activity){//广告位已存在
     					$response->sendError ( ResponseResultStatus::BUSINESS, '当前城市的此广告位已存在!' );
     					return $response;
     				}else{//广告位可用
     					$data ['posion_banner'] = $posion_banner;
     				}
     			}			
     			$curTime = time();
     			$startTime = strtotime($timeArr[0]);
     			$endTime = strtotime($timeArr[1]);
     			//1、活动开始时间大于当前时间:未发布--0
     			if(($startTime - $curTime) > 0){
     				$data ['activity_state'] = 0;
     			}elseif(($endTime - $curTime) < 0 ){
     				//2、活动结束时间小于当前时间:已结束--2
     				$data ['activity_state'] = 2;
     			}else{
     				//3、当前时间大于开始时间,小于结束时间:正常--1
     				$data ['activity_state'] = 1;
     			}
     		} */
     if ($type == 1 && $info->activity_intro != $intro) {
         $data['activity_intro'] = $intro;
         $data['out_link'] = "";
     }
     if ($type == 2 && $info->out_link != $out_link) {
         $data['out_link'] = $out_link;
         $data['activity_intro'] = "";
     }
     if ($info->views != $views) {
         $data['views'] = $views;
     }
     /* $data ['activity_start_time'] = $timeArr [0];
     		$data ['activity_end_time'] = $timeArr [1]; */
     if ($cover != null) {
         $data['activity_cover'] = $cover;
     }
     $data['activity_update_time'] = date("Y-m-d H:i:s");
     $info->update($data);
     SearchASync::Instance()->noticeSync($id, SearchDataType::BeautyParlorService);
     $response->sendResult('ok');
     return $response;
 }
Ejemplo n.º 11
0
 /**
  * 修改广告位
  * @date: 2016年1月7日 
  * @author: chenxiaolin
  */
 public function advertisementEditAction()
 {
     $this->setLeftNav('advertisementEdit');
     $req = $this->request;
     if (!$req->isPost()) {
         $id = $req->getQuery('id');
         $info = Advertisement::findFirst("advertisement_id = {$id}");
         $info->advertisement_cover = PicUrl::AdvertisementPic($info->advertisement_cover, $this->getDI());
         $this->view->setVar('info', $info);
         $this->view->setVar('openCity', $this->openCityList());
         return;
     } else {
         $response = new ResponseResult();
         $response->callback = $req->getPost('callback', null, 'parent.setFormResult');
         $response->callbackJavascriptTag = true;
         $id = $req->getPost('advertisement_id');
         $title = $req->getPost('advertisement_title');
         $position = $req->getPost('position');
         $type = $req->getPost('type');
         $intro = $req->getPost('advertisement_intro');
         $out_link = $req->getPost('out_link');
         //判断空数据
         if ($type <= 0 || empty($title) || $position <= 0 || $city < 0) {
             $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '参数异常!');
             return $response;
         }
         //判断图文介绍还是外链地址
         if ($type == 1 && empty($intro)) {
             $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '请填写图文介绍!');
             return $response;
         }
         if ($type == 2 && empty($out_link)) {
             $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '请填写外链地址!');
             return $response;
         }
         //判断外链地址是否合法
         if ($type == 2 && !Util::CheckUrl($out_link)) {
             $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '外链地址不合法!');
             return $response;
         }
         //判断该广告位是否有数据
         $data = Advertisement::findFirst("advertisement_id = {$id}");
         if ($data->position != $position) {
             $city = $data->city_id;
             //判断当前城市的此广告位是否已有数据
             $ad = Advertisement::findFirst("city_id = {$city} and position = {$position}");
             if ($ad) {
                 $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '此广告位已有数据!');
                 return $response;
             }
             //修改全国数据时:判断此广告位是否已被其他城市占用
             if ($city == 0) {
                 $num = Advertisement::count("city_id not in ( 0 ) and position = {$position}");
                 if ($num > 0) {
                     $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '此广告位已被城市占用!');
                     return $response;
                 }
             } else {
                 //修改城市数据时:判断此广告位是否已被全国占用
                 $countryAd = Advertisement::findFirst("city_id = 0 and position = {$position}");
                 if ($countryAd) {
                     $response->sendError(ResponseResultStatus::PARAM_CANNOT_EMPTY, '此广告位已被全国占用!');
                     return $response;
                 }
             }
         }
         //修改封面
         if ($_FILES['advertisement_cover']['name'] != '') {
             $uploadFile = new UploadPic();
             $uploadFile->request = $req;
             $cover = $uploadFile->advertisementPics();
             if ($cover == false || !is_array($cover) || count($cover) == 0 || $cover[0] == false) {
                 if ($_FILES['advertisement_cover']['error'] == 1) {
                     $response->sendError(ResponseResultStatus::UPLOAD_FILE_ERROR, '封面大小不能超过1M!');
                 } else {
                     $response->sendError(ResponseResultStatus::UPLOAD_FILE_ERROR, '封面必须上传!');
                 }
                 return $response;
             }
             $data->advertisement_cover = $cover[0];
         }
         $data->advertisement_title = $title;
         $data->position = $position;
         $data->type = $type;
         if ($type == 1) {
             $data->advertisement_intro = $intro;
             $data->out_link = '';
         }
         if ($type == 2) {
             $data->out_link = $out_link;
             $data->advertisement_intro = '';
         }
         if ($data->save()) {
             $response->sendResult('ok');
             return $response;
         }
     }
 }