| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?php
- namespace Yunshop\ReserveSimple\admin;
- use app\common\helpers\PaginationHelper;
- use app\common\helpers\Url;
- use app\backend\modules\goods\models\Brand;
- use app\backend\modules\goods\services\CopyGoodsService;
- use app\backend\modules\goods\services\CategoryService;
- use app\backend\modules\goods\models\Category;
- use Yunshop\ReserveSimple\common\models\Goods;
- use Yunshop\ReserveSimple\common\services\CreateGoodsService;
- use app\backend\modules\goods\services\EditGoodsService;
- use Yunshop\ReserveSimple\common\services\LangService;
- use Yunshop\ReserveSimple\widgets\ReserveSimpleGoodsWidgetManager;
- class GoodsController extends \app\backend\modules\goods\controllers\GoodsController
- {
- const MESSAGEJUMP = 'plugin.reserve-simple.admin.goods.index';
- const SORT_URL = 'plugin.reserve-simple.admin.goods.displayorder';
- const EDIT_URL = 'plugin.reserve-simple.admin.goods.edit';
- const ADD_URL = 'plugin.reserve-simple.admin.goods.create';
- const DELETE_URL = 'plugin.reserve-simple.admin.goods.destroy';
- protected $success_url = 'plugin.reserve-simple.admin.goods.index';
- protected $widget_url = 'plugin.reserve-simple.admin.goods.widget-column';
- public $lang_set = [];
- public function preAction()
- {
- parent::preAction();
- $this->lang_set = (new LangService())->getLang();
- }
- public function index()
- {
- $project_id = request()->project_id;
- return view('Yunshop\ReserveSimple::admin.goods.extend-index',[
- 'project_id'=>$project_id,
- 'lang_set' => $this->lang_set
- ]);
- }
- public function goodsList()
- {
- //增加商品属性搜索
- $product_attr_list = [
- 'is_new' => '新品',
- 'is_hot' => '热卖',
- 'is_recommand' => '推荐',
- 'is_discount' => '促销',
- ];
- $brands = Brand::getBrands()->get()->toArray();
- $service_id = request()->service_id;
- $catetory_menus = [
- 'catlevel' => $this->shopset['cat_level'],
- 'ids' => Category::getAllCategoryGroupArray()//CategoryFactory::create('shop'),//isset($categorySearch) ? array_values($categorySearch) : [],
- ];
- $query = Goods::Search('')->pluginId();
- if($service_id){
- $query->whereHas('hasManyReserveGoods', function ($query) use($service_id) {
- $query->where('service_id', $service_id);
- });
- }
- $list = $query->orderBy('display_order', 'desc')->orderBy('yz_goods.id', 'desc')->paginate(20);
- foreach ($list as $key => $item){
- $list[$key]['thumb'] = yz_tomedia($item->thumb);
- $list[$key]['link'] = yzAppFullUrl('goods/'.$item->id);
- }
- $delete_msg = '确认删除此商品?';
- $data = [
- 'list' => $list,
- //课程商品id
- 'courseGoods_ids' => [],
- 'brands' => $brands,
- 'var' => \YunShop::app()->get(),
- 'catetory_menus' => $catetory_menus,
- 'shopset' => $this->shopset,
- 'lang' => $this->lang,
- 'product_attr_list' => $product_attr_list,
- 'yz_url' => 'yzWebUrl',
- 'edit_url' => self::EDIT_URL,
- 'delete_url' => self::DELETE_URL,
- 'delete_msg' => $delete_msg,
- 'sort_url' => self::SORT_URL,
- 'copy_url' => 'plugin.reserve-simple.admin.goods.copy',
- 'add_url' => 'plugin.reserve-simple.admin.goods.create'
- ];
- return $this->successJson('查询成功',$data);
- }
- public function goodsSearch()
- {
- $requestSearch = request()->search;
- $service_id = request()->service_id;
- if($service_id){
- $requestSearch['service_id'] = $service_id;
- }
- if ($requestSearch) {
- $requestSearch = array_filter($requestSearch, function ($item) {
- return $item !== '';// && $item !== 0;
- });
- $categorySearch = array_filter(request()->category, function ($item) {
- return !empty($item);
- });
- if ($categorySearch) {
- $requestSearch['category'] = $categorySearch;
- }
- }
- $query = Goods::Search($requestSearch)->pluginId();
- if($requestSearch['service_id']){
- $query->whereHas('hasManyReserveGoods', function ($query) use($requestSearch) {
- $query->where('service_id', $requestSearch['service_id']);
- });
- }
- $list = $query->orderBy('display_order', 'desc')->orderBy('yz_goods.id', 'desc')->paginate(20);
- foreach ($list as $key => $item){
- $list[$key]['thumb'] = yz_tomedia($item->thumb);
- $list[$key]['link'] = yzAppFullUrl('goods/'.$item->id);
- }
- return $this->successJson('查询成功',$list);
- }
- public function copy()
- {
- $id = intval(\YunShop::request()->id);
- if (!$id) {
- $this->error('请传入正确参数.');
- }
- $result = CopyGoodsService::copyGoods($id);
- if (!$result) {
- $this->error('商品不存在.');
- }
- return $this->message('商品复制成功', Url::absoluteWeb(self::MESSAGEJUMP));
- }
- //商品编辑挂件获取
- public function widgetColumn()
- {
- $data = (new ReserveSimpleGoodsWidgetManager())->handle();
- return $this->successJson('widgetColumn', $data);
- }
- public function create()
- {
- if (request()->ajax()) {
- $request = Request();
- $goods_service = new CreateGoodsService($request);
- $result = $goods_service->create();
- if ($result['status'] == 1) {
- return $this->successJson('商品创建成功');
- } else {
- return $this->errorJson($result['msg']);
- }
- }
- return view('goods.vue-goods', [
- 'store_url' => yzWebFullUrl(request()->input('route')),
- 'widget_url' => yzWebFullUrl('plugin.reserve-simple.admin.goods.widget-column'),
- 'success_url' => yzWebFullUrl($this->success_url),
- ])->render();
- }
- public function displayorder()
- {
- $id = request()->id;
- $value = request()->value;
- if (empty($id)){
- return $this->errorJson('排序失败,商品ID不能为空');
- }
- $goods = \app\common\models\Goods::find($id);
- $goods->display_order = $value;
- if ($goods->save()){
- return $this->successJson('排序成功');
- }else{
- return $this->errorJson('排序失败');
- }
- }
- public function destroy()
- {
- $id = request()->id;
- $goods = Goods::destroy($id);
- return $this->message('商品删除成功', Url::absoluteWeb(self::MESSAGEJUMP));
- }
- }
|