ajax()){ $keyword = request()->keyword; if($keyword){ $category_data = Categorys::searchCategory($keyword); // return $this->successJson('', $category_data); return $this->successJson('', array('data' => $category_data ,'thirdShow' => $thirdShow)); } $category_data = Categorys::getCategoryData(); return $this->successJson('', array('data' => $category_data ,'thirdShow' => $thirdShow)); } return view('goods.category.list'); } /** * 获取所有商城商品分类(批量修改用) */ public function getAllShopCategory(){ $setlevel = \Setting::get('shop.category.cat_level') ? : 2; //根据后台设置显示两级还是三级分类 $category_data = Categorys::uniacid() ->select('id', 'name', 'parent_id')->with(['hasManyChildren' => function ($query) use ($setlevel){ $query->select('id', 'name', 'parent_id') ->with(['hasManyChildren' => function ($query) use ($setlevel) { $query->select('id', 'name', 'parent_id')->where('level', $setlevel); }]); }])->where('level', 1)->where('plugin_id',0) ->orderBy('display_order' ,'asc')->orderBy('id' ,'asc')->get(); return $this->successJson('获取成功',['list'=>$category_data,'setlevel'=>$setlevel]); } /** * 批量修改商城商品分类 */ public function changeManyGoodsCategory(){ $request = request(); if (!$request->goods_id_arr || !is_array($request->goods_id_arr)){ return $this->errorJson('请选择要修改分类的商品'); } $setlevel = \Setting::get('shop.category.cat_level') ? : 2; $category_id = 0; $category_ids = ''; for ($i=1;$i<=$setlevel;$i++){ $key = 'level_'.$i; if (empty($request->$key)){ return $this->errorJson('请选择'.$i.'级分类'); } $category_id = $request->$key; $category_ids .= empty($category_ids) ? $request->$key : ','.$request->$key; } //校验分类关系链是否正确 if (!$check_res = \app\common\models\Category::checkCategory(explode(',',$category_ids))){ return $this->errorJson('分类异常'); } if(!$goods_ids = \app\common\models\Goods::uniacid()->whereIn('plugin_id',[0,44,120])->whereIn('id',$request->goods_id_arr)->pluck('id')){ return $this->errorJson('选择商品不存在或非商城商品'); } $category_goods_ids = GoodsCategory::whereIn('goods_id',$goods_ids)->pluck('goods_id'); $insert_ids = $goods_ids->diff($category_goods_ids); $update_ids = $goods_ids->intersect($category_goods_ids); // dd($goods_ids->toArray(),$update_ids->toArray(),$insert_ids,$update_ids); if ($insert_ids){ $time = time(); $insert_data = $insert_ids->map(function ($v) use ($category_id,$category_ids,$time){ return [ 'goods_id'=>$v, 'category_id'=>$category_id, 'category_ids'=>$category_ids, 'created_at'=>$time, 'updated_at'=>$time ]; })->all(); GoodsCategory::insert($insert_data); } if ($update_ids){ GoodsCategory::whereIn('goods_id',$update_ids)->update([ 'category_id'=>$category_id, 'category_ids'=>$category_ids ]); } return $this->successJson('修改成功'); } public function categoryInfo() { return view('goods.category.info', [ 'id'=>request()->id, 'level' => request()->level, 'parent_id'=> request()->parent_id, ])->render(); } /** * 添加商品分类 */ public function addCategory() { // sleep(5); //判断分类等级 $level = request()->level ? request()->level : '1'; //判断是否有父类id没有默认0 $parent_id = request()->parent_id ? request()->parent_id : '0'; $categoryModel = new Category(); //分类等级 $categoryModel->level = $level; //父类id $categoryModel->parent_id = $parent_id; $parent = []; //url地址 $url = Url::absoluteWeb('goods.category.index'); if ($parent_id > 0) { //查出父分类 $parent = Category::getCategory($parent_id); //地址栏显示父分类 $url = Url::absoluteWeb('goods.category.index', ['parent_id' => $parent_id]); } //获取分类发送过来的值 $requestCategory = request()->category; if ($requestCategory) { if (isset($requestCategory['filter_ids']) && is_array($requestCategory['filter_ids'])) { $requestCategory['filter_ids'] = implode(',', $requestCategory['filter_ids']); } //将数据赋值到model $categoryModel->fill($requestCategory); //其他字段赋值 $categoryModel->uniacid = \YunShop::app()->uniacid; //字段检测 $validator = $categoryModel->validator(); if ($validator->fails()) { //检测失败 $this->errorJson($validator->messages()); } else { //数据保存 if ($categoryModel->save()) { //显示信息并跳转 return $this->successJson('分类创建成功'); } else { $this->errorJson('分类创建失败'); } } } return $this->successJson('ok',[ 'item' => $categoryModel, 'parent' => $parent, 'level' => $level, 'label_group' => [], ]); // return view('goods.category.info', [ // 'item' => $categoryModel, // 'parent' => $parent, // 'level' => $level, // 'label_group' => [], // ])->render(); } /** * 修改分类 */ public function editCategory() { //查询这个分类是否存在 $categoryModel = Category::getCategory(request()->id); //判断是否有父类id没有默认0 $parent_id = request()->parent_id ? request()->parent_id : '0'; if (!$categoryModel) { return $this->errorJson('无此记录或已被删除'); } //URL地址 $url = Url::absoluteWeb('goods.category.index', ['parent_id' => $categoryModel->parent_id]); if (!empty($categoryModel->parent_id)) { //查出父分类 $parent = Category::getCategory($categoryModel->parent_id); } if (isset($categoryModel->filter_ids)) { $filter_ids = explode(',', $categoryModel->filter_ids); $label_group = Filtering::categoryLabel($filter_ids)->get(); } //获取分类发送过来的值 $requestCategory = request()->category; if ($requestCategory) { if (isset($requestCategory['filter_ids']) && is_array($requestCategory['filter_ids'])) { $requestCategory['filter_ids'] = implode(',', $requestCategory['filter_ids']); } //将数据赋值到model $categoryModel->fill($requestCategory); //字段检测 $validator = $categoryModel->validator(); if ($validator->fails()) { //检测失败 $this->errorJson($validator->messages()); } else { //数据保存 if ($categoryModel->save()) { //显示信息并跳转 return $this->successJson('分类保存成功', $url); } else { $this->errorJson('分类保存失败'); } } } $categoryModel['thumb_url'] = yz_tomedia($categoryModel['thumb']); $categoryModel['adv_img_url'] = yz_tomedia($categoryModel['adv_img']); $parent['thumb_url'] = yz_tomedia($parent['thumb']); $cat_level = \Setting::get('shop.category')['cat_level'] ?: 0; $link = yzAppFullUrl('/catelist/'.request()->id); return $this->successJson('ok',[ 'item' => $categoryModel, 'level' => $categoryModel->level, 'label_group' => $label_group, 'parent' => $parent, 'cat_level' => $cat_level, 'link' => $link ]); // return view('goods.category.info', [ // 'item' => $categoryModel, // 'level' => $categoryModel->level, // 'label_group' => $label_group, // 'parent' => $parent, // ])->render(); } /** * 删除商品分类 */ public function deletedCategory() { $category = Category::find(request()->id); if (!$category) { return $this->errorJson('无此分类或已经删除'); } //查询是否有商品分类关联表 find_in_set $good_ids = GoodsCategory::whereRaw('FIND_IN_SET(?,category_ids)', $category->id) ->pluck('goods_id') ->toArray(); //查询是否有商品 $goods = Goods::whereIn('id', $good_ids)->first(); if (!empty($goods)) { return $this->errorJson('分类下存在商品,不允许删除'); } $result = Category::deletedAllCategory($category->id); if ($result) { return $this->successJson('删除分类成功'); } else { return $this->errorJson('删除分类失败'); } } /** * 批量删除分类 * @return \Illuminate\Http\JsonResponse */ public function batchDeleteCategory() { $ids = request()->ids; if(empty($ids)){ return $this->errorJson('请选择要删除的分类'); } $category = Category::uniacid()->select('id')->whereIn('id', $ids)->get(); if (!$category) { return $this->errorJson('无此分类或已经删除'); } foreach($category as $categoryID){ //查询是否有商品分类关联表 find_in_set $good_ids = GoodsCategory::whereRaw('FIND_IN_SET(?,category_ids)', $categoryID->id) ->pluck('goods_id') ->toArray(); //查询是否有商品 $goods = Goods::whereIn('id', $good_ids)->first(); if (!empty($goods)) { return $this->errorJson('分类下存在商品,不允许删除'); } } foreach ($ids as $id) { $goods = Category::destroy($id); } return $this->successJson('删除分类成功'); } /** * 获取搜索分类 * @return html */ public function getSearchCategorys() { $keyword = \YunShop::request()->keyword; $categorys = Category::getCategorysByName($keyword); return view('goods.category.query', [ 'categorys' => $categorys ])->render(); } /** * 获取搜索分类,返回数组 * @return string * @throws \Throwable */ public function getSearchCategorysJson() { $keyword = request()->keyword; $categorys = Category::getCategorysByName($keyword); foreach ($categorys as &$item){ $item['thumb'] = yz_tomedia($item['thumb']); } return $this->successJson('ok',$categorys); } public function test() { //$order = Order::uniacid()->where("id",1265)->first(); //$refund = RefundApply::uniacid()->where("order_id",1265)->first(); //$createNotice = new OrderReceivedNotice($order); //$createNotice->sendMessage(); } public function getCategoryData() { $data = Category::getCategoryData(); return $this->successJson('', $data); } public function getCategorySmallData() { $data = Category::getCategorySmallData(); return $this->successJson('', $data); } /** * 获取搜索分类,返回数组 * @return string * @throws \Throwable */ public function getCategorysJson() { $level = request()->level; $parent_id = request()->parent_id; $plugin_id = request()->input('plugin_id', 0); $categorys = Category::parentIdGetCategorys($level,$parent_id,$plugin_id)->get()->toArray(); return $this->successJson('ok',$categorys); } /** * 批量更新商品分类显示 */ public function batchDisplay() { return $this->batchOption(request()->ids, 'enabled', request()->enabled); } /** * 批量更新商品分类推荐 */ public function batchRecommend() { return $this->batchOption(request()->ids, 'is_home', request()->is_home); } protected function batchOption($ids, $field, $value) { if (is_array($ids) && isset($value)){ Category::uniacid()->whereIn('id', $ids)->update([$field=> $value]); return $this->successJson("批量更新成功"); } return $this->errorJson('修改失败, 请检查参数'); } public function batchService() { $ids = request()->ids; if (empty($ids)) { return $this->errorJson('请选取分类'); } $service_form = request()->service_form; $good_ids = GoodsCategory::whereIn('category_id', $ids)->pluck('goods_id')->unique()->all(); if (empty($good_ids)) { return $this->errorJson('分类下商品为空'); } DB::transaction(function () use ($service_form, $good_ids) { foreach ($good_ids as $gid) { $goods_service = GoodsService::uniacid()->where('goods_id', $gid)->first(); if (!$goods_service) { $goods_service = new GoodsService(); $goods_service->uniacid = \YunShop::app()->uniacid; $goods_service->goods_id = $gid; } $goods_service->is_automatic = $service_form['is_automatic']; $goods_service->time_type = $service_form['time_type']; $goods_service->on_shelf_time = $service_form['on_shelf_time']; $goods_service->lower_shelf_time = $service_form['lower_shelf_time']; $goods_service->loop_date_start = $service_form['loop_date_start']; $goods_service->loop_date_end = $service_form['loop_date_end']; $goods_service->loop_time_up = $service_form['loop_date_end']; $goods_service->loop_time_down = $service_form['loop_time_down']; $goods_service->auth_refresh_stock = $service_form['auth_refresh_stock']; $goods_service->original_stock = $service_form['original_stock']; $goods_service->save(); } }); return $this->successJson("批量设置成功"); } }