Files
dafuweng-saiadmin6.x/server/app/dice/logic/player/DicePlayerLogic.php

84 lines
2.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: your name
// +----------------------------------------------------------------------
namespace app\dice\logic\player;
use app\dice\basic\DiceBaseLogic;
use app\dice\model\lottery_pool_config\DiceLotteryPoolConfig;
use plugin\saiadmin\exception\ApiException;
use plugin\saiadmin\utils\Helper;
use app\dice\model\player\DicePlayer;
/**
* 大富翁-玩家逻辑层
*/
class DicePlayerLogic extends DiceBaseLogic
{
/** 密码加密盐(可与 config 统一) */
private const PASSWORD_SALT = 'dice_player_salt_2024';
/**
* 构造函数
*/
public function __construct()
{
$this->model = new DicePlayer();
}
/**
* 添加数据(密码 md5+salt 加密)
*/
public function add(array $data): mixed
{
if (!empty($data['password'])) {
$data['password'] = $this->hashPassword($data['password']);
}
return parent::add($data);
}
/**
* 修改数据(仅当传入 password 时用 md5+salt 加密后更新)
*/
public function edit($id, array $data): mixed
{
if (isset($data['password']) && $data['password'] !== '') {
$data['password'] = $this->hashPassword($data['password']);
} else {
unset($data['password']);
}
$data = $this->applyLotteryPoolWeightsToPlayerData($data);
return parent::edit($id, $data);
}
/**
* 已绑定彩金池时:玩家 T1T5 以池配置为准,避免前端提交陈旧权重覆盖同步结果
*/
private function applyLotteryPoolWeightsToPlayerData(array $data): array
{
$configId = isset($data['lottery_config_id']) ? (int) $data['lottery_config_id'] : 0;
if ($configId <= 0) {
return $data;
}
$config = DiceLotteryPoolConfig::find($configId);
if (!$config) {
return $data;
}
$row = $config->getData();
foreach (['t1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight'] as $field) {
$data[$field] = $row[$field] ?? 0;
}
return $data;
}
/**
* 密码加密md5(salt . password)
*/
private function hashPassword(string $password): string
{
return md5(self::PASSWORD_SALT . $password);
}
}