0) { $where[] = ['pid', '=', $post['pid']]; } if (!empty($post['keyword'])) { $where[] = ['cate_name', 'like', '%' . $post['keyword'] . '%']; } $result = (new StoreCategory())->getList($where, $post['page'], $post['pageSize']); return app('json')->success($result); } /** * 保存商品分类 * @param Request $request */ public function categorySave(Request $request) { $post = UtilService::getMore([ ['id', 0], ['cate_name', '', 'empty', '请输入分类名称'], ['pid', 0], ['sort', 0], ['status', 1], ], $request); $data = [ 'cate_name' => $post['cate_name'], 'pid' => $post['pid'], 'sort' => $post['sort'], 'status' => $post['status'] == 1 ? 1 : 0, ]; if ($post['id'] > 0) { $result = Db::name('store_category')->where('id', $post['id'])->update($data); } else { $result = Db::name('store_category')->insertGetId($data); } if ($result) { return app('json')->success('保存成功'); } else { return app('json')->fail('保存失败'); } } /** * 删除商品分类 * @param Request $request */ public function categoryDelete(Request $request) { $post = UtilService::getMore([ ['id', '', 'empty', '参数错误'], ], $request); // 检查是否有子分类 $hasChild = Db::name('store_category')->where('pid', $post['id'])->count(); if ($hasChild > 0) { return app('json')->fail('该分类下有子分类,无法删除'); } // 检查是否有商品 $hasProduct = Db::name('store_product')->where('cate_id', $post['id'])->count(); if ($hasProduct > 0) { return app('json')->fail('该分类下有商品,无法删除'); } $result = Db::name('store_category')->where('id', $post['id'])->delete(); if ($result) { return app('json')->success('删除成功'); } else { return app('json')->fail('删除失败'); } } /** * 品牌列表 * @param Request $request */ public function brandList(Request $request) { $pageSize = 20; $post = UtilService::getMore([ ['page', 1], ['pageSize', 20], ['keyword', ''], ], $request); $where = []; if (!empty($post['keyword'])) { $where[] = ['brand_name', 'like', '%' . $post['keyword'] . '%']; } $result = (new StoreBrand())->getList($where, $post['page'], $post['pageSize']); return app('json')->success($result); } /** * 保存品牌 * @param Request $request */ public function brandSave(Request $request) { $post = UtilService::getMore([ ['id', 0], ['brand_name', '', 'empty', '请输入品牌名称'], ['brand_logo', ''], ['sort', 0], ['status', 1], ], $request); $data = [ 'brand_name' => $post['brand_name'], 'brand_logo' => $post['brand_logo'], 'sort' => $post['sort'], 'status' => $post['status'] == 1 ? 1 : 0, ]; if ($post['id'] > 0) { $result = Db::name('store_brand')->where('id', $post['id'])->update($data); } else { $result = Db::name('store_brand')->insertGetId($data); } if ($result) { return app('json')->success('保存成功'); } else { return app('json')->fail('保存失败'); } } /** * 删除品牌 * @param Request $request */ public function brandDelete(Request $request) { $post = UtilService::getMore([ ['id', '', 'empty', '参数错误'], ], $request); $result = Db::name('store_brand')->where('id', $post['id'])->delete(); if ($result) { return app('json')->success('删除成功'); } else { return app('json')->fail('删除失败'); } } /** * 商品列表 * @param Request $request */ public function productList(Request $request) { $pageSize = 20; $post = UtilService::getMore([ ['page', 1], ['pageSize', 20], ['cate_id', ''], ['brand_id', ''], ['keyword', ''], ['status', ''], ], $request); $where = []; if (!empty($post['cate_id'])) { $where[] = ['cate_id', '=', $post['cate_id']]; } if (!empty($post['brand_id'])) { $where[] = ['brand_id', '=', $post['brand_id']]; } if (!empty($post['keyword'])) { $where[] = ['store_name', 'like', '%' . $post['keyword'] . '%']; } if ($post['status'] !== '' && in_array((string)$post['status'], ["0", "1"])) { $where[] = ['is_show', '=', (int)$post['status']]; } $result = (new StoreProduct())->getList($where, $post['page'], $post['pageSize']); return app('json')->success($result); } /** * 保存商品 * @param Request $request */ public function productSave(Request $request) { $post = UtilService::getMore([ ['id', 0], ['cate_id', '', 'empty', '请选择分类'], ['brand_id', 0], ['store_name', '', 'empty', '请输入商品标题'], ['image', '', 'empty', '请上传商品图片'], ['slider_image', ''], ['price', 0], ['cost', 0], ['ot_price', 0], ['stock', 0], ['sales', 0], ['unit_name', '件'], ['content', ''], ['sort', 0], ['status', 1], ['sku_list', '[]'], ], $request); $data = [ 'cate_id' => $post['cate_id'], 'brand_id' => $post['brand_id'], 'store_name' => $post['store_name'], 'image' => $post['image'], 'slider_image' => $post['slider_image'], 'price' => $post['price'], 'cost' => $post['cost'], 'ot_price' => $post['ot_price'], 'stock' => $post['stock'], 'sales' => $post['sales'], 'unit_name' => $post['unit_name'], 'content' => $post['content'], 'sort' => $post['sort'], 'is_show' => $post['status'] == 1 ? 1 : 0, ]; Db::startTrans(); try { if ($post['id'] > 0) { // 更新商品 Db::name('store_product')->where('id', $post['id'])->update($data); $productId = $post['id']; // 删除原有SKU Db::name('store_product_attr_value')->where('product_id', $productId)->delete(); } else { // 新增商品 $data['time'] = time(); $productId = Db::name('store_product')->insertGetId($data); } // 保存SKU $skuList = json_decode($post['sku_list'], true); if (!empty($skuList)) { foreach ($skuList as $sku) { $skuData = [ 'product_id' => $productId, 'suk' => $sku['suk'] ?? '', 'price' => $sku['price'] ?? $post['price'], 'cost' => $sku['cost'] ?? $post['cost'], 'stock' => $sku['stock'] ?? 0, 'bar_code' => $sku['bar_code'] ?? '', ]; Db::name('store_product_attr_value')->insert($skuData); } } Db::commit(); return app('json')->success('保存成功'); } catch (\Exception $e) { Db::rollback(); return app('json')->fail('保存失败'); } } /** * 删除商品 * @param Request $request */ public function productDelete(Request $request) { $post = UtilService::getMore([ ['id', '', 'empty', '参数错误'], ], $request); Db::startTrans(); try { // 删除商品 Db::name('store_product')->where('id', $post['id'])->delete(); // 删除SKU Db::name('store_product_attr_value')->where('product_id', $post['id'])->delete(); Db::commit(); return app('json')->success('删除成功'); } catch (\Exception $e) { Db::rollback(); return app('json')->fail('删除失败'); } } }