添加项目文件。
This commit is contained in:
@@ -0,0 +1,224 @@
|
||||
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");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user