| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456 |
- <?php
- namespace app\backend\modules\goods\controllers;
- use app\backend\modules\goods\models\Category;
- use app\backend\modules\goods\models\Categorys;
- use app\backend\modules\goods\models\Goods;
- use app\backend\modules\uploadVerificate\UploadVerificationBaseController;
- use app\common\components\BaseController;
- use app\common\helpers\PaginationHelper;
- use app\common\models\goods\GoodsService;
- use app\common\models\GoodsCategory;
- use app\common\models\Member;
- use app\common\models\Order;
- use app\common\helpers\Url;
- use Illuminate\Support\Facades\DB;
- use phpDocumentor\Reflection\DocBlock\Description;
- use Setting;
- use app\backend\modules\filtering\models\Filtering;
- /**
- * Created by PhpStorm.
- * Author: 芸众商城 www.yunzshop.com
- * Date: 2017/2/22
- * Time: 下午1:51
- */
- class CategoryController extends UploadVerificationBaseController
- {
- /**
- * 商品分类列表172
- */
- public function index()
- {
- $thirdShow = \Setting::get('shop.category.cat_level') == 3 ? true : false; //根据后台设置显示两级还是三级分类
- if(request()->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("批量设置成功");
- }
- }
|