62 lines
2.2 KiB
PHP
62 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Admin;
|
|
|
|
use App\Models\ConstFlow;
|
|
use Slowlyo\OwlAdmin\Services\AdminService;
|
|
use App\Filters\Admin\ConstFlowFilter;
|
|
use App\Models\Oldmen;
|
|
use PhpParser\Node\Stmt\Const_;
|
|
|
|
/**
|
|
* 费用明细
|
|
*
|
|
* @method ConstFlow getModel()
|
|
* @method ConstFlow|\Illuminate\Database\Query\Builder query()
|
|
*/
|
|
class ConstFlowService extends BaseService
|
|
{
|
|
protected string $modelName = ConstFlow::class;
|
|
|
|
protected string $modelFilterName = ConstFlowFilter::class;
|
|
|
|
protected array $withRelationships = ['oldman'];
|
|
|
|
public function makeFeelist(ConstFlow $flow)
|
|
{
|
|
return (new OldmenService())->makeFeelist($flow->const_type, array_merge($flow->extends, [
|
|
'oldman_id' => $flow->oldman_id,
|
|
'live_in_at' => $flow->start_at,
|
|
'avliable_at' => $flow->end_at
|
|
]));
|
|
}
|
|
|
|
public function delete(string $ids): mixed
|
|
{
|
|
$id = collect(explode(',', $ids));
|
|
// 所有ID
|
|
foreach ($id as $value) {
|
|
$_flow = ConstFlow::find($value);
|
|
if($_flow->const_type == ConstFlow::TYPE_IN){
|
|
$_oldman = Oldmen::find($_flow->oldman_id);
|
|
//如果还有续费记录未删除,则提示先删除续费记录;
|
|
if(ConstFlow::where('oldman_id', $_oldman->id)->where('const_type', '>', ConstFlow::TYPE_IN)->where('end_at', '<=', $_oldman->avliable_at)->exists()){
|
|
return $this->setError('请先删除该用户续费记录');
|
|
}
|
|
//如果删除入住;则判断当前用户状态是否是入住,是,则变更为未入住;
|
|
if($_oldman->live_in_at == $_flow->start_at && $_oldman->live_in == Oldmen::STATUS_LIVE){
|
|
$_oldman->update([
|
|
'live_in' => Oldmen::STATUS_NORMAL,
|
|
'need_pay' => Oldmen::PAY_NORMAL,
|
|
'live_in_at' => null,
|
|
'avliable_at' => null,
|
|
'bonds' => [],//保证金归零
|
|
]);
|
|
}
|
|
}
|
|
}
|
|
$id = $id->unique();
|
|
return $this->query()->whereIn($this->primaryKey(), $id)->delete();
|
|
}
|
|
}
|