/** * 列出结算列表 * * @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'); }
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'); }
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)); }
/** * 管理员操作日志 * * @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'); }
/** * 在这里做数据库查询 * * @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; }
/** * 下载 拣货单 * * @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 />'; } }
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'); }
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'); }
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'); }
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()); }
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'); }
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'); }
/** * * 批量下载订单 * */ 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 />'; } }
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'); }
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'); }
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'); }
/** * 更新结算详情记录 * * @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); }