<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: your name
// +----------------------------------------------------------------------
namespace app\dice\logic\player;

use plugin\saiadmin\basic\think\BaseLogic;
use plugin\saiadmin\exception\ApiException;
use plugin\saiadmin\utils\Helper;
use app\dice\model\player\DicePlayer;

/**
 * 大富翁-玩家逻辑层
 */
class DicePlayerLogic extends BaseLogic
{
    /** 密码加密盐（可与 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']);
        }
        return parent::edit($id, $data);
    }

    /**
     * 密码加密：md5(salt . password)
     */
    private function hashPassword(string $password): string
    {
        return md5(self::PASSWORD_SALT . $password);
    }
}
