import os
import random
import string
from datetime import datetime, timedelta
from flask import current_app

def generate_random_string(length=8):
    """生成随机字符串"""
    chars = string.ascii_letters + string.digits
    return ''.join(random.choice(chars) for _ in range(length))

def format_currency(amount):
    """格式化货币显示"""
    return f"¥{amount:,.2f}"

def format_duration(minutes):
    """格式化时长显示"""
    if minutes < 60:
        return f"{minutes}分钟"
    else:
        hours = minutes // 60
        mins = minutes % 60
        if mins == 0:
            return f"{hours}小时"
        else:
            return f"{hours}小时{mins}分钟"

def is_valid_image(filename):
    """检查是否为有效的图片文件"""
    allowed_extensions = {'png', 'jpg', 'jpeg', 'gif'}
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in allowed_extensions

def calculate_booking_end_time(start_time, duration_minutes):
    """计算预约结束时间"""
    return start_time + timedelta(minutes=duration_minutes)

def get_upcoming_week_dates():
    """获取接下来一周的日期"""
    today = datetime.now().date()
    dates = []
    for i in range(7):
        date = today + timedelta(days=i)
        dates.append({
            'date': date,
            'display': date.strftime('%m月%d日'),
            'weekday': ['周一', '周二', '周三', '周四', '周五', '周六', '周日'][date.weekday()]
        })
    return dates

def validate_phone(phone):
    """验证手机号格式"""
    import re
    pattern = r'^1[3-9]\d{9}$'
    return re.match(pattern, phone) is not None

def validate_email(email):
    """验证邮箱格式"""
    import re
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    return re.match(pattern, email) is not None