Example #1
0
 /**
  * 列出结算列表
  *
  * @param $f3
  */
 public function ListSettle($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;
     // 表单查询
     $formQuery = array();
     //结算时间
     $settleTimeStartStr = $validator->validate('settle_time_start');
     $settleTimeStart = Time::gmStrToTime($settleTimeStartStr) ?: null;
     $settleTimeEndStr = $validator->validate('settle_time_end');
     $settleTimeEnd = Time::gmStrToTime($settleTimeEndStr) ?: null;
     $formQuery['create_time'] = array($settleTimeStart, $settleTimeEnd);
     //是否已经付款
     $is_pay = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('is_pay');
     switch ($is_pay) {
         case 1:
             $formQuery['pay_time'] = 0;
             break;
         case 2:
             $formQuery['pay_time'] = array($is_pay, null);
             break;
         default:
             break;
     }
     // 供货商只能查看自己的结算历史
     $authSupplierUser = AuthHelper::getAuthUser();
     $formQuery['suppliers_id'] = $authSupplierUser['suppliers_id'];
     // 构建查询条件
     $condArray = null;
     if (!empty($formQuery)) {
         $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     }
     // 查询结算列表
     $orderSettleService = new OrderSettleService();
     $totalCount = $orderSettleService->countOrderSettleArray($condArray);
     if ($totalCount <= 0) {
         // 没商品,可以直接退出了
         goto out;
     }
     // 页数超过最大值,返回
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Order/Settle/ListSettle');
     }
     // 结算列表
     $orderSettleArray = $orderSettleService->fetchOrderSettleArray($condArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('orderSettleArray', $orderSettleArray);
     out:
     $smarty->display('order_settle_listsettle.tpl');
 }
Example #2
0
 public function get($f3)
 {
     global $smarty;
     // 权限检查
     $this->requirePrivilege('manage_misc_cron');
     // 参数验证
     $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 : 20;
     //查询条件
     $searchFormQuery = array();
     $searchFormQuery['task_name'] = $validator->validate('task_name');
     $searchFormQuery['task_desc'] = $validator->validate('task_desc');
     $returnCode = $validator->digits()->filter('ValidatorIntValue')->validate('return_code');
     if (0 === $returnCode) {
         $searchFormQuery['task_run_time'] = array('>', 0);
         $searchFormQuery['return_code'] = 0;
     } elseif ($returnCode > 0) {
         $searchFormQuery['task_run_time'] = array('>', 0);
         $searchFormQuery['return_code'] = array('<>', 0);
     } else {
         // do nothing
     }
     //任务时间
     $taskTimeStartStr = $validator->validate('task_time_start');
     $taskTimeStart = Time::gmStrToTime($taskTimeStartStr) ?: null;
     $taskTimeEndStr = $validator->validate('task_time_end');
     $taskTimeEnd = Time::gmStrToTime($taskTimeEndStr) ?: null;
     $searchFormQuery['task_time'] = array($taskTimeStart, $taskTimeEnd);
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 建立查询条件
     $searchParamArray = QueryBuilder::buildQueryCondArray($searchFormQuery);
     $cronTaskService = new CronTaskService();
     $totalCount = $cronTaskService->countCronTaskArray($searchParamArray);
     if ($totalCount <= 0) {
         // 没任务,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Misc/Cron');
     }
     $cronTaskArray = $cronTaskService->fetchCronTaskArray($searchParamArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('cronTaskArray', $cronTaskArray);
     out_display:
     $smarty->display('misc_cron.tpl');
 }
Example #3
0
 public function get($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_edit_edit_get');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $goods_id = $validator->required('商品ID不能为空')->digits()->min(1)->validate('goods_id');
     // 商品信息
     $goodsBasicService = new GoodsBasicService();
     $goods = $goodsBasicService->loadGoodsById($goods_id);
     if ($goods->isEmpty()) {
         $this->addFlashMessage('商品ID[' . $goods . ']非法');
         goto out_fail;
     }
     $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 : 20;
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     //查询条件
     $searchFormQuery = array();
     $searchFormQuery['task_name'] = array('=', GoodsCronTask::$task_name);
     $searchFormQuery['search_param'] = array('=', $goods_id);
     // 建立查询条件
     $searchParamArray = QueryBuilder::buildQueryCondArray($searchFormQuery);
     $cronTaskService = new CronTaskService();
     $totalCount = $cronTaskService->countCronTaskArray($searchParamArray);
     if ($totalCount <= 0) {
         // 没任务,可以直接退出了
         goto out_display;
     }
     $cronTaskArray = $cronTaskService->fetchCronTaskArray($searchParamArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('cronTaskArray', $cronTaskArray);
     out_display:
     $smarty->assign('goods', $goods->toArray());
     $smarty->display('goods_edit_cron.tpl');
     return;
     out_fail:
     RouteHelper::reRoute($this, '/Goods/Search');
 }
Example #4
0
 /**
  * 取得 goods 和 goods_promote 的 join 结果,同时取得 goods 对应的所有商品
  * 由于这个函数的代价非常大(几千个商品,上万个图片),所以我们一定要做缓存
  *
  * @return array  array('goods' => $goodsArray, 'goodsIdToGalleryArray' => $goodsIdToGalleryArray)
  *
  * @param array  $queryCondArray 查询条件
  * @param string $sort
  * @param  int   $offset
  * @param  int   $limit
  * @param int    $ttl            缓存时间
  *
  * @return array
  */
 public function fetchGoodsGalleryPromote($queryCondArray, $sort, $offset, $limit, $ttl = 0)
 {
     // 首先做参数验证
     $validator = new Validator(array('sort' => $sort, 'offset' => $offset, 'limit' => $limit, 'ttl' => $ttl));
     $offset = $validator->digits()->min(0)->validate('offset');
     $limit = $validator->digits()->min(0)->validate('limit');
     $ttl = $validator->digits()->min(0)->validate('ttl');
     $sort = $validator->validate('sort');
     // 查询商品信息
     $condArray = array();
     $condArray[] = array('g.goods_id = gp.goods_id');
     $formQuery = array();
     $formQuery['is_delete'] = 0;
     $formQuery['is_on_sale'] = 1;
     $formQuery['is_alone_sale'] = 1;
     if (!empty($queryCondArray)) {
         $condArray = array_merge($condArray, $queryCondArray);
     }
     $condArray = array_merge($condArray, QueryBuilder::buildQueryCondArray($formQuery));
     $goodsArray = $this->_fetchArray(array('goods' => 'g', 'goods_promote' => 'gp'), 'g.system_tag_list, g.goods_name, g.goods_name_short, g.brand_id, g.goods_number, g.market_price, g.shop_price, g.cat_id' . ', g.sort_order, g.goods_brief, g.seo_keyword, g.goods_notice , g.virtual_buy_number, g.user_pay_number' . ', gp.* ', $condArray, array('order' => $sort), $offset, $limit, $ttl);
     // options
     // 如果没有数据就退出
     if (empty($goodsArray)) {
         return array();
     }
     // 查询商品图片
     $goodsIdArray = array();
     foreach ($goodsArray as $goodsItem) {
         $goodsIdArray[] = $goodsItem['goods_id'];
     }
     $goodsGalleryService = new GoodsGalleryService();
     $goodsGalleryArray = $goodsGalleryService->fetchGoodsGalleryArrayByGoodsIdArray($goodsIdArray, $ttl);
     // 建立 goods_id --> goods_gallery 的反查表
     $goodsIdToGalleryArray = array();
     foreach ($goodsGalleryArray as $goodsGalleryItem) {
         if (!isset($goodsIdToGalleryArray[$goodsGalleryItem['goods_id']])) {
             $goodsIdToGalleryArray[$goodsGalleryItem['goods_id']] = array();
         }
         $goodsIdToGalleryArray[$goodsGalleryItem['goods_id']][] = $goodsGalleryItem;
     }
     return array('goods' => $goodsArray, 'goodsIdToGalleryArray' => $goodsIdToGalleryArray);
 }
Example #5
0
 public function ListBrand($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_brand_listbrand');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 查询条件
     $formQuery = array();
     $formQuery['brand_name'] = $validator->validate('brand_name');
     $formQuery['brand_desc'] = $validator->validate('brand_desc');
     $formQuery['is_custom'] = $validator->filter('ValidatorIntValue')->validate('is_custom');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     // 查询条件
     $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     $goodsBrandService = new GoodsBrandService();
     $totalCount = $goodsBrandService->countBrandArray($condArray);
     if ($totalCount <= 0) {
         // 没用户,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Goods/Brand/ListBrand');
     }
     // 查询数据
     $goodsBrandArray = $goodsBrandService->fetchBrandArray($condArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('goodsBrandArray', $goodsBrandArray);
     out_display:
     $smarty->display('goods_brand_listbrand.tpl');
 }
Example #6
0
 public function ListComment($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_comment_listcomment');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 查询条件
     $formQuery = array();
     $formQuery['goods_id'] = $validator->filter('ValidatorIntValue')->validate('goods_id');
     $formQuery['is_show'] = $validator->filter('ValidatorIntValue')->validate('is_show');
     $formQuery['admin_user_id'] = $validator->filter('ValidatorIntValue')->validate('admin_user_id');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     // 查询条件
     $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     $baseService = new BaseService();
     $totalCount = $baseService->_countArray('goods_comment', $condArray);
     if ($totalCount <= 0) {
         // 没用户,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Goods/AttrGroup/ListAttrGroup');
     }
     // 查询数据
     $goodsCommentArray = $baseService->_fetchArray('goods_comment', '*', $condArray, array('order' => 'comment_id desc'), $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('goodsCommentArray', $goodsCommentArray);
     out_display:
     $smarty->display('goods_comment_listcomment.tpl');
 }
Example #7
0
 /**
  * 供货商列表显示
  */
 public function ListUser($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_account_supplier_listuser');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     //查询条件
     $formQuery = array();
     $formQuery['suppliers_name'] = $validator->validate('suppliers_name');
     $formQuery['suppliers_desc'] = $validator->validate('suppliers_desc');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 建立查询条件
     $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     // 查询供货商列表
     $supplierUserService = new SupplierUserService();
     $totalCount = $supplierUserService->countSupplierArray($condArray);
     if ($totalCount <= 0) {
         // 没用户,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Account/Supplier/ListUser');
     }
     // 供货商列表
     $supplierUserArray = $supplierUserService->fetchSupplierArray($condArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('supplierUserArray', $supplierUserArray);
     out_display:
     $smarty->display('account_supplier_listuser.tpl');
 }
Example #8
0
 public function ListType($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_type_listtype');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 查询条件
     $formQuery = array();
     $formQuery['meta_name'] = $validator->validate('meta_name');
     $formQuery['meta_desc'] = $validator->validate('meta_desc');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 20;
     // 查询条件
     $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     $goodsTypeService = new GoodsTypeService();
     $totalCount = $goodsTypeService->countGoodsTypeArray($condArray);
     if ($totalCount <= 0) {
         // 没数据,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Goods/Type/ListType');
     }
     // 查询数据
     $goodsTypeArray = $goodsTypeService->fetchGoodsTypeArray($condArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('goodsTypeArray', $goodsTypeArray);
     out_display:
     $smarty->display('goods_type_listtype.tpl');
 }
Example #9
0
 public function Search($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_order_goods_search');
     /**
      * 我们使用搜索模块做搜索操作
      */
     $searchFieldSelector = 'og.*, oi.user_id, oi.system_id, oi.kefu_user_id, oi.kefu_user_name, oi.kefu_user_rate';
     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;
     // shippingStatus, 0 全部,1 已发货,2 未发货
     $shippingStatus = $validator->digits()->min(1)->validate('shippingStatus');
     //订单表单查询
     $searchFormQuery = array();
     $searchFormQuery['og.order_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('order_id');
     $searchFormQuery['og.rec_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('rec_id');
     $searchFormQuery['og.goods_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('goods_id');
     $searchFormQuery['og.goods_name'] = $validator->validate('goods_name');
     $searchFormQuery['oi.order_sn'] = $validator->validate('order_sn');
     $searchFormQuery['oi.pay_no'] = $validator->validate('pay_no');
     $order_goods_status = $validator->min(-1)->filter('ValidatorIntValue')->validate('order_goods_status');
     if ($order_goods_status >= 0) {
         $searchFormQuery['og.order_goods_status'] = $order_goods_status;
     }
     $searchFormQuery['oi.consignee'] = $validator->validate('consignee');
     $searchFormQuery['oi.mobile'] = $validator->validate('mobile');
     $searchFormQuery['oi.address'] = $validator->validate('address');
     $searchFormQuery['oi.postscript'] = $validator->validate('postscript');
     $searchFormQuery['og.memo'] = $validator->validate('memo');
     $searchFormQuery['oi.kefu_user_id'] = $validator->filter('ValidatorIntValue')->validate('kefu_user_id');
     $searchFormQuery['og.goods_admin_user_id'] = $validator->filter('ValidatorIntValue')->validate('goods_admin_user_id');
     //下单时间
     $createTimeStartStr = $validator->validate('create_time_start');
     $createTimeStart = Time::gmStrToTime($createTimeStartStr) ?: null;
     $createTimeEndStr = $validator->validate('create_time_end');
     $createTimeEnd = Time::gmStrToTime($createTimeEndStr) ?: null;
     $searchFormQuery['og.create_time'] = array($createTimeStart, $createTimeEnd);
     //付款时间
     $payTimeStartStr = $validator->validate('pay_time_start');
     $payTimeStart = Time::gmStrToTime($payTimeStartStr) ?: null;
     $payTimeEndStr = $validator->validate('pay_time_end');
     $payTimeEnd = Time::gmStrToTime($payTimeEndStr) ?: null;
     $searchFormQuery['oi.pay_time'] = array($payTimeStart, $payTimeEnd);
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 构造查询条件
     $searchParamArray = array();
     // 用户取消的订单商品我们就不再显示了
     $searchParamArray[] = array(QueryBuilder::buildNotInCondition('oi.order_status', array(OrderBasicService::OS_CANCELED, OrderBasicService::OS_INVALID), \PDO::PARAM_INT));
     if (1 == $shippingStatus) {
         // 1 未发货
         $searchParamArray[] = array('og.shipping_id = 0');
     } elseif (2 == $shippingStatus) {
         // 2 已发货
         $searchParamArray[] = array('og.shipping_id <> 0');
     } else {
         // do nothing
     }
     // 用户查询,目前支持 用户名、邮箱 查询
     $user_name = $validator->validate('user_name');
     $email = $validator->validate('email');
     if (!empty($user_name) || !empty($email)) {
         $userQuery = array();
         $userQuery['user_name'] = $user_name;
         $userQuery['email'] = $email;
         $userBasicService = new UserBasicService();
         $queryUserArray = $userBasicService->_fetchArray('users', 'user_id', QueryBuilder::buildQueryCondArray($userQuery), array('order' => 'user_id desc'), 0, 1000);
         unset($userBasicService);
         if (empty($queryUserArray)) {
             $this->addFlashMessage('搜索的用户不存在');
         } else {
             $userIdArray = array();
             foreach ($queryUserArray as $queryUser) {
                 $userIdArray[] = $queryUser['user_id'];
             }
             if (!empty($userIdArray)) {
                 $searchParamArray[] = array(QueryBuilder::buildInCondition('oi.user_id', $userIdArray, \PDO::PARAM_INT));
             }
             unset($userIdArray);
             unset($queryUserArray);
         }
     }
     $utmSource = $validator->validate('utm_source');
     if ('SELF' == $utmSource) {
         $searchParamArray[] = array('orf.utm_source is null');
     } else {
         $searchFormQuery['orf.utm_source'] = array('=', $utmSource);
     }
     $utmMedium = $validator->validate('utm_medium');
     if ('SELF' == $utmMedium) {
         $searchParamArray[] = array('orf.utm_medium is null');
     } else {
         $searchFormQuery['orf.utm_medium'] = array('=', $utmMedium);
     }
     // 表单查询
     $searchParamArray = array_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     // 使用哪个搜索模块
     $searchModule = SearchHelper::Module_OrderGoodsOrderInfo;
     if (!empty($utmSource) || !empty($utmMedium)) {
         $searchModule = SearchHelper::Module_OrderGoodsOrderInfoOrderRefer;
     }
     // 查询订单列表
     $totalCount = SearchHelper::count($searchModule, $searchParamArray);
     if ($totalCount <= 0) {
         // 没订单,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Order/Goods/Search');
     }
     // 查询订单列表
     $orderGoodsArray = SearchHelper::search($searchModule, $searchFieldSelector, $searchParamArray, array(array('og.order_id', 'desc')), $pageNo * $pageSize, $pageSize);
     // 订单的支付状态显示
     foreach ($orderGoodsArray as &$orderGoodsItem) {
         $orderGoodsItem['order_goods_status_desc'] = OrderGoodsService::$orderGoodsStatusDesc[$orderGoodsItem['order_goods_status']];
     }
     // 前面用了引用,这里一定要清除,防止影响后面的数据
     unset($orderGoodsItem);
     // 取得用户 id 列表
     $userIdArray = array();
     foreach ($orderGoodsArray as $orderGoodsItem) {
         $userIdArray[] = $orderGoodsItem['user_id'];
     }
     $userIdArray = array_unique($userIdArray);
     //取得用户信息
     $userBasicService = new UserBasicService();
     $userArray = $userBasicService->fetchUserArrayByUserIdArray($userIdArray);
     // 建立 user_id --> user 的反查表,方便快速查询
     $userIdToUserArray = array();
     foreach ($userArray as $user) {
         $userIdToUserArray[$user['user_id']] = $user;
     }
     // 放入用户信息
     foreach ($orderGoodsArray as &$orderGoodsItem) {
         if (isset($userIdToUserArray[$orderGoodsItem['user_id']])) {
             // 很老的订单,用户可能被删除了
             $orderGoodsItem['user_name'] = $userIdToUserArray[$orderGoodsItem['user_id']]['user_name'];
             $orderGoodsItem['email'] = $userIdToUserArray[$orderGoodsItem['user_id']]['email'];
         }
     }
     // 前面用了引用,这里一定要清除,防止影响后面的数据
     unset($orderGoodsItem);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('orderGoodsArray', $orderGoodsArray);
     out_display:
     $smarty->display('order_goods_search.tpl');
 }
Example #10
0
 /**
  * 管理员操作日志
  *
  * @param $f3
  */
 public function ListLog($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_account_admin_listlog');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     //查询条件
     $formQuery = array();
     $formQuery['user_id'] = $validator->filter('ValidatorIntValue')->validate('user_id');
     $formQuery['operate'] = $validator->validate('operate');
     $formQuery['operate_desc'] = $validator->validate('operate_desc');
     //操作时间
     $operateTimeStartStr = $validator->validate('operate_time_start');
     $operateTimeStart = Time::gmStrToTime($operateTimeStartStr) ?: null;
     $operateTimeEndStr = $validator->validate('operate_time_end');
     $operateTimeEnd = Time::gmStrToTime($operateTimeEndStr) ?: null;
     $formQuery['operate_time'] = array($operateTimeStart, $operateTimeEnd);
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 20;
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 建立查询条件
     $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     // 查询管理员列表
     $adminLogService = new AdminLogService();
     $totalCount = $adminLogService->countAdminLogArray($condArray);
     if ($totalCount <= 0) {
         // 没数据,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Account/Admin/ListLog');
     }
     // 管理员列表
     $adminLogArray = $adminLogService->fetchAdminLogArray($condArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('adminLogArray', $adminLogArray);
     out_display:
     $smarty->display('account_admin_listlog.tpl');
 }
Example #11
0
 /**
  *
  * 批量下载订单
  *
  */
 public function Download($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_order_excel_download');
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     //表单查询
     $formQuery = array();
     $formQuery['suppliers_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('suppliers_id');
     $formQuery['goods_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('goods_id');
     if (empty($formQuery['suppliers_id']) && empty($formQuery['goods_id'])) {
         $this->addFlashMessage('供货商ID 和 商品ID 不能同时为空');
         goto out_fail;
     }
     //付款时间
     $payTimeStartStr = $validator->validate('pay_time_start');
     $payTimeStart = Time::gmStrToTime($payTimeStartStr) ?: null;
     $payTimeEndStr = $validator->validate('pay_time_end');
     $payTimeEnd = Time::gmStrToTime($payTimeEndStr) ?: null;
     $formQuery['pay_time'] = array($payTimeStart, $payTimeEnd);
     //额外退款,时间
     $extraRefundTimeStartStr = $validator->validate('extra_refund_time_start');
     $extraRefundTimeStart = Time::gmStrToTime($extraRefundTimeStartStr) ?: null;
     $extraRefundTimeEndStr = $validator->validate('extra_refund_time_end');
     $extraRefundTimeEnd = Time::gmStrToTime($extraRefundTimeEndStr) ?: null;
     $formQuery['extra_refund_time'] = array($extraRefundTimeStart, $extraRefundTimeEnd);
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     if (Utils::isBlank($formQuery['suppliers_id']) || (Utils::isBlank($payTimeStart) || Utils::isBlank($payTimeEnd)) && (Utils::isBlank($extraRefundTimeStart) || Utils::isBlank($extraRefundTimeEnd))) {
         $this->addFlashMessage('按照供货商下载订单必须提供时间段参数');
         goto out_fail;
     }
     $condArray = array();
     $condArray[] = array('oi.order_id = og.order_id');
     $condArray[] = array('order_goods_status > 0');
     // 表单查询
     $condArray = array_merge($condArray, QueryBuilder::buildQueryCondArray($formQuery));
     $orderGoodsService = new OrderGoodsService();
     $orderGoodsArray = $orderGoodsService->_fetchArray(array('order_info' => 'oi', 'order_goods' => 'og'), 'og.*, oi.add_time, oi.pay_time, oi.consignee, oi.mobile, oi.tel, oi.zipcode, oi.postscript, oi.address', $condArray, array('order' => 'oi.order_id asc, og.rec_id asc, og.goods_id asc'), 0, $f3->get('sysConfig[max_query_record_count]'), 0);
     //最多限制 max_query_record_count 条记录
     // 转换显示格式
     foreach ($orderGoodsArray as &$orderGoodsItem) {
         $orderGoodsItem['add_time'] = Time::gmTimeToLocalTimeStr($orderGoodsItem['add_time'], 'Y-m-d H:i:s');
         $orderGoodsItem['pay_time'] = Time::gmTimeToLocalTimeStr($orderGoodsItem['pay_time'], 'Y-m-d H:i:s');
         $orderGoodsItem['extra_refund_time'] = Time::gmTimeToLocalTimeStr($orderGoodsItem['extra_refund_time'], 'Y-m-d H:i:s');
         $orderGoodsItem['suppliers_total_price'] = $orderGoodsItem['suppliers_price'] * $orderGoodsItem['goods_number'];
         $orderGoodsItem['order_goods_status_desc'] = OrderGoodsService::$orderGoodsStatusDesc[$orderGoodsItem['order_goods_status']];
     }
     unset($orderGoodsItem);
     require_once PROTECTED_PATH . '/Vendor/PHPExcel/Settings.php';
     // 设置Excel缓存,防止数据太多拖死了程序
     \PHPExcel_Settings::setCacheStorageMethod(\PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp);
     // 导出为 Excel 格式
     $objPHPExcel = new \PHPExcel();
     // 设置工作 sheet
     $objPHPExcel->setActiveSheetIndex(0);
     $activeSheet = $objPHPExcel->getActiveSheet();
     // 取得快递公司列表
     $expressService = new ExpressService();
     $expressArray = $expressService->fetchExpressArray();
     //输出快递公司参考表
     $this->outputExpressArray($activeSheet, $expressArray);
     //释放内存
     unset($expressArray);
     unset($expressService);
     // 格式化数据
     $rowIndex = 1;
     $lastOrderId = 0;
     $orderGoodsArraySize = count($orderGoodsArray);
     // 输出头部信息
     $this->outputHeaderRow($activeSheet, $rowIndex);
     $rowIndex++;
     // 换行
     for ($orderGoodsIndex = 0; $orderGoodsIndex < $orderGoodsArraySize; $orderGoodsIndex++) {
         // 取得这行数据
         $orderGoodsItem = $orderGoodsArray[$orderGoodsIndex];
         if ($lastOrderId != $orderGoodsItem['order_id']) {
             $lastOrderId = $orderGoodsItem['order_id'];
             // 不同的订单,需要特殊处理
             $rowIndex += 2;
             // 跳过 2 行
         }
         // 输出数据
         //$this->outputDataRow($activeSheet, $rowIndex, $orderGoodsItem, array('goods_name', 'goods_id'));
         $this->outputDataRow($activeSheet, $rowIndex, $orderGoodsItem);
         $rowIndex++;
         // 换行
     }
     $fileName = '订单下载_' . $formQuery['goods_id'] . '_' . Time::gmTimeToLocalTimeStr($payTimeStart, 'Y-m-d_H-i-s') . '__' . Time::gmTimeToLocalTimeStr($payTimeEnd, 'Y-m-d_H-i-s');
     // 输出为 Excel5 格式
     $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
     header('Content-Type: application/vnd.ms-excel');
     if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
         header('Content-Disposition: attachment; filename="' . urlencode($fileName) . '.xls"');
     } else {
         header('Content-Disposition: attachment; filename="' . $fileName . '.xls"');
     }
     header('Cache-Control: max-age=0');
     $objWriter->save('php://output');
     //输出到浏览器
     die;
     out_fail:
     // 失败,打印错误消息
     $flashMessageArray = $this->flashMessageArray;
     foreach ($flashMessageArray as $flashMessage) {
         echo $flashMessage . '<br />';
     }
 }
Example #12
0
 public function ListOrderGoodsSupplierIdName($f3)
 {
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     //表单查询
     $formQuery = array();
     // 是否这个列表是用于供货商订单结算
     $supplierForSettle = $validator->validate('supplier_for_settle');
     //付款时间
     $payTimeStartStr = $validator->required()->validate('pay_time_start');
     $payTimeStart = Time::gmStrToTime($payTimeStartStr) ?: null;
     $payTimeEndStr = $validator->required()->validate('pay_time_end');
     $payTimeEnd = Time::gmStrToTime($payTimeEndStr) ?: null;
     $formQuery['pay_time'] = array($payTimeStart, $payTimeEnd);
     //额外退款时间
     $extraRefundTimeStartStr = $validator->required()->validate('extra_refund_time_start');
     $extraRefundTimeStart = Time::gmStrToTime($extraRefundTimeStartStr) ?: null;
     $extraRefundTimeEndStr = $validator->required()->validate('extra_refund_time_end');
     $extraRefundTimeEnd = Time::gmStrToTime($extraRefundTimeEndStr) ?: null;
     $formQuery['extra_refund_time'] = array($extraRefundTimeStart, $extraRefundTimeEnd);
     if (!($payTimeStart && $payTimeEnd) && !($extraRefundTimeStart && $extraRefundTimeEnd)) {
         goto out_fail;
     }
     // 取得供货商 id
     $condArray = array();
     $condArray[] = array('oi.order_id = og.order_id');
     // 这个列表是用于供货商订单结算,只取得需要结算的供货商
     if (!empty($supplierForSettle)) {
         //只有付款了订单才显示
         $condArray[] = array('order_goods_status > 0');
         //只有发货了订单才需要结算
         $condArray[] = array('og.shipping_id > 0');
         //商家结算过了就不要显示出来了
         $condArray[] = array('settle_id = 0');
     }
     // 表单查询
     $condArray = array_merge($condArray, QueryBuilder::buildQueryCondArray($formQuery));
     $orderGoodsService = new OrderGoodsService();
     $queryArray = $orderGoodsService->_fetchArray(array('order_info' => 'oi', 'order_goods' => 'og'), 'distinct(og.suppliers_id)', $condArray, array('order' => 'suppliers_id desc'), 0, $f3->get('sysConfig[max_query_record_count]'), 0);
     //最多限制 max_query_record_count 条记录
     // 取得供货商 id 列表
     $supplierIdArray = array();
     foreach ($queryArray as $queryItem) {
         $supplierIdArray[] = $queryItem['suppliers_id'];
     }
     if (empty($supplierIdArray)) {
         // 没有数据,退出
         goto out_fail;
     }
     // 取得供货商信息
     $userSupplierService = new UserSupplierService();
     $queryArray = $userSupplierService->fetchSupplierArrayBySupplierIdArray($supplierIdArray);
     $supplierArray = array();
     foreach ($queryArray as $queryItem) {
         $supplierItem = array();
         $supplierItem['suppliers_id'] = $queryItem['suppliers_id'];
         $supplierItem['suppliers_account'] = $queryItem['suppliers_account'];
         $supplierItem['suppliers_name'] = $queryItem['suppliers_name'];
         $supplierArray[] = $supplierItem;
     }
     // 正常从这里返回
     Ajax::header();
     echo Ajax::buildResult(null, null, $supplierArray);
     return;
     out_fail:
     Ajax::header();
     echo Ajax::buildResult(null, null, array());
 }
Example #13
0
 /**
  * 用户资金变动列表
  *
  * @param $f3
  */
 public function Money($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_account_user_money');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     //查询条件
     $formQuery = array();
     $formQuery['user_id'] = $validator->filter('ValidatorIntValue')->validate('user_id');
     $formQuery['admin_user_id'] = $validator->filter('ValidatorIntValue')->validate('admin_user_id');
     $formQuery['change_type'] = $validator->filter('ValidatorIntValue')->validate('change_type');
     $formQuery['change_desc'] = $validator->validate('change_desc');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 20;
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 建立查询条件
     $condArray = QueryBuilder::buildQueryCondArray($formQuery);
     // 查询资金列表
     $accountLogService = new AccountLogService();
     $totalCount = $accountLogService->_countArray('account_log', $condArray);
     if ($totalCount <= 0) {
         // 没用户,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Account/User/Money');
     }
     // 资金列表
     $accountLogArray = $accountLogService->_fetchArray('account_log', '*', $condArray, array('order' => 'log_id desc'), $pageNo * $pageSize, $pageSize);
     // 取用户信息
     $userIdArray = array();
     foreach ($accountLogArray as $accountLogItem) {
         $userIdArray[] = $accountLogItem['user_id'];
     }
     $userIdArray = array_unique($userIdArray);
     $userBasicService = new UserBasicService();
     $userInfoArray = $userBasicService->fetchUserArrayByUserIdArray($userIdArray);
     //建立倒查表
     $userIdToUserInfoMap = array();
     foreach ($userInfoArray as $userInfo) {
         $userIdToUserInfoMap[$userInfo['user_id']] = $userInfo;
     }
     // 转换显示
     foreach ($accountLogArray as &$accountLogItem) {
         $accountLogItem['user_name'] = @$userIdToUserInfoMap[$accountLogItem['user_id']]['user_name'];
         $accountLogItem['change_type_desc'] = AccountLogService::$changeTypeDesc[$accountLogItem['change_type']];
     }
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('accountLogArray', $accountLogArray);
     out_display:
     $smarty->display('account_user_money.tpl');
 }