重构*_weight为*_weight

This commit is contained in:
2026-03-07 10:07:44 +08:00
parent 7e5585aee0
commit fe1ceeb4fb
9 changed files with 127 additions and 128 deletions

View File

@@ -125,39 +125,39 @@
{ prop: 'type', label: '奖池类型', width: 100, align: 'center', formatter: typeFormatter }, { prop: 'type', label: '奖池类型', width: 100, align: 'center', formatter: typeFormatter },
{ prop: 'safety_line', label: '安全线', align: 'center' }, { prop: 'safety_line', label: '安全线', align: 'center' },
{ {
prop: 't1_wight', prop: 't1_weight',
label: 'T1池权重', label: 'T1池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t1_wight') formatter: weightFormatter('t1_weight')
}, },
{ {
prop: 't2_wight', prop: 't2_weight',
label: 'T2池权重', label: 'T2池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t2_wight') formatter: weightFormatter('t2_weight')
}, },
{ {
prop: 't3_wight', prop: 't3_weight',
label: 'T3池权重', label: 'T3池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t3_wight') formatter: weightFormatter('t3_weight')
}, },
{ {
prop: 't4_wight', prop: 't4_weight',
label: 'T4池权重', label: 'T4池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t4_wight') formatter: weightFormatter('t4_weight')
}, },
{ {
prop: 't5_wight', prop: 't5_weight',
label: 'T5池权重', label: 'T5池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t5_wight') formatter: weightFormatter('t5_weight')
}, },
{ {
prop: 'operation', prop: 'operation',

View File

@@ -46,20 +46,20 @@
style="width: 100%" style="width: 100%"
/> />
</el-form-item> </el-form-item>
<el-form-item label="T1池权重(%)" prop="t1_wight"> <el-form-item label="T1池权重(%)" prop="t1_weight">
<el-slider v-model="formData.t1_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t1_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T2池权重(%)" prop="t2_wight"> <el-form-item label="T2池权重(%)" prop="t2_weight">
<el-slider v-model="formData.t2_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t2_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T3池权重(%)" prop="t3_wight"> <el-form-item label="T3池权重(%)" prop="t3_weight">
<el-slider v-model="formData.t3_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t3_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T4池权重(%)" prop="t4_wight"> <el-form-item label="T4池权重(%)" prop="t4_weight">
<el-slider v-model="formData.t4_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t4_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T5池权重(%)" prop="t5_wight"> <el-form-item label="T5池权重(%)" prop="t5_weight">
<el-slider v-model="formData.t5_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t5_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div class="text-gray-500 text-sm"> <div class="text-gray-500 text-sm">
@@ -112,7 +112,7 @@
}) })
/** 五个权重字段名,用于总和校验 */ /** 五个权重字段名,用于总和校验 */
const WEIGHT_KEYS = ['t1_wight', 't2_wight', 't3_wight', 't4_wight', 't5_wight'] as const const WEIGHT_KEYS = ['t1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight'] as const
/** 五个池权重总和(用于展示与校验) */ /** 五个池权重总和(用于展示与校验) */
const weightsSum = computed(() => { const weightsSum = computed(() => {
@@ -125,11 +125,11 @@
const rules = reactive<FormRules>({ const rules = reactive<FormRules>({
name: [{ required: true, message: '名称必需填写', trigger: 'blur' }], name: [{ required: true, message: '名称必需填写', trigger: 'blur' }],
type: [{ required: true, message: '请选择奖池类型', trigger: 'change' }], type: [{ required: true, message: '请选择奖池类型', trigger: 'change' }],
t1_wight: [{ required: true, message: 'T1池权重必需填写', trigger: 'blur' }], t1_weight: [{ required: true, message: 'T1池权重必需填写', trigger: 'blur' }],
t2_wight: [{ required: true, message: 'T2池权重必需填写', trigger: 'blur' }], t2_weight: [{ required: true, message: 'T2池权重必需填写', trigger: 'blur' }],
t3_wight: [{ required: true, message: 'T3池权重必需填写', trigger: 'blur' }], t3_weight: [{ required: true, message: 'T3池权重必需填写', trigger: 'blur' }],
t4_wight: [{ required: true, message: 'T4池权重必需填写', trigger: 'blur' }], t4_weight: [{ required: true, message: 'T4池权重必需填写', trigger: 'blur' }],
t5_wight: [{ required: true, message: 'T5池权重必需填写', trigger: 'blur' }] t5_weight: [{ required: true, message: 'T5池权重必需填写', trigger: 'blur' }]
}) })
/** /**
@@ -141,11 +141,11 @@
remark: '', remark: '',
type: null as number | null, type: null as number | null,
safety_line: 0 as number, safety_line: 0 as number,
t1_wight: 0 as number, t1_weight: 0 as number,
t2_wight: 0 as number, t2_weight: 0 as number,
t3_wight: 0 as number, t3_weight: 0 as number,
t4_wight: 0 as number, t4_weight: 0 as number,
t5_wight: 0 as number t5_weight: 0 as number
} }
/** /**
@@ -187,11 +187,11 @@
'id', 'id',
'type', 'type',
'safety_line', 'safety_line',
't1_wight', 't1_weight',
't2_wight', 't2_weight',
't3_wight', 't3_weight',
't4_wight', 't4_weight',
't5_wight' 't5_weight'
] ]
for (const key of Object.keys(formData)) { for (const key of Object.keys(formData)) {
if (!(key in props.data)) continue if (!(key in props.data)) continue

View File

@@ -183,45 +183,45 @@
formatter: isUpFormatter formatter: isUpFormatter
}, },
{ {
prop: 't1_wight', prop: 't1_weight',
label: 'T1池权重', label: 'T1池权重',
width: 80, width: 80,
align: 'center', align: 'center',
formatter: weightFormatter('t1_wight') formatter: weightFormatter('t1_weight')
}, },
{ {
prop: 't2_wight', prop: 't2_weight',
label: 'T2池权重', label: 'T2池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t2_wight') formatter: weightFormatter('t2_weight')
}, },
{ {
prop: 't3_wight', prop: 't3_weight',
label: 'T3池权重', label: 'T3池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t3_wight') formatter: weightFormatter('t3_weight')
}, },
{ {
prop: 't4_wight', prop: 't4_weight',
label: 'T4池权重', label: 'T4池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t4_wight') formatter: weightFormatter('t4_weight')
}, },
{ {
prop: 't5_wight', prop: 't5_weight',
label: 'T5池权重', label: 'T5池权重',
width: 100, width: 100,
align: 'center', align: 'center',
formatter: weightFormatter('t5_wight') formatter: weightFormatter('t5_weight')
}, },
{ prop: 'total_ticket_count', label: '总抽奖次数', align: 'center' }, { prop: 'total_ticket_count', label: '总抽奖次数', align: 'center' },
{ prop: 'paid_ticket_count', label: '购买抽奖次数', align: 'center' }, { prop: 'paid_ticket_count', label: '购买抽奖次数', align: 'center' },
{ prop: 'free_ticket_count', label: '赠送抽奖次数', align: 'center' }, { prop: 'free_ticket_count', label: '赠送抽奖次数', align: 'center' },
{ prop: 'created_at', label: '创建时间', align: 'center' }, { prop: 'create_time', label: '创建时间', align: 'center' },
{ prop: 'updated_at', label: '更新时间', align: 'center' }, { prop: 'update_time', label: '更新时间', align: 'center' },
{ {
prop: 'operation', prop: 'operation',
label: '操作', label: '操作',

View File

@@ -45,20 +45,20 @@
<el-option label="T1高倍率" :value="2" /> <el-option label="T1高倍率" :value="2" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="T1池权重(%)" prop="t1_wight"> <el-form-item label="T1池权重(%)" prop="t1_weight">
<el-slider v-model="formData.t1_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t1_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T2池权重(%)" prop="t2_wight"> <el-form-item label="T2池权重(%)" prop="t2_weight">
<el-slider v-model="formData.t2_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t2_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T3池权重(%)" prop="t3_wight"> <el-form-item label="T3池权重(%)" prop="t3_weight">
<el-slider v-model="formData.t3_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t3_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T4池权重(%)" prop="t4_wight"> <el-form-item label="T4池权重(%)" prop="t4_weight">
<el-slider v-model="formData.t4_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t4_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item label="T5池权重(%)" prop="t5_wight"> <el-form-item label="T5池权重(%)" prop="t5_weight">
<el-slider v-model="formData.t5_wight" :min="0" :max="100" :step="0.01" show-input /> <el-slider v-model="formData.t5_weight" :min="0" :max="100" :step="0.01" show-input />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div class="text-gray-500 text-sm"> <div class="text-gray-500 text-sm">
@@ -107,7 +107,7 @@
set: (value) => emit('update:modelValue', value) set: (value) => emit('update:modelValue', value)
}) })
const WEIGHT_KEYS = ['t1_wight', 't2_wight', 't3_wight', 't4_wight', 't5_wight'] as const const WEIGHT_KEYS = ['t1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight'] as const
const weightsSum = computed(() => { const weightsSum = computed(() => {
return WEIGHT_KEYS.reduce((sum, key) => sum + Number(formData[key] ?? 0), 0) return WEIGHT_KEYS.reduce((sum, key) => sum + Number(formData[key] ?? 0), 0)
}) })
@@ -134,11 +134,11 @@
status: 1 as number, status: 1 as number,
coin: 0 as number, coin: 0 as number,
is_up: null as number | null, is_up: null as number | null,
t1_wight: 0 as number, t1_weight: 0 as number,
t2_wight: 0 as number, t2_weight: 0 as number,
t3_wight: 0 as number, t3_weight: 0 as number,
t4_wight: 0 as number, t4_weight: 0 as number,
t5_wight: 0 as number t5_weight: 0 as number
} }
const formData = reactive({ ...initialFormData }) const formData = reactive({ ...initialFormData })
@@ -163,11 +163,11 @@
'status', 'status',
'coin', 'coin',
'is_up', 'is_up',
't1_wight', 't1_weight',
't2_wight', 't2_weight',
't3_wight', 't3_weight',
't4_wight', 't4_weight',
't5_wight' 't5_weight'
] ]
const initForm = () => { const initForm = () => {

View File

@@ -82,7 +82,7 @@ class UserLogic
$token = $tokenResult['access_token']; $token = $tokenResult['access_token'];
UserCache::setSessionByUsername($username, $token); UserCache::setSessionByUsername($username, $token);
$userArr = $player->hidden(['password'])->toArray(); $userArr = $player->hidden(['password', 'is_up', 't1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight'])->toArray();
UserCache::setUser((int) $player->id, $userArr); UserCache::setUser((int) $player->id, $userArr);
UserCache::setPlayerByUsername($username, $userArr); UserCache::setPlayerByUsername($username, $userArr);

View File

@@ -19,7 +19,7 @@ class LotteryService
private int $playerId; private int $playerId;
private ?int $configType0Id = null; private ?int $configType0Id = null;
private ?int $configType1Id = null; private ?int $configType1Id = null;
/** @var array{t1_wight?:int,t2_wight?:int,t3_wight?:int,t4_wight?:int,t5_wight?:int} */ /** @var array{t1_weight?:int,t2_weight?:int,t3_weight?:int,t4_weight?:int,t5_weight?:int} */
private array $playerWeights = []; private array $playerWeights = [];
public function __construct(int $playerId) public function __construct(int $playerId)
@@ -62,11 +62,11 @@ class LotteryService
$s->configType0Id = $config0 ? (int) $config0->id : null; $s->configType0Id = $config0 ? (int) $config0->id : null;
$s->configType1Id = $config1 ? (int) $config1->id : null; $s->configType1Id = $config1 ? (int) $config1->id : null;
$s->playerWeights = [ $s->playerWeights = [
't1_wight' => (int) ($player->t1_wight ?? 0), 't1_weight' => (int) ($player->t1_weight ?? 0),
't2_wight' => (int) ($player->t2_wight ?? 0), 't2_weight' => (int) ($player->t2_weight ?? 0),
't3_wight' => (int) ($player->t3_wight ?? 0), 't3_weight' => (int) ($player->t3_weight ?? 0),
't4_wight' => (int) ($player->t4_wight ?? 0), 't4_weight' => (int) ($player->t4_weight ?? 0),
't5_wight' => (int) ($player->t5_wight ?? 0), 't5_weight' => (int) ($player->t5_weight ?? 0),
]; ];
$s->save(); $s->save();
return $s; return $s;
@@ -83,33 +83,33 @@ class LotteryService
Cache::set($key, json_encode($data), self::EXPIRE); Cache::set($key, json_encode($data), self::EXPIRE);
} }
/** 根据奖池配置的 t1_wight..t5_wight 权重随机抽取档位 T1-T5 */ /** 根据奖池配置的 t1_weight..t5_weight 权重随机抽取档位 T1-T5 */
public static function drawTierByWeights(DiceLotteryConfig $config): string public static function drawTierByWeights(DiceLotteryConfig $config): string
{ {
$tiers = ['T1', 'T2', 'T3', 'T4', 'T5']; $tiers = ['T1', 'T2', 'T3', 'T4', 'T5'];
$weights = [ $weights = [
(int) ($config->t1_wight ?? 0), (int) ($config->t1_weight ?? 0),
(int) ($config->t2_wight ?? 0), (int) ($config->t2_weight ?? 0),
(int) ($config->t3_wight ?? 0), (int) ($config->t3_weight ?? 0),
(int) ($config->t4_wight ?? 0), (int) ($config->t4_weight ?? 0),
(int) ($config->t5_wight ?? 0), (int) ($config->t5_weight ?? 0),
]; ];
return self::drawTierByWeightArray($tiers, $weights); return self::drawTierByWeightArray($tiers, $weights);
} }
/** /**
* 根据玩家 t1_wightt5_wight 权重随机抽取中奖档位 T1-T5 * 根据玩家 t1_weightt5_weight 权重随机抽取中奖档位 T1-T5
* t1_wight=T1, t2_wight=T2, t3_wight=T3, t4_wight=T4, t5_wight=T5 * t1_weight=T1, t2_weight=T2, t3_weight=T3, t4_weight=T4, t5_weight=T5
*/ */
public static function drawTierByPlayerWeights(DicePlayer $player): string public static function drawTierByPlayerWeights(DicePlayer $player): string
{ {
$tiers = ['T1', 'T2', 'T3', 'T4', 'T5']; $tiers = ['T1', 'T2', 'T3', 'T4', 'T5'];
$weights = [ $weights = [
(int) ($player->t1_wight ?? 0), (int) ($player->t1_weight ?? 0),
(int) ($player->t2_wight ?? 0), (int) ($player->t2_weight ?? 0),
(int) ($player->t3_wight ?? 0), (int) ($player->t3_weight ?? 0),
(int) ($player->t4_wight ?? 0), (int) ($player->t4_weight ?? 0),
(int) ($player->t5_wight ?? 0), (int) ($player->t5_weight ?? 0),
]; ];
return self::drawTierByWeightArray($tiers, $weights); return self::drawTierByWeightArray($tiers, $weights);
} }

View File

@@ -20,11 +20,11 @@ use plugin\saiadmin\basic\think\BaseModel;
* @property $safety_line 安全线 * @property $safety_line 安全线
* @property $create_time 创建时间 * @property $create_time 创建时间
* @property $update_time 修改时间 * @property $update_time 修改时间
* @property $t1_wight T1池权重 * @property $t1_weight T1池权重
* @property $t2_wight T2池权重 * @property $t2_weight T2池权重
* @property $t3_wight T3池权重 * @property $t3_weight T3池权重
* @property $t4_wight T4池权重 * @property $t4_weight T4池权重
* @property $t5_wight T5池权重 * @property $t5_weight T5池权重
*/ */
class DiceLotteryConfig extends BaseModel class DiceLotteryConfig extends BaseModel
{ {

View File

@@ -23,17 +23,17 @@ use app\dice\model\lottery_config\DiceLotteryConfig;
* @property $status 状态 * @property $status 状态
* @property $coin 平台币 * @property $coin 平台币
* @property $is_up 倍率 * @property $is_up 倍率
* @property $t1_wight T1池权重 * @property $t1_weight T1池权重
* @property $t2_wight T2池权重 * @property $t2_weight T2池权重
* @property $t3_wight T3池权重 * @property $t3_weight T3池权重
* @property $t4_wight T4池权重 * @property $t4_weight T4池权重
* @property $t5_wight T5池权重 * @property $t5_weight T5池权重
* @property $total_ticket_count 总抽奖次数 * @property $total_ticket_count 总抽奖次数
* @property $paid_ticket_count 购买抽奖次数 * @property $paid_ticket_count 购买抽奖次数
* @property $free_ticket_count 赠送抽奖次数 * @property $free_ticket_count 赠送抽奖次数
* @property $created_at 创建时间 * @property $create_time 创建时间
* @property $updated_at 更新时间 * @property $update_time 更新时间
* @property $deleted_at 删除时间 * @property $delete_time 删除时间
*/ */
class DicePlayer extends BaseModel class DicePlayer extends BaseModel
{ {
@@ -49,10 +49,9 @@ class DicePlayer extends BaseModel
*/ */
protected $table = 'dice_player'; protected $table = 'dice_player';
/** 创建时间字段dice_player 表为 created_at */ protected $createTime = 'create_time';
protected $createTime = 'created_at';
/** 更新时间字段dice_player 表为 updated_at */ protected $updateTime = 'update_time';
protected $updateTime = 'updated_at';
/** /**
* 新增前:生成唯一 uid昵称 name 默认使用 uid * 新增前:生成唯一 uid昵称 name 默认使用 uid
@@ -83,7 +82,7 @@ class DicePlayer extends BaseModel
} }
/** /**
* 从 DiceLotteryConfig type=0 取 t1_wightt5_wight 作为玩家未设置时的默认值 * 从 DiceLotteryConfig type=0 取 t1_weightt5_weight 作为玩家未设置时的默认值
*/ */
protected static function setDefaultWeightsFromLotteryConfig(DicePlayer $model): void protected static function setDefaultWeightsFromLotteryConfig(DicePlayer $model): void
{ {
@@ -91,7 +90,7 @@ class DicePlayer extends BaseModel
if (!$config) { if (!$config) {
return; return;
} }
$fields = ['t1_wight', 't2_wight', 't3_wight', 't4_wight', 't5_wight']; $fields = ['t1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight'];
foreach ($fields as $field) { foreach ($fields as $field) {
try { try {
$val = $model->getAttr($field); $val = $model->getAttr($field);

View File

@@ -19,11 +19,11 @@ class DiceLotteryConfigValidate extends BaseValidate
protected $rule = [ protected $rule = [
'name' => 'require', 'name' => 'require',
'type' => 'require', 'type' => 'require',
't1_wight' => 'require', 't1_weight' => 'require',
't2_wight' => 'require', 't2_weight' => 'require',
't3_wight' => 'require', 't3_weight' => 'require',
't4_wight' => 'require', 't4_weight' => 'require',
't5_wight' => 'require', 't5_weight' => 'require',
]; ];
/** /**
@@ -32,11 +32,11 @@ class DiceLotteryConfigValidate extends BaseValidate
protected $message = [ protected $message = [
'name' => '名称必须填写', 'name' => '名称必须填写',
'type' => '奖池类型必须填写', 'type' => '奖池类型必须填写',
't1_wight' => 'T1池权重必须填写', 't1_weight' => 'T1池权重必须填写',
't2_wight' => 'T2池权重必须填写', 't2_weight' => 'T2池权重必须填写',
't3_wight' => 'T3池权重必须填写', 't3_weight' => 'T3池权重必须填写',
't4_wight' => 'T4池权重必须填写', 't4_weight' => 'T4池权重必须填写',
't5_wight' => 'T5池权重必须填写', 't5_weight' => 'T5池权重必须填写',
]; ];
/** /**
@@ -46,20 +46,20 @@ class DiceLotteryConfigValidate extends BaseValidate
'save' => [ 'save' => [
'name', 'name',
'type', 'type',
't1_wight', 't1_weight',
't2_wight', 't2_weight',
't3_wight', 't3_weight',
't4_wight', 't4_weight',
't5_wight', 't5_weight',
], ],
'update' => [ 'update' => [
'name', 'name',
'type', 'type',
't1_wight', 't1_weight',
't2_wight', 't2_weight',
't3_wight', 't3_weight',
't4_wight', 't4_weight',
't5_wight', 't5_weight',
], ],
]; ];