功能 | 请求方法 | 路由 | 函数 | 参数 | 返回值 |
---|---|---|---|---|---|
列表(分页、搜索) | get | ‘api/item/brand/page’ | page | 分页信息 | 分类列表 |
新增 | post | ‘api/item/brand’ | addBrand | 品牌信息 | 布尔值 |
根据ID查询分类信息 | get | ‘api/item/brand/categories’ | getCategoriesByBid | 品牌ID | 分类层级列表 |
文件上传 | post | ‘api/item/brand/uploadImage’ | uploadImage | 文件信息 | 文件网络地址 |
修改 | put | ’api/item/brand’ | editBrand | 品牌信息 | 布尔值 |
删除 | delete | ’api/item/brand’ | deleteBrand | 品牌ID,logo地址 | 布尔值 |
param());
// 获取参数
$page = $request->param('page', 1); // 当前页
$rows = $request->param('rows', 10); // 每页记录数
$search = $request->param('search', ''); // 搜索条件
$sortBy = $request->param('sortBy', 'id'); // 排序字段
// $sortBy = implode(',', $sortBy);
// return json($sortBy);
$sortDesc = $request->param('sortDesc', 'true'); // 是否倒序
// $sortDesc = implode(',', $sortDesc);
$sortDesc = ($sortDesc == true) ? 'DESC' : 'ASC';
// return json($sortDesc);
// $sortDesc = $sortDesc.preg_replace('true', 'DESC', $sortDesc);
// $sortDesc = $sortDesc.preg_replace('false', 'ASC', $sortDesc);
// return json($sortDesc);
// 查询数据库
// 1、每页数据
$itemList = Brandm::whereLike('initial', "%{$search}%")
->order($sortBy, $sortDesc)
->page($page, $rows)
->select();
// 2、总记录数
$total = count(Brandm::whereLike('initial', "%{$search}%")->select());
// 3、总页数
$totalPage = ceil($total / $rows);
$data = [
'total' => $total,
'totalPage' => $totalPage,
'items' => $itemList
];
return json($data);
}
// 新增品牌
public function addBrand(Request $request)
{
// 1、解析请求数据
// 2、向品牌表添加品牌,并接收返回的品牌ID
$brand = Brandm::create($request->param());
// 3、向分类品牌第三方表添加数据
$cids = $request->param('cids');
foreach (explode(',', $cids) as $cid) {
$data = ['category_id' => $cid, 'brand_id' => $brand->id];
Db::table('tb_category_brand')->insert($data);
}
// 4、响应数据
return json($brand, 201);
// return json($request->param(), 201);
}
// 根据品牌路由查找分类信息
public function findCategoriesByBid(Request $request, $bid)
{
// // 1、解析请求参数品牌ID
// $bid = $request->param('bid');
if (empty($bid)) {
return json('请求品牌不能为空', 404);
}
// 2、根据品牌ID查询分类品牌表,获取分类信息
// $cids = DB::table('tb_category_brand')
// ->field('category_id')
// ->where('brand_id', $bid)
// ->select();
// foreach ($cids as $key => $value) {
//// echo $key.'----'.$value['category_id'].'
';
// $cids[$key]['value'] = $value['category_id'];
// }
//// echo dump($cids);
$brand = Brandm::get($bid);
$categories = $brand->categories;
// echo dump($categories);
$cids = array();
foreach ($categories as $index => $cate) {
$cids[$index]['id'] = $cate->id;
$cids[$index]['name'] = $cate->name;
}
// 3、响应请求
return json($cids, 200);
}
// 图片上传
public function uploadImage(Request $request)
{
// 1、获取上传文件对象
$file = $request->file('file');
// 2、移动上传文件到网站根目录下的uploads文件夹
$info = $file->move('./uploads');
if ($info) { // 判断文件是否移动成功
// 返回文件路径
$filePath = Config::get('file_storage_path') . $info->getSaveName();
return str_replace('\\', '/', $filePath);
} else {
return $file->getError();
}
}
// 修改品牌
public function editBrand(Request $request)
{
$newBrand = $request->param('brand');
if (!$newBrand) {
return json('数据不能为空', 404);
}
$brand = Brandm::update($newBrand);
$newCat = $request->param('categories');
// 根据分类关联更新中间表
$originCat = Db::table('tb_category_brand')
->where('brand_id', $brand->id)
->column('category_id');
$insert = array_diff($newCat, $originCat);
$delete = array_diff($originCat, $newCat);
if ($insert) {
$brand->categories()->saveAll($insert);
}
if ($delete) {
$brand->categories()->detach($delete);
}
$last = Db::table('tb_category_brand')
->where('brand_id', $brand->id)
->select();
return json('修改完成', 200);
}
// 删除指定ID的品牌
public function deleteBrand(Request $request)
{
// return json($request->param());
$bid = $request->param('bid', '');
if (empty($bid)) {
return json('请求品牌不能为空', 400);
}
// echo $bid;
// 删除品牌表中对应品牌数据
Brandm::where('id', $bid)
->delete();
// 删除关联中间表数据
Db::table('tb_category_brand')
->where('brand_id', $bid)
->delete();
// 删除品牌logo图片
$image = $request->param('image', '');
if (!empty($image)) {
$rmLen = strlen(Config::get('file_storage_path'));
$image = Env::get('root_path').'public\\uploads\\'.str_replace('/', '\\',substr($image, $rmLen));
// return json(realpath($image));
// return json($image);
if (file_exists($image)) {
// return json('文件存在
');
unlink($image);
}
}
return json('删除成功', 204);
}
}
tips : 品牌管理功能完成
后记
本项目为参考某马视频thinkphp5.1-乐优商城前后端项目开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785
前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端thinkphp源代码地址:https://gitee.com/gaogzhen/leyou-backend-thinkphp