request->isAjax()) { $get = $this->request->get(); return JsonServer::success('', GoodsLogic::lists($get)); } $cate_list = MallCategoryLogic::categoryTreeeTree(); $statistics = GoodsLogic::statistics(); $column_list = ColumnLogic::getList(); return view('', [ 'statistics' => $statistics, 'cate_list' => $cate_list, 'column_list' => $column_list, 'goods_type' => GoodsEnum::getTypeDesc() ]); } /** * 查看 */ public function view() { $goods_id = $this->request->get('goods_id'); $shop_id = GoodsModel::where('id', $goods_id)->value('shop_id'); return view('goods/goods/add', [ 'category_lists' => json_encode(MallCategoryLogic::getAllTree(), JSON_UNESCAPED_UNICODE), 'shop_category_lists' => json_encode(ShopCategoryLogic::listAll($shop_id), JSON_UNESCAPED_UNICODE), 'brand_lists' => json_encode(GoodsBrand::getNameColumn(), JSON_UNESCAPED_UNICODE), 'supplier_lists' => json_encode(Supplier::getNameColumn(), JSON_UNESCAPED_UNICODE), 'unit_lists' => json_encode(GoodsUnit::getNameColumn(), JSON_UNESCAPED_UNICODE), 'freight_lists' => json_encode(Freight::getNameColumn($shop_id), JSON_UNESCAPED_UNICODE), 'info' => json_encode(GoodsLogic::info($goods_id), JSON_UNESCAPED_UNICODE) ]); } /** * 违规重审 */ public function reAudit() { if ($this->request->isAjax()) { try { $params = $this->request->post(); validate(GoodsValidate::class)->scene('re_audit')->check($params); } catch (ValidateException $e) { return JsonServer::error($e->getMessage()); } $result = GoodsLogic::reAudit($params); if ($result) { return JsonServer::success('保存成功'); } return JsonServer::error('保存失败'); } $goods_id = $this->request->get('goods_id', '', 'intval'); return view('re_audit', [ 'goods_id' => $goods_id ]); } /** * 商品设置 */ public function setInfo() { if ($this->request->isAjax()) { try { $params = $this->request->post(); validate(GoodsValidate::class)->scene('set_info')->check($params); } catch (ValidateException $e) { return JsonServer::error($e->getMessage()); } $result = GoodsLogic::setInfo($params); if ($result) { return JsonServer::success('设置成功'); } return JsonServer::error('设置失败'); } $goods_id = $this->request->get('goods_id', '', 'intval'); $goods_detail = GoodsModel::find($goods_id); $goods_detail['column_ids'] = $goods_detail['column_ids'] ? explode(',', $goods_detail['column_ids']) : []; $goods_detail['column_ids'] = json_encode($goods_detail['column_ids']); $column_list = ColumnLogic::getList(); return view('set_info', [ 'goods_id' => $goods_id, 'column_list' => json_encode($column_list), 'goods_detail' => $goods_detail ]); } /** * 审核 */ public function audit() { if ($this->request->isAjax()) { try { $params = $this->request->post(); validate(GoodsValidate::class)->scene('audit')->check($params); } catch (ValidateException $e) { return JsonServer::error($e->getMessage()); } $result = GoodsLogic::audit($params); if ($result) { return JsonServer::success('操作完成'); } return JsonServer::error('操作失败'); } $goods_id = $this->request->get('goods_id', '', 'intval'); return view('audit', [ 'goods_id' => $goods_id ]); } public function totalCount() { if ($this->request->isAjax()) { return JsonServer::success('获取成功', GoodsLogic::statistics()); } } public function export() { // ini_set("max_execution_time", 0); set_time_limit(0); ini_set('memory_limit', '1024M'); if ($this->request->isAjax()) { try { $shopName = input('post.shop_name', ''); $goodsName = input('post.goods_name', ''); $goodsType = input('post.goods_type', ''); $platformCateId = input('post.platform_cate_id', 0); // $goodsColumnId = input('post.goods_column_id', 0); $writer = new \XLSXWriter(); // $fields = Db::query('SHOW COLUMNS FROM ls_goods'); // $fields = array_column($fields, 'Field'); $fieldsArr = []; // foreach ($fields as $field) { // $fieldsArr[$field] = 'string'; // } $fieldsArr = [ 'ID','商品名称','商品规格' ]; $writer->writeSheetHeader('Sheet1', $fieldsArr); $where = []; if(!empty($shopName) || $shopName == '0') { $where[] = ['s.name','like','%'.$shopName.'%']; } if(!empty($goodsName) || $goodsName == '0') { $where[] = ['g.name','like','%'.$goodsName.'%']; } if(!empty($platformCateId)) { $where[] = ['g.first_cate_id|g.second_cate_id|g.third_cate_id','=', $platformCateId]; } if(!empty($goodsType) || $goodsType == '0') { $where[] = ['g.type','=', $goodsType]; } $total = GoodsModel::alias('g') ->leftJoin('shop s', 'g.shop_id = s.id') ->leftJoin('goods_item gi', 'gi.goods_id = g.id') ->where($where)->count(); if ($total > 10000) { return JsonServer::error('导出条数不能超过1W条'); } if ($total == 0) { return JsonServer::error('没有符合条件的数据'); } $fieldRaw = "g.id as id, g.name as name, GROUP_CONCAT(CONCAT('规格名称:',gi.spec_value_str,' 规格ID:',gi.spec_value_ids,' 价格:',gi.price, ' 库存:',gi.stock) ORDER BY gi.spec_value_str SEPARATOR ';') AS sku_list"; $query = GoodsModel::alias('g') ->leftJoin('shop s', 'g.shop_id = s.id') ->leftJoin('goods_item gi', 'gi.goods_id = g.id'); $cursor = $query ->where($where) ->limit(100) ->fieldRaw($fieldRaw) ->group('g.id') // ->select(); // ->field('g.*,s.name as shop_name') ->cursor(); foreach($cursor as $k => $item) { $row = []; // foreach ($fields as $field) { // $row[] = $item[$field] ?? ''; // } $row[] = $item['id']; $row[] = $item['name']; $row[] = $item['sku_list']; var_dump($row); // $writer->writeSheetRow('Sheet1', $row); } $writer->writeToFile('goods.xlsx'); } catch (\Exception $e) { return JsonServer::error($e->getMessage()); } } return JsonServer::success('导出完成 本次使用内存#'.floor((memory_get_peak_usage())/1024/1024)."MB", input('post.')); } }