first commit
This commit is contained in:
2
app/admin/common.php
Normal file
2
app/admin/common.php
Normal file
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
// 这是系统自动生成的公共文件
|
||||
34
app/admin/controller/AccountManagement.php
Normal file
34
app/admin/controller/AccountManagement.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\BaseController;
|
||||
use app\admin\service\AccountService;
|
||||
|
||||
class AccountManagement extends BaseController
|
||||
{
|
||||
public function addAccount(AccountService $accountService)
|
||||
{
|
||||
|
||||
# 获取数据
|
||||
$params = $this->request->post();
|
||||
|
||||
# 参数校验
|
||||
if (empty($params['real_name'])) {
|
||||
return json(['code' => 400, 'message' => '缺少必要参数']);
|
||||
}
|
||||
|
||||
# 业务逻辑
|
||||
try {
|
||||
$result = $accountService->createAccount($params);
|
||||
return json(['code' => 200, 'message' => '账户创建成功', 'data' => $result]);
|
||||
} catch (\Exception $e) {
|
||||
|
||||
return json([
|
||||
'code' => 400,
|
||||
'message' => $e->getMessage(),
|
||||
'data' => null
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
84
app/admin/controller/Ticket.php
Normal file
84
app/admin/controller/Ticket.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
|
||||
use app\BaseController;
|
||||
use app\common\model\Tickets;
|
||||
use app\common\service\TicketService;
|
||||
use think\facade\Session;
|
||||
|
||||
class Ticket extends BaseController
|
||||
{
|
||||
|
||||
/**
|
||||
* 查询工单
|
||||
*/
|
||||
public function ticketsFind(TicketService $ticketService)
|
||||
{
|
||||
|
||||
// 在控制器明确接收参数
|
||||
$params = [
|
||||
"page" => $this->request->param('page', 1, 'intval'),
|
||||
"limit" => $this->request->param('limit', 20, 'intval'),
|
||||
"status" => $this->request->param('status', null),
|
||||
"operator_name" => $this->request->param('operator_name', null),
|
||||
"searchKeyword" => $this->request->param('search', null),
|
||||
"sortOrder" => $this->request->param('sort_order', 'desc'),
|
||||
];
|
||||
|
||||
$result = $ticketService->getTicketList($params);
|
||||
|
||||
|
||||
return json(['code' => 200, 'msg' => '查询成功', 'data' => $result]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增工单
|
||||
*/
|
||||
public function createTicket(TicketService $ticketService)
|
||||
{
|
||||
$data = $this->request->post();
|
||||
|
||||
try {
|
||||
$result = $ticketService->createTicket($data);
|
||||
return json(['code' => 200, 'msg' => '创建成功', 'data' => $result]);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 400, 'msg' => $e->getMessage(), 'data' => null]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新工单(后台调用)
|
||||
*/
|
||||
public function updateTicket(TicketService $ticketService, $id)
|
||||
{
|
||||
|
||||
$adminId = Session::get('id'); // 获取当前登录管理员ID
|
||||
$data = $this->request->post();
|
||||
|
||||
$allowFields = ['company_id', 'operator_id', 'user_id', 'website', 'datanum', 'progress', 'status', 'remark'];
|
||||
|
||||
try {
|
||||
$result = $ticketService->updateTicket($id, $data, $allowFields, $adminId, true);
|
||||
return json(['code' => 200, 'msg' => '更新成功', 'data' => $result]);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 400, 'msg' => $e->getMessage(), 'data' => []]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除一个工单(仅后台可调用)
|
||||
*/
|
||||
public function deleteTicket($id)
|
||||
{
|
||||
$ticket = Tickets::find($id);
|
||||
if (!$ticket) return json(['code' => false, 'msg' => '工单不存在', 'data' => []]);
|
||||
|
||||
return $ticket->delete()
|
||||
? json(['code' => true, 'msg' => '删除成功', 'data' => []])
|
||||
: json(['code' => false, 'msg' => '删除失败', 'data' => []]);
|
||||
}
|
||||
}
|
||||
30
app/admin/controller/TicketFilter.php
Normal file
30
app/admin/controller/TicketFilter.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\BaseController;
|
||||
use app\common\service\TicketService;
|
||||
|
||||
class TicketFilter extends BaseController
|
||||
{
|
||||
/**
|
||||
* 获取所有运营人员名称 (下拉筛选用)
|
||||
*/
|
||||
public function getAllOperators(TicketService $ticketService)
|
||||
{
|
||||
|
||||
$result = $ticketService->getAllOperators();
|
||||
|
||||
return json(['code' => 200, 'msg' => '查询成功', 'data' => $result]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取我方员工列表 (下拉选择用)
|
||||
*/
|
||||
public function getStaffList(TicketService $ticketService)
|
||||
{
|
||||
$result = $ticketService->getStaffList();
|
||||
return json(['code' => 200, 'msg' => '查询成功', 'data' => $result]);
|
||||
}
|
||||
}
|
||||
5
app/admin/event.php
Normal file
5
app/admin/event.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
// 这是系统自动生成的event定义文件
|
||||
return [
|
||||
|
||||
];
|
||||
5
app/admin/middleware.php
Normal file
5
app/admin/middleware.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
return [
|
||||
// \app\admin\middleware\Cors::class, // 全局中间件
|
||||
// \app\middleware\Auth::class,
|
||||
];
|
||||
31
app/admin/middleware/Auth.php
Normal file
31
app/admin/middleware/Auth.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\middleware;
|
||||
|
||||
use thans\jwt\facade\JWTAuth;
|
||||
use thans\jwt\exception\TokenExpiredException;
|
||||
|
||||
class Auth
|
||||
{
|
||||
public function handle($request, \Closure $next)
|
||||
{
|
||||
try {
|
||||
// 1. 核心:必须先执行 auth(),它会自动从 Header 读取 Bearer Token 并验证
|
||||
// 如果过期或非法,这里会直接抛出异常
|
||||
|
||||
$payload = JWTAuth::auth();
|
||||
// $payload = JWTAuth::getPayload(); 这个是获取数据,进行解码token
|
||||
$request->login_user_id = (int)$payload['user_id'] ?? null;
|
||||
$request->login_role = $payload['role'] ?? null;
|
||||
|
||||
return $next($request);
|
||||
}catch (TokenExpiredException $e){
|
||||
// 捕获token过期异常
|
||||
return json(['code' => 401, 'msg' => '登录已过期,请重新登录'],401);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// 如果报错,返回具体的错误信息,方便我们排查
|
||||
return json(['code' => 400, 'msg' => '权限校验失败:' . $e->getMessage()], 400);
|
||||
}
|
||||
}
|
||||
}
|
||||
19
app/admin/route/app.php
Normal file
19
app/admin/route/app.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
use think\facade\Route;
|
||||
use app\admin\middleware\Auth;
|
||||
|
||||
Route::get('ticketsfind', 'Ticket/ticketsFind'); // 通用查询方法
|
||||
// Route::group(function () {
|
||||
// // Route::get('ticketsfind', 'Ticket/ticketsFind'); // 通用查询方法
|
||||
// Route::post('addticket', 'Ticket/save'); // 保存工单
|
||||
// Route::put('ticket/:id', 'Ticket/updateTicket'); // 更新工单
|
||||
// Route::delete('ticket/:id', 'Ticket/deleteTicket'); // 删除工单
|
||||
// Route::get('operators', 'Ticket/getAllOperators'); // 根据运营人员查询
|
||||
// Route::get('customers', 'Customers/getList');
|
||||
// Route::post('addcustomername', 'Customers/addCustomer'); //添加客户名称
|
||||
// Route::post('addemployee', 'Customers/addEmployee');
|
||||
// Route::get('getStaffList', 'Ticket/getStaffList');
|
||||
// Route::delete('deleteemployee/:empId', 'Customers/deleteEmployee');
|
||||
// Route::delete('deletecustomer/:customerId', 'Customers/deleteCustomer');
|
||||
// Route::get('getticketstatuscount', 'Ticket/getTicketStatusCount');
|
||||
// })->middleware(Auth::class); // 只有这里需要 Token
|
||||
34
app/admin/service/AccountService.php
Normal file
34
app/admin/service/AccountService.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use app\common\model\User as UserModel;
|
||||
|
||||
class AccountService
|
||||
{
|
||||
public function createAccount($data)
|
||||
{
|
||||
if (empty($data['username'])) {
|
||||
$data['username'] = $data['real_name'];
|
||||
}
|
||||
|
||||
# 检查数据库中是否有相同用户名账户
|
||||
$exist = UserModel::where('username', $data['username'])->find();
|
||||
if ($exist) {
|
||||
throw new \Exception('用户名已存在');
|
||||
}
|
||||
|
||||
$insertData = [
|
||||
'username' => $data['username'] ?? $data['real_name'],
|
||||
'real_name' => $data['real_name'],
|
||||
'password' => password_hash('123456', PASSWORD_DEFAULT),
|
||||
'role' => $data['role'] ?? 'user',
|
||||
'status' => 1,
|
||||
];
|
||||
|
||||
$user = UserModel::create($insertData);
|
||||
|
||||
/** @var \think\Model $user */
|
||||
return $user->visible(['id', 'username', 'real_name', 'role', 'status'])->toArray();
|
||||
}
|
||||
}
|
||||
48
app/admin/service/CustomersService.php
Normal file
48
app/admin/service/CustomersService.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use app\common\model\Customers as CustomersModel;
|
||||
use app\common\model\CustomerEmployees;
|
||||
|
||||
class CustomersService
|
||||
{
|
||||
public function selectCustomersWithEmployees()
|
||||
{
|
||||
//with 预载入 ,解决N+1问题
|
||||
$list = CustomersModel::with('employees')->select();
|
||||
return $list;
|
||||
}
|
||||
|
||||
public function addCustomer($companyName)
|
||||
{
|
||||
$id = CustomersModel::create([
|
||||
'company_name' => $companyName
|
||||
]);
|
||||
return $id;
|
||||
}
|
||||
|
||||
public function addEmployee($empName, $Id)
|
||||
{
|
||||
$id = CustomersModel::where('id', $Id)->find()->employees()->save([
|
||||
'employee_name' => $empName
|
||||
]);
|
||||
return $id;
|
||||
}
|
||||
|
||||
|
||||
public function deleteEmployee($empId)
|
||||
{
|
||||
$result = CustomerEmployees::destroy($empId);
|
||||
return $result; // 返回受影响的行数,删除一行就1,没有删除就是0
|
||||
}
|
||||
|
||||
public function deleteCustomer($customerId)
|
||||
{
|
||||
// 删除客户单位会自动删除关联的员工(假设你在模型中设置了级联删除)
|
||||
$result = CustomersModel::destroy($customerId);
|
||||
return $result; // 返回受影响的行数,删除一行就1,没有删除就是0
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user