erp-backend/app/Http/Controllers/TemplateController.php
2026-04-01 17:07:04 +08:00

174 lines
4.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\TemplateRequest;
use App\Models\Template;
use App\Models\WarehouseTemplateBinding;
use Illuminate\Http\Request;
class TemplateController extends Controller
{
/**
* 模板列表
*/
public function index(Request $request)
{
$query = Template::orderBy('created_at', 'desc');
// 筛选条件
if ($request->filled('platform')) {
$query->where('platform', $request->platform);
}
if ($request->filled('name')) {
$query->where('name', 'like', '%' . $request->name . '%');
}
$perPage = $request->input('limit', 10);
$templates = $query->paginate($perPage);
return response()->json([
'code' => 200,
'data' => [
'list' => $templates->items(),
'total' => $templates->total(),
'current_page' => $templates->currentPage(),
'last_page' => $templates->lastPage(),
],
'message' => 'success'
]);
}
/**
* 创建模板
*/
public function store(TemplateRequest $request)
{
try {
$template = Template::create([
'name' => $request->name,
'platform' => $request->platform,
'size' => $request->size,
'style' => $request->style,
'default_express' => $request->default_express,
'sender_name' => $request->sender_name,
'sender_phone' => $request->sender_phone,
'sender_address' => $request->sender_address,
'show_product' => $request->show_product ?? true,
'remark' => $request->remark,
]);
return response()->json([
'code' => 200,
'data' => $template,
'message' => '模板创建成功'
]);
} catch (\Exception $e) {
return response()->json([
'code' => 500,
'message' => '创建失败: ' . $e->getMessage()
], 500);
}
}
/**
* 模板详情
*/
public function show(string $id)
{
$template = Template::find($id);
if (!$template) {
return response()->json([
'code' => 404,
'message' => '模板不存在'
], 404);
}
return response()->json([
'code' => 200,
'data' => $template,
'message' => 'success'
]);
}
/**
* 更新模板
*/
public function update(TemplateRequest $request, string $id)
{
$template = Template::find($id);
if (!$template) {
return response()->json([
'code' => 404,
'message' => '模板不存在'
], 404);
}
try {
$template->update([
'name' => $request->name,
'platform' => $request->platform,
'size' => $request->size,
'style' => $request->style,
'default_express' => $request->default_express,
'sender_name' => $request->sender_name,
'sender_phone' => $request->sender_phone,
'sender_address' => $request->sender_address,
'show_product' => $request->show_product ?? $template->show_product,
'remark' => $request->remark,
]);
return response()->json([
'code' => 200,
'data' => $template,
'message' => '模板更新成功'
]);
} catch (\Exception $e) {
return response()->json([
'code' => 500,
'message' => '更新失败: ' . $e->getMessage()
], 500);
}
}
/**
* 删除模板
*/
public function destroy(string $id)
{
$template = Template::find($id);
if (!$template) {
return response()->json([
'code' => 404,
'message' => '模板不存在'
], 404);
}
// 检查模板是否被仓库绑定
$bindingCount = WarehouseTemplateBinding::where('template_id', $id)->count();
if ($bindingCount > 0) {
return response()->json([
'code' => 400,
'message' => '模板已被仓库绑定,无法删除'
], 400);
}
try {
$template->delete();
return response()->json([
'code' => 200,
'message' => '模板删除成功'
]);
} catch (\Exception $e) {
return response()->json([
'code' => 500,
'message' => '删除失败: ' . $e->getMessage()
], 500);
}
}
}