This commit is contained in:
Putoo
2026-06-17 19:22:35 +08:00
parent 5cd6151b96
commit 3b0f1e37ee
40 changed files with 1856 additions and 55 deletions

View File

@@ -132,6 +132,7 @@ public class MapController : ControllerBase
#endregion
var broadcast = await _messageService.GetBroadcastData(area);
object ret = new
{
@@ -143,7 +144,8 @@ public class MapController : ControllerBase
nearUser,
noReadMsg = noReadMsg[3],
business,
mapRes
mapRes,
broadcast
};
return PoAction.Ok(ret);

View File

@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace Application.Web.Controllers.Pub;
@@ -13,12 +14,17 @@ public class EquController : ControllerBase
private readonly IGameEquService _equService;
private readonly IUnitUserAttrService _attrService;
private readonly IUnitUserService _userService;
private readonly IGameDicService _dicService;
private readonly IMessageService _messageService;
public EquController(IGameEquService equService, IUnitUserAttrService attrService, IUnitUserService userService)
public EquController(IGameEquService equService, IUnitUserAttrService attrService, IUnitUserService userService,
IGameDicService dicService, IMessageService messageService)
{
_equService = equService;
_attrService = attrService;
_userService = userService;
_dicService = dicService;
_messageService = messageService;
}
/// <summary>
@@ -109,12 +115,6 @@ public class EquController : ControllerBase
return PoAction.Message("装备不存在!");
}
if (equInfo.isAppr == 0)
{
return PoAction.Message("装备未鉴定!");
}
equInfo.isLock = equInfo.isLock == 0 ? 1 : 0;
bool result = await _equService.UpdateUserEquInfo(equInfo);
@@ -341,4 +341,393 @@ public class EquController : ControllerBase
return PoAction.Ok(new { data, suit });
}
/// <summary>
/// 获取装备觉醒所需
/// </summary>
/// <param name="ue"></param>
/// <returns></returns>
[HttpGet]
public async Task<IPoAction> GetEquAwakenInfo(string ue)
{
string userId = StateHelper.userId;
var equData = await _equService.GetUserEquInfo(ue);
if (equData == null)
{
return PoAction.Message("装备不存在!");
}
if (equData.userId != userId)
{
return PoAction.Message("装备不存在!");
}
if (equData.isAppr == 0)
{
return PoAction.Message("装备未鉴定!");
}
if (equData.useEndTime < TimeExtend.GetTimeStampSeconds)
{
return PoAction.Message("装备已过期!");
}
CheckTowerNeed result = new CheckTowerNeed();
if (equData.EquAwaken.Count == 0)
{
var dicConfig = await _dicService.GetDicInfo(nameof(GameEnum.DicCode.Awaken));
List<TowerNeed> need = JsonConvert.DeserializeObject<List<TowerNeed>>(dicConfig.sign);
result = await GameBus.CheckNeed(userId, need);
}
else
{
var upAwaken =
await _equService.GetEquAwakenInfoByLev(equData.EquAwaken[0].atId, equData.EquAwaken[0].lev + 1);
if (upAwaken == null)
{
return PoAction.Message("觉醒已达到上限!");
}
result = await GameBus.CheckNeed(userId, upAwaken.need);
}
return PoAction.Ok(result);
}
/// <summary>
/// 觉醒装备
/// </summary>
/// <param name="ue"></param>
/// <param name="type">0重置1正常觉醒</param>
/// <returns></returns>
[HttpGet]
public async Task<IPoAction> HandleEquAwaken(string ue, int type)
{
string userId = StateHelper.userId;
var equData = await _equService.GetUserEquInfo(ue);
if (equData == null)
{
return PoAction.Message("装备不存在!");
}
if (equData.userId != userId)
{
return PoAction.Message("装备不存在!");
}
if (equData.isAppr == 0)
{
return PoAction.Message("装备未鉴定!");
}
if (equData.useEndTime < TimeExtend.GetTimeStampSeconds)
{
return PoAction.Message("装备已过期!");
}
EquAwakenData onAwaken = new EquAwakenData();
game_equ_awaken newAwaken = new game_equ_awaken();
CheckTowerNeed result = new CheckTowerNeed();
if (type == 0) //重置
{
newAwaken = await _equService.GetRandomOneAwakenByCode(equData.code);
if (newAwaken == null)
{
return PoAction.Message("该部件装备不可觉醒!");
}
onAwaken = newAwaken.levAttr.Find(it => it.lev == 1);
var dicConfig = await _dicService.GetDicInfo(nameof(GameEnum.DicCode.Awaken));
List<TowerNeed> need = JsonConvert.DeserializeObject<List<TowerNeed>>(dicConfig.sign);
result = await GameBus.CheckNeed(userId, need);
}
else
{
if (equData.EquAwaken.Count == 0)
{
newAwaken = await _equService.GetRandomOneAwakenByCode(equData.code);
if (newAwaken == null)
{
return PoAction.Message("该部件装备不可觉醒!");
}
onAwaken = newAwaken.levAttr.Find(it => it.lev == 1);
var dicConfig = await _dicService.GetDicInfo(nameof(GameEnum.DicCode.Awaken));
List<TowerNeed> need = JsonConvert.DeserializeObject<List<TowerNeed>>(dicConfig.sign);
result = await GameBus.CheckNeed(userId, need);
}
else
{
var upAwaken =
await _equService.GetEquAwakenInfoByLev(equData.EquAwaken[0].atId, equData.EquAwaken[0].lev + 1);
if (upAwaken == null)
{
return PoAction.Message("觉醒已达到上限!");
}
newAwaken = await _equService.GetEquAwakenInfo(equData.EquAwaken[0].atId);
onAwaken = upAwaken;
result = await GameBus.CheckNeed(userId, upAwaken.need);
}
}
if (result.result == false)
{
return PoAction.Message("不满足觉醒条件!");
}
if (await GameBus.UpdateBag(userId, 0, result.Needs, "觉醒装备"))
{
if (RandomAssist.CheakRandom(onAwaken.success))
{
EquAwaken awaken = new EquAwaken();
awaken.atId = newAwaken.atId;
awaken.name = newAwaken.name;
awaken.lev = onAwaken.lev;
awaken.awaken = onAwaken.attr;
equData.EquAwaken = [awaken];
if (await _equService.UpdateUserEquInfo(equData, true, "觉醒", "装备觉醒"))
{
string msg = $"[{equData.equName}]装备的特性【{awaken.name}】升至{awaken.lev}级!";
await _messageService.SendBroadcast(userId, nameof(MessageEnum.BroadcastCode.Promote), msg);
//此处为觉醒成功,返回相关数据
var nextAwaken =
await _equService.GetEquAwakenInfoByLev(equData.EquAwaken[0].atId,
equData.EquAwaken[0].lev + 1);
var nextResult = new CheckTowerNeed()
{
result = false,
Needs = new List<TowerNeed>()
};
if (nextAwaken != null)
{
nextResult = await GameBus.CheckNeed(userId, nextAwaken.need);
}
return PoAction.Ok(new { state = 1, awaken = equData.EquAwaken, result = nextResult }, "觉醒成功!");
}
else
{
return PoAction.Message("觉醒异常,请稍后尝试!");
}
}
else
{
//此处为觉醒成功,返回相关数据
var nextAwaken =
await _equService.GetEquAwakenInfoByLev(equData.EquAwaken[0].atId,
equData.EquAwaken[0].lev + 1);
var nextResult = new CheckTowerNeed()
{
result = false,
Needs = new List<TowerNeed>()
};
if (nextAwaken != null)
{
nextResult = await GameBus.CheckNeed(userId, nextAwaken.need);
}
return PoAction.Ok(new { state = 0, awaken = equData.EquAwaken, result = nextResult }, "觉醒失败!");
}
}
else
{
return PoAction.Message("觉醒异常,请稍后尝试!");
}
return PoAction.Ok(result);
}
/// <summary>
/// 获取强化信息
/// </summary>
/// <param name="ueId"></param>
/// <returns></returns>
[HttpGet]
public async Task<IPoAction> GetEquUpInfo(string ueId)
{
string userId = StateHelper.userId;
var equInfo = await _equService.GetUserEquInfo(ueId);
if (equInfo == null)
{
return PoAction.Message("装备不存在!");
}
if (equInfo.userId != userId)
{
return PoAction.Message("装备不存在!");
}
if (equInfo.isAppr == 0)
{
return PoAction.Message("装备未鉴定!");
}
long time = TimeExtend.GetTimeStampSeconds;
if (equInfo.useEndTime < time)
{
return PoAction.Message("装备已过期!");
}
if (equInfo.isIntensify == 0)
{
return PoAction.Message("装备不可强化!");
}
bool isMax = false;
int upLev = (int)equInfo.intensifyLev + 1;
var needs = await _equService.GetUserEquUpData(upLev);
if (needs == null)
{
isMax = true;
}
CheckTowerNeeds result = new CheckTowerNeeds();
result.result = false;
result.Needs = new List<TowerNeeds>();
if (!isMax)
{
result = await GameBus.CheckNeeds(userId, needs.needData);
}
return PoAction.Ok(new
{
equData = equInfo,
isMax,
result
});
}
/// <summary>
/// 强化装备
/// </summary>
/// <param name="parms"></param>
/// <returns></returns>
[HttpPost]
public async Task<IPoAction> HandleEquUp([FromBody] EquUpParms parms)
{
string ueId = parms.ueId;
string userId = StateHelper.userId;
var equInfo = await _equService.GetUserEquInfo(ueId);
if (equInfo == null)
{
return PoAction.Message("装备不存在!");
}
if (equInfo.userId != userId)
{
return PoAction.Message("装备不存在!");
}
if (equInfo.isAppr == 0)
{
return PoAction.Message("装备未鉴定!");
}
long time = TimeExtend.GetTimeStampSeconds;
if (equInfo.useEndTime < time)
{
return PoAction.Message("装备已过期!");
}
if (equInfo.isIntensify == 0)
{
return PoAction.Message("装备不可强化!");
}
int upLev = (int)equInfo.intensifyLev + 1;
var needs = await _equService.GetUserEquUpData(upLev);
if (needs == null)
{
return PoAction.Message("已达到最大强化等级!");
}
List<TowerNeeds> reqNeeds = JsonConvert.DeserializeObject<List<TowerNeeds>>(parms.needs);
//验证材料
foreach (var item in needs.needData)
{
var onNeed = reqNeeds.Find(it => it.Id == item.Id);
if (item.NeedItem.Any(it => it.code == onNeed.code && it.parameter == onNeed.parameter) == false &&
item.code != onNeed.code && item.parameter != onNeed.parameter)
{
return PoAction.Message("材料错误!");
}
}
var result = await GameBus.CheckNeeds(userId, reqNeeds);
if (result.result == false)
{
return PoAction.Message("材料不足!");
}
if (await GameBus.UpdateBag(userId, 0, reqNeeds, $"强化装备:{ueId}"))
{
CheckTowerNeeds nexResult = new CheckTowerNeeds();
nexResult.result = false;
nexResult.Needs = new List<TowerNeeds>();
bool isMax = false;
int state = 0;
int okNum = (int)needs.okChance;
if (RandomAssist.CheakRandom(okNum))
{
state = 1;
equInfo.intensifyLev = upLev;
equInfo.isDeal = result.isDeal;
equInfo.isGive = result.isGive;
if (await _equService.UpdateUserEquInfo(equInfo, true, "强化", "强化装备") == false)
{
return PoAction.Message("强化异常,请联系客服!");
}
var nextNeeds = await _equService.GetUserEquUpData((int)equInfo.intensifyLev + 1);
if (needs == null)
{
isMax = true;
}
else
{
var nexts = nextNeeds.euId == needs.euId ? reqNeeds : nextNeeds.needData;
nexResult = await GameBus.CheckNeeds(userId, nexts);
}
}
else //执行材料返还
{
List<TowerGet> retProp = new List<TowerGet>();
foreach (var item in reqNeeds)
{
if (item.retCount > 0 && item.isOp == 1)
{
TowerGet temp = new TowerGet()
{
code = item.code,
name = item.name,
parameter = item.parameter,
count = item.count
};
retProp.Add(temp);
}
}
if (retProp.Count > 0)
{
await GameBus.UpdateBag(userId, 1, retProp, "强化失败,返还");
}
nexResult = await GameBus.CheckNeeds(userId, reqNeeds);
}
return PoAction.Ok(new
{
state,
equData = equInfo,
isMax,
result = nexResult
});
}
else
{
return PoAction.Message("强化错误,请稍后尝试!");
}
}
}

View File

@@ -126,4 +126,18 @@ public class BagController : ControllerBase
return PoAction.Ok(new { data = new List<string>(), total = total.Value });
}
}
/// <summary>
/// 验证用户道具
/// </summary>
/// <param name="parms"></param>
/// <returns></returns>
[HttpPost]
public async Task<IPoAction> CheckUserProp([FromBody] CheckUserPropParms parms)
{
string userId = StateHelper.userId;
List<TowerNeeds> needs = JsonConvert.DeserializeObject<List<TowerNeeds>>(parms.needs);
var result = await GameBus.CheckNeeds(userId, needs, 1);
return PoAction.Ok(result);
}
}

View File

@@ -0,0 +1,7 @@
namespace Application.Web;
public class EquUpParms
{
public string ueId { get; set; }
public string needs { get; set; }
}

View File

@@ -0,0 +1,6 @@
namespace Application.Web;
public class CheckUserPropParms
{
public string needs { get; set; }
}