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 post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_edit_edit_get');
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     $goods_id = $validator->required('商品ID不能为空')->validate('goods_id');
     $action = $validator->required('操作不能为空')->validate('action');
     //任务时间
     $taskTimeStr = $validator->required('必须选择时间')->validate('task_time');
     $taskTime = Time::gmStrToTime($taskTimeStr) ?: null;
     if (!$this->validate($validator)) {
         goto out;
     }
     $authAdminUser = AuthHelper::getAuthUser();
     // 添加 Cron 任务
     CronHelper::addCronTask($authAdminUser['user_name'] . '[' . $authAdminUser['user_id'] . ']', GoodsCronTask::$task_name, @GoodsCronTask::$actionDesc[$action] . '[' . $goods_id . ']', '\\Core\\Cron\\GoodsCronTask', $taskTime, $f3->get('POST'), $goods_id);
     $this->addFlashMessage('成功添加定时任务');
     out:
     RouteHelper::reRoute($this, RouteHelper::makeUrl('/Goods/Edit/Cron', array('goods_id' => $goods_id), true));
 }
Example #4
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 #5
0
 /**
  * 在这里做数据库查询
  *
  * @param $f3
  *
  * @return array
  */
 private function doQuery($f3)
 {
     // 返回结果
     $orderGoodsArray = array();
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     //订单表单查询
     $searchFormQuery = array();
     //下单时间
     $addTimeStartStr = $validator->validate('add_time_start');
     $addTimeStart = Time::gmStrToTime($addTimeStartStr) ?: null;
     $addTimeEndStr = $validator->validate('add_time_end');
     $addTimeEnd = Time::gmStrToTime($addTimeEndStr) ?: null;
     $searchFormQuery['oi.add_time'] = array($addTimeStart, $addTimeEnd);
     //付款时间
     $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 (!($addTimeStart || $addTimeEnd || $payTimeStart || $payTimeEnd)) {
         $this->addFlashMessage('必须最少选择一个时间');
         goto out;
     }
     $searchFormQuery['orf.login_type'] = array('=', $validator->validate('login_type'));
     $searchFormQuery['oi.system_id'] = array('=', $validator->validate('system_id'));
     // 构造查询条件
     $searchParamArray = array();
     $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);
     }
     if (!$this->validate($validator)) {
         goto out;
     }
     // 表单查询
     $searchParamArray = array_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     $orderGoodsArray = SearchHelper::search(SearchHelper::Module_OrderGoodsOrderInfoOrderRefer, 'og.rec_id, og.order_id, og.goods_id, og.order_goods_status, og.goods_number, og.goods_price, og.shipping_fee' . ', og.shipping_fee, og.suppliers_price, og.suppliers_shipping_fee, og.discount, og.extra_discount, og.refund' . ',og.extra_refund, og.refund_note, og.extra_refund_note, og.suppliers_refund, og.cps_rate, og.cps_fix_fee' . ',oi.pay_status, oi.surplus, oi.bonus, oi.pay_time, oi.add_time, orf.utm_source, orf.utm_medium, orf.login_type', $searchParamArray, array(array('og.order_id', 'asc'), array('og.rec_id', 'asc')), 0, $f3->get('sysConfig[max_query_record_count]'));
     // 每个订单就只有一个 surplus, bonus ,我们清除掉多余的值
     $lastOrderId = 0;
     foreach ($orderGoodsArray as &$orderGoodsItem) {
         if ($lastOrderId != $orderGoodsItem['order_id']) {
             $lastOrderId = $orderGoodsItem['order_id'];
             // 记住操作的订单 id
             continue;
         }
         // 同一个订单的 order_goods ,清除多余的 surplus, bonus
         $orderGoodsItem['surplus'] = 0;
         $orderGoodsItem['bonus'] = 0;
     }
     unset($orderGoodsItem);
     out:
     // 这里返回结果
     return $orderGoodsArray;
 }
Example #6
0
 /**
  * 下载 拣货单
  *
  * @param $f3
  * @param $validator
  */
 public function downloadJianHuo($f3, $validator)
 {
     $outputColumnArray = array('warehouse' => '仓库', 'shelf' => '货架', 'goods_sn' => '货号', 'goods_name' => '商品名', 'goods_attr' => '属性规格', 'goods_number' => '数量', 'suppliers_price' => '供货单价', 'total_suppliers_price' => '供货总价', 'total_suppliers_shipping_fee' => '供货快递');
     $outputColumnMoneyArray = array('suppliers_price', 'total_suppliers_price', 'total_suppliers_shipping_fee');
     //表单查询
     $searchFormQuery = array();
     $searchFormQuery['og.goods_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('goods_id');
     //付款时间
     $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);
     // 快递信息
     $expressType = $validator->digits()->min(0)->filter('ValidatorIntValue')->validate('expressType');
     switch ($expressType) {
         case 1:
             $searchFormQuery['og.shipping_id'] = 0;
             break;
         case 2:
             $searchFormQuery['og.shipping_id'] = array('>', 0);
             break;
         default:
             break;
     }
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     if (Utils::isBlank($searchFormQuery['og.goods_id']) && Utils::isBlank($payTimeStart)) {
         $this->addFlashMessage('查询参数非法');
         goto out_fail;
     }
     // 构造查询条件
     $authSupplierUser = AuthHelper::getAuthUser();
     $searchFormQuery['og.suppliers_id'] = $authSupplierUser['suppliers_id'];
     $searchParamArray = array();
     $searchParamArray[] = array('oi.order_id = og.order_id');
     //供货商,只查看有效订单,其它订单不显示
     $searchParamArray[] = array('og.order_goods_status > 0');
     // 表单查询
     $searchParamArray = array_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     $orderGoodsArray = SearchHelper::search(SearchHelper::Module_OrderGoodsOrderInfo, 'og.warehouse, og.shelf, og.goods_id, og.goods_sn, og.goods_attr, sum(og.goods_number) as goods_number, sum(og.suppliers_price * og.goods_number) as total_suppliers_price, sum(og.suppliers_shipping_fee) as total_suppliers_shipping_fee', $searchParamArray, array(array('og.warehouse', 'asc'), array('og.shelf', 'asc')), 0, $f3->get('sysConfig[max_query_record_count]'), 'og.warehouse, og.shelf, og.goods_id, og.goods_sn, og.goods_attr');
     // 没有数据,退出
     if (empty($orderGoodsArray)) {
         goto out;
     }
     // 查询订单对应的商品
     $goodsIdArray = array();
     foreach ($orderGoodsArray as $orderGoodsItem) {
         $goodsIdArray[] = $orderGoodsItem['goods_id'];
     }
     $goodsIdArray = array_unique($goodsIdArray);
     $goodsArray = SearchHelper::search(SearchHelper::Module_Goods, 'goods_id, goods_name_short, suppliers_price', array(array(QueryBuilder::buildInCondition('goods_id', $goodsIdArray, \PDO::PARAM_INT))), null, 0, $f3->get('sysConfig[max_query_record_count]'));
     $goodsIdToGoodsMap = array();
     foreach ($goodsArray as $goodsItem) {
         $goodsIdToGoodsMap[$goodsItem['goods_id']] = $goodsItem;
     }
     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();
     // 格式化数据
     $rowIndex = 1;
     $lastWarehouseShelf = null;
     $orderGoodsArraySize = count($orderGoodsArray);
     // 输出头部信息
     $colIndex = 1;
     foreach ($outputColumnArray as $value) {
         $activeSheet->setCellValueByColumnAndRow($colIndex, $rowIndex, $value);
         $activeSheet->getStyleByColumnAndRow($colIndex, $rowIndex)->getFont()->setBold(true);
         $activeSheet->getStyleByColumnAndRow($colIndex, $rowIndex)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
         $activeSheet->getStyleByColumnAndRow($colIndex, $rowIndex)->getFill()->getStartColor()->setARGB('FFB0B0B0');
         $colIndex++;
     }
     $rowIndex++;
     // 换行
     for ($orderGoodsIndex = 0; $orderGoodsIndex < $orderGoodsArraySize; $orderGoodsIndex++) {
         // 取得这行数据
         $orderGoodsItem = $orderGoodsArray[$orderGoodsIndex];
         // 填入商品数据
         $orderGoodsItem['goods_name'] = $goodsIdToGoodsMap[$orderGoodsItem['goods_id']]['goods_name_short'];
         $orderGoodsItem['suppliers_price'] = $goodsIdToGoodsMap[$orderGoodsItem['goods_id']]['suppliers_price'];
         if ($lastWarehouseShelf != $orderGoodsItem['warehouse'] . '$' . $orderGoodsItem['shelf']) {
             $lastWarehouseShelf = $orderGoodsItem['warehouse'] . '$' . $orderGoodsItem['shelf'];
             // 不同的取货地点,需要特殊处理
             $rowIndex += 2;
             // 跳过 2 行
         }
         // 输出一行数据
         $colIndex = 1;
         foreach ($outputColumnArray as $key => $value) {
             $cellValue = isset($orderGoodsItem[$key]) ? $orderGoodsItem[$key] : '';
             if (!in_array($key, $outputColumnMoneyArray)) {
                 $activeSheet->getCellByColumnAndRow($colIndex, $rowIndex)->setDataType(\PHPExcel_Cell_DataType::TYPE_STRING);
             } else {
                 // 转换价格显示
                 $cellValue = Money::toSmartyDisplay($cellValue);
             }
             $activeSheet->setCellValueByColumnAndRow($colIndex, $rowIndex, $cellValue);
             $colIndex++;
         }
         $rowIndex++;
         // 换行
     }
     $fileName = '拣货单_' . $searchFormQuery['og.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:
     echo "没有数据";
     die;
     out_fail:
     // 失败,打印错误消息
     $flashMessageArray = $this->flashMessageArray;
     foreach ($flashMessageArray as $flashMessage) {
         echo $flashMessage . '<br />';
     }
 }
Example #7
0
 public function Search($f3)
 {
     /**
      * 我们使用搜索模块做搜索操作
      */
     $searchFieldSelector = 'og.*, oi.system_id, oi.consignee';
     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');
     $order_goods_status = $validator->min(0)->filter('ValidatorIntValue')->validate('order_goods_status');
     if (null == $order_goods_status) {
         // 选择 请求退款、退款中、退款完成 状态的订单
         $searchFormQuery['og.order_goods_status'] = array('>', OrderGoodsService::OGS_PAY);
     } else {
         $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');
     //退款时间
     $refundTimeStartStr = $validator->validate('refund_time_start');
     $refundTimeStart = Time::gmStrToTime($refundTimeStartStr) ?: null;
     $refundTimeEndStr = $validator->validate('refund_time_end');
     $refundTimeEnd = Time::gmStrToTime($refundTimeEndStr) ?: null;
     $searchFormQuery['og.refund_time'] = array($refundTimeStart, $refundTimeEnd);
     //完成时间
     $refundFinishTimeStartStr = $validator->validate('refund_finish_time_start');
     $refundFinishTimeStart = Time::gmStrToTime($refundFinishTimeStartStr) ?: null;
     $refundFinishTimeEndStr = $validator->validate('refund_finish_time_end');
     $refundFinishTimeEnd = Time::gmStrToTime($refundFinishTimeEndStr) ?: null;
     $searchFormQuery['og.refund_finish_time'] = array($refundFinishTimeStart, $refundFinishTimeEnd);
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 构造查询条件
     $authSupplierUser = AuthHelper::getAuthUser();
     // 供货商只能查看自己商品对应的订单
     $searchFormQuery['og.suppliers_id'] = intval($authSupplierUser['suppliers_id']);
     // 构造查询条件
     $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
     }
     // 表单查询
     $searchParamArray = array_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     // 使用哪个搜索模块
     $searchModule = SearchHelper::Module_OrderGoodsOrderInfo;
     // 查询订单列表
     $totalCount = SearchHelper::count($searchModule, $searchParamArray);
     if ($totalCount <= 0) {
         // 没订单,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Order/Refund/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);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('orderGoodsArray', $orderGoodsArray);
     out_display:
     $smarty->display('order_refund_search.tpl');
 }
Example #8
0
 public function ListGoods($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_order_statistics_listgoods');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     //订单表单查询
     $searchFormQuery = array();
     $systemId = $validator->validate('system_id');
     $searchFormQuery['oi.system_id'] = array('=', $systemId);
     //下单时间
     $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);
     if (empty($createTimeStart) || empty($createTimeEnd)) {
         goto out_display;
     }
     // 查询订单列表,最多查询 10000 条记录,防止拖死数据库
     $orderGoodsArray = SearchHelper::search(empty($systemId) ? SearchHelper::Module_OrderGoods : SearchHelper::Module_OrderGoodsOrderInfo, 'og.rec_id, og.order_goods_status, og.goods_id, og.goods_admin_user_id, og.goods_admin_user_name, og.goods_name, og.goods_number', QueryBuilder::buildSearchParamArray($searchFormQuery), array(array('og.rec_id', 'asc')), 0, $f3->get('sysConfig[max_query_record_count]'));
     $goodsStatisticsArray = array();
     // 做商品统计
     foreach ($orderGoodsArray as $orderGoodsItem) {
         if (!isset($goodsStatisticsArray[$orderGoodsItem['goods_id']])) {
             $goodsStatisticsArray[$orderGoodsItem['goods_id']] = array();
             //商品信息
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['goods_id'] = $orderGoodsItem['goods_id'];
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['goods_name'] = $orderGoodsItem['goods_name'];
             // 商品对应的编辑信息
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['goods_admin_user_id'] = $orderGoodsItem['goods_admin_user_id'];
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['goods_admin_user_name'] = $orderGoodsItem['goods_admin_user_name'];
             //订单信息
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['total_order_number'] = 0;
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['unpay_order_number'] = 0;
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['pay_order_number'] = 0;
             //售出商品信息
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['total_goods_number'] = 0;
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['unpay_goods_number'] = 0;
             $goodsStatisticsArray[$orderGoodsItem['goods_id']]['pay_goods_number'] = 0;
         }
         $goodsStatisticsArray[$orderGoodsItem['goods_id']]['total_order_number'] += 1;
         $goodsStatisticsArray[$orderGoodsItem['goods_id']]['total_goods_number'] += $orderGoodsItem['goods_number'];
         switch ($orderGoodsItem['order_goods_status']) {
             case OrderGoodsService::OGS_UNPAY:
                 $goodsStatisticsArray[$orderGoodsItem['goods_id']]['unpay_order_number'] += 1;
                 $goodsStatisticsArray[$orderGoodsItem['goods_id']]['unpay_goods_number'] += $orderGoodsItem['goods_number'];
                 break;
             case OrderGoodsService::OGS_PAY:
                 $goodsStatisticsArray[$orderGoodsItem['goods_id']]['pay_order_number'] += 1;
                 $goodsStatisticsArray[$orderGoodsItem['goods_id']]['pay_goods_number'] += $orderGoodsItem['goods_number'];
                 break;
             default:
                 // 退款订单,不处理
                 break;
         }
     }
     // 按照订单数量排序
     $goodsIdTotalOrderNumberArray = array();
     foreach ($goodsStatisticsArray as $goodsStatisticsItem) {
         $goodsIdTotalOrderNumberArray[] = str_pad($goodsStatisticsItem['total_order_number'], 7, '0', STR_PAD_LEFT) . '-' . str_pad($goodsStatisticsItem['goods_id'], 7, '0', STR_PAD_LEFT);
     }
     // 排序
     rsort($goodsIdTotalOrderNumberArray);
     $sortGoodsStatisticsArray = array();
     foreach ($goodsIdTotalOrderNumberArray as $item) {
         $tmpArray = explode('-', $item);
         $sortGoodsStatisticsArray[] = $goodsStatisticsArray[intval($tmpArray[1])];
     }
     // 给模板赋值
     $smarty->assign('sortGoodsStatisticsArray', $sortGoodsStatisticsArray);
     out_display:
     $smarty->display('order_statistics_listgoods.tpl');
 }
Example #9
0
 public function get($f3)
 {
     global $smarty;
     if (!$f3->get('GET')) {
         // 没有任何查询,直接显示空页面
         goto out;
     }
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     //订单表单查询
     $searchFormQuery = array();
     //下单时间
     $addTimeStartStr = $validator->validate('add_time_start');
     $addTimeStart = Time::gmStrToTime($addTimeStartStr) ?: null;
     $addTimeEndStr = $validator->validate('add_time_end');
     $addTimeEnd = Time::gmStrToTime($addTimeEndStr) ?: null;
     $searchFormQuery['oi.add_time'] = array($addTimeStart, $addTimeEnd);
     //付款时间
     $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 (!($addTimeStart || $addTimeEnd || $payTimeStart || $payTimeEnd)) {
         $this->addFlashMessage('必须最少选择一个时间');
         goto out;
     }
     $searchFormQuery['oi.kefu_user_id'] = $validator->required('必须选择一个客服')->digits()->filter('ValidatorIntValue')->validate('kefu_user_id');
     if (!$this->validate($validator)) {
         goto out;
     }
     // 权限检查
     $authAdminUser = AuthHelper::getAuthUser();
     // 客服可以查看自己的页面
     if ($searchFormQuery['oi.kefu_user_id'] !== $authAdminUser['user_id']) {
         // 用户查看的不是自己的业绩,需要特别的权限
         if (!$this->hasPrivilege('manage_stat_kaohe_kefu')) {
             $this->addFlashMessage('你没有权限查看别人的业绩统计');
             goto out;
         }
     }
     // 统计订单金额总和
     $orderGoodsStat = SearchHelper::search(SearchHelper::Module_OrderGoodsOrderInfo, 'og.order_goods_status' . ',count(1) as total_order_goods_count' . ',sum(og.goods_price) as total_goods_price' . ',sum(og.shipping_fee) as total_shipping_fee' . ',sum(og.discount) as total_discount' . ',sum(og.extra_discount) as total_extra_discount' . ',sum(og.refund) as total_refund' . ',sum(og.extra_refund) as total_extra_refund', QueryBuilder::buildSearchParamArray($searchFormQuery), array(array('og.order_goods_status', 'asc')), 0, $f3->get('sysConfig[max_query_record_count]'), 'og.order_goods_status');
     // 订单状态显示
     foreach ($orderGoodsStat as &$orderGoodsStatItem) {
         $orderGoodsStatItem['order_goods_status_desc'] = OrderGoodsService::$orderGoodsStatusDesc[$orderGoodsStatItem['order_goods_status']];
     }
     unset($orderGoodsStatItem);
     // 统计总结果
     $orderGoodsStatTotal = array();
     $orderGoodsStatTotal['total_order_goods_count'] = 0;
     $orderGoodsStatTotal['total_goods_price'] = 0;
     $orderGoodsStatTotal['total_shipping_fee'] = 0;
     $orderGoodsStatTotal['total_discount'] = 0;
     $orderGoodsStatTotal['total_extra_discount'] = 0;
     $orderGoodsStatTotal['total_refund'] = 0;
     $orderGoodsStatTotal['total_extra_refund'] = 0;
     foreach ($orderGoodsStat as $orderGoodsStatItem) {
         // 未付款的订单不计入统计
         if ($orderGoodsStatItem['order_goods_status'] < OrderGoodsService::OGS_PAY) {
             continue;
         }
         // 统计计算
         $orderGoodsStatTotal['total_order_goods_count'] += $orderGoodsStatItem['total_order_goods_count'];
         $orderGoodsStatTotal['total_goods_price'] += $orderGoodsStatItem['total_goods_price'];
         $orderGoodsStatTotal['total_shipping_fee'] += $orderGoodsStatItem['total_shipping_fee'];
         $orderGoodsStatTotal['total_discount'] += $orderGoodsStatItem['total_discount'];
         $orderGoodsStatTotal['total_extra_discount'] += $orderGoodsStatItem['total_extra_discount'];
         $orderGoodsStatTotal['total_refund'] += $orderGoodsStatItem['total_refund'];
         $orderGoodsStatTotal['total_extra_refund'] += $orderGoodsStatItem['total_extra_refund'];
     }
     // 给 smarty 赋值
     $smarty->assign('orderGoodsStat', $orderGoodsStat);
     $smarty->assign('orderGoodsStatTotal', $orderGoodsStatTotal);
     out:
     $smarty->display('stat_kaohe_kefu.tpl');
 }
Example #10
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 #11
0
 public function Edit($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_comment_edit');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $comment_id = $validator->digits()->min(1)->validate('comment_id');
     if (!$comment_id) {
         $comment_id = 0;
     }
     $goodsCommentService = new GoodsCommentService();
     $goodsComment = $goodsCommentService->loadGoodsCommentById($comment_id);
     if (!$f3->get('POST')) {
         // 没有 post ,只是普通的显示
         goto out_display;
     }
     // 新建商品评论
     if (0 == $comment_id) {
         $this->requirePrivilege('manage_goods_comment_create');
         $goodsComment->create_time = Time::gmTime();
         $goodsComment->comment_time = Time::gmTime();
     }
     unset($validator);
     $validator = new Validator($f3->get('POST'));
     $goodsComment->goods_id = $validator->digits()->filter('ValidatorIntValue')->validate('goods_id');
     $goodsComment->goods_price = Money::toStorage($validator->validate('goods_price'));
     $goodsComment->goods_number = $validator->required()->digits()->filter('ValidatorIntValue')->validate('goods_number');
     $goodsComment->goods_attr = $validator->validate('goods_attr');
     $goodsComment->is_show = $validator->digits()->filter('ValidatorIntValue')->validate('is_show');
     $goodsComment->user_name = $validator->required()->validate('user_name');
     $goodsComment->comment_time = Time::gmStrToTime($validator->required()->validate('comment_time'));
     $goodsComment->comment = $validator->validate('comment');
     $goodsComment->comment_rate = $validator->digits()->filter('ValidatorIntValue')->validate('comment_rate');
     $goodsComment->reply = $validator->validate('reply');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     if (!empty($goodsComment->reply)) {
         $goodsComment->reply_time = Time::gmTime();
     }
     // 更新管理员信息
     $authAdminUser = AuthHelper::getAuthUser();
     $goodsComment->admin_user_id = $authAdminUser['user_id'];
     $goodsComment->admin_user_name = $authAdminUser['user_name'];
     $goodsComment->save();
     if (0 == $comment_id) {
         $this->addFlashMessage('新建商品评论成功');
     } else {
         $this->addFlashMessage('更新商品评论成功');
     }
     out_display:
     //给 smarty 模板赋值
     $smarty->assign($goodsComment->toArray());
     $smarty->display('goods_comment_edit.tpl');
     return;
     out_fail:
     // 失败从这里退出
     RouteHelper::reRoute($this, '/Goods/Comment/ListComment');
 }
Example #12
0
 public function Search($f3)
 {
     /**
      * 我们使用搜索模块做搜索操作
      */
     $searchFieldSelector = 'og.*, oi.pay_time, oi.system_id';
     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.order_goods_status'] = $validator->min(1)->filter('ValidatorIntValue')->validate('order_goods_status');
     $searchFormQuery['og.goods_sn'] = $validator->validate('goods_sn');
     $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');
     //下单时间
     $addTimeStartStr = $validator->validate('add_time_start');
     $addTimeStart = Time::gmStrToTime($addTimeStartStr) ?: null;
     $addTimeEndStr = $validator->validate('add_time_end');
     $addTimeEnd = Time::gmStrToTime($addTimeEndStr) ?: null;
     $searchFormQuery['oi.add_time'] = array($addTimeStart, $addTimeEnd);
     //付款时间
     $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;
     }
     // 构造查询条件
     $authSupplierUser = AuthHelper::getAuthUser();
     // 供货商只能查看自己商品对应的订单
     $searchFormQuery['og.suppliers_id'] = intval($authSupplierUser['suppliers_id']);
     $searchParamArray = array();
     // 供货商只能查看已经付款的订单
     $searchParamArray[] = array('og.order_goods_status > 0');
     if (1 == $shippingStatus) {
         // 1 未发货
         $searchParamArray[] = array('og.shipping_id = 0');
     } elseif (2 == $shippingStatus) {
         // 2 已发货
         $searchParamArray[] = array('og.shipping_id <> 0');
     } else {
         // do nothing
     }
     // 表单查询
     $searchParamArray = array_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     // 查询订单列表
     $totalCount = SearchHelper::count(SearchHelper::Module_OrderGoodsOrderInfo, $searchParamArray);
     if ($totalCount <= 0) {
         // 没订单,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Order/Goods/Search');
     }
     // 订单列表
     $orderGoodsArray = SearchHelper::search(SearchHelper::Module_OrderGoodsOrderInfo, $searchFieldSelector, $searchParamArray, array(array('oi.pay_time', 'desc')), $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('order_goods_search.tpl');
 }
Example #13
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 #14
0
 public function post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_edit_edit_post');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $goods_id = $validator->required('商品ID不能为空')->digits()->min(1)->validate('goods_id');
     if (!$this->validate($validator)) {
         goto out_fail_list_goods;
     }
     unset($validator);
     // 用户提交的商品信息做验证
     $goodsTeam = $f3->get('POST.goods_team');
     if (empty($goodsTeam)) {
         goto out_fail_validate;
     }
     $validator = new Validator($goodsTeam);
     $goodsTeamInfo = array();
     $goodsTeamInfo['goods_id'] = $goods_id;
     //表单数据验证、过滤
     $goodsTeamInfo['team_enable'] = $validator->digits()->validate('team_enable');
     $goodsTeamInfo['team_title'] = $validator->required('团购标题不能为空')->validate('team_title');
     $goodsTeamInfo['team_seo_keyword'] = $validator->validate('team_seo_keyword');
     $goodsTeamInfo['team_seo_description'] = $validator->validate('team_seo_description');
     $goodsTeamInfo['team_price'] = Money::toStorage($validator->validate('team_price'));
     $goodsTeamInfo['team_sort_order'] = $validator->filter('ValidatorIntValue')->validate('team_sort_order');
     $goodsTeamInfo['team_per_number'] = $validator->filter('ValidatorIntValue')->validate('team_per_number');
     $goodsTeamInfo['team_min_number'] = $validator->filter('ValidatorIntValue')->validate('team_min_number');
     $goodsTeamInfo['team_max_number'] = $validator->filter('ValidatorIntValue')->validate('team_max_number');
     $goodsTeamInfo['team_pre_number'] = $validator->filter('ValidatorIntValue')->validate('team_pre_number');
     //单独解析时间
     $team_begin_time_str = $validator->validate('team_begin_time_str');
     $teamBeginTime = Time::gmStrToTime($team_begin_time_str);
     if ($teamBeginTime <= 0) {
         $this->addFlashMessage('团购开始时间无效');
         goto out_fail_validate;
     }
     $goodsTeamInfo['team_begin_time'] = $teamBeginTime;
     $team_end_time_str = $validator->validate('team_end_time_str');
     $teamEndTime = Time::gmStrToTime($team_end_time_str);
     if ($teamEndTime <= 0) {
         $this->addFlashMessage('团购结束时间无效');
         goto out_fail_validate;
     }
     $goodsTeamInfo['team_end_time'] = $teamEndTime;
     //参数验证
     if (!$this->validate($validator)) {
         goto out_fail_validate;
     }
     // 写入到数据库
     unset($goodsTeam);
     $goodsBasicService = new GoodsBasicService();
     $goodsTeam = $goodsBasicService->loadGoodsTeamByGoodsId($goods_id);
     $goodsTeam->copyFrom($goodsTeamInfo);
     $goodsTeam->save();
     // 成功,显示商品详情
     $this->addFlashMessage('商品团购信息保存成功');
     //清除缓存,确保商品显示正确
     ClearHelper::clearGoodsCacheById($goods_id);
     RouteHelper::reRoute($this, RouteHelper::makeUrl('/Goods/Edit/Team', array('goods_id' => $goods_id), true));
     return;
     // 参数验证失败
     out_fail_validate:
     $smarty->display('goods_edit_team.tpl');
     return;
     out_fail_list_goods:
     RouteHelper::reRoute($this, '/Goods/Search');
 }
Example #15
0
 public function Search($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_order_order_search');
     /**
      * 我们使用搜索模块做搜索操作
      */
     $searchFieldSelector = 'oi.order_id, oi.order_sn, oi.add_time, oi.confirm_time, oi.user_id, oi.order_status, oi.pay_status' . ', oi.goods_amount, oi.shipping_fee, oi.discount, 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;
     // 构造查询条件
     $searchParamArray = array();
     //表单查询
     $searchFormQuery = array();
     $searchFormQuery['oi.order_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('order_id');
     $searchFormQuery['oi.order_sn'] = $validator->validate('order_sn');
     $searchFormQuery['oi.pay_no'] = $validator->validate('pay_no');
     $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['oi.system_id'] = array('=', $validator->validate('system_id'));
     $searchFormQuery['oi.kefu_user_id'] = $validator->filter('ValidatorIntValue')->validate('kefu_user_id');
     $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);
     }
     //下单时间
     $addTimeStartStr = $validator->validate('add_time_start');
     $addTimeStart = Time::gmStrToTime($addTimeStartStr) ?: null;
     $addTimeEndStr = $validator->validate('add_time_end');
     $addTimeEnd = Time::gmStrToTime($addTimeEndStr) ?: null;
     $searchFormQuery['oi.add_time'] = array($addTimeStart, $addTimeEnd);
     //付款时间
     $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_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     // 使用哪个搜索模块
     $searchModule = SearchHelper::Module_OrderInfo;
     if (!empty($utmSource) || !empty($utmMedium)) {
         $searchModule = SearchHelper::Module_OrderInfoOrderRefer;
     }
     $totalCount = SearchHelper::count($searchModule, $searchParamArray);
     if ($totalCount <= 0) {
         // 没订单,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Order/Order/Search');
     }
     // 订单列表
     $orderInfoArray = SearchHelper::search($searchModule, $searchFieldSelector, $searchParamArray, array(array('oi.order_id', 'desc')), $pageNo * $pageSize, $pageSize);
     // 订单的支付状态显示
     foreach ($orderInfoArray as &$orderInfoItem) {
         $orderInfoItem['order_status_desc'] = OrderBasicService::$orderStatusDesc[$orderInfoItem['order_status']];
         $orderInfoItem['pay_status_desc'] = OrderBasicService::$payStatusDesc[$orderInfoItem['pay_status']];
     }
     // 前面用了引用,这里一定要清除,防止影响后面的数据
     unset($orderInfoItem);
     // 取得用户 id 列表
     $userIdArray = array();
     foreach ($orderInfoArray as $orderInfoItem) {
         $userIdArray[] = $orderInfoItem['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 ($orderInfoArray as &$orderInfoItem) {
         if (isset($userIdToUserArray[$orderInfoItem['user_id']])) {
             // 很老的订单,用户可能被删除了
             $orderInfoItem['user_name'] = $userIdToUserArray[$orderInfoItem['user_id']]['user_name'];
             $orderInfoItem['email'] = $userIdToUserArray[$orderInfoItem['user_id']]['email'];
         }
     }
     // 前面用了引用,这里一定要清除,防止影响后面的数据
     unset($orderInfoItem);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('orderInfoArray', $orderInfoArray);
     out_display:
     $smarty->display('order_order_search.tpl');
 }
Example #16
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 #17
0
 /**
  * 更新结算详情记录
  *
  * @param $f3
  */
 public function Update($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_order_settle_update');
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $settle_id = $validator->required()->digits()->min(1)->validate('settle_id');
     if (!$this->validate($validator)) {
         $this->addFlashMessage('结算ID非法');
         goto out;
     }
     // 加载 order_settle 记录
     $orderSettleService = new OrderSettleService();
     $orderSettle = $orderSettleService->loadOrderSettleBySettleId($settle_id);
     if ($orderSettle->isEmpty()) {
         $this->addFlashMessage('结算ID非法');
         goto out;
     }
     // 表单验证
     $validator = new Validator($f3->get('POST[orderSettle]'));
     $orderSettle->pay_type = $validator->validate('pay_type');
     $orderSettle->pay_no = $validator->validate('pay_no');
     $orderSettle->pay_time = Time::gmStrToTime($validator->validate('pay_time'));
     $orderSettle->memo = $validator->validate('memo');
     $orderSettle->save();
     $this->addFlashMessage('结算记录设置成功');
     out:
     RouteHelper::reRoute($this, RouteHelper::getRefer(), false);
 }