61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | saiadmin [ saiadmin快速开发框架 ]
|
||
// +----------------------------------------------------------------------
|
||
// | Author: your name
|
||
// +----------------------------------------------------------------------
|
||
namespace app\dice\logic\reward_config;
|
||
|
||
use plugin\saiadmin\basic\think\BaseLogic;
|
||
use plugin\saiadmin\exception\ApiException;
|
||
use plugin\saiadmin\utils\Helper;
|
||
use app\dice\model\reward_config\DiceRewardConfig;
|
||
|
||
/**
|
||
* 奖励配置逻辑层
|
||
* weight 仅 tier=BIGWIN 时可设定,保存时非 BIGWIN 强制 weight=0
|
||
*/
|
||
class DiceRewardConfigLogic extends BaseLogic
|
||
{
|
||
/**
|
||
* 构造函数
|
||
*/
|
||
public function __construct()
|
||
{
|
||
$this->model = new DiceRewardConfig();
|
||
}
|
||
|
||
/**
|
||
* 新增前:非 BIGWIN 时强制 weight=0
|
||
*/
|
||
public function add(array $data): mixed
|
||
{
|
||
$data = $this->normalizeWeightByTier($data);
|
||
return parent::add($data);
|
||
}
|
||
|
||
/**
|
||
* 修改前:非 BIGWIN 时强制 weight=0
|
||
*/
|
||
public function edit($id, array $data): mixed
|
||
{
|
||
$data = $this->normalizeWeightByTier($data);
|
||
return parent::edit($id, $data);
|
||
}
|
||
|
||
/**
|
||
* 仅 tier=BIGWIN 时保留 weight(且限制 0-100),否则强制为 0
|
||
*/
|
||
private function normalizeWeightByTier(array $data): array
|
||
{
|
||
$tier = isset($data['tier']) ? (string) $data['tier'] : '';
|
||
if ($tier !== 'BIGWIN') {
|
||
$data['weight'] = 0;
|
||
return $data;
|
||
}
|
||
$w = isset($data['weight']) ? (float) $data['weight'] : 0;
|
||
$data['weight'] = max(0, min(100, $w));
|
||
return $data;
|
||
}
|
||
}
|