时间: 2025年06月18日 21:40
任务: transfer_apps 增加 允许转入/允许转出 字段,用来控制是否允许转入/转出
为 transfer_apps 表增加两个布尔字段:
allow_transfer_in - 是否允许转入(1=允许,0=禁止)allow_transfer_out - 是否允许转出(1=允许,0=禁止)用来提供更细粒度的转入/转出权限控制。
-- 添加允许转入字段
ALTER TABLE `kku_transfer_apps`
ADD COLUMN `allow_transfer_in` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否允许转入(1=允许,0=禁止)'
AFTER `is_enabled`;
-- 添加允许转出字段
ALTER TABLE `kku_transfer_apps`
ADD COLUMN `allow_transfer_out` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否允许转出(1=允许,0=禁止)'
AFTER `allow_transfer_in`;
-- 添加索引以提高查询性能
ALTER TABLE `kku_transfer_apps`
ADD INDEX `idx_allow_transfer_in` (`allow_transfer_in`),
ADD INDEX `idx_allow_transfer_out` (`allow_transfer_out`);
// 新增字段属性注释
* @property bool $allow_transfer_in 是否允许转入(1=允许,0=禁止)
* @property bool $allow_transfer_out 是否允许转出(1=允许,0=禁止)
// 添加到fillable数组
'allow_transfer_in',
'allow_transfer_out',
// 添加类型转换
'allow_transfer_in' => 'boolean',
'allow_transfer_out' => 'boolean',
// 新增访问器方法
public function getAllowTransferInTextAttribute(): string
public function getAllowTransferInColorAttribute(): string
public function getAllowTransferOutTextAttribute(): string
public function getAllowTransferOutColorAttribute(): string
更新 supportsTransferIn() 和 supportsTransferOut() 方法:
public function supportsTransferIn(): bool
{
if (!$this->is_enabled || !$this->allow_transfer_in) {
return false;
}
// 原有逻辑...
}
public function supportsTransferOut(): bool
{
if (!$this->is_enabled || !$this->allow_transfer_out) {
return false;
}
// 原有逻辑...
}
// 构造函数新增参数
public readonly bool $allow_transfer_in,
public readonly bool $allow_transfer_out,
// fromModel方法更新
allow_transfer_in: $model->allow_transfer_in,
allow_transfer_out: $model->allow_transfer_out,
// toArray方法更新
'allow_transfer_in' => $this->allow_transfer_in,
'allow_transfer_out' => $this->allow_transfer_out,
// 业务方法更新
public function supportsTransferIn(): bool
{
if (!$this->is_enabled || !$this->allow_transfer_in) {
return false;
}
// 原有逻辑...
}
更新错误信息,提供更明确的提示:
// 转入检查
if (!$transferApp->supportsTransferIn()) {
return '该应用不支持充值功能或充值功能已被禁用';
}
// 转出检查
if (!$transferApp->supportsTransferOut()) {
return '该应用不支持提现功能或提现功能已被禁用';
}
$grid->column('allow_transfer_in', '允许转入')->switch();
$grid->column('allow_transfer_out', '允许转出')->switch();
// 筛选器增加
$filter->equal('allow_transfer_in', '允许转入')->select([
1 => '允许', 0 => '禁止',
]);
$filter->equal('allow_transfer_out', '允许转出')->select([
1 => '允许', 0 => '禁止',
]);
// 支持功能列更新逻辑
if ($this->allow_transfer_in && $this->fund_in_uid > 0) $features[] = '转入';
if ($this->allow_transfer_out && $this->fund_to_uid > 0) $features[] = '转出';
$show->field('allow_transfer_in', '允许转入')->using([1 => '允许', 0 => '禁止']);
$show->field('allow_transfer_out', '允许转出')->using([1 => '允许', 0 => '禁止']);
$form->tab('状态设置', function (Form $form) {
$form->switch('is_enabled', '启用状态')
->default(1)
->help('是否启用该应用');
$form->switch('allow_transfer_in', '允许转入')
->default(1)
->help('是否允许转入操作');
$form->switch('allow_transfer_out', '允许转出')
->default(1)
->help('是否允许转出操作');
});
-- 验证字段添加成功
DESCRIBE `kku_transfer_apps`;
-- 验证默认值
SELECT id, keyname, is_enabled, allow_transfer_in, allow_transfer_out
FROM kku_transfer_apps LIMIT 3;
app/Module/Transfer/Databases/GenerateSql/add_transfer_control_fields.sql - 新增app/Module/Transfer/Models/TransferApp.php - 修改app/Module/Transfer/Dtos/TransferAppDto.php - 修改app/Module/Transfer/Services/TransferThirdPartyService.php - 修改app/Module/Transfer/AdminControllers/Helper/TransferAppHelper.php - 修改为transfer_apps表增加允许转入/允许转出控制字段
- 数据库层:添加allow_transfer_in和allow_transfer_out字段
- 模型层:更新TransferApp模型支持新字段和相关方法
- DTO层:更新TransferAppDto包含新字段
- 服务层:更新TransferThirdPartyService使用新的控制逻辑
- 后台管理:更新表格、表单、详情页面支持新字段
- 业务逻辑:supportsTransferIn/Out方法现在考虑控制字段
- 提供细粒度的转入/转出权限控制功能
✅ 任务已完成