diff --git a/app/Http/Controllers/Api/AgreementController.php b/app/Http/Controllers/Api/AgreementController.php index bf652f2..b284e1b 100644 --- a/app/Http/Controllers/Api/AgreementController.php +++ b/app/Http/Controllers/Api/AgreementController.php @@ -2,11 +2,12 @@ namespace App\Http\Controllers\Api; -use Illuminate\Http\Request; -use App\Models\Agreement; -use App\Http\Resources\AgreementResource; use App\Admin\Services\{AgreementService, WorkFlowService}; use App\Exceptions\RuntimeException; +use App\Http\Resources\AgreementResource; +use App\Models\Agreement; +use App\Models\WorkflowCheck; +use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; /** @@ -20,6 +21,7 @@ class AgreementController extends Controller $list = Agreement::with(['workflow']) ->where('employee_id', $user->id) ->filter($request->all()) + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new Agreement())) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); diff --git a/app/Http/Controllers/Api/Hr/HolidayController.php b/app/Http/Controllers/Api/Hr/HolidayController.php index 024931a..20e57de 100644 --- a/app/Http/Controllers/Api/Hr/HolidayController.php +++ b/app/Http/Controllers/Api/Hr/HolidayController.php @@ -2,12 +2,13 @@ namespace App\Http\Controllers\Api\Hr; -use App\Http\Controllers\Api\Controller; -use Illuminate\Http\Request; -use App\Models\HolidayApply; -use App\Http\Resources\HolidayApplyResource; use App\Admin\Services\{HolidayApplyService, WorkFlowService}; use App\Exceptions\RuntimeException; +use App\Http\Controllers\Api\Controller; +use App\Http\Resources\HolidayApplyResource; +use App\Models\HolidayApply; +use App\Models\WorkflowCheck; +use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; /** @@ -18,9 +19,11 @@ class HolidayController extends Controller public function index(Request $request) { $user = $this->guard()->user(); + $list = HolidayApply::with(['type', 'workflow']) - ->where('employee_id', $user->id) ->filter($request->all()) + ->where('employee_id', $user->id) + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new HolidayApply())) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); diff --git a/app/Http/Controllers/Api/Hr/OfficalBusinessController.php b/app/Http/Controllers/Api/Hr/OfficalBusinessController.php index 11824d8..4c80827 100644 --- a/app/Http/Controllers/Api/Hr/OfficalBusinessController.php +++ b/app/Http/Controllers/Api/Hr/OfficalBusinessController.php @@ -2,12 +2,13 @@ namespace App\Http\Controllers\Api\Hr; -use App\Http\Controllers\Api\Controller; -use Illuminate\Http\Request; -use App\Models\OfficalBusiness; -use App\Http\Resources\OfficalBusinessResource; use App\Admin\Services\{OfficalBusinessService, WorkFlowService}; use App\Exceptions\RuntimeException; +use App\Http\Controllers\Api\Controller; +use App\Http\Resources\OfficalBusinessResource; +use App\Models\OfficalBusiness; +use App\Models\WorkflowCheck; +use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; /** @@ -21,6 +22,7 @@ class OfficalBusinessController extends Controller $list = OfficalBusiness::with(['workflow']) ->where('employee_id', $user->id) ->filter($request->all()) + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new OfficalBusiness())) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); @@ -43,7 +45,7 @@ class OfficalBusinessController extends Controller try { DB::beginTransaction(); if (!$service->store($data)) { - throw new RuntimeException($result); + throw new RuntimeException($service->getError()); } $model = $service->getCurrentModel(); $workflow = WorkFlowService::make(); diff --git a/app/Http/Controllers/Api/Hr/OvertimeController.php b/app/Http/Controllers/Api/Hr/OvertimeController.php index ca78e23..8c0738d 100644 --- a/app/Http/Controllers/Api/Hr/OvertimeController.php +++ b/app/Http/Controllers/Api/Hr/OvertimeController.php @@ -2,12 +2,13 @@ namespace App\Http\Controllers\Api\Hr; -use App\Http\Controllers\Api\Controller; -use Illuminate\Http\Request; -use App\Models\OvertimeApply; -use App\Http\Resources\OvertimeApplyResource; use App\Admin\Services\{OvertimeApplyService, WorkFlowService}; use App\Exceptions\RuntimeException; +use App\Http\Controllers\Api\Controller; +use App\Http\Resources\OvertimeApplyResource; +use App\Models\OvertimeApply; +use App\Models\WorkflowCheck; +use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; /** @@ -21,6 +22,7 @@ class OvertimeController extends Controller $list = OvertimeApply::with(['workflow']) ->where('employee_id', $user->id) ->filter($request->all()) + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new OvertimeApply())) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); diff --git a/app/Http/Controllers/Api/Hr/PromotionController.php b/app/Http/Controllers/Api/Hr/PromotionController.php index ea7f7d0..94f128a 100644 --- a/app/Http/Controllers/Api/Hr/PromotionController.php +++ b/app/Http/Controllers/Api/Hr/PromotionController.php @@ -2,14 +2,15 @@ namespace App\Http\Controllers\Api\Hr; -use App\Http\Controllers\Api\Controller; -use Illuminate\Http\Request; -use App\Models\EmployeePromotion; -use App\Http\Resources\EmployeePromotionResource; use App\Admin\Services\{EmployeePromotionService, WorkFlowService}; -use App\Exceptions\RuntimeException; -use Illuminate\Support\Facades\DB; use App\Enums\PromotionStatus; +use App\Exceptions\RuntimeException; +use App\Http\Controllers\Api\Controller; +use App\Http\Resources\EmployeePromotionResource; +use App\Models\EmployeePromotion; +use App\Models\WorkflowCheck; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; /** * 升职申请 @@ -25,9 +26,10 @@ class PromotionController extends Controller $list = EmployeePromotion::with(['workflow', 'invitor', 'job']) ->where('employee_id', $user->id) ->filter($request->all()) + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new EmployeePromotion())) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); - + return EmployeePromotionResource::collection($list); } @@ -42,7 +44,7 @@ class PromotionController extends Controller ->filter($request->all()) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); - + return EmployeePromotionResource::collection($list); } @@ -92,7 +94,7 @@ class PromotionController extends Controller throw new RuntimeException($e->getMessage()); } } - + public function update($id, Request $request, EmployeePromotionService $service) { $user = $this->guard()->user(); diff --git a/app/Http/Controllers/Api/Hr/SignRepairController.php b/app/Http/Controllers/Api/Hr/SignRepairController.php index da4f0d7..90ebcc6 100644 --- a/app/Http/Controllers/Api/Hr/SignRepairController.php +++ b/app/Http/Controllers/Api/Hr/SignRepairController.php @@ -2,14 +2,15 @@ namespace App\Http\Controllers\Api\Hr; -use App\Http\Controllers\Api\Controller; -use Illuminate\Http\{Request, Response}; -use App\Models\EmployeeSignRepair; -use App\Http\Resources\{EmployeeSignRepairResource, WorkflowLogResource}; use App\Admin\Services\{EmployeeSignRepairService, WorkFlowService}; -use Illuminate\Support\Facades\DB; -use App\Exceptions\RuntimeException; use App\Enums\{CheckStatus}; +use App\Exceptions\RuntimeException; +use App\Http\Controllers\Api\Controller; +use App\Http\Resources\{EmployeeSignRepairResource, WorkflowLogResource}; +use App\Models\EmployeeSignRepair; +use App\Models\WorkflowCheck; +use Illuminate\Http\{Request, Response}; +use Illuminate\Support\Facades\DB; /** * 补卡申请 @@ -22,6 +23,7 @@ class SignRepairController extends Controller $list = EmployeeSignRepair::with(['workflow']) ->where('employee_id', $user->id) ->filter($request->all()) + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new EmployeeSignRepair())) ->orderBy('id', 'desc') ->paginate($request->input('per_page')); return EmployeeSignRepairResource::collection($list); @@ -66,7 +68,7 @@ class SignRepairController extends Controller if (!$model->canUpdate()) { throw new RuntimeException('审核中, 无法修改'); } - + try { DB::beginTransaction(); if (!$service->update($id, $request->all())) { diff --git a/app/Http/Controllers/Api/ReimbursementController.php b/app/Http/Controllers/Api/ReimbursementController.php index d246b28..7fce501 100644 --- a/app/Http/Controllers/Api/ReimbursementController.php +++ b/app/Http/Controllers/Api/ReimbursementController.php @@ -25,7 +25,8 @@ class ReimbursementController extends Controller $reimbursements = $user->reimbursements() ->with(['type', 'workflow']) ->filter($request->input()) - ->sort('created_at', 'desc') + ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new Reimbursement())) + ->orderBy('id', 'desc') ->paginate($request->input('per_page', 20)); return ReimbursementResource::collection($reimbursements); diff --git a/app/Models/WorkflowCheck.php b/app/Models/WorkflowCheck.php index 62c3d56..0fb81de 100644 --- a/app/Models/WorkflowCheck.php +++ b/app/Models/WorkflowCheck.php @@ -7,6 +7,7 @@ use App\Traits\HasDateTimeFormatter; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\Relation; +use Illuminate\Support\Facades\DB; /** * 审核申请 @@ -79,4 +80,18 @@ class WorkflowCheck extends Model default => '', }; } + + public static function checkStatusSortBuilder(Model $instance, $column = 'id') + { + $mysqlScript = <<<'MySQL' + CASE + WHEN check_status = 2 THEN 100 + ELSE 0 + END as check_status_weight +MySQL; + + return static::select(DB::raw($mysqlScript)) + ->where('subject_type', $instance->getMorphClass()) + ->whereColumn('subject_id', "{$instance->getTable()}.{$column}"); + } }