using FateMaster.API.Data; using FateMaster.API.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace FateMaster.API.Controllers; [ApiController] [Route("api/[controller]")] public class DivinationController : ControllerBase { private readonly ApplicationDbContext _context; private readonly ILogger _logger; public DivinationController( ApplicationDbContext context, ILogger logger) { _context = context; _logger = logger; } /// /// 获取价格配置 /// [HttpGet("prices")] public async Task>> GetPrices() { var prices = await _context.PriceConfigs .Where(p => p.IsEnabled) .ToListAsync(); return Ok(prices); } /// /// 提交卜卦请求 /// [HttpPost("submit")] public async Task> Submit([FromBody] SubmitRequest request) { try { var record = new DivinationRecord { Type = request.Type, InputData = request.InputData, PaymentStatus = "pending", PaymentMethod = request.PaymentMethod, Amount = request.Amount, ClientIp = HttpContext.Connection.RemoteIpAddress?.ToString(), Language = request.Language ?? "zh-CN" }; _context.DivinationRecords.Add(record); await _context.SaveChangesAsync(); return Ok(record); } catch (Exception ex) { _logger.LogError(ex, "Error submitting divination request"); return StatusCode(500, new { message = "提交失败" }); } } /// /// 获取卜卦结果 /// [HttpGet("{id}")] public async Task> GetResult(long id) { var record = await _context.DivinationRecords.FindAsync(id); if (record == null) { return NotFound(); } return Ok(record); } } public record SubmitRequest( string Type, string InputData, string? PaymentMethod, decimal Amount, string? Language );