编码格式化

main
Jing Li 2024-04-07 13:30:37 +08:00
parent 6a27c971e6
commit c68fe05a28
66 changed files with 285 additions and 251 deletions

View File

@ -35,7 +35,7 @@ abstract class AdminController extends Controller
} }
if (! $result) { if (! $result) {
admin_abort($this->service->getError() ?: __('admin.save') . __('admin.failed')); admin_abort($this->service->getError() ?: __('admin.save').__('admin.failed'));
} }
DB::commit(); DB::commit();
@ -44,7 +44,7 @@ abstract class AdminController extends Controller
throw $this->prepareException($th); throw $this->prepareException($th);
} }
return $this->response()->successMessage(__('admin.save') . __('admin.successfully')); return $this->response()->successMessage(__('admin.save').__('admin.successfully'));
} }
/** /**
@ -64,7 +64,7 @@ abstract class AdminController extends Controller
$result = $this->service->update($this->getPrimaryValue($request), $input); $result = $this->service->update($this->getPrimaryValue($request), $input);
if (! $result) { if (! $result) {
admin_abort($this->service->getError() ?: __('admin.save') . __('admin.failed')); admin_abort($this->service->getError() ?: __('admin.save').__('admin.failed'));
} }
DB::commit(); DB::commit();
@ -73,7 +73,7 @@ abstract class AdminController extends Controller
throw $this->prepareException($th); throw $this->prepareException($th);
} }
return $this->response()->successMessage(__('admin.save') . __('admin.successfully')); return $this->response()->successMessage(__('admin.save').__('admin.successfully'));
} }
/** /**
@ -92,7 +92,7 @@ abstract class AdminController extends Controller
throw $this->prepareException($th); throw $this->prepareException($th);
} }
return $this->response()->successMessage(__('admin.delete') . __('admin.successfully')); return $this->response()->successMessage(__('admin.delete').__('admin.successfully'));
} }
public function getQuickEditItemPath(array $fields = ['*']) public function getQuickEditItemPath(array $fields = ['*'])

View File

@ -44,8 +44,8 @@ class AuthController extends AdminAuthController
} else { } else {
if ($user && Hash::check($request->password, $user->password)) { if ($user && Hash::check($request->password, $user->password)) {
$module = Admin::currentModule(true); $module = Admin::currentModule(true);
$prefix = $module ? $module . '.' : ''; $prefix = $module ? $module.'.' : '';
$token = $user->createToken($prefix . 'admin')->plainTextToken; $token = $user->createToken($prefix.'admin')->plainTextToken;
return $this->response()->success(compact('token'), __('admin.login_successful')); return $this->response()->success(compact('token'), __('admin.login_successful'));
} }

View File

@ -36,7 +36,7 @@ class LedgerController extends AdminController
['label' => '类型', 'content' => $item->type?->name ?? '-'], ['label' => '类型', 'content' => $item->type?->name ?? '-'],
['label' => '销售', 'content' => $item->sales], ['label' => '销售', 'content' => $item->sales],
['label' => $item->ledger_item_type_id === 'ledger_item_type_other' ? '支出' : '兑奖', 'content' => $item->expenditure], ['label' => $item->ledger_item_type_id === 'ledger_item_type_other' ? '支出' : '兑奖', 'content' => $item->expenditure],
])->collapse()->all() ])->collapse()->all(),
]) ])
); );
} }

View File

@ -78,6 +78,7 @@ class SalesStatisticController extends AdminController
return $lotteryTypes->map(function ($lotteryType) use ($statistics) { return $lotteryTypes->map(function ($lotteryType) use ($statistics) {
$statistic = $statistics->get($lotteryType->value); $statistic = $statistics->get($lotteryType->value);
return [ return [
'name' => $lotteryType->name, 'name' => $lotteryType->name,
'sales' => trim_zeros($statistic->sales ?? '0.00'), 'sales' => trim_zeros($statistic->sales ?? '0.00'),

View File

@ -71,6 +71,7 @@ class StoreStatisticController extends AdminController
return $stores->map(function ($store) use ($statistics) { return $stores->map(function ($store) use ($statistics) {
$statistic = $statistics->get($store->id); $statistic = $statistics->get($store->id);
return [ return [
'title' => $store->title, 'title' => $store->title,
'sales' => trim_zeros($statistic->sales ?? '0'), 'sales' => trim_zeros($statistic->sales ?? '0'),

View File

@ -4,12 +4,12 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\HolidayApplyService; use App\Admin\Services\HolidayApplyService;
use App\Enums\CheckStatus;
use App\Enums\EmployeeStatus;
use App\Traits\HasCheckActions;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
use App\Enums\{CheckStatus, EmployeeStatus};
use App\Models\HolidayApply;
use App\Traits\HasCheckActions;
/** /**
* 请假管理 * 请假管理
@ -127,8 +127,8 @@ class HolidayController extends AdminController
'inited' => [ 'inited' => [
'actions' => [ 'actions' => [
['actionType' => 'reload', 'componentId' => $serviceId], ['actionType' => 'reload', 'componentId' => $serviceId],
] ],
] ],
])->body([ ])->body([
$detail, $detail,
amisMake()->Divider(), amisMake()->Divider(),

View File

@ -4,12 +4,12 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\OfficalBusinessService; use App\Admin\Services\OfficalBusinessService;
use App\Enums\CheckStatus;
use App\Enums\EmployeeStatus;
use App\Traits\HasCheckActions;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
use App\Enums\{CheckStatus, EmployeeStatus};
use App\Models\OfficalBusiness;
use App\Traits\HasCheckActions;
/** /**
* 出差报备 * 出差报备
@ -114,8 +114,8 @@ class OfficalBusinessController extends AdminController
'inited' => [ 'inited' => [
'actions' => [ 'actions' => [
['actionType' => 'reload', 'componentId' => $serviceId], ['actionType' => 'reload', 'componentId' => $serviceId],
] ],
] ],
])->body([ ])->body([
$detail, $detail,
amisMake()->Divider(), amisMake()->Divider(),

View File

@ -4,12 +4,12 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\OvertimeApplyService; use App\Admin\Services\OvertimeApplyService;
use App\Enums\CheckStatus;
use App\Enums\EmployeeStatus;
use App\Traits\HasCheckActions;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
use App\Enums\{CheckStatus, EmployeeStatus};
use App\Models\OvertimeApply;
use App\Traits\HasCheckActions;
/** /**
* 加班管理 * 加班管理
@ -116,8 +116,8 @@ class OvertimeController extends AdminController
'inited' => [ 'inited' => [
'actions' => [ 'actions' => [
['actionType' => 'reload', 'componentId' => $serviceId], ['actionType' => 'reload', 'componentId' => $serviceId],
] ],
] ],
])->body([ ])->body([
$detail, $detail,
amisMake()->Divider(), amisMake()->Divider(),

View File

@ -4,12 +4,12 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\EmployeePromotionService; use App\Admin\Services\EmployeePromotionService;
use App\Enums\EmployeeStatus;
use App\Enums\PromotionStatus;
use App\Traits\HasCheckActions;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
use App\Enums\{CheckStatus, PromotionStatus, EmployeeStatus};
use App\Models\EmployeePromotion;
use App\Traits\HasCheckActions;
/** /**
* 升职申请 * 升职申请
@ -125,8 +125,8 @@ class PromotionController extends AdminController
'inited' => [ 'inited' => [
'actions' => [ 'actions' => [
['actionType' => 'reload', 'componentId' => $serviceId], ['actionType' => 'reload', 'componentId' => $serviceId],
] ],
] ],
])->body([ ])->body([
$detail, $detail,
amisMake()->Divider(), amisMake()->Divider(),

View File

@ -5,9 +5,9 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\EmployeeRestService; use App\Admin\Services\EmployeeRestService;
use App\Enums\EmployeeStatus; use App\Enums\EmployeeStatus;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
/** /**
* 休息管理 * 休息管理

View File

@ -4,10 +4,12 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\EmployeeSignService; use App\Admin\Services\EmployeeSignService;
use App\Enums\SignStatus;
use App\Enums\SignTime;
use App\Enums\SignType;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
use App\Enums\{SignType, SignStatus, SignTime};
/** /**
* 考勤打卡 * 考勤打卡
@ -86,12 +88,13 @@ class SignController extends AdminController
amisMake()->TableColumn()->name('position.address')->label(__('employee_sign_log.position')), amisMake()->TableColumn()->name('position.address')->label(__('employee_sign_log.position')),
]) ])
); );
return $this->baseDetail()->title('')->onEvent([ return $this->baseDetail()->title('')->onEvent([
'inited' => [ 'inited' => [
'actions' => [ 'actions' => [
['actionType' => 'reload', 'componentId' => 'employee-sign-log-table'], ['actionType' => 'reload', 'componentId' => 'employee-sign-log-table'],
] ],
] ],
])->body([$detail, amisMake()->Divider()->title(__('employee_sign.log')), $logs]); ])->body([$detail, amisMake()->Divider()->title(__('employee_sign.log')), $logs]);
} }
@ -99,6 +102,7 @@ class SignController extends AdminController
{ {
$type = SignType::options(); $type = SignType::options();
$status = SignStatus::options(); $status = SignStatus::options();
return [ return [
__('employee_sign.date') => data_get($row, 'date'), __('employee_sign.date') => data_get($row, 'date'),
__('employee_sign.store_id') => data_get($row, 'store.title'), __('employee_sign.store_id') => data_get($row, 'store.title'),

View File

@ -12,6 +12,7 @@ class SignLogController extends AdminController
{ {
$with = $request->input('with', []); $with = $request->input('with', []);
$list = EmployeeSignLog::with($with)->filter($request->all())->orderBy('time', 'asc')->get(); $list = EmployeeSignLog::with($with)->filter($request->all())->orderBy('time', 'asc')->get();
return $this->response()->success($list); return $this->response()->success($list);
} }
} }

View File

@ -4,12 +4,13 @@ namespace App\Admin\Controllers\Hr;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\EmployeeSignRepairService; use App\Admin\Services\EmployeeSignRepairService;
use App\Enums\CheckStatus;
use App\Enums\EmployeeStatus;
use App\Enums\SignTime;
use App\Traits\HasCheckActions;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Admin;
use App\Enums\{EmployeeStatus, SignTime, CheckStatus};
use App\Models\EmployeeSignRepair;
use App\Traits\HasCheckActions;
/** /**
* 补卡申请 * 补卡申请
@ -48,7 +49,7 @@ class SignRepairController extends AdminController
amisMake()->SelectControl()->name('check_status')->label(__('employee_sign_repair.check_status')) amisMake()->SelectControl()->name('check_status')->label(__('employee_sign_repair.check_status'))
->options(CheckStatus::options()) ->options(CheckStatus::options())
->columnRatio(3) ->columnRatio(3)
->clearable() ->clearable(),
]), ]),
])) ]))
->columns([ ->columns([
@ -72,7 +73,7 @@ class SignRepairController extends AdminController
->visibleOn('${OR(workflow.check_status == '.CheckStatus::None->value.', workflow.check_status == '.CheckStatus::Cancel->value.', workflow.check_status == '.CheckStatus::Fail->value.')}'), ->visibleOn('${OR(workflow.check_status == '.CheckStatus::None->value.', workflow.check_status == '.CheckStatus::Cancel->value.', workflow.check_status == '.CheckStatus::Fail->value.')}'),
$this->applyAction(), $this->applyAction(),
$this->cancelAction(), $this->cancelAction(),
]) ]),
]); ]);
return $this->baseList($crud); return $this->baseList($crud);
@ -121,8 +122,8 @@ class SignRepairController extends AdminController
'inited' => [ 'inited' => [
'actions' => [ 'actions' => [
['actionType' => 'reload', 'componentId' => $serviceId], ['actionType' => 'reload', 'componentId' => $serviceId],
] ],
] ],
])->body([ ])->body([
$detail, $detail,
amisMake()->Divider(), amisMake()->Divider(),

View File

@ -48,6 +48,7 @@ class AdminUserController extends AdminController
amis()->SwitchControl()->saveImmediately()->mode('inline')->disabledOn('${id === 1}') amis()->SwitchControl()->saveImmediately()->mode('inline')->disabledOn('${id === 1}')
); );
} }
return $column->type('status')->source([ return $column->type('status')->source([
0 => ['label' => '未锁定', 'icon' => 'fa fa-times-circle', 'color' => '#30bf13'], 0 => ['label' => '未锁定', 'icon' => 'fa fa-times-circle', 'color' => '#30bf13'],
1 => ['label' => '已锁定', 'icon' => 'fa fa-check-circle', 'color' => '#f70e47'], 1 => ['label' => '已锁定', 'icon' => 'fa fa-check-circle', 'color' => '#f70e47'],

View File

@ -5,8 +5,10 @@ namespace App\Admin\Controllers\System;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\WorkFlowService; use App\Admin\Services\WorkFlowService;
use App\Enums\CheckType; use App\Enums\CheckType;
use App\Models\Employee;
use App\Models\Keyword; use App\Models\Keyword;
use App\Models\{Employee, WorkflowLog, WorkflowCheck}; use App\Models\WorkflowCheck;
use App\Models\WorkflowLog;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Slowlyo\OwlAdmin\Admin; use Slowlyo\OwlAdmin\Admin;
@ -109,13 +111,15 @@ class WorkflowController extends AdminController
try { try {
DB::beginTransaction(); DB::beginTransaction();
if (!$this->service->apply($model, $employee)) { if (! $this->service->apply($model, $employee)) {
return $this->response()->fail($this->service->getError()); return $this->response()->fail($this->service->getError());
} }
DB::commit(); DB::commit();
return $this->response()->success(); return $this->response()->success();
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
return $this->response()->fail($e->getMessage()); return $this->response()->fail($e->getMessage());
} }
} }
@ -126,13 +130,15 @@ class WorkflowController extends AdminController
try { try {
DB::beginTransaction(); DB::beginTransaction();
if (!$this->service->cancel($model)) { if (! $this->service->cancel($model)) {
return $this->response()->fail($this->service->getError()); return $this->response()->fail($this->service->getError());
} }
DB::commit(); DB::commit();
return $this->response()->success(); return $this->response()->success();
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
return $this->response()->fail($e->getMessage()); return $this->response()->fail($e->getMessage());
} }
} }
@ -141,43 +147,47 @@ class WorkflowController extends AdminController
{ {
$user = Admin::user(); $user = Admin::user();
$employee = Employee::where('admin_user_id', $user->id)->first(); $employee = Employee::where('admin_user_id', $user->id)->first();
if (!$employee) { if (! $employee) {
return $this->response()->fail('当前登录账户未关联员工'); return $this->response()->fail('当前登录账户未关联员工');
} }
$log = WorkflowLog::findOrFail($request->input('id')); $log = WorkflowLog::findOrFail($request->input('id'));
try { try {
DB::beginTransaction(); DB::beginTransaction();
if (!$this->service->check($employee, $log, true)) { if (! $this->service->check($employee, $log, true)) {
return $this->response()->fail($this->service->getError()); return $this->response()->fail($this->service->getError());
} }
DB::commit(); DB::commit();
return $this->response()->success(); return $this->response()->success();
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
return $this->response()->fail($e->getMessage()); return $this->response()->fail($e->getMessage());
} }
} }
public function fail(Request $request) public function fail(Request $request)
{ {
if (!$request->input('remarks')) { if (! $request->input('remarks')) {
return $this->response()->fail('请填写未通过原因'); return $this->response()->fail('请填写未通过原因');
} }
$user = Admin::user(); $user = Admin::user();
$employee = Employee::where('admin_user_id', $user->id)->first(); $employee = Employee::where('admin_user_id', $user->id)->first();
if (!$employee) { if (! $employee) {
return $this->response()->fail('当前登录账户未关联员工'); return $this->response()->fail('当前登录账户未关联员工');
} }
$log = WorkflowLog::findOrFail($request->input('id')); $log = WorkflowLog::findOrFail($request->input('id'));
try { try {
DB::beginTransaction(); DB::beginTransaction();
if (!$this->service->check($employee, $log, false, ['remarks' => $request->input('remarks')])) { if (! $this->service->check($employee, $log, false, ['remarks' => $request->input('remarks')])) {
return $this->response()->fail($this->service->getError()); return $this->response()->fail($this->service->getError());
} }
DB::commit(); DB::commit();
return $this->response()->success(); return $this->response()->success();
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
return $this->response()->fail($e->getMessage()); return $this->response()->fail($e->getMessage());
} }
} }
@ -185,6 +195,7 @@ class WorkflowController extends AdminController
public function logs(Request $request) public function logs(Request $request)
{ {
$list = WorkflowLog::with(['checkUser'])->where('check_id', $request->input('id'))->sort()->get(); $list = WorkflowLog::with(['checkUser'])->where('check_id', $request->input('id'))->sort()->get();
return $this->response()->success($list); return $this->response()->success($list);
} }

View File

@ -2,8 +2,8 @@
namespace App\Admin\Filters; namespace App\Admin\Filters;
use EloquentFilter\ModelFilter;
use Carbon\Carbon; use Carbon\Carbon;
use EloquentFilter\ModelFilter;
class EmployeeSignLogFilter extends ModelFilter class EmployeeSignLogFilter extends ModelFilter
{ {

View File

@ -2,8 +2,8 @@
namespace App\Admin\Filters; namespace App\Admin\Filters;
use EloquentFilter\ModelFilter;
use Carbon\Carbon; use Carbon\Carbon;
use EloquentFilter\ModelFilter;
class EmployeeSignRepairFilter extends ModelFilter class EmployeeSignRepairFilter extends ModelFilter
{ {

View File

@ -3,7 +3,6 @@
namespace App\Admin\Filters; namespace App\Admin\Filters;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
use Carbon\Carbon;
class HolidayApplyFilter extends ModelFilter class HolidayApplyFilter extends ModelFilter
{ {

View File

@ -31,7 +31,7 @@ class LedgerFilter extends ModelFilter
return; return;
} }
$this->related('store', function($query) use ($provinceCode, $cityCode) { $this->related('store', function ($query) use ($provinceCode, $cityCode) {
$query->when($provinceCode, fn ($query) => $query->where('region->provinceCode', $provinceCode)) $query->when($provinceCode, fn ($query) => $query->where('region->provinceCode', $provinceCode))
->when($cityCode, fn ($query) => $query->where('region->cityCode', $cityCode)); ->when($cityCode, fn ($query) => $query->where('region->cityCode', $cityCode));
}); });

View File

@ -24,7 +24,7 @@ class LedgerItemFilter extends ModelFilter
return; return;
} }
$this->related('store', function($query) use ($provinceCode, $cityCode) { $this->related('store', function ($query) use ($provinceCode, $cityCode) {
$query->when($provinceCode, fn ($query) => $query->where('region->provinceCode', $provinceCode)) $query->when($provinceCode, fn ($query) => $query->where('region->provinceCode', $provinceCode))
->when($cityCode, fn ($query) => $query->where('region->cityCode', $cityCode)); ->when($cityCode, fn ($query) => $query->where('region->cityCode', $cityCode));
}); });

View File

@ -2,8 +2,8 @@
namespace App\Admin\Filters; namespace App\Admin\Filters;
use EloquentFilter\ModelFilter;
use Carbon\Carbon; use Carbon\Carbon;
use EloquentFilter\ModelFilter;
class OfficalBusinessFilter extends ModelFilter class OfficalBusinessFilter extends ModelFilter
{ {

View File

@ -2,8 +2,8 @@
namespace App\Admin\Filters; namespace App\Admin\Filters;
use EloquentFilter\ModelFilter;
use Carbon\Carbon; use Carbon\Carbon;
use EloquentFilter\ModelFilter;
class OvertimeApplyFilter extends ModelFilter class OvertimeApplyFilter extends ModelFilter
{ {

View File

@ -3,7 +3,6 @@
namespace App\Admin\Filters; namespace App\Admin\Filters;
use EloquentFilter\ModelFilter; use EloquentFilter\ModelFilter;
use Carbon\Carbon;
class WorkflowCheckFilter extends ModelFilter class WorkflowCheckFilter extends ModelFilter
{ {

View File

@ -3,8 +3,8 @@
namespace App\Admin\Middleware; namespace App\Admin\Middleware;
use Closure; use Closure;
use Slowlyo\OwlAdmin\Admin;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Slowlyo\OwlAdmin\Admin;
class Authenticate class Authenticate
{ {

View File

@ -3,10 +3,12 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\EmployeePromotionFilter; use App\Admin\Filters\EmployeePromotionFilter;
use App\Models\{EmployeePromotion, Employee};
use Illuminate\Support\Facades\{Validator, DB};
use App\Admin\WorkflowService; use App\Admin\WorkflowService;
use App\Enums\PromotionStatus; use App\Enums\PromotionStatus;
use App\Models\Employee;
use App\Models\EmployeePromotion;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
class EmployeePromotionService extends BaseService class EmployeePromotionService extends BaseService
{ {
@ -22,6 +24,7 @@ class EmployeePromotionService extends BaseService
if (isset($data['employee_id'])) { if (isset($data['employee_id'])) {
$data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id'); $data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id');
} }
return $data; return $data;
} }
@ -82,6 +85,7 @@ class EmployeePromotionService extends BaseService
DB::commit(); DB::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
return $this->setError($e->getMessage()); return $this->setError($e->getMessage());
} }
@ -101,6 +105,7 @@ class EmployeePromotionService extends BaseService
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -72,7 +72,7 @@ class EmployeeService extends BaseService
public function resloveData($data, $model = null) public function resloveData($data, $model = null)
{ {
$adminUserService = AdminUserService::make(); $adminUserService = AdminUserService::make();
if (!$model) { if (! $model) {
// 添加管理员信息 // 添加管理员信息
if (! $adminUserService->store(Arr::only($data, ['username', 'password', 'confirm_password', 'name']))) { if (! $adminUserService->store(Arr::only($data, ['username', 'password', 'confirm_password', 'name']))) {
$this->setError($adminUserService->getError()); $this->setError($adminUserService->getError());

View File

@ -3,12 +3,11 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\EmployeeSignRepairFilter; use App\Admin\Filters\EmployeeSignRepairFilter;
use App\Models\{EmployeeSignRepair, WorkflowCheck};
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use App\Models\Employee; use App\Models\Employee;
use App\Enums\CheckStatus; use App\Models\EmployeeSignRepair;
use App\Models\WorkflowCheck;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class EmployeeSignRepairService extends BaseService class EmployeeSignRepairService extends BaseService
{ {
@ -37,9 +36,10 @@ class EmployeeSignRepairService extends BaseService
public function resloveData($data, $model = null) public function resloveData($data, $model = null)
{ {
// 获取员工所在的门店 // 获取员工所在的门店
if (!isset($data['store_id']) && isset($data['employee_id'])) { if (! isset($data['store_id']) && isset($data['employee_id'])) {
$data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id'); $data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id');
} }
return $data; return $data;
} }
@ -64,20 +64,21 @@ class EmployeeSignRepairService extends BaseService
'reason' => ['required'], 'reason' => ['required'],
]; ];
$updateRules = [ $updateRules = [
'date' => [$unique->ignore($model?->id)] 'date' => [$unique->ignore($model?->id)],
]; ];
$message = [ $message = [
'date.required' => __('employee_sign_repair.date') . '必填', 'date.required' => __('employee_sign_repair.date').'必填',
'store_id.required' => __('employee_sign_repair.store_id') . '必填', 'store_id.required' => __('employee_sign_repair.store_id').'必填',
'employee_id.required' => __('employee_sign_repair.employee_id') . '必填', 'employee_id.required' => __('employee_sign_repair.employee_id').'必填',
'reason.required' => __('employee_sign_repair.reason') . '必填', 'reason.required' => __('employee_sign_repair.reason').'必填',
'repair_type.required' => __('employee_sign_repair.repair_type') . '必填', 'repair_type.required' => __('employee_sign_repair.repair_type').'必填',
'date.unique' => __('employee_sign_repair.date') . ' 已经申请过了' 'date.unique' => __('employee_sign_repair.date').' 已经申请过了',
]; ];
$validator = Validator::make($data, $model ? $updateRules : $createRules, $message); $validator = Validator::make($data, $model ? $updateRules : $createRules, $message);
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -3,13 +3,13 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\EmployeeSignFilter; use App\Admin\Filters\EmployeeSignFilter;
use App\Models\EmployeeSign;
use App\Models\EmployeeSignLog;
use App\Models\EmployeeRest;
use App\Models\Employee;
use App\Enums\SignType;
use App\Enums\SignStatus; use App\Enums\SignStatus;
use App\Enums\SignTime; use App\Enums\SignTime;
use App\Enums\SignType;
use App\Models\Employee;
use App\Models\EmployeeRest;
use App\Models\EmployeeSign;
use App\Models\EmployeeSignLog;
class EmployeeSignService extends BaseService class EmployeeSignService extends BaseService
{ {
@ -43,7 +43,7 @@ class EmployeeSignService extends BaseService
$firstTime = null; $firstTime = null;
if ($item = $logs->where('sign_time', SignTime::Morning)->sortBy('time')->first()) { if ($item = $logs->where('sign_time', SignTime::Morning)->sortBy('time')->first()) {
$firstTime = $item->time; $firstTime = $item->time;
$status ++; $status++;
if ($item->sign_type == SignType::Outside) { if ($item->sign_type == SignType::Outside) {
$remarks = $item->remarks; $remarks = $item->remarks;
} }
@ -52,7 +52,7 @@ class EmployeeSignService extends BaseService
$lastTime = null; $lastTime = null;
if ($item = $logs->where('sign_time', SignTime::Afternoon)->sortByDesc('time')->first()) { if ($item = $logs->where('sign_time', SignTime::Afternoon)->sortByDesc('time')->first()) {
$lastTime = $item->time; $lastTime = $item->time;
$status ++; $status++;
if ($item->sign_type == SignType::Outside) { if ($item->sign_type == SignType::Outside) {
$remarks = $item->remarks; $remarks = $item->remarks;
} }
@ -68,7 +68,7 @@ class EmployeeSignService extends BaseService
'sign_type' => $type, 'sign_type' => $type,
'first_time' => $firstTime, 'first_time' => $firstTime,
'last_time' => $lastTime, 'last_time' => $lastTime,
'sign_status' => match($status) { 'sign_status' => match ($status) {
0 => SignStatus::Absent, 0 => SignStatus::Absent,
1 => SignStatus::Lose, 1 => SignStatus::Lose,
2 => SignStatus::Normal, 2 => SignStatus::Normal,

View File

@ -3,11 +3,10 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\HolidayApplyFilter; use App\Admin\Filters\HolidayApplyFilter;
use App\Models\{HolidayApply, Employee}; use App\Models\Employee;
use Illuminate\Validation\Rule; use App\Models\HolidayApply;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
class HolidayApplyService extends BaseService class HolidayApplyService extends BaseService
{ {
@ -20,15 +19,16 @@ class HolidayApplyService extends BaseService
public function resloveData($data, $model = null) public function resloveData($data, $model = null)
{ {
// 获取员工所在的门店 // 获取员工所在的门店
if (!isset($data['store_id']) && isset($data['employee_id'])) { if (! isset($data['store_id']) && isset($data['employee_id'])) {
$data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id'); $data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id');
} }
// 处理日期 // 处理日期
if (isset($data['date_range']) && !isset($data['start_at']) && !isset($data['end_at'])) { if (isset($data['date_range']) && ! isset($data['start_at']) && ! isset($data['end_at'])) {
$dates = explode(',', $data['date_range']); $dates = explode(',', $data['date_range']);
$data['start_at'] = Carbon::createFromFormat('Y-m-d', data_get($dates, 0))->startOfDay(); $data['start_at'] = Carbon::createFromFormat('Y-m-d', data_get($dates, 0))->startOfDay();
$data['end_at'] = Carbon::createFromFormat('Y-m-d', data_get($dates, 1))->endOfDay(); $data['end_at'] = Carbon::createFromFormat('Y-m-d', data_get($dates, 1))->endOfDay();
} }
return $data; return $data;
} }
@ -48,6 +48,7 @@ class HolidayApplyService extends BaseService
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -3,11 +3,10 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\OfficalBusinessFilter; use App\Admin\Filters\OfficalBusinessFilter;
use App\Models\{OfficalBusiness, Employee}; use App\Models\Employee;
use Illuminate\Validation\Rule; use App\Models\OfficalBusiness;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
class OfficalBusinessService extends BaseService class OfficalBusinessService extends BaseService
{ {
@ -20,7 +19,7 @@ class OfficalBusinessService extends BaseService
public function resloveData($data, $model = null) public function resloveData($data, $model = null)
{ {
// 获取员工所在的门店 // 获取员工所在的门店
if (!isset($data['store_id']) && isset($data['employee_id'])) { if (! isset($data['store_id']) && isset($data['employee_id'])) {
$data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id'); $data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id');
} }
if (isset($data['date_range'])) { if (isset($data['date_range'])) {
@ -30,6 +29,7 @@ class OfficalBusinessService extends BaseService
$data['start_at'] = $start; $data['start_at'] = $start;
$data['end_at'] = $end; $data['end_at'] = $end;
} }
return $data; return $data;
} }
@ -48,6 +48,7 @@ class OfficalBusinessService extends BaseService
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -3,11 +3,10 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\OvertimeApplyFilter; use App\Admin\Filters\OvertimeApplyFilter;
use App\Models\{OvertimeApply, Employee}; use App\Models\Employee;
use Illuminate\Validation\Rule; use App\Models\OvertimeApply;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
class OvertimeApplyService extends BaseService class OvertimeApplyService extends BaseService
{ {
@ -20,7 +19,7 @@ class OvertimeApplyService extends BaseService
public function resloveData($data, $model = null) public function resloveData($data, $model = null)
{ {
// 获取员工所在的门店 // 获取员工所在的门店
if (!isset($data['store_id']) && isset($data['employee_id'])) { if (! isset($data['store_id']) && isset($data['employee_id'])) {
$data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id'); $data['store_id'] = Employee::where('id', $data['employee_id'])->value('store_id');
} }
if (isset($data['datetime_range'])) { if (isset($data['datetime_range'])) {
@ -32,6 +31,7 @@ class OvertimeApplyService extends BaseService
$data['date'] = $start->format('Y-m-d'); $data['date'] = $start->format('Y-m-d');
$data['hours'] = $start->diffInHours($end); $data['hours'] = $start->diffInHours($end);
} }
return $data; return $data;
} }
@ -49,6 +49,7 @@ class OvertimeApplyService extends BaseService
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -5,7 +5,6 @@ namespace App\Admin\Services;
use App\Admin\Filters\EmployeeFilter; use App\Admin\Filters\EmployeeFilter;
use App\Models\Employee; use App\Models\Employee;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class StoreEmployeeService extends BaseService class StoreEmployeeService extends BaseService
{ {
@ -44,15 +43,18 @@ class StoreEmployeeService extends BaseService
$employees = Employee::whereIn('id', $data['employee_id'])->get(); $employees = Employee::whereIn('id', $data['employee_id'])->get();
foreach ($employees as $employee) { foreach ($employees as $employee) {
if ($employee->store_id > 0 && $employee->store_id != $storeId) { if ($employee->store_id > 0 && $employee->store_id != $storeId) {
$this->setError($employee->name . ' 已经有门店了'); $this->setError($employee->name.' 已经有门店了');
return false; return false;
} }
if ($employee->master_store_id > 0) { if ($employee->master_store_id > 0) {
$this->setError($employee->name . ' 已经是店长了'); $this->setError($employee->name.' 已经是店长了');
return false; return false;
} }
} }
Employee::whereIn('id', $data['employee_id'])->update(['store_id' => $storeId]); Employee::whereIn('id', $data['employee_id'])->update(['store_id' => $storeId]);
return true; return true;
} }
@ -60,6 +62,7 @@ class StoreEmployeeService extends BaseService
{ {
$id = explode(',', $ids); $id = explode(',', $ids);
Employee::whereIn('id', $id)->update(['store_id' => 0]); Employee::whereIn('id', $id)->update(['store_id' => 0]);
return true; return true;
} }
@ -75,6 +78,7 @@ class StoreEmployeeService extends BaseService
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -5,7 +5,6 @@ namespace App\Admin\Services;
use App\Admin\Filters\StoreFilter; use App\Admin\Filters\StoreFilter;
use App\Models\Employee; use App\Models\Employee;
use App\Models\Store; use App\Models\Store;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;

View File

@ -2,11 +2,17 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Enums\{CheckType, CheckStatus}; use App\Contracts\Checkable;
use App\Models\{Employee, Store, Keyword, Workflow, WorkflowCheck, WorkflowLog}; use App\Enums\CheckStatus;
use App\Enums\CheckType;
use App\Models\Employee;
use App\Models\Keyword;
use App\Models\Store;
use App\Models\Workflow;
use App\Models\WorkflowCheck;
use App\Models\WorkflowLog;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use App\Contracts\Checkable;
class WorkFlowService extends BaseService class WorkFlowService extends BaseService
{ {
@ -23,8 +29,7 @@ class WorkFlowService extends BaseService
* *
* @param WorkflowCheck $check 待审核记录 * @param WorkflowCheck $check 待审核记录
* @param Employee $user 申请人 * @param Employee $user 申请人
* * @return bool true: 成功, false: 失败, $this->getError(): 错误消息
* @return boolean true: 成功, false: 失败, $this->getError(): 错误消息
*/ */
public function apply(WorkflowCheck $check, Employee $user) public function apply(WorkflowCheck $check, Employee $user)
{ {
@ -37,8 +42,9 @@ class WorkFlowService extends BaseService
$workflow = Workflow::where('key', $check->key)->first(); $workflow = Workflow::where('key', $check->key)->first();
// 没有配置审核流程, 直接通过 // 没有配置审核流程, 直接通过
if (!$workflow || !$workflow->config) { if (! $workflow || ! $workflow->config) {
$this->success(); $this->success();
return true; return true;
} }
$jobs = Keyword::where('parent_key', 'job')->get(); $jobs = Keyword::where('parent_key', 'job')->get();
@ -49,28 +55,28 @@ class WorkFlowService extends BaseService
'check_status' => CheckStatus::Processing, 'check_status' => CheckStatus::Processing,
'employee_id' => $user->id, 'employee_id' => $user->id,
]); ]);
foreach($config as $item) { foreach ($config as $item) {
$checkValue = ''; $checkValue = '';
$checkName = ''; $checkName = '';
// 职位审核 // 职位审核
if ($item['type'] == CheckType::Job->value) { if ($item['type'] == CheckType::Job->value) {
// 没有门店, 则跳过 // 没有门店, 则跳过
if (!$user->store_id) { if (! $user->store_id) {
continue; continue;
} }
// 所属门店的职位审核 // 所属门店的职位审核
$store = Store::findOrFail($user->store_id); $store = Store::findOrFail($user->store_id);
$job = $jobs->firstWhere('key', $item['value']); $job = $jobs->firstWhere('key', $item['value']);
$checkValue = $store->id . '-' . $job->key; $checkValue = $store->id.'-'.$job->key;
$checkName = $store->title . '-' . $job->name; $checkName = $store->title.'-'.$job->name;
} }
// 指定用户审核 // 指定用户审核
else if ($item['type'] == CheckType::User->value) { elseif ($item['type'] == CheckType::User->value) {
$checkUser = Employee::findOrFail($item['value']); $checkUser = Employee::findOrFail($item['value']);
$checkValue = $checkUser->id; $checkValue = $checkUser->id;
$checkName = $checkUser->name; $checkName = $checkUser->name;
} else { } else {
return $this->setError('未知的审核类型: ' . $item['type']); return $this->setError('未知的审核类型: '.$item['type']);
break; break;
} }
$check->logs()->create([ $check->logs()->create([
@ -78,11 +84,12 @@ class WorkFlowService extends BaseService
'check_type' => $item['type'], 'check_type' => $item['type'],
'check_value' => $checkValue, 'check_value' => $checkValue,
'check_name' => $checkName, 'check_name' => $checkName,
'sort' => $item['sort'] 'sort' => $item['sort'],
]); ]);
} }
// 开启第一个审核流程 // 开启第一个审核流程
$this->next($check); $this->next($check);
return true; return true;
} }
@ -91,8 +98,9 @@ class WorkFlowService extends BaseService
$check->update([ $check->update([
'check_status' => CheckStatus::Success, 'check_status' => CheckStatus::Success,
'checked_at' => data_get($options, 'checked_at', now()), 'checked_at' => data_get($options, 'checked_at', now()),
'check_remarks' => data_get($options, 'remarks') 'check_remarks' => data_get($options, 'remarks'),
]); ]);
return true; return true;
} }
@ -103,6 +111,7 @@ class WorkFlowService extends BaseService
'check_remarks' => data_get($options, 'remarks'), 'check_remarks' => data_get($options, 'remarks'),
'checked_at' => data_get($options, 'checked_at', now()), 'checked_at' => data_get($options, 'checked_at', now()),
]); ]);
return true; return true;
} }
@ -110,7 +119,6 @@ class WorkFlowService extends BaseService
* 取消审核 * 取消审核
* 1. 删除未审核的流程 * 1. 删除未审核的流程
* 2. 更新申请记录的状态 * 2. 更新申请记录的状态
*
*/ */
public function cancel(WorkflowCheck $check) public function cancel(WorkflowCheck $check)
{ {
@ -127,16 +135,16 @@ class WorkFlowService extends BaseService
* *
* @param Employee $user 审核人 * @param Employee $user 审核人
* @param WorkflowLog $log 审核流水记录 * @param WorkflowLog $log 审核流水记录
* @param boolean $status 通过/不通过 * @param bool $status 通过/不通过
* @param array $options {remarks: 不通过原因, time: 审核时间(默认当前时间)} * @param array $options {remarks: 不通过原因, time: 审核时间(默认当前时间)}
* @return boolean * @return bool
*/ */
public function check(Employee $user, WorkflowLog $log, $status, $options = []) public function check(Employee $user, WorkflowLog $log, $status, $options = [])
{ {
if ($log->check_status != CheckStatus::Processing) { if ($log->check_status != CheckStatus::Processing) {
return $this->setError('不可操作, 等待前面的审核完成'); return $this->setError('不可操作, 等待前面的审核完成');
} }
if (!$this->authCheck($user, $log)) { if (! $this->authCheck($user, $log)) {
return $this->setError('没有权限'); return $this->setError('没有权限');
} }
$attributes = ['check_status' => $status ? CheckStatus::Success : CheckStatus::Fail]; $attributes = ['check_status' => $status ? CheckStatus::Success : CheckStatus::Fail];
@ -156,8 +164,7 @@ class WorkFlowService extends BaseService
/** /**
* 开启下一个审核流程 * 开启下一个审核流程
* *
* @param WorkflowCheck $check * @return bool
* @return boolean
*/ */
public function next(WorkflowCheck $check) public function next(WorkflowCheck $check)
{ {
@ -186,15 +193,16 @@ class WorkFlowService extends BaseService
// } // }
if ($log->check_type == CheckType::User && $log->check_value == $user->id) { if ($log->check_type == CheckType::User && $log->check_value == $user->id) {
return true; return true;
} else if ($log->check_type == CheckType::Job) { } elseif ($log->check_type == CheckType::Job) {
$jobs = $user->jobs; $jobs = $user->jobs;
foreach($jobs as $job) { foreach ($jobs as $job) {
if ($log->check_value == $user->store_id . '-' . $job->key) { if ($log->check_value == $user->store_id.'-'.$job->key) {
return true; return true;
} }
} }
} }
return false; return false;
} }
@ -202,7 +210,7 @@ class WorkFlowService extends BaseService
{ {
if (isset($data['config'])) { if (isset($data['config'])) {
foreach ($data['config'] as $key => &$item) { foreach ($data['config'] as $key => &$item) {
if (!$item) { if (! $item) {
$data['config'] = null; $data['config'] = null;
break; break;
} }

View File

@ -12,8 +12,8 @@ use App\Admin\Controllers\Finance\StoreStatisticController;
use App\Admin\Controllers\Hr\EmployeeController; use App\Admin\Controllers\Hr\EmployeeController;
use App\Admin\Controllers\Hr\HolidayController; use App\Admin\Controllers\Hr\HolidayController;
use App\Admin\Controllers\Hr\OfficalBusinessController; use App\Admin\Controllers\Hr\OfficalBusinessController;
use App\Admin\Controllers\Hr\PromotionController;
use App\Admin\Controllers\Hr\OvertimeController; use App\Admin\Controllers\Hr\OvertimeController;
use App\Admin\Controllers\Hr\PromotionController;
use App\Admin\Controllers\Hr\RestController; use App\Admin\Controllers\Hr\RestController;
use App\Admin\Controllers\Hr\SignController; use App\Admin\Controllers\Hr\SignController;
use App\Admin\Controllers\Hr\SignLogController; use App\Admin\Controllers\Hr\SignLogController;

View File

@ -2,8 +2,8 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Admin\Services\EmployeeSignService; use App\Admin\Services\EmployeeSignService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class EmployeeSign extends Command class EmployeeSign extends Command

View File

@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Complaint extends Model class Complaint extends Model
{ {
use Filterable, HasFactory, HasDateTimeFormatter; use Filterable, HasDateTimeFormatter, HasFactory;
protected $attributes = [ protected $attributes = [
'anonymous' => false, 'anonymous' => false,

View File

@ -18,7 +18,7 @@ use Slowlyo\OwlAdmin\Models\AdminUser;
*/ */
class Employee extends Model implements AuthenticatableContract class Employee extends Model implements AuthenticatableContract
{ {
use Authenticatable, HasApiTokens, Filterable, HasDateTimeFormatter; use Authenticatable, Filterable, HasApiTokens, HasDateTimeFormatter;
const JOB_KEY = 'job'; const JOB_KEY = 'job';

View File

@ -2,18 +2,18 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Enums\PromotionStatus; use App\Enums\PromotionStatus;
use App\Traits\HasCheckable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use App\Traits\HasCheckable; use Illuminate\Database\Eloquent\Model;
/** /**
* 员工升职申请 * 员工升职申请
*/ */
class EmployeePromotion extends Model class EmployeePromotion extends Model
{ {
use Filterable, HasDateTimeFormatter, HasCheckable; use Filterable, HasCheckable, HasDateTimeFormatter;
protected $fillable = ['store_id', 'employee_id', 'invitor_id', 'job_id', 'promotion_status', 'employee_data', 'remarks']; protected $fillable = ['store_id', 'employee_id', 'invitor_id', 'job_id', 'promotion_status', 'employee_data', 'remarks'];

View File

@ -5,15 +5,15 @@ namespace App\Models;
use App\Enums\SignStatus; use App\Enums\SignStatus;
use App\Enums\SignType; use App\Enums\SignType;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
/** /**
* 员工-打卡情况 * 员工-打卡情况
*/ */
class EmployeeSign extends Model class EmployeeSign extends Model
{ {
use HasDateTimeFormatter, Filterable; use Filterable, HasDateTimeFormatter;
protected $table = 'employee_sign_dates'; protected $table = 'employee_sign_dates';

View File

@ -2,19 +2,19 @@
namespace App\Models; namespace App\Models;
use App\Enums\{SignType, SignTime}; use App\Enums\SignTime;
use Illuminate\Database\Eloquent\Model; use App\Enums\SignType;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use App\Admin\Filters\EmployeeSignLogFilter; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/** /**
* 员工-打卡流水 * 员工-打卡流水
*/ */
class EmployeeSignLog extends Model class EmployeeSignLog extends Model
{ {
use HasDateTimeFormatter, HasFactory, Filterable; use Filterable, HasDateTimeFormatter, HasFactory;
protected $table = 'employee_sign_logs'; protected $table = 'employee_sign_logs';

View File

@ -2,18 +2,18 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Enums\{SignTime}; use App\Enums\{SignTime};
use App\Traits\HasCheckable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use App\Traits\HasCheckable; use Illuminate\Database\Eloquent\Model;
/** /**
* 补卡申请 * 补卡申请
*/ */
class EmployeeSignRepair extends Model class EmployeeSignRepair extends Model
{ {
use HasDateTimeFormatter, Filterable, HasCheckable; use Filterable, HasCheckable, HasDateTimeFormatter;
protected $table = 'employee_sign_repairs'; protected $table = 'employee_sign_repairs';

View File

@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Feedback extends Model class Feedback extends Model
{ {
use Filterable, HasFactory, HasDateTimeFormatter; use Filterable, HasDateTimeFormatter, HasFactory;
protected $fillable = [ protected $fillable = [
'employee_id', 'content', 'employee_id', 'content',

View File

@ -2,11 +2,11 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use App\Enums\{CheckStatus};
use App\Traits\HasCheckable; use App\Traits\HasCheckable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use App\Enums\{CheckStatus}; use Illuminate\Database\Eloquent\Model;
/** /**
* 请假申请 * 请假申请

View File

@ -13,7 +13,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
class Ledger extends Model class Ledger extends Model
{ {
use Filterable, HasDateTimeFormatter, HasFactory, HasCheckable; use Filterable, HasCheckable, HasDateTimeFormatter, HasFactory;
protected $appends = ['ledger_difference']; protected $appends = ['ledger_difference'];
@ -53,6 +53,7 @@ class Ledger extends Model
if (is_numeric($attributes['ledger_amount'])) { if (is_numeric($attributes['ledger_amount'])) {
return bcsub($attributes['handover_amount'], $attributes['ledger_amount'], 2); return bcsub($attributes['handover_amount'], $attributes['ledger_amount'], 2);
} }
return null; return null;
}, },
); );

View File

@ -4,7 +4,6 @@ namespace App\Models;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;

View File

@ -2,18 +2,18 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use App\Enums\{CheckStatus};
use App\Traits\HasCheckable; use App\Traits\HasCheckable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use App\Enums\{CheckStatus}; use Illuminate\Database\Eloquent\Model;
/** /**
* 出差报备 * 出差报备
*/ */
class OfficalBusiness extends Model class OfficalBusiness extends Model
{ {
use HasCheckable, HasDateTimeFormatter, Filterable; use Filterable, HasCheckable, HasDateTimeFormatter;
protected $table = 'offical_business'; protected $table = 'offical_business';

View File

@ -2,18 +2,18 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use App\Enums\{CheckStatus};
use App\Traits\HasCheckable; use App\Traits\HasCheckable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use App\Enums\{CheckStatus}; use Illuminate\Database\Eloquent\Model;
/** /**
* 加班申请 * 加班申请
*/ */
class OvertimeApply extends Model class OvertimeApply extends Model
{ {
use Filterable, HasDateTimeFormatter, HasCheckable; use Filterable, HasCheckable, HasDateTimeFormatter;
protected $fillable = ['store_id', 'employee_id', 'date', 'start_at', 'end_at', 'hours', 'reason']; protected $fillable = ['store_id', 'employee_id', 'date', 'start_at', 'end_at', 'hours', 'reason'];

View File

@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Reimbursement extends Model class Reimbursement extends Model
{ {
use Filterable, HasDateTimeFormatter, HasFactory, HasCheckable; use Filterable, HasCheckable, HasDateTimeFormatter, HasFactory;
protected $fillable = [ protected $fillable = [
'employee_id', 'employee_id',

View File

@ -6,8 +6,8 @@ use App\Enums\BusinessStatus;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/** /**
* 门店 * 门店

View File

@ -2,7 +2,6 @@
namespace App\Models; namespace App\Models;
use App\Enums\StoreMasterCommissionApprovalStatus;
use App\Traits\HasCheckable; use App\Traits\HasCheckable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
@ -12,7 +11,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
class StoreMasterCommission extends Model class StoreMasterCommission extends Model
{ {
use Filterable, HasDateTimeFormatter, HasFactory, HasCheckable; use Filterable, HasCheckable, HasDateTimeFormatter, HasFactory;
protected $fillable = [ protected $fillable = [
'month', 'month',

View File

@ -2,19 +2,17 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Employee;
use App\Enums\CheckStatus; use App\Enums\CheckStatus;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
/** /**
* 审核申请 * 审核申请
*/ */
class WorkflowCheck extends Model class WorkflowCheck extends Model
{ {
use HasDateTimeFormatter, Filterable; use Filterable, HasDateTimeFormatter;
protected $attributes = [ protected $attributes = [
'check_status' => CheckStatus::None, 'check_status' => CheckStatus::None,

View File

@ -28,7 +28,7 @@ trait HasCheckActions
->label('取消审核') ->label('取消审核')
->level('link') ->level('link')
->api(amisMake()->BaseApi()->url(admin_url('api/workflow/cancel'))->method('post')->data([ ->api(amisMake()->BaseApi()->url(admin_url('api/workflow/cancel'))->method('post')->data([
'id' => '${workflow.id}' 'id' => '${workflow.id}',
])) ]))
->confirmText(__('admin.confirm')) ->confirmText(__('admin.confirm'))
->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}'); ->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}');
@ -40,7 +40,7 @@ trait HasCheckActions
->AjaxAction() ->AjaxAction()
->label('审核通过') ->label('审核通过')
->level('link') ->level('link')
->api('post:' . admin_url('api/workflow/success?id=${id}')) ->api('post:'.admin_url('api/workflow/success?id=${id}'))
->confirmText(__('admin.confirm')) ->confirmText(__('admin.confirm'))
->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}'); ->visibleOn('${workflow.check_status == '.CheckStatus::Processing->value.'}');
} }

View File

@ -2,9 +2,7 @@
namespace App\Traits; namespace App\Traits;
use App\Enums\CheckStatus; use App\Models\WorkflowCheck;
use App\Models\{WorkflowCheck, Employee};
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Str; use Illuminate\Support\Str;
trait HasCheckable trait HasCheckable

View File

@ -15,7 +15,7 @@ if (! function_exists('trim_zeros')) {
$pos = strpos($var, '.'); $pos = strpos($var, '.');
if ($pos !== false) { if ($pos !== false) {
if ($pos === 0) { if ($pos === 0) {
$var = "0".$var; $var = '0'.$var;
} }
$var = rtrim(rtrim($var, '0'), '.'); $var = rtrim(rtrim($var, '0'), '.');
} }

View File

@ -74,7 +74,7 @@ return [
'image' => 'temporary/images', 'image' => 'temporary/images',
'file' => 'temporary/file', 'file' => 'temporary/file',
'rich' => 'temporary/rich', 'rich' => 'temporary/rich',
] ],
], ],
'https' => env('ADMIN_HTTPS', false), 'https' => env('ADMIN_HTTPS', false),

View File

@ -3,10 +3,8 @@
namespace Database\Factories; namespace Database\Factories;
use App\Enums\ComplaintStatus; use App\Enums\ComplaintStatus;
use App\Models\Employee;
use App\Models\Complaint; use App\Models\Complaint;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Arr;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Complaint> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Complaint>

View File

@ -30,6 +30,7 @@ class EmployeeFactory extends Factory
'password' => AdminUser::where('id', 1)->value('password'), 'password' => AdminUser::where('id', 1)->value('password'),
'name' => $name, 'name' => $name,
]); ]);
return [ return [
'name' => $name, 'name' => $name,
'phone' => $phone, 'phone' => $phone,

View File

@ -2,10 +2,11 @@
namespace Database\Factories; namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use App\Enums\SignTime;
use App\Models\EmployeeSignLog; use App\Enums\SignType;
use App\Models\Employee; use App\Models\Employee;
use App\Enums\{SignType, SignTime}; use App\Models\EmployeeSignLog;
use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\EmployeeSign> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\EmployeeSign>
@ -13,6 +14,7 @@ use App\Enums\{SignType, SignTime};
class EmployeeSignLogFactory extends Factory class EmployeeSignLogFactory extends Factory
{ {
protected $model = EmployeeSignLog::class; protected $model = EmployeeSignLog::class;
/** /**
* Define the model's default state. * Define the model's default state.
* *
@ -23,6 +25,7 @@ class EmployeeSignLogFactory extends Factory
$employee = Employee::where('store_id', '>', 0)->inRandomOrder()->first(); $employee = Employee::where('store_id', '>', 0)->inRandomOrder()->first();
$type = $this->faker->randomElement([SignType::Normal, SignType::Outside]); $type = $this->faker->randomElement([SignType::Normal, SignType::Outside]);
$time = $this->faker->randomElement(SignTime::class); $time = $this->faker->randomElement(SignTime::class);
return [ return [
'store_id' => $employee->store_id, 'store_id' => $employee->store_id,
'employee_id' => $employee->id, 'employee_id' => $employee->id,
@ -30,7 +33,7 @@ class EmployeeSignLogFactory extends Factory
'sign_time' => $time, 'sign_time' => $time,
'remarks' => $type == SignType::Outside ? '我在外面的' : '', 'remarks' => $type == SignType::Outside ? '我在外面的' : '',
'position' => ['province' => '重庆', 'city' => '重庆市', 'address' => '重庆市南川区东城街道办事处东环路三号'], 'position' => ['province' => '重庆', 'city' => '重庆市', 'address' => '重庆市南川区东城街道办事处东环路三号'],
'time' => $this->faker->dateTimeBetween('-7 days', 'now') 'time' => $this->faker->dateTimeBetween('-7 days', 'now'),
]; ];
} }
} }

View File

@ -2,10 +2,8 @@
namespace Database\Factories; namespace Database\Factories;
use App\Models\Employee;
use App\Models\Feedback; use App\Models\Feedback;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Arr;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Feedback> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Feedback>

View File

@ -22,6 +22,7 @@ class StoreFactory extends Factory
public function definition(): array public function definition(): array
{ {
$master = Employee::where('store_id', 0)->inRandomOrder()->first(); $master = Employee::where('store_id', 0)->inRandomOrder()->first();
return [ return [
'title' => $this->faker->word(), 'title' => $this->faker->word(),
'master_id' => $master->id, 'master_id' => $master->id,

View File

@ -1,9 +1,9 @@
<?php <?php
use App\Enums\CheckStatus;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use App\Enums\CheckStatus;
return new class extends Migration return new class extends Migration
{ {

View File

@ -4,7 +4,6 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
return new class extends Migration return new class extends Migration
{ {
/** /**

View File

@ -3,8 +3,9 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\Employee; use App\Models\Employee;
use App\Models\EmployeeSign;
use App\Models\EmployeeSignLog;
use App\Models\Store; use App\Models\Store;
use App\Models\{EmployeeSign, EmployeeSignLog};
use Database\Factories\EmployeeFactory; use Database\Factories\EmployeeFactory;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;

View File

@ -14,7 +14,7 @@ class WorkflowSeeder extends Seeder
{ {
$now = now(); $now = now();
$config = json_encode([ $config = json_encode([
["sort" => 1, "type" => "user", "user" => 1, "title" => "员工", "value" => 1, "subTitle" => "Admin"], ['sort' => 1, 'type' => 'user', 'user' => 1, 'title' => '员工', 'value' => 1, 'subTitle' => 'Admin'],
]); ]);
Workflow::truncate(); Workflow::truncate();
Workflow::insert([ Workflow::insert([