Files
2026-05-11 17:49:38 +08:00

100 lines
2.5 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace app\adminapi\validate\finance;
use app\common\model\dept\Dept;
use app\common\model\finance\AccountCost;
use app\common\service\qywx\MediaChannelService;
use app\common\validate\BaseValidate;
class AccountCostValidate extends BaseValidate
{
protected $rule = [
'id' => 'require|checkExists',
'cost_date' => 'require|dateFormat:Y-m-d',
'media_channel_code' => 'require|checkMediaChannelCode',
'dept_id' => 'require|checkDeptId',
'amount' => 'require|float|egt:0',
'remark' => 'max:255',
];
protected $message = [
'id.require' => '参数缺失',
'cost_date.require' => '请选择日期',
'cost_date.dateFormat' => '日期格式错误',
'media_channel_code.require' => '请选择自媒体渠道',
'dept_id.require' => '请选择绑定部门',
'amount.require' => '请输入账户消耗金额',
'amount.float' => '账户消耗金额格式错误',
'amount.egt' => '账户消耗金额不能小于0',
'remark.max' => '备注不能超过255个字符',
];
public function sceneAdd()
{
if (!AccountCost::supportsDeptBinding()) {
return $this->remove('id', true)->remove('dept_id', true);
}
return $this->remove('id', true);
}
public function sceneEdit()
{
if (!AccountCost::supportsDeptBinding()) {
return $this->remove('cost_date', true)->remove('dept_id', true);
}
return $this->remove('cost_date', true);
}
public function sceneDetail()
{
return $this->only(['id']);
}
public function sceneDelete()
{
return $this->only(['id']);
}
public function checkExists($value)
{
$model = AccountCost::find($value);
if (!$model) {
return '记录不存在';
}
return true;
}
public function checkMediaChannelCode($value)
{
if (!MediaChannelService::isValidCode((string) $value)) {
return '自媒体渠道不合法';
}
return true;
}
public function checkDeptId($value)
{
if (!AccountCost::supportsDeptBinding()) {
return true;
}
$deptId = (int) $value;
if ($deptId <= 0) {
return '请选择绑定部门';
}
if (!Dept::find($deptId)) {
return '绑定部门不存在';
}
return true;
}
}