225 lines
9.0 KiB
C#
225 lines
9.0 KiB
C#
using System.Text;
|
|||
|
|
using AdminService.GameConfigs;
|
||
|
|
using Common;
|
||
|
|
using CommonDomain;
|
||
|
|
using CommonDomain.BaseModel;
|
||
|
|
using CommonInfrastructure;
|
||
|
|
using Microsoft.AspNetCore.Mvc;
|
||
|
|
using NewLife;
|
||
|
|
using RedisService;
|
||
|
|
using XAct;
|
||
|
|
|
||
|
|
namespace AdminApi.GameConfigs
|
||
|
|
{
|
||
|
|
[ApiController, Route("adminapi/[controller]")]
|
||
|
|
public class ActivityConfigController : BaseController
|
||
|
|
{
|
||
|
|
private readonly IActivityConfigService _activityConfigService;
|
||
|
|
private readonly IRedisService _redisService;
|
||
|
|
|
||
|
|
public ActivityConfigController(IActivityConfigService activityConfigService, IRedisService redisService)
|
||
|
|
{
|
||
|
|
_activityConfigService = activityConfigService;
|
||
|
|
_redisService = redisService;
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpGet]
|
||
|
|
[HttpGet("Get")]
|
||
|
|
public async Task<BaseResponse<ActivityConfig>> Get()
|
||
|
|
{
|
||
|
|
var config = await _activityConfigService.Get();
|
||
|
|
if (config != null)
|
||
|
|
return this.ToResult(config);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<ActivityConfig>("配置不存在");
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("Update")]
|
||
|
|
public async Task<BaseResponse<string>> Update(ActivityConfig config)
|
||
|
|
{
|
||
|
|
var res = await _activityConfigService.Update(config);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("Delete")]
|
||
|
|
public async Task<BaseResponse<string>> Delete()
|
||
|
|
{
|
||
|
|
var res = await _activityConfigService.Delete();
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateBattleOrder")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateBattleOrder(BattleOrderConfig config)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.BattleOrderConfig = config;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateRelief")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateRelief(ReliefConfig config)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.ReliefConfig = config;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateSign")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateSign(List<SignConfig> configs)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.SignConfigs = configs;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateGoldShop")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateGoldShop(List<GoldShopConfig> configs)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.GoldShopConfigs = configs;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateDiamondShop")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateDiamondShop(List<DiamondShopConfig> configs)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.DiamondShopConfigs = configs;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateRegister")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateRegister(RegisterConfig config)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.RegisterConfig = config;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpPost("UpdateFishingReturn")]
|
||
|
|
public async Task<BaseResponse<string>> UpdateFishingReturn(FishingReturnConfig config)
|
||
|
|
{
|
||
|
|
var activityConfig = await _activityConfigService.Get() ?? new ActivityConfig();
|
||
|
|
activityConfig.FishingReturnConfig = config;
|
||
|
|
var res = await _activityConfigService.Update(activityConfig);
|
||
|
|
if (res.isok)
|
||
|
|
return this.ToResult(res.msg);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<string>(res.msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpGet("GetFishingReturn")]
|
||
|
|
public async Task<BaseResponse<FishingReturnConfig>> GetFishingReturn()
|
||
|
|
{
|
||
|
|
var config = await _activityConfigService.Get();
|
||
|
|
if (config?.FishingReturnConfig != null)
|
||
|
|
return this.ToResult(config.FishingReturnConfig);
|
||
|
|
else
|
||
|
|
return this.ToFailResult<FishingReturnConfig>("配置不存在");
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpGet("SaveSection/{sectionName}")]
|
||
|
|
public async Task<BaseResponse<string>> SaveSection(string sectionName)
|
||
|
|
{
|
||
|
|
var prop = typeof(ActivityConfig).GetProperty(sectionName);
|
||
|
|
if (prop == null)
|
||
|
|
return this.ToFailResult<string>($"板块 {sectionName} 不存在");
|
||
|
|
|
||
|
|
var config = await _activityConfigService.Get();
|
||
|
|
if (config == null)
|
||
|
|
return this.ToFailResult<string>("配置不存在");
|
||
|
|
|
||
|
|
var sectionValue = prop.GetValue(config);
|
||
|
|
if (sectionValue == null)
|
||
|
|
return this.ToFailResult<string>($"板块 {sectionName} 数据为空");
|
||
|
|
|
||
|
|
var jsonPath = global::System.IO.Path.Combine(AppContext.BaseDirectory, "Config", "activityconfig.json");
|
||
|
|
|
||
|
|
try
|
||
|
|
{
|
||
|
|
await _activityConfigService.Update(config);
|
||
|
|
|
||
|
|
ActivityConfig fileConfig;
|
||
|
|
if (global::System.IO.File.Exists(jsonPath))
|
||
|
|
{
|
||
|
|
var json = await global::System.IO.File.ReadAllTextAsync(jsonPath, global::System.Text.Encoding.UTF8);
|
||
|
|
fileConfig = global::System.Text.Json.JsonSerializer.Deserialize<ActivityConfig>(json, new global::System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true, ReadCommentHandling = global::System.Text.Json.JsonCommentHandling.Skip }) ?? new ActivityConfig();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
fileConfig = new ActivityConfig();
|
||
|
|
}
|
||
|
|
|
||
|
|
prop.SetValue(fileConfig, sectionValue);
|
||
|
|
|
||
|
|
var outJson = global::System.Text.Json.JsonSerializer.Serialize(fileConfig, new global::System.Text.Json.JsonSerializerOptions
|
||
|
|
{
|
||
|
|
WriteIndented = true,
|
||
|
|
Encoder = global::System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
|
||
|
|
});
|
||
|
|
await global::System.IO.File.WriteAllTextAsync(jsonPath, outJson, global::System.Text.Encoding.UTF8);
|
||
|
|
|
||
|
|
return this.ToResult($"{sectionName} 已保存到 activityconfig.json");
|
||
|
|
}
|
||
|
|
catch (Exception ex)
|
||
|
|
{
|
||
|
|
return this.ToFailResult<string>($"保存失败: {ex.Message}");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
[HttpGet("ExportSection/{sectionName}")]
|
||
|
|
public async Task<IActionResult> ExportSection(string sectionName)
|
||
|
|
{
|
||
|
|
var config = await _activityConfigService.Get();
|
||
|
|
if (config == null)
|
||
|
|
return NotFound("配置不存在");
|
||
|
|
|
||
|
|
var prop = typeof(ActivityConfig).GetProperty(sectionName);
|
||
|
|
if (prop == null)
|
||
|
|
return NotFound($"板块 {sectionName} 不存在");
|
||
|
|
|
||
|
|
var data = prop.GetValue(config);
|
||
|
|
if (data == null)
|
||
|
|
return NotFound($"板块 {sectionName} 数据为空");
|
||
|
|
|
||
|
|
var json = global::System.Text.Json.JsonSerializer.Serialize(data, new global::System.Text.Json.JsonSerializerOptions
|
||
|
|
{
|
||
|
|
WriteIndented = true,
|
||
|
|
Encoder = global::System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
|
||
|
|
});
|
||
|
|
return File(global::System.Text.Encoding.UTF8.GetBytes(json), "application/json", $"{sectionName}.json");
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|