예제 #1
0
 public function get($f3)
 {
     global $smarty;
     // 首先做参数合法性验证
     $validator = new Validator($f3->get('GET'));
     $goods_id = $validator->required('商品id不能为空')->digits('商品id非法')->min(1, true, '商品id非法')->validate('goods_id');
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     // 生成 smarty 的缓存 id
     $smartyCacheId = 'Goods|' . $goods_id . '|AjaxGoodsComment_' . $pageNo;
     // 开启并设置 smarty 缓存时间
     enableSmartyCache(true, bzf_get_option_value('smarty_cache_time_goods_view'));
     if ($smarty->isCached('ajax_goodscomment.tpl', $smartyCacheId)) {
         goto out_display;
     }
     $this->preparePage($goods_id, $pageNo);
     out_display:
     $f3->expire(600);
     // 让客户端缓存 10 分钟
     $smarty->display('ajax_goodscomment.tpl', $smartyCacheId);
     return;
     out_fail:
     // output nothing
     return;
 }
예제 #2
0
 public function ListAttrItem($f3)
 {
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $meta_id = $validator->required()->digits()->min(1)->validate('typeId');
     $errorMessage = '';
     if (!$this->validate($validator)) {
         $errorMessage = implode('|', $this->flashMessageArray);
         goto out_fail;
     }
     // 检查缓存
     $cacheKey = md5(__FILE__ . '\\' . __METHOD__ . '\\' . $meta_id);
     $attrItemArray = $f3->get($cacheKey);
     if (!empty($attrItemArray)) {
         goto out;
     }
     $goodsTypeService = new GoodsTypeService();
     $attrItemArray = $goodsTypeService->fetchGoodsTypeAttrItemArray($meta_id);
     $f3->set($cacheKey, $attrItemArray, 300);
     //缓存 5 分钟
     out:
     $f3->expire(60);
     // 客户端缓存 1 分钟
     Ajax::header();
     echo Ajax::buildResult(null, null, $attrItemArray);
     return;
     out_fail:
     Ajax::header();
     echo Ajax::buildResult(-1, $errorMessage, null);
 }
예제 #3
0
파일: Gateway.php 프로젝트: swcug/bzfshop
 public function getRequestUrl($orderId, $returnUrl, $notifyUrl)
 {
     // 参数验证
     $validator = new Validator(array('orderId' => $orderId, 'returnUrl' => $returnUrl, 'notifyUrl' => $notifyUrl));
     $orderId = $validator->required()->digits()->min(1)->validate('orderId');
     $returnUrl = $validator->required()->validate('returnUrl');
     $notifyUrl = $validator->required()->validate('notifyUrl');
     $this->validate($validator);
     //设置订单 ID
     $this->orderId = $orderId;
     // 取得订单
     $orderBasicService = new OrderBasicService();
     $orderInfo = $orderBasicService->loadOrderInfoById($orderId);
     if (empty($orderInfo) || $orderInfo->isEmpty()) {
         throw new \InvalidArgumentException('invalid order_id [' . $orderId . ']');
     }
     $desc = $orderInfo['order_id'] . '|' . Money::toSmartyDisplay($orderInfo['order_amount']) . '|' . $orderInfo['system_id'] . '|WAP';
     // 构造要请求的参数数组,无需改动
     $parameterCreate = array("req_data" => '<direct_trade_create_req><subject>' . $desc . '</subject><out_trade_no>' . $orderInfo['order_sn'] . '_' . $orderInfo['order_id'] . '</out_trade_no><total_fee>' . Money::toDisplay($orderInfo['order_amount'], 2) . "</total_fee><seller_account_name>" . $this->account . "</seller_account_name><notify_url>" . $notifyUrl . "</notify_url><out_user>" . $orderInfo['user_id'] . "</out_user><merchant_url></merchant_url>" . "<call_back_url>" . $returnUrl . "</call_back_url></direct_trade_create_req>", "service" => $this->configServiceCreate, "sec_id" => $this->configSecId, "partner" => $this->partnerId, "req_id" => date("Ymdhms"), "format" => $this->configFormat, "v" => $this->configVersion);
     // 首先申请 Token
     $result = $this->callAlipayWapGateway($this->buildRequestLinkData($parameterCreate));
     // 调用GetToken方法,并返回token
     $token = $this->getToken($result);
     if (!$token) {
         printLog($this->getGatewayType() . ' 获取 token 失败');
         return null;
     }
     // 构造要请求的参数数组,无需改动
     $parameterExecute = array("req_data" => "<auth_and_execute_req><request_token>" . $token . "</request_token></auth_and_execute_req>", "service" => $this->configServiceExecute, "sec_id" => $this->configSecId, "partner" => $this->partnerId, "call_back_url" => $returnUrl, "format" => $this->configFormat, "v" => $this->configVersion);
     return $this->configGateway . $this->buildRequestLinkData($parameterExecute);
 }
예제 #4
0
파일: Goods.php 프로젝트: jackycgq/bzfshop
 /**
  * 根据 goods_id 得到一个商品的图片集
  *
  * @param $f3
  */
 public function GalleryThumb($f3)
 {
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $errorMessage = '';
     $goods_id = $validator->required()->digits()->min(1)->filter('ValidatorIntValue')->validate('goods_id');
     if (!$this->validate($validator)) {
         $errorMessage = implode('|', $this->flashMessageArray);
         goto out_fail;
     }
     $goodsGalleryService = new GoodsGalleryService();
     $galleryArray = $goodsGalleryService->fetchGoodsGalleryArrayByGoodsId($goods_id);
     $thumImageList = array();
     foreach ($galleryArray as $galleryItem) {
         $thumImageList[] = array('img_id' => $galleryItem['img_id'], 'thumb_url' => RouteHelper::makeImageUrl($galleryItem['thumb_url']));
     }
     out:
     Ajax::header();
     echo Ajax::buildResult(null, null, $thumImageList);
     return;
     out_fail:
     // 失败,返回出错信息
     Ajax::header();
     echo Ajax::buildResult(-1, $errorMessage, null);
 }
예제 #5
0
파일: Log.php 프로젝트: swcug/bzfshop
 public function countGoodsLogArray($goods_id, $ttl = 0)
 {
     // 参数验证
     $validator = new Validator(array('goods_id' => $goods_id));
     $goods_id = $validator->required()->digits()->min(1)->validate('goods_id');
     $this->validate($validator);
     return $this->_countArray('goods_log', array(array('goods_id = ?', $goods_id)), null, $ttl);
 }
예제 #6
0
 /**
  * 根据组名取得商品属性组
  *
  * @param string $groupName
  *
  * @return \Core\Modal\SqlMapper
  */
 public function loadGoodsAttrGroupByName($groupName)
 {
     // 参数验证
     $validator = new Validator(array('groupName' => $groupName));
     $groupName = $validator->required()->validate('groupName');
     $this->validate($validator);
     return $this->loadMetaByTypeAndName(GoodsAttrGroup::META_TYPE, $groupName);
 }
예제 #7
0
파일: Settle.php 프로젝트: jackycgq/bzfshop
 /**
  *
  * 取得一组记录的数目,用于分页
  *
  * @return int 查询条数
  *
  * @param array $condArray 查询条件数组,例如:
  *                         array(
  *                         array('supplier_id = ?', $supplier_id)
  *                         array('is_on_sale = ?', 1)
  *                         array('create_time > ? or create_time < ?', $timeMin, $timeMax)
  * )
  *
  * @param int   $ttl       缓存多少时间
  *
  */
 public function countOrderSettleArray(array $condArray, $ttl = 0)
 {
     // 参数验证
     $validator = new Validator(array('condArray' => $condArray), '');
     $condArray = $validator->requireArray(true)->validate('condArray');
     $this->validate($validator);
     return $this->_countArray('order_settle', $condArray, null, $ttl);
 }
예제 #8
0
파일: Tree.php 프로젝트: jackycgq/bzfshop
 public function ListChildTreeNodeAllStr($f3)
 {
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $errorMessage = '';
     $treeKey = $validator->required()->validate('treeKey');
     $parentId = $validator->digits()->min(0)->validate('parentId');
     $parentId = $parentId ?: 0;
     // 用户也可以通过 treeNodeName 来做查询
     $treeNodeName = $validator->validate('treeNodeName');
     if (!$this->validate($validator)) {
         $errorMessage = implode('|', $this->flashMessageArray);
         goto out_fail;
     }
     // 检查缓存
     $cacheKey = md5(__NAMESPACE__ . '\\' . __CLASS__ . '\\' . __METHOD__ . '\\' . $treeKey . '\\' . $parentId . '\\' . $treeNodeName);
     $outputArray = $f3->get($cacheKey);
     if (!empty($outputArray)) {
         goto out;
     }
     $metaTreeService = new MetaTreeService();
     if (!empty($treeNodeName)) {
         $treeNode = $metaTreeService->loadTreeNodeWithTreeKeyAndName($treeKey, $treeNodeName);
         if (!$treeNode->isEmpty()) {
             $parentId = $treeNode['meta_id'];
         }
     }
     // 取得树形的层级结构
     $treeNodeArray = $metaTreeService->fetchChildTreeNodeArrayAll($treeKey, $parentId);
     // 构建显示输出
     $outputArray = array();
     function buildHierarchyArray(&$outputArray, $treeNodeArray, $separator = '')
     {
         $hierarchySeparator = '---------->';
         foreach ($treeNodeArray as $treeNodeItem) {
             $outputItem = array();
             $outputItem['meta_id'] = $treeNodeItem['meta_id'];
             $outputItem['meta_name'] = $treeNodeItem['meta_name'];
             $outputItem['display_text'] = $separator . $treeNodeItem['meta_name'];
             $outputArray[] = $outputItem;
             // 有子节点,递归建立子节点
             if (isset($treeNodeItem['child_list'])) {
                 buildHierarchyArray($outputArray, $treeNodeItem['child_list'], $separator . $hierarchySeparator);
             }
         }
     }
     buildHierarchyArray($outputArray, $treeNodeArray, '');
     $f3->set($cacheKey, $outputArray, 600);
     //缓存 10 分钟
     out:
     Ajax::header();
     echo Ajax::buildResult(null, null, $outputArray);
     return;
     out_fail:
     // 失败,返回出错信息
     Ajax::header();
     echo Ajax::buildResult(-1, $errorMessage, null);
 }
예제 #9
0
파일: View.php 프로젝트: jackycgq/bzfshop
 public function get($f3)
 {
     global $smarty;
     // 首先做参数合法性验证
     $validator = new Validator($f3->get('GET'));
     $goods_id = $validator->required('商品id不能为空')->digits('商品id非法')->min(1, true, '商品id非法')->validate('goods_id');
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     // 生成 smarty 的缓存 id
     $smartyCacheId = 'Goods|' . $goods_id . '|View';
     // 开启并设置 smarty 缓存时间
     enableSmartyCache(true, MobileThemePlugin::getOptionValue('smarty_cache_time_goods_view'));
     // 缓存页面
     if ($smarty->isCached('goods_view.tpl', $smartyCacheId)) {
         goto out_display;
     }
     // 查询商品信息
     $goodsBasicService = new GoodsBasicService();
     $goodsInfo = $goodsBasicService->loadGoodsById($goods_id);
     // 商品不存在,退出
     if ($goodsInfo->isEmpty() || !Utils::isTagExist(PluginHelper::SYSTEM_MOBILE, $goodsInfo['system_tag_list'])) {
         $this->addFlashMessage('商品 [' . $goods_id . '] 不存在');
         goto out_fail;
     }
     // 取商品推广信息设置
     $goodsPromote = $goodsBasicService->loadGoodsPromoteByGoodsId($goods_id);
     // 取商品图片集
     $goodsGalleryArray = GoodsGalleryCache::getGoodsGallery($goods_id);
     foreach ($goodsGalleryArray as &$galleryItem) {
         $galleryItem['img_url'] = RouteHelper::makeImageUrl($galleryItem['img_url']);
         $galleryItem['thumb_url'] = RouteHelper::makeImageUrl($galleryItem['thumb_url']);
     }
     unset($galleryItem);
     // 设置商品页面的 SEO 信息
     $smarty->assign('seo_title', $goodsInfo['seo_title'] . ',' . $f3->get('sysConfig[site_name]'));
     $smarty->assign('seo_description', $goodsInfo['seo_description']);
     $smarty->assign('seo_keywords', $goodsInfo['seo_keyword']);
     // 给模板赋值
     $smarty->assign('goodsInfo', $goodsInfo);
     $smarty->assign('goodsPromote', $goodsPromote);
     if (!Utils::isEmpty($goodsGalleryArray)) {
         $smarty->assign('goodsGalleryArray', $goodsGalleryArray);
     }
     // 设置商品规格
     if (!empty($goodsInfo['goods_spec'])) {
         $goodsSpecService = new GoodsSpecService();
         $goodsSpecService->initWithJson($goodsInfo['goods_spec']);
         $smarty->assign('goodsSpec', $goodsSpecService->getGoodsSpecDataArray());
     }
     out_display:
     $smarty->display('goods_view.tpl', $smartyCacheId);
     return;
     out_fail:
     // 失败从这里返回
     RouteHelper::reRoute($this, '/');
     // 返回首页
 }
예제 #10
0
 /**
  * 取得供货商下面商品的总数,用于分页显示
  *
  * @return int 商品总数
  *
  * @param int $suppliers_id 供货商的ID
  * @param int $ttl          缓存时间
  */
 public function countSupplierGoodsArray($suppliers_id, $ttl = 0)
 {
     // 参数验证
     $validator = new Validator(array('suppliers_id' => $suppliers_id, 'ttl' => $ttl));
     $suppliers_id = $validator->required()->digits()->min(1)->validate('suppliers_id');
     $ttl = $validator->digits()->min(0)->validate('ttl');
     $this->validate($validator);
     return $this->_countArray('goods', array(array('suppliers_id = ? AND is_delete = 0 AND is_on_sale = 1 AND is_alone_sale = 1', $suppliers_id)), null, $ttl);
 }
예제 #11
0
파일: Login.php 프로젝트: swcug/bzfshop
 public function post($f3)
 {
     global $smarty;
     // 首先做参数合法性验证
     $validator = new Validator($f3->get('POST'));
     $input = array();
     $input['user_name'] = $validator->required('用户名不能为空')->validate('user_name');
     $input['password'] = $validator->required('密码不能为空')->validate('password');
     $p_captcha = $validator->required('验证码不能为空')->validate('captcha');
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     // 检查验证码是否有效
     $captchaController = new \Controller\Image\Captcha();
     if (!$captchaController->validateCaptcha($p_captcha)) {
         $this->addFlashMessage("验证码错误");
         goto out_fail;
     }
     $adminService = new AdminUserService();
     // 验证用户登陆
     $admin = $adminService->doAuthAdmin($input['user_name'], $input['user_name'], $input['password']);
     if (!$admin) {
         $this->addFlashMessage("登陆失败,用户名、密码错误");
         goto out_fail;
     }
     // 记录用户的登陆信息
     $adminUserInfo = $admin->toArray();
     unset($adminUserInfo['password']);
     // 不要记录密码
     // 取得用户的角色权限
     $adminUserInfo['role_action_list'] = '';
     if ($adminUserInfo['role_id'] > 0) {
         $metaRoleService = new MetaRoleService();
         $role = $metaRoleService->loadRoleById($adminUserInfo['role_id']);
         if (!$role->isEmpty()) {
             // 赋值角色权限
             $adminUserInfo['role_action_list'] = $role['meta_data'];
         }
     }
     AuthHelper::saveAuthUser($adminUserInfo);
     try {
         // 记录用户登录日志
         AdminLog::logAdminOperate('user.login', '用户登录', 'IP:' . $f3->get('IP'));
     } catch (\Exception $e) {
         // do nothing
     }
     $this->addFlashMessage("登陆成功");
     // 跳转到用户之前看的页面,如果之前没有看过的页面那就回到首页
     RouteHelper::jumpBack($this, '/', true);
     return;
     // 这里正常返回
     out_fail:
     // 失败从这里入口
     $smarty->display('user_login.tpl', 'User|Login|post');
 }
예제 #12
0
파일: Gallery.php 프로젝트: swcug/bzfshop
 /**
  * 给出一组商品 ID,取得所有商品的图片,
  * 这是一个大查询,可能会很多数据,之所以加这个大查询的目的是,
  * 我们宁可要一个几百条记录的大查询,也不要几百个一条记录的小查询
  *
  * @return array  图像集合 array(array(图片1), array(图片2))
  *
  * @param array $goodsIdArray 商品的 ID 数组
  * @param int   $ttl          缓存时间
  */
 public function fetchGoodsGalleryArrayByGoodsIdArray(array $goodsIdArray, $ttl = 0)
 {
     if (!is_array($goodsIdArray) || empty($goodsIdArray)) {
         throw new \InvalidArgumentException('goodsIdArray must be an array not empty');
     }
     // 参数验证
     $validator = new Validator(array('ttl' => $ttl));
     $ttl = $validator->digits()->min(0)->validate('ttl');
     $this->validate($validator);
     $dataMapper = new DataMapper('goods_gallery');
     $sqlInClause = QueryBuilder::buildInCondition('goods_id', $goodsIdArray, \PDO::PARAM_INT);
     return $dataMapper->find(array($sqlInClause), array('order' => 'goods_id asc , img_sort_order desc, img_id asc'), $ttl);
 }
예제 #13
0
 /**
  * 检查 order_goods 对应的评论记录是否已经存在
  *
  * @param int $rec_id
  *
  * @return bool
  */
 public function isOrderGoodsCommentExist($rec_id)
 {
     if (!$rec_id) {
         return false;
     }
     // 参数验证
     $validator = new Validator(array('rec_id' => $rec_id));
     $rec_id = $validator->required()->digits()->min(1)->validate('rec_id');
     $this->validate($validator);
     $dataMapper = new DataMapper('goods_comment');
     $dataMapper->loadOne(array('rec_id = ?', $rec_id), null, 0);
     return !$dataMapper->isEmpty();
 }
예제 #14
0
 /**
  * 验证是否有失败的 validate,失败的 validate 对应的消息会自动被添加到 flash message 中
  *
  * @return boolean
  *
  * @param object $validator  validator 对象
  * */
 protected function validate(Validator $validator)
 {
     $hasError = $validator->hasErrors();
     if (!$hasError) {
         // 没有错误,成功返回
         return true;
     }
     // 有错误,把错误消息放入到 flash Message 中
     $errorArray = $validator->getAllErrors();
     foreach ($errorArray as $errorField => $errorMsg) {
         $this->addFlashMessage($errorMsg);
     }
     return false;
 }
예제 #15
0
 public function getRequestUrl($orderId, $returnUrl, $notifyUrl)
 {
     // 参数验证
     $validator = new Validator(array('orderId' => $orderId, 'returnUrl' => $returnUrl));
     $orderId = $validator->required()->digits()->min(1)->validate('orderId');
     $returnUrl = $validator->required()->validate('returnUrl');
     $this->validate($validator);
     $this->orderId = $orderId;
     //设置订单 ID
     // 自己调用 notify 完成订单支付
     $this->doNotifyUrl(null);
     return $returnUrl . '?order_id=' . $orderId;
     //返回 returnUrl
 }
예제 #16
0
 public function post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_plugin_plugin_configure');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     // shop
     $shop_dev360auth_app_id = $validator->required()->digits()->validate('shop_dev360auth_app_id');
     $shop_dev360auth_app_key = $validator->required()->validate('shop_dev360auth_app_key');
     $shop_dev360auth_app_secrect = $validator->required()->validate('shop_dev360auth_app_secrect');
     // aimeidaren
     $aimeidaren_dev360auth_app_id = $validator->required()->digits()->validate('aimeidaren_dev360auth_app_id');
     $aimeidaren_dev360auth_app_key = $validator->required()->validate('aimeidaren_dev360auth_app_key');
     $aimeidaren_dev360auth_app_secrect = $validator->required()->validate('aimeidaren_dev360auth_app_secrect');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 保存设置 shop
     Dev360AuthPlugin::saveOptionValue('shop_dev360auth_app_id', $shop_dev360auth_app_id);
     Dev360AuthPlugin::saveOptionValue('shop_dev360auth_app_key', $shop_dev360auth_app_key);
     Dev360AuthPlugin::saveOptionValue('shop_dev360auth_app_secrect', $shop_dev360auth_app_secrect);
     // 保存设置 aimeidaren
     Dev360AuthPlugin::saveOptionValue('aimeidaren_dev360auth_app_id', $aimeidaren_dev360auth_app_id);
     Dev360AuthPlugin::saveOptionValue('aimeidaren_dev360auth_app_key', $aimeidaren_dev360auth_app_key);
     Dev360AuthPlugin::saveOptionValue('aimeidaren_dev360auth_app_secrect', $aimeidaren_dev360auth_app_secrect);
     $this->addFlashMessage('保存设置成功');
     out_display:
     $smarty->display('dev360auth_configure.tpl', 'post');
 }
예제 #17
0
 /**
  * 更新用户的第一个地址信息
  * 
  * @return object 返回新的地址对象
  * 
  * @param int $userId  用户数字 ID
  * @param array $addressInfo 包含地址信息的数组
  */
 public function updateUserFirstAddress($userId, array $addressInfo)
 {
     // 参数验证
     $validator = new Validator(array('userId' => $userId, 'addressInfo' => $addressInfo));
     $userId = $validator->required()->digits()->min(1)->validate('userId');
     $addressInfo = $validator->required()->requireArray(false)->validate('addressInfo');
     $this->validate($validator);
     $firstAddress = $this->loadUserFirstAddress($userId);
     // 补充、修正数据
     $addressInfo['user_id'] = $userId;
     $firstAddress->copyFrom($addressInfo);
     $firstAddress->save();
     return $firstAddress;
 }
예제 #18
0
 protected function validate(Validator $validator)
 {
     $hasError = $validator->hasErrors();
     if (!$hasError) {
         // 没有错误,成功返回
         return;
     }
     // 有错误,收集错误信息,抛出异常
     $errorMsg = '';
     $errorArray = $validator->getAllErrors();
     foreach ($errorArray as $errorField => $errorMsg) {
         $errorMsg .= '{[' . $errorField . '][' . $errorMsg . ']}';
     }
     throw new \InvalidArgumentException($errorMsg);
 }
예제 #19
0
파일: Cache.php 프로젝트: swcug/bzfshop
 public function clearArticleCacheById($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_misc_cache');
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     $article_id = $validator->required('商品ID不能为空')->digits()->validate('article_id');
     if (!$this->validate($validator)) {
         goto out;
     }
     ClearHelper::clearArticleCacheById($article_id);
     $this->addFlashMessage('商品[' . $article_id . ']页面清理成功');
     out:
     // 从这里退出
     RouteHelper::reRoute($this, RouteHelper::getRefer(), false);
 }
예제 #20
0
 public function get($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_edit_edit_get');
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $goods_id = $validator->required('商品ID不能为空')->digits()->min(1)->validate('goods_id');
     if (!$this->validate($validator)) {
         goto out;
     }
     // 清除商品缓存
     ClearHelper::clearGoodsCacheById($goods_id);
     $this->addFlashMessage('商品[' . $goods_id . '] 缓存清除成功');
     out:
     RouteHelper::reRoute($this, RouteHelper::getRefer(), false);
 }
예제 #21
0
 public function post($f3)
 {
     global $smarty;
     // 首先做参数合法性验证
     $validator = new Validator($f3->get('POST'));
     $input = array();
     $input['user_name'] = $validator->required('用户名不能为空')->minLength(2, '用户名最短为2个字符')->validate('user_name');
     $input['password'] = $validator->required('密码不能为空')->minLength(6, '密码最短为6个非空字符')->validate('password');
     $input['email'] = $validator->validate('email');
     $input['mobile_phone'] = $validator->digits('手机号格式不对')->validate('mobile_phone');
     $p_captcha = $validator->required('验证码不能为空')->validate('captcha');
     // 手机输入,输入法经常无故添加空格,我们需要去除所有的空额,防止出错
     $p_captcha = Utils::filterAlnumStr($p_captcha);
     // 需要跳转回去的地址
     $returnUrl = $validator->validate('returnUrl');
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     // 检查验证码是否有效
     $captchaController = new \Controller\Image\Captcha();
     if (!$captchaController->validateCaptcha($p_captcha)) {
         $this->addFlashMessage('验证码错误[' . $p_captcha . '][' . $captchaController->getCaptcha() . ']');
         goto out_fail;
     }
     $userService = new UserService();
     // 检查用户是否已经注册
     $isUserExist = $userService->isUserExist($input['user_name'], $input['email']);
     if ($isUserExist) {
         $this->addFlashMessage($isUserExist . '已经存在');
         goto out_fail;
     }
     // 注册用户
     $user = $userService->registerUser($input);
     if (!$user) {
         $this->addFlashMessage('用户注册失败,请稍后刷新页面重试');
         goto out_fail;
     }
     // 记录用户的登陆信息
     $userInfo = $user->toArray();
     unset($userInfo['password']);
     // 不要记录密码
     AuthHelper::saveAuthUser($userInfo, 'normal');
     $this->addFlashMessage("注册成功");
     if ($returnUrl) {
         header('Location:' . $returnUrl);
         return;
     } else {
         // 跳转到用户之前看的页面,如果之前没有看过的页面那就回到首页
         RouteHelper::jumpBack($this, '/', true);
     }
     return;
     // 这里正常返回
     out_fail:
     // 失败,从这里出口
     $smarty->assign('captchaUrl', RouteHelper::makeUrl('/Image/Captcha', array('hash' => time())));
     $smarty->display('user_register.tpl', 'User|Register|post');
 }
예제 #22
0
파일: Order.php 프로젝트: jackycgq/bzfshop
 public function get($f3)
 {
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     if (!$this->validate($validator)) {
         goto out_display;
     }
     $userInfo = AuthHelper::getAuthUser();
     // 构造查询条件
     $searchFormQuery = array();
     $searchFormQuery['oi.user_id'] = $userInfo['user_id'];
     // 合并查询参数
     $searchParamArray = array_merge(QueryBuilder::buildSearchParamArray($searchFormQuery), $this->searchExtraCondArray);
     // 查询订单
     $totalCount = SearchHelper::count(SearchHelper::Module_OrderGoodsOrderInfo, $searchParamArray);
     if ($totalCount <= 0) {
         // 没订单,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/My/Order');
     }
     // 订单排序
     $orderByParam = array();
     $orderByParam[] = array('og.rec_id', 'desc');
     // 订单列表
     $orderGoodsArray = SearchHelper::search(SearchHelper::Module_OrderGoodsOrderInfo, 'og.order_id, og.goods_id, og.goods_attr, og.goods_number, og.goods_price, og.shipping_fee' . ', og.create_time, og.order_goods_status, oi.order_sn, oi.pay_time', $searchParamArray, $orderByParam, $pageNo * $pageSize, $pageSize);
     foreach ($orderGoodsArray as &$orderGoodsItem) {
         $orderGoodsItem['order_goods_status_desc'] = OrderGoodsService::$orderGoodsStatusDesc[$orderGoodsItem['order_goods_status']];
     }
     unset($orderGoodsItem);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('orderGoodsArray', $orderGoodsArray);
     out_display:
     $smarty->display('my_order.tpl', 'get');
 }
예제 #23
0
 public function post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_plugin_plugin_configure');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     $yiqifacps_rate_web = $validator->required()->validate('yiqifacps_rate_web');
     $yiqifacps_rate_mobile = $validator->required()->validate('yiqifacps_rate_mobile');
     $qqcaibei_key1 = $validator->required()->validate('qqcaibei_key1');
     $qqcaibei_key2 = $validator->required()->validate('qqcaibei_key2');
     $yiqifacps_duration = $validator->required()->digits()->min(1)->validate('yiqifacps_duration');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 保存设置
     YiqifaCpsPlugin::saveOptionValue('yiqifacps_rate_web', $yiqifacps_rate_web);
     YiqifaCpsPlugin::saveOptionValue('yiqifacps_rate_mobile', $yiqifacps_rate_mobile);
     YiqifaCpsPlugin::saveOptionValue('yiqifacps_duration', $yiqifacps_duration);
     YiqifaCpsPlugin::saveOptionValue('qqcaibei_key1', $qqcaibei_key1);
     YiqifaCpsPlugin::saveOptionValue('qqcaibei_key2', $qqcaibei_key2);
     $this->addFlashMessage('保存设置成功');
     out_display:
     $smarty->display('yiqifacps_configure.tpl', 'post');
 }
예제 #24
0
파일: Money.php 프로젝트: jackycgq/bzfshop
 public function get($f3)
 {
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     if (!$this->validate($validator)) {
         goto out_display;
     }
     $userInfo = AuthHelper::getAuthUser();
     $userBasicService = new UserBasicService();
     $userInfo = $userBasicService->loadUserById($userInfo['user_id']);
     // 用户总共有资金余额
     $smarty->assign('userMoney', $userInfo['user_money']);
     $accountLog = new AccountLogService();
     // 用户总共有多少account_log
     $totalCount = $accountLog->countUserMoneyArray($userInfo['user_id'], 10);
     //缓存 10 秒钟
     if ($totalCount <= 0) {
         // 没资金变动记录,可以直接退出了
         goto out_display;
     }
     $smarty->assign('totalCount', $totalCount);
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/My/Money');
     }
     // 传递分页的变量
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     // account_log 列表
     $accountLogArray = $accountLog->fetchUserMoneyArray($userInfo['user_id'], $pageNo * $pageSize, $pageSize, 10);
     //缓存 10 秒钟
     foreach ($accountLogArray as &$accountLogItem) {
         $accountLogItem['change_type_desc'] = AccountLogService::$changeTypeDesc[$accountLogItem['change_type']];
     }
     unset($accountLogItem);
     $smarty->assign('accountLogArray', $accountLogArray);
     out_display:
     $smarty->display('my_money.tpl', 'get');
 }
예제 #25
0
 public function get($f3)
 {
     // 上传路径
     $dataPathRoot = $f3->get('sysConfig[data_path_root]');
     if (empty($dataPathRoot)) {
         $dataPathRoot = $f3->get('BASE') . '/data';
     }
     // 上传路径对应的 URL 前缀
     $dataUrlPrefix = $f3->get('sysConfig[data_url_prefix]');
     if (empty($dataUrlPrefix)) {
         $dataUrlPrefix = $f3->get('BASE') . '/data';
     }
     // 操作
     $validator = new Validator($f3->get('GET'));
     $action = $validator->validate('action');
     $kindEditor = new \KindEditor\KindEditor();
     $kindEditor->doAction($dataPathRoot, $dataUrlPrefix, $action);
 }
예제 #26
0
파일: Task.php 프로젝트: jackycgq/bzfshop
 /**
  * 删除一个 cron 任务,注意:已经运行完成的任务不允许删除
  *
  * @param int $task_id
  *
  * @return bool
  */
 public function removeCronTaskById($task_id)
 {
     // 首先做参数验证
     $validator = new Validator(array('task_id' => $task_id));
     $task_id = $validator->required()->digits()->min(1)->validate('task_id');
     $this->validate($validator);
     $cronTask = $this->loadCronTaskById($task_id);
     if ($cronTask->isEmpty()) {
         return false;
     }
     //已经运行完成的任务不允许删除
     if (0 != $cronTask['task_run_time']) {
         return false;
     }
     // 删除任务
     $cronTask->erase();
     return true;
 }
예제 #27
0
파일: Category.php 프로젝트: swcug/bzfshop
 public function Edit($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_article_category_edit');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $meta_id = $validator->digits()->validate('meta_id');
     $meta_id = $meta_id ?: 0;
     //  加载 分类信息
     $articleCategoryService = new ArticleCategoryService();
     $articleCategory = $articleCategoryService->loadArticleCategoryById($meta_id);
     if (Request::isRequestGet()) {
         goto out_assign;
     }
     // 安全性检查
     if ($meta_id > 0) {
         if ($articleCategory->isEmpty() || ArticleCategoryService::META_TYPE != $articleCategory->meta_type) {
             $this->addFlashMessage('非法ID[' . $meta_id . ']');
             goto out;
         }
     }
     unset($validator);
     $validator = new Validator($f3->get('POST'));
     $inputArray = array();
     $inputArray['meta_type'] = ArticleCategoryService::META_TYPE;
     $inputArray['meta_name'] = $validator->required()->validate('meta_name');
     $inputArray['meta_sort_order'] = $validator->digits()->validate('meta_sort_order');
     $inputArray['meta_desc'] = $validator->validate('meta_desc');
     if (!$this->validate($validator)) {
         goto out;
     }
     // 保存
     $articleCategory->copyFrom($inputArray);
     $articleCategory->save();
     $this->addFlashMessage('分类信息保存成功');
     // POST 成功从这里退出
     RouteHelper::reRoute($this, RouteHelper::makeUrl('/Article/Category/Edit', array('meta_id' => $articleCategory->meta_id), true));
     return;
     out_assign:
     $smarty->assign($articleCategory->toArray());
     out:
     $smarty->display('article_category_edit.tpl');
 }
예제 #28
0
 public function post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_plugin_plugin_configure');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     $partner_id = $validator->required()->validate('partner_id');
     $partner_key = $validator->required()->validate('partner_key');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 保存设置
     TenpayPlugin::saveOptionValue('partner_id', $partner_id);
     TenpayPlugin::saveOptionValue('partner_key', $partner_key);
     $this->addFlashMessage('保存设置成功');
     out_display:
     $smarty->display('tenpay_configure.tpl', 'post');
 }
예제 #29
0
파일: Cron.php 프로젝트: jackycgq/bzfshop
 public function Remove($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_misc_cron');
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $task_id = $validator->required('任务ID不能为空')->digits('任务ID非法')->min(1)->filter('ValidatorIntValue')->validate('task_id');
     if (!$this->validate($validator)) {
         goto out;
     }
     $cronTaskService = new CronTaskService();
     if ($cronTaskService->removeCronTaskById($task_id)) {
         $this->addFlashMessage('定时任务删除成功');
     } else {
         $this->addFlashMessage('定时任务删除失败');
     }
     out:
     RouteHelper::reRoute($this, RouteHelper::getRefer(), false);
 }
예제 #30
0
 public function post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_plugin_theme_adv_configure');
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     // 广告设置 json 数据,由 JavaScript 打包发送过来
     $shop_index_advblock_json_data = $validator->validate('shop_index_advblock_json_data');
     $jsonObject = json_decode($shop_index_advblock_json_data, true);
     if (empty($jsonObject)) {
         $shop_index_advblock_json_data = null;
     }
     ShopThemePlugin::saveOptionValue('shop_index_advblock_json_data', $shop_index_advblock_json_data);
     // 清除 /Shop/Index 页面
     $shopClear = new ShopClear();
     $shopClear->clearHomePage();
     $this->addFlashMessage('保存设置成功');
     RouteHelper::reRoute($this, '/Theme/Shop/AdvShopBlock');
 }