每日运势小程序

This commit is contained in:
cjd
2025-11-09 18:41:10 +08:00
parent 823dc8d37b
commit 6cba0f5976
9 changed files with 924 additions and 1 deletions

View File

@@ -0,0 +1,78 @@
using System;
using System.Threading.Tasks;
using DouyinApi.Controllers;
using DouyinApi.IServices;
using DouyinApi.Model.DailyFortune;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace DouyinApi.Api.Controllers.MiniProgram;
[Produces("application/json")]
[Route("api/daily-fortune")]
[AllowAnonymous]
public class DailyFortuneController : BaseApiController
{
private readonly IDailyFortuneService _dailyFortuneService;
private readonly IContentSecurityService _contentSecurityService;
private readonly ILogger<DailyFortuneController> _logger;
public DailyFortuneController(
IDailyFortuneService dailyFortuneService,
IContentSecurityService contentSecurityService,
ILogger<DailyFortuneController> logger)
{
_dailyFortuneService = dailyFortuneService;
_contentSecurityService = contentSecurityService;
_logger = logger;
}
[HttpPost("analyze")]
public async Task<IActionResult> Analyze([FromBody] DailyFortuneRequest request)
{
if (!ModelState.IsValid)
{
return BadRequest(new { message = "invalid_request" });
}
var normalizedCity = request.BirthCity?.Trim() ?? string.Empty;
if (string.IsNullOrWhiteSpace(normalizedCity))
{
return BadRequest(new { message = "invalid_birth_city" });
}
var securityText = string.Join(" ", new[]
{
normalizedCity,
request.BirthProvince ?? string.Empty,
request.BirthDate ?? string.Empty,
request.BirthTime ?? string.Empty
}).Trim();
var security = await _contentSecurityService.CheckTextAsync(securityText);
if (!security.IsSafe)
{
return BadRequest(new { message = "CONTENT_RISK" });
}
try
{
var response = await _dailyFortuneService.AnalyzeAsync(request);
return Ok(response);
}
catch (ArgumentException ex) when (ex.Message == "invalid_birthdate")
{
return BadRequest(new { message = "BIRTHDATE_INVALID" });
}
catch (ArgumentException ex) when (ex.Message == "invalid_birth_city")
{
return BadRequest(new { message = "invalid_birth_city" });
}
catch (Exception ex)
{
_logger.LogError(ex, "Daily fortune analyze failed");
return StatusCode(500, new { message = "GENERATION_FAILED" });
}
}
}

View File

@@ -34,6 +34,31 @@
所有
</summary>
</member>
<member name="P:DouyinApi.Model.DailyFortune.DailyFortuneRequest.BirthDate">
<summary>
出生日期,格式 yyyy-MM-dd。
</summary>
</member>
<member name="P:DouyinApi.Model.DailyFortune.DailyFortuneRequest.BirthTime">
<summary>
出生时间,格式 HH:mm可为空。
</summary>
</member>
<member name="P:DouyinApi.Model.DailyFortune.DailyFortuneRequest.BirthCity">
<summary>
出生城市(精确到市)。
</summary>
</member>
<member name="P:DouyinApi.Model.DailyFortune.DailyFortuneRequest.BirthProvince">
<summary>
出生省份/州信息,选填,用于提示词增强。
</summary>
</member>
<member name="P:DouyinApi.Model.DailyFortune.FortuneDimension.Trend">
<summary>
up / down / steady
</summary>
</member>
<member name="T:DouyinApi.Model.IDS4DbModels.ApplicationRole">
<summary>
以下model 来自ids4项目多库模式为了调取ids4数据

View File

@@ -152,7 +152,8 @@
"ConnId": "WMBLOG_MYSQL",
"DBType": 0,
"Enabled": true,
"Connection": "Server=zhongjy001.synology.me;Port=3315;Database=douyinminiprogram;User=root;Password=123456asdfg;"
//"Connection": "Server=127.0.0.1;Port=3306;Database=douyinminiprogram;User=root;Password=e6b4274e7731b9de;"
"Connection": "Server=zhongjy001.synology.me;Port=3315;Database=fatemaster;User=root;Password=123456asdfg;"
}
//{
// "ConnId": "WMBLOG_MYSQL_2",