编码风格

main
Jing Li 2024-03-27 23:09:37 +08:00
parent efff9c2c03
commit 1a377349e9
37 changed files with 122 additions and 114 deletions

View File

@ -33,6 +33,7 @@ abstract class AdminController extends Controller
tap($th, fn () => report($th)) tap($th, fn () => report($th))
); );
} }
return $this->autoResponse($result, __('admin.save')); return $this->autoResponse($result, __('admin.save'));
} }

View File

@ -104,7 +104,7 @@ class LedgerController extends AdminController
['label' => __('finance.ledger.actual_income'), 'content' => '${actual_income}'], ['label' => __('finance.ledger.actual_income'), 'content' => '${actual_income}'],
['label' => __('finance.ledger.photos'), 'content' => amis()->Images()->enlargeAble()->source('${photos}')->enlargeWithGallary(), 'span' => 2], ['label' => __('finance.ledger.photos'), 'content' => amis()->Images()->enlargeAble()->source('${photos}')->enlargeWithGallary(), 'span' => 2],
['label' => __('finance.ledger.ledger_status'), 'content' => amis()->Mapping()->map(LedgerStatus::labelMap())->value('${ledger_status}'), 'span' => 2], ['label' => __('finance.ledger.ledger_status'), 'content' => amis()->Mapping()->map(LedgerStatus::labelMap())->value('${ledger_status}'), 'span' => 2],
]) ]),
]); ]);
} }
@ -121,7 +121,7 @@ class LedgerController extends AdminController
], ],
attributes: [ attributes: [
'approval_result' => __('finance.ledger.approval_result'), 'approval_result' => __('finance.ledger.approval_result'),
'failed_reason' => __('finance.ledger.failed_reason'), 'failed_reason' => __('finance.ledger.failed_reason'),
], ],
); );

View File

@ -2,14 +2,14 @@
namespace App\Admin\Controllers\Hr; namespace App\Admin\Controllers\Hr;
use App\Models\Employee; use App\Admin\Controllers\AdminController;
use Slowlyo\OwlAdmin\Admin; use App\Admin\Services\EmployeeService;
use Illuminate\Http\Request;
use App\Enums\EmployeeStatus; use App\Enums\EmployeeStatus;
use App\Models\Employee;
use Illuminate\Http\Request;
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 App\Admin\Services\EmployeeService;
use App\Admin\Controllers\AdminController;
class EmployeeController extends AdminController class EmployeeController extends AdminController
{ {
@ -73,12 +73,12 @@ class EmployeeController extends AdminController
amisMake()->TextControl()->name('remarks')->label(__('employee.remarks')), amisMake()->TextControl()->name('remarks')->label(__('employee.remarks')),
amisMake()->ImageControl()->name('prize_images')->label(__('employee.prize_images')) amisMake()->ImageControl()->name('prize_images')->label(__('employee.prize_images'))
->multiple() ->multiple()
->receiver($this->uploadImagePath() . '?full-url=1') ->receiver($this->uploadImagePath().'?full-url=1')
->joinValues(false) ->joinValues(false)
->extractValue(true), ->extractValue(true),
amisMake()->ImageControl()->name('skill_images')->label(__('employee.skill_images')) amisMake()->ImageControl()->name('skill_images')->label(__('employee.skill_images'))
->multiple() ->multiple()
->receiver($this->uploadImagePath() . '?full-url=1') ->receiver($this->uploadImagePath().'?full-url=1')
->joinValues(false) ->joinValues(false)
->extractValue(true), ->extractValue(true),
amisMake()->TextControl()->name('username')->label(__('admin.username'))->value('${admin_user.username}')->visible(! $edit)->required(! $edit), amisMake()->TextControl()->name('username')->label(__('admin.username'))->value('${admin_user.username}')->visible(! $edit)->required(! $edit),

View File

@ -2,11 +2,11 @@
namespace App\Admin\Controllers\Hr; namespace App\Admin\Controllers\Hr;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
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\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
/** /**
* 休息日管理 * 休息日管理
@ -26,7 +26,7 @@ class RestController extends AdminController
->bulkActions([]) ->bulkActions([])
->filter($this->baseFilter()->body([ ->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([ amis()->GroupControl()->mode('horizontal')->body([
amisMake()->TextControl()->name('employee_name')->label(__('employee_sign.employee_id'))->placeholder(__('employee.name') .'/'. __('employee.phone'))->columnRatio(3)->clearable(), amisMake()->TextControl()->name('employee_name')->label(__('employee_sign.employee_id'))->placeholder(__('employee.name').'/'.__('employee.phone'))->columnRatio(3)->clearable(),
amisMake()->DateRangeControl()->name('date_range')->label(__('employee_sign.date'))->columnRatio(3)->clearable(), amisMake()->DateRangeControl()->name('date_range')->label(__('employee_sign.date'))->columnRatio(3)->clearable(),
]), ]),
])) ]))
@ -46,7 +46,7 @@ class RestController extends AdminController
{ {
return $this->baseForm()->title('')->body([ return $this->baseForm()->title('')->body([
amisMake()->SelectControl()->name('employees')->label(__('employee_sign.employee_id')) amisMake()->SelectControl()->name('employees')->label(__('employee_sign.employee_id'))
->source(admin_url('hr/employees?_action=getData&_all=1&employee_status=' . EmployeeStatus::Online->value)) ->source(admin_url('hr/employees?_action=getData&_all=1&employee_status='.EmployeeStatus::Online->value))
->labelField('name') ->labelField('name')
->valueField('id') ->valueField('id')
->searchable() ->searchable()

View File

@ -2,11 +2,11 @@
namespace App\Admin\Controllers\Store; namespace App\Admin\Controllers\Store;
use App\Admin\Controllers\AdminController;
use App\Admin\Services\StoreDeviceService;
use Slowlyo\OwlAdmin\Admin; 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 App\Admin\Controllers\AdminController;
use App\Admin\Services\StoreDeviceService;
/** /**
* 彩票机管理 * 彩票机管理

View File

@ -2,9 +2,9 @@
namespace App\Admin\Controllers\Store; namespace App\Admin\Controllers\Store;
use Slowlyo\OwlAdmin\Admin;
use App\Admin\Controllers\AdminController; use App\Admin\Controllers\AdminController;
use App\Admin\Services\StoreEmployeeService; use App\Admin\Services\StoreEmployeeService;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Page;

View File

@ -2,15 +2,14 @@
namespace App\Admin\Controllers\Store; namespace App\Admin\Controllers\Store;
use App\Models\{Store, Employee}; use App\Admin\Controllers\AdminController;
use Illuminate\Http\Request;
use App\Enums\{BusinessStatus, StoreRole, EmployeeStatus};
use App\Admin\Services\StoreService; use App\Admin\Services\StoreService;
use App\Enums\BusinessStatus;
use App\Enums\EmployeeStatus;
use App\Models\Store;
use Slowlyo\OwlAdmin\Admin; 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 Illuminate\Support\Facades\DB;
use App\Admin\Controllers\AdminController;
/** /**
* 门店管理 * 门店管理
@ -81,7 +80,7 @@ class StoreController extends AdminController
return $this->baseForm()->title('')->body([ return $this->baseForm()->title('')->body([
amisMake()->TextControl()->name('title')->label(__('store.title'))->required(), amisMake()->TextControl()->name('title')->label(__('store.title'))->required(),
amisMake()->SelectControl()->name('master_id')->label(__('store.master_id')) amisMake()->SelectControl()->name('master_id')->label(__('store.master_id'))
->source(admin_url('hr/employees?_action=getData&_all=1&employee_status=' . EmployeeStatus::Online->value)) ->source(admin_url('hr/employees?_action=getData&_all=1&employee_status='.EmployeeStatus::Online->value))
->labelField('name') ->labelField('name')
->valueField('id') ->valueField('id')
->searchable() ->searchable()
@ -120,6 +119,7 @@ class StoreController extends AdminController
['label' => __('store.address'), 'content' => '${address}', 'span' => 2], ['label' => __('store.address'), 'content' => '${address}', 'span' => 2],
['label' => __('store.profit_ratio'), 'content' => '${profit_ratio}%', 'span' => 3], ['label' => __('store.profit_ratio'), 'content' => '${profit_ratio}%', 'span' => 3],
]); ]);
return $this->baseDetail()->title('')->body([$detail]); return $this->baseDetail()->title('')->body([$detail]);
} }

View File

@ -2,13 +2,13 @@
namespace App\Admin\Controllers\System; namespace App\Admin\Controllers\System;
use Slowlyo\OwlAdmin\Admin;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
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\{Keyword, Employee}; use App\Models\Employee;
use App\Models\Keyword;
use Slowlyo\OwlAdmin\Renderers\Form;
use Slowlyo\OwlAdmin\Renderers\Page;
/** /**
* 审核流程管理 * 审核流程管理
@ -18,6 +18,7 @@ class WorkflowController extends AdminController
protected string $serviceName = WorkFlowService::class; protected string $serviceName = WorkFlowService::class;
protected $jobOptions; protected $jobOptions;
protected $employeeOptions; protected $employeeOptions;
public function list(): Page public function list(): Page
@ -31,8 +32,8 @@ class WorkflowController extends AdminController
->bulkActions([]) ->bulkActions([])
->filter($this->baseFilter()->body([ ->filter($this->baseFilter()->body([
amis()->GroupControl()->mode('horizontal')->body([ amis()->GroupControl()->mode('horizontal')->body([
amisMake()->TextControl()->name('search')->label(__('admin.keyword'))->placeholder(__('workflow.key') . '/' . __('workflow.name'))->columnRatio(3)->clearable(), amisMake()->TextControl()->name('search')->label(__('admin.keyword'))->placeholder(__('workflow.key').'/'.__('workflow.name'))->columnRatio(3)->clearable(),
]) ]),
])) ]))
->columns([ ->columns([
amisMake()->TableColumn()->name('id')->label(__('workflow.id')), amisMake()->TableColumn()->name('id')->label(__('workflow.id')),
@ -81,12 +82,13 @@ class WorkflowController extends AdminController
['label' => __('workflow.name'), 'content' => '${name}'], ['label' => __('workflow.name'), 'content' => '${name}'],
['label' => __('workflow.config'), 'content' => amisMake()->Steps()->labelPlacement('horizontal')->source('${config}'), 'span' => 3], ['label' => __('workflow.config'), 'content' => amisMake()->Steps()->labelPlacement('horizontal')->source('${config}'), 'span' => 3],
]); ]);
return $this->baseDetail()->title('')->body($detail); return $this->baseDetail()->title('')->body($detail);
} }
public function getJobOptions() public function getJobOptions()
{ {
if (!$this->jobOptions) { if (! $this->jobOptions) {
$this->jobOptions = Keyword::where('parent_key', 'job')->get(); $this->jobOptions = Keyword::where('parent_key', 'job')->get();
} }
@ -95,11 +97,10 @@ class WorkflowController extends AdminController
public function getEmployeeOptions() public function getEmployeeOptions()
{ {
if (!$this->employeeOptions) { if (! $this->employeeOptions) {
$this->employeeOptions = Employee::enable()->get(); $this->employeeOptions = Employee::enable()->get();
} }
return $this->employeeOptions; return $this->employeeOptions;
} }
} }

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 EmployeeRestFilter extends ModelFilter class EmployeeRestFilter extends ModelFilter
{ {
@ -11,12 +11,12 @@ class EmployeeRestFilter extends ModelFilter
public $relations = [ public $relations = [
'store' => [ 'store' => [
'store_title' => 'title' 'store_title' => 'title',
], ],
'employee' => [ 'employee' => [
'employee_name' => 'name', 'employee_name' => 'name',
'employee_search' => 'search', 'employee_search' => 'search',
] ],
]; ];
public function employeeId($key) public function employeeId($key)

View File

@ -37,6 +37,6 @@ class KeywordFilter extends ModelFilter
public function withParentKey($key) public function withParentKey($key)
{ {
return $this->where(fn($q) => $q->where('parent_key', $key)->orWhere('key', $key)); return $this->where(fn ($q) => $q->where('parent_key', $key)->orWhere('key', $key));
} }
} }

View File

@ -10,12 +10,12 @@ class StoreEmployeeFilter extends ModelFilter
public $relations = [ public $relations = [
'store' => [ 'store' => [
'store_title' => 'title' 'store_title' => 'title',
], ],
'employee' => [ 'employee' => [
'employee_name' => 'name', 'employee_name' => 'name',
'employee_search' => 'search', 'employee_search' => 'search',
] ],
]; ];
public function employeeId($key) public function employeeId($key)

View File

@ -2,11 +2,9 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Models\{EmployeeRest, Employee};
use App\Admin\Filters\EmployeeRestFilter; use App\Admin\Filters\EmployeeRestFilter;
use Illuminate\Validation\Rule; use App\Models\Employee;
use Illuminate\Support\Facades\DB; use App\Models\EmployeeRest;
use Illuminate\Support\Facades\Validator;
class EmployeeRestService extends BaseService class EmployeeRestService extends BaseService
{ {
@ -32,7 +30,7 @@ class EmployeeRestService extends BaseService
$employees = Employee::whereIn('id', $data['employees'])->enable()->get(); $employees = Employee::whereIn('id', $data['employees'])->enable()->get();
$list = []; $list = [];
$now = now(); $now = now();
foreach($employees as $employee) { foreach ($employees as $employee) {
foreach ($dates as $date) { foreach ($dates as $date) {
array_push($list, [ array_push($list, [
'date' => $date, 'date' => $date,
@ -44,7 +42,7 @@ class EmployeeRestService extends BaseService
} else { } else {
$this->modelName::create($data); $this->modelName::create($data);
} }
return true; return true;
} }
} }

View File

@ -7,8 +7,8 @@ use App\Models\Employee;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Slowlyo\OwlAdmin\Models\AdminUser; use Slowlyo\OwlAdmin\Models\AdminUser;
use Slowlyo\OwlAdmin\Services\AdminUserService; use Slowlyo\OwlAdmin\Services\AdminUserService;

View File

@ -5,7 +5,6 @@ namespace App\Admin\Services;
use App\Admin\Filters\LedgerFilter; use App\Admin\Filters\LedgerFilter;
use App\Enums\LedgerStatus; use App\Enums\LedgerStatus;
use App\Models\Ledger; use App\Models\Ledger;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
class LedgerService extends BaseService class LedgerService extends BaseService

View File

@ -2,8 +2,8 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Models\StoreDevice;
use App\Admin\Filters\StoreDeviceFilter; use App\Admin\Filters\StoreDeviceFilter;
use App\Models\StoreDevice;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
class StoreDeviceService extends BaseService class StoreDeviceService extends BaseService

View File

@ -2,11 +2,10 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Admin\Filters\StoreEmployeeFilter;
use App\Models\StoreEmployee; use App\Models\StoreEmployee;
use App\Admin\Filters\StoreDeviceFilter;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use App\Admin\Filters\StoreEmployeeFilter;
class StoreEmployeeService extends BaseService class StoreEmployeeService extends BaseService
{ {

View File

@ -2,12 +2,13 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Enums\StoreRole;
use Illuminate\Validation\Rule;
use App\Models\{Store, Employee};
use App\Admin\Filters\StoreFilter; use App\Admin\Filters\StoreFilter;
use App\Enums\StoreRole;
use App\Models\Employee;
use App\Models\Store;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class StoreService extends BaseService class StoreService extends BaseService
{ {
@ -65,6 +66,7 @@ class StoreService extends BaseService
foreach ($employees as $employee) { foreach ($employees as $employee) {
if (DB::table('store_employees')->where('employee_id', $employee->id)->exists()) { if (DB::table('store_employees')->where('employee_id', $employee->id)->exists()) {
$this->setError($employee->name.' 已经是店员'); $this->setError($employee->name.' 已经是店员');
return false; return false;
} }
$data[$employee->id] = ['role' => StoreRole::Employee]; $data[$employee->id] = ['role' => StoreRole::Employee];
@ -78,6 +80,7 @@ class StoreService extends BaseService
public function destroyEmployee(Store $store, array $employeeIds) public function destroyEmployee(Store $store, array $employeeIds)
{ {
$store->employees()->detach($employeeIds); $store->employees()->detach($employeeIds);
return true; return true;
} }
@ -121,6 +124,7 @@ class StoreService extends BaseService
{ {
// 删除店员 // 删除店员
DB::table('store_employees')->whereIn('store_id', $ids)->delete(); DB::table('store_employees')->whereIn('store_id', $ids)->delete();
return true; return true;
} }
} }

View File

@ -3,10 +3,10 @@
namespace App\Admin\Services; namespace App\Admin\Services;
use App\Enums\CheckType; use App\Enums\CheckType;
use App\Models\{Workflow, Keyword, Employee}; use App\Models\Employee;
use Illuminate\Support\Arr; use App\Models\Keyword;
use App\Models\Workflow;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class WorkFlowService extends BaseService class WorkFlowService extends BaseService
@ -20,22 +20,23 @@ class WorkFlowService extends BaseService
public function resloveData($data, $model = null) public function resloveData($data, $model = null)
{ {
if (isset($data['config'])) { if (isset($data['config'])) {
foreach($data['config'] as $key => &$item) { foreach ($data['config'] as $key => &$item) {
$item['title'] = match($item['type']) { $item['title'] = match ($item['type']) {
CheckType::Job->value => CheckType::Job->text(), CheckType::Job->value => CheckType::Job->text(),
CheckType::User->value => CheckType::User->text(), CheckType::User->value => CheckType::User->text(),
}; };
$item['subTitle'] = match($item['type']) { $item['subTitle'] = match ($item['type']) {
CheckType::Job->value => Keyword::where('key', $item['job'])->value('name'), CheckType::Job->value => Keyword::where('key', $item['job'])->value('name'),
CheckType::User->value => Employee::where('id', $item['user'])->value('name'), CheckType::User->value => Employee::where('id', $item['user'])->value('name'),
}; };
$item['value'] = match($item['type']) { $item['value'] = match ($item['type']) {
CheckType::Job->value => $item['job'], CheckType::Job->value => $item['job'],
CheckType::User->value => $item['user'], CheckType::User->value => $item['user'],
}; };
$item['sort'] = $key + 1; $item['sort'] = $key + 1;
} }
} }
return $data; return $data;
} }
@ -46,14 +47,15 @@ class WorkFlowService extends BaseService
'name' => ['required'], 'name' => ['required'],
]; ];
$updateRules = [ $updateRules = [
'key' => [Rule::unique('workflows', 'key')->ignore($model?->id)] 'key' => [Rule::unique('workflows', 'key')->ignore($model?->id)],
]; ];
$validator = Validator::make($data, $model ? $updateRules : $createRules, [ $validator = Validator::make($data, $model ? $updateRules : $createRules, [
'key.unique' => ':input 已经存在' 'key.unique' => ':input 已经存在',
]); ]);
if ($validator->fails()) { if ($validator->fails()) {
return $validator->errors()->first(); return $validator->errors()->first();
} }
return true; return true;
} }
} }

View File

@ -51,7 +51,6 @@ Route::group([
$router->resource('lottery-types', BaseKeywordController::class); $router->resource('lottery-types', BaseKeywordController::class);
}); });
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| 人事管理 | 人事管理

View File

@ -2,8 +2,6 @@
namespace App\Enums; namespace App\Enums;
use Dcat\Admin\Admin;
enum CheckStatus: int enum CheckStatus: int
{ {
case None = 0; case None = 0;
@ -15,11 +13,11 @@ enum CheckStatus: int
public static function options(): array public static function options(): array
{ {
return [ return [
static::None->value => '未审核', self::None->value => '未审核',
static::Processing->value => '审核中', self::Processing->value => '审核中',
static::Success->value => '审核通过', self::Success->value => '审核通过',
static::Fail->value => '审核不通过', self::Fail->value => '审核不通过',
static::Cancel->value => '已取消', self::Cancel->value => '已取消',
]; ];
} }
@ -32,11 +30,11 @@ enum CheckStatus: int
{ {
// 'active' | 'inactive' | 'error' | 'success' | 'processing' | 'warning' | // 'active' | 'inactive' | 'error' | 'success' | 'processing' | 'warning' |
return [ return [
static::None->value => 'active', self::None->value => 'active',
static::Processing->value => 'processing', self::Processing->value => 'processing',
static::Success->value => 'success', self::Success->value => 'success',
static::Fail->value => 'error', self::Fail->value => 'error',
static::Cancel->value => 'inactive', self::Cancel->value => 'inactive',
]; ];
} }

View File

@ -12,10 +12,10 @@ enum LedgerStatus: int
public function label(): string public function label(): string
{ {
return match ($this) { return match ($this) {
static::Pending => '待编辑', self::Pending => '待编辑',
static::Processing => '待审核', self::Processing => '待审核',
static::Passed => '已完成', self::Passed => '已完成',
static::Rejected => '未通过', self::Rejected => '未通过',
}; };
} }
@ -32,10 +32,10 @@ enum LedgerStatus: int
public static function labelMap(): array public static function labelMap(): array
{ {
return [ return [
static::Pending->value => '<span class="label label-primary">待编辑</span>', self::Pending->value => '<span class="label label-primary">待编辑</span>',
static::Processing->value => '<span class="label label-warning">待审核</span>', self::Processing->value => '<span class="label label-warning">待审核</span>',
static::Passed->value => '<span class="label label-success">已完成</span>', self::Passed->value => '<span class="label label-success">已完成</span>',
static::Rejected->value => '<span class="label label-danger">未通过</span>', self::Rejected->value => '<span class="label label-danger">未通过</span>',
]; ];
} }
} }

View File

@ -2,14 +2,13 @@
namespace App\Models; namespace App\Models;
use App\Casts\StorageJson; use App\Admin\Filters\EmployeeFilter;
use App\Enums\EmployeeStatus; use App\Enums\EmployeeStatus;
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\Model;
use Slowlyo\OwlAdmin\Models\AdminUser; use Slowlyo\OwlAdmin\Models\AdminUser;
use App\Admin\Filters\EmployeeFilter;
/** /**
* 员工 * 员工

View File

@ -2,8 +2,8 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
/** /**
* 员工-休息日 * 员工-休息日

View File

@ -2,9 +2,10 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use App\Enums\SignStatus;
use App\Enums\{SignType, SignStatus}; use App\Enums\SignType;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
/** /**
* 员工-打卡情况 * 员工-打卡情况

View File

@ -2,8 +2,8 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Enums\SignType; use App\Enums\SignType;
use Illuminate\Database\Eloquent\Model;
/** /**
* 员工-打卡流水 * 员工-打卡流水

View File

@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Ledger extends Model class Ledger extends Model
{ {
use Filterable, HasFactory, HasDateTimeFormatter; use Filterable, HasDateTimeFormatter, HasFactory;
protected $attributes = [ protected $attributes = [
'ledger_status' => LedgerStatus::Pending, 'ledger_status' => LedgerStatus::Pending,
@ -47,6 +47,7 @@ class Ledger extends Model
if (! is_array($photos = json_decode($value ?? '', true))) { if (! is_array($photos = json_decode($value ?? '', true))) {
$photos = []; $photos = [];
} }
return $photos; return $photos;
}, },
set: fn (mixed $value) => json_encode(is_array($value) ? $value : []), set: fn (mixed $value) => json_encode(is_array($value) ? $value : []),

View File

@ -2,8 +2,8 @@
namespace App\Models; namespace App\Models;
use EloquentFilter\Filterable;
use App\Traits\HasDateTimeFormatter; use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
@ -20,5 +20,4 @@ class StoreDevice extends Model
{ {
return $this->belongsTo(Store::class, 'store_id'); return $this->belongsTo(Store::class, 'store_id');
} }
} }

View File

@ -2,8 +2,8 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Relations\Pivot;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Relations\Pivot;
/** /**
* 店员 * 店员

View File

@ -12,6 +12,6 @@ class Workflow extends Model
protected $fillable = ['key', 'name', 'config']; protected $fillable = ['key', 'name', 'config'];
protected $casts = [ protected $casts = [
'config' => 'array' 'config' => 'array',
]; ];
} }

View File

@ -14,9 +14,9 @@ class WorkflowLog extends Model
protected $fillable = ['batch_id', 'check_type', 'check_value', 'check_name', 'user_id', 'subject_type', 'subject_id', 'subject_data', 'is_enable', 'check_user_id', 'checked_at', 'remarks', 'check_status', 'sort']; protected $fillable = ['batch_id', 'check_type', 'check_value', 'check_name', 'user_id', 'subject_type', 'subject_id', 'subject_data', 'is_enable', 'check_user_id', 'checked_at', 'remarks', 'check_status', 'sort'];
protected $casts = [ protected $casts = [
'check_type' => CheckType::class, 'check_type' => CheckType::class,
'check_status' => CheckStatus::class, 'check_status' => CheckStatus::class,
'is_enable' => 'boolean', 'is_enable' => 'boolean',
'subject_data' => 'json', 'subject_data' => 'json',
]; ];

View File

@ -2,8 +2,8 @@
namespace Database\Factories; namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Employee; use App\Models\Employee;
use Illuminate\Database\Eloquent\Factories\Factory;
use Slowlyo\OwlAdmin\Models\AdminUser; use Slowlyo\OwlAdmin\Models\AdminUser;
/** /**
@ -12,6 +12,7 @@ use Slowlyo\OwlAdmin\Models\AdminUser;
class EmployeeFactory extends Factory class EmployeeFactory extends Factory
{ {
protected $model = Employee::class; protected $model = Employee::class;
/** /**
* Define the model's default state. * Define the model's default state.
* *
@ -22,6 +23,7 @@ class EmployeeFactory extends Factory
$faker = $this->faker; $faker = $this->faker;
$name = $faker->name; $name = $faker->name;
$phone = $faker->phoneNumber(); $phone = $faker->phoneNumber();
// $adminUser = AdminUser::create([ // $adminUser = AdminUser::create([
// 'username' => $phone, // 'username' => $phone,
// 'password' => bcrypt($phone), // 'password' => bcrypt($phone),
@ -34,7 +36,7 @@ class EmployeeFactory extends Factory
'prize_images' => ['https://via.placeholder.com/100x100.png'], 'prize_images' => ['https://via.placeholder.com/100x100.png'],
'skill_images' => ['https://via.placeholder.com/100x100.png'], 'skill_images' => ['https://via.placeholder.com/100x100.png'],
// 'admin_user_id' => $adminUser->id, // 'admin_user_id' => $adminUser->id,
'join_at' => now() 'join_at' => now(),
]; ];
} }
} }

View File

@ -2,8 +2,11 @@
namespace Database\Factories; namespace Database\Factories;
use App\Models\Employee;
use App\Models\Keyword;
use App\Models\Store;
use App\Models\StoreEmployee;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\{Store, Employee, StoreEmployee, Keyword};
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Store> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Store>
@ -11,6 +14,7 @@ use App\Models\{Store, Employee, StoreEmployee, Keyword};
class StoreFactory extends Factory class StoreFactory extends Factory
{ {
protected $model = Store::class; protected $model = Store::class;
/** /**
* Define the model's default state. * Define the model's default state.
* *
@ -20,14 +24,15 @@ class StoreFactory extends Factory
{ {
do { do {
$master = Employee::inRandomOrder()->first(); $master = Employee::inRandomOrder()->first();
} while(StoreEmployee::where('employee_id', $master->id)->exists()); } while (StoreEmployee::where('employee_id', $master->id)->exists());
return [ return [
'title' => $this->faker->word(), 'title' => $this->faker->word(),
'master_id' => $master->id, 'master_id' => $master->id,
'category_id' => Keyword::where('lv', 3)->where('parent_key', 'store_category')->inRandomOrder()->value('key'), 'category_id' => Keyword::where('lv', 3)->where('parent_key', 'store_category')->inRandomOrder()->value('key'),
'business_id' => Keyword::where('lv', 2)->where('parent_key', 'store_business')->inRandomOrder()->value('key'), 'business_id' => Keyword::where('lv', 2)->where('parent_key', 'store_business')->inRandomOrder()->value('key'),
'level_id' => Keyword::where('lv', 2)->where('parent_key', 'store_level')->inRandomOrder()->value('key'), 'level_id' => Keyword::where('lv', 2)->where('parent_key', 'store_level')->inRandomOrder()->value('key'),
'region' => ["city" => "通辽市", "code" => 150500, "street" => null, "cityCode" => 150500, "district" => null, "province" => "内蒙古自治区", "districtCode" => 0, "provinceCode" => 150000], 'region' => ['city' => '通辽市', 'code' => 150500, 'street' => null, 'cityCode' => 150500, 'district' => null, 'province' => '内蒙古自治区', 'districtCode' => 0, 'provinceCode' => 150000],
'lon' => '107.11352677389', 'lon' => '107.11352677389',
'lat' => '29.167519061656', 'lat' => '29.167519061656',
'address' => '重庆市南川区东城街道办事处东环路三号', 'address' => '重庆市南川区东城街道办事处东环路三号',

View File

@ -108,13 +108,13 @@ class AdminPermissionSeeder extends Seeder
'name' => '职位管理', 'name' => '职位管理',
'icon' => '', 'icon' => '',
'uri' => '/hr/jobs?parent_key=job', 'uri' => '/hr/jobs?parent_key=job',
'resource' => false 'resource' => false,
], ],
'rests' => [ 'rests' => [
'name' => '休息管理', 'name' => '休息管理',
'icon' => '', 'icon' => '',
'uri' => '/hr/rests', 'uri' => '/hr/rests',
'resource' => true 'resource' => true,
], ],
], ],
], ],

View File

@ -19,7 +19,7 @@ class AdminSeeder extends Seeder
DB::table('admin_users')->insert([ DB::table('admin_users')->insert([
'username' => 'admin', 'username' => 'admin',
'password' => bcrypt('admin'), 'password' => bcrypt('admin'),
'name' => 'Administrator', 'name' => 'Administrator',
]); ]);
// 创建初始角色 // 创建初始角色

View File

@ -2,10 +2,11 @@
namespace Database\Seeders; namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents; use App\Models\Employee;
use App\Models\Store;
use Database\Factories\EmployeeFactory;
use Database\Factories\StoreFactory;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use App\Models\{Employee, Store};
use Database\Factories\{EmployeeFactory, StoreFactory};
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class EmployeeSeeder extends Seeder class EmployeeSeeder extends Seeder

View File

@ -2,9 +2,8 @@
namespace Database\Seeders; namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Workflow; use App\Models\Workflow;
use Illuminate\Database\Seeder;
class WorkflowSeeder extends Seeder class WorkflowSeeder extends Seeder
{ {