From ad49fbb1b125742b3cef156c8a5adedeb70bb41e Mon Sep 17 00:00:00 2001 From: Putoo <290555932@qq.com> Date: Thu, 18 Jun 2026 18:54:22 +0800 Subject: [PATCH] 121212 --- Kx.SeaTime.sln.DotSettings.user | 1 + .../model/RandomDataBase.cs | 7 + .../resource/game/game_equ_attr.cs | 81 ++++++ .../resource/game/game_equ_make.cs | 45 ++++ .../view/MakePaperView.cs | 7 + .../Application.Domain/Config/GameConfig.cs | 1 + Service/Application.Domain/Enum/GameEnum.cs | 4 + .../Services/Interface/Equ/IGameEquService.cs | 11 +- .../Services/Service/Equ/GameEquService.cs | 236 +++++++++++++++++- .../Application.Domain/Tool/Base/GameBus.cs | 28 +++ .../Application.Domain/Tool/Base/GameTool.cs | 36 ++- .../Controllers/Map/StoreController.cs | 13 +- .../Controllers/Pub/BusinessController.cs | 134 ++++++++++ .../Controllers/Pub/EquController.cs | 193 +++++++++++++- .../Controllers/Pub/RecoverController.cs | 194 +++++++++++++- .../Controllers/User/BagController.cs | 16 +- .../RequestParms/User/CheckUserPropParms.cs | 2 + Web/public/images/equ/gw.png | Bin 0 -> 1288 bytes Web/public/images/equ/hm.gif | Bin 0 -> 3684 bytes Web/public/images/equ/l.gif | Bin 0 -> 608 bytes Web/public/images/equ/ly.gif | Bin 0 -> 2793 bytes Web/public/images/equ/ms.png | Bin 0 -> 1342 bytes Web/public/images/equ/r.gif | Bin 0 -> 615 bytes Web/public/images/equ/sy.png | Bin 0 -> 770 bytes Web/public/images/equ/tq.png | Bin 0 -> 1064 bytes Web/public/images/equ/ty.png | Bin 0 -> 1290 bytes Web/public/images/equ/zx.png | Bin 0 -> 1233 bytes Web/src/assets/css/style.css | 167 ++++++++++++- Web/src/components/Business/GameEqu.vue | 16 +- Web/src/pages/business/equmake.vue | 105 ++++++++ Web/src/pages/business/retEqu.vue | 71 ++++++ Web/src/pages/map/index.vue | 5 +- Web/src/pages/prop/equ.vue | 27 +- Web/src/pages/user/bag/index.vue | 23 +- Web/src/pages/user/equ/index.vue | 20 +- Web/src/pages/user/equ/quality.vue | 147 +++++++++++ Web/src/pages/user/equ/up.vue | 6 +- Web/src/services/Index/BusinessService.ts | 17 ++ Web/src/services/Index/EquService.ts | 24 ++ Web/src/services/Index/RecoverService.ts | 16 ++ Web/src/services/user/BagService.ts | 6 +- Web/src/utility‌/EquTool.ts | 97 +++++++ 42 files changed, 1694 insertions(+), 62 deletions(-) create mode 100644 Service/Application.Domain.Entity/model/RandomDataBase.cs create mode 100644 Service/Application.Domain.Entity/resource/game/game_equ_attr.cs create mode 100644 Service/Application.Domain.Entity/resource/game/game_equ_make.cs create mode 100644 Service/Application.Domain.Entity/view/MakePaperView.cs create mode 100644 Service/Application.Web/Controllers/Pub/BusinessController.cs create mode 100644 Web/public/images/equ/gw.png create mode 100644 Web/public/images/equ/hm.gif create mode 100644 Web/public/images/equ/l.gif create mode 100644 Web/public/images/equ/ly.gif create mode 100644 Web/public/images/equ/ms.png create mode 100644 Web/public/images/equ/r.gif create mode 100644 Web/public/images/equ/sy.png create mode 100644 Web/public/images/equ/tq.png create mode 100644 Web/public/images/equ/ty.png create mode 100644 Web/public/images/equ/zx.png create mode 100644 Web/src/pages/business/equmake.vue create mode 100644 Web/src/pages/business/retEqu.vue create mode 100644 Web/src/pages/user/equ/quality.vue create mode 100644 Web/src/services/Index/BusinessService.ts diff --git a/Kx.SeaTime.sln.DotSettings.user b/Kx.SeaTime.sln.DotSettings.user index f1f5bbe..b8201f6 100644 --- a/Kx.SeaTime.sln.DotSettings.user +++ b/Kx.SeaTime.sln.DotSettings.user @@ -5,6 +5,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/Service/Application.Domain.Entity/model/RandomDataBase.cs b/Service/Application.Domain.Entity/model/RandomDataBase.cs new file mode 100644 index 0000000..cdfbea9 --- /dev/null +++ b/Service/Application.Domain.Entity/model/RandomDataBase.cs @@ -0,0 +1,7 @@ +namespace Application.Domain.Entity; + +public class RandomDataBase +{ + public double random { get; set; } + public object data { get; set; } +} \ No newline at end of file diff --git a/Service/Application.Domain.Entity/resource/game/game_equ_attr.cs b/Service/Application.Domain.Entity/resource/game/game_equ_attr.cs new file mode 100644 index 0000000..145b8f2 --- /dev/null +++ b/Service/Application.Domain.Entity/resource/game/game_equ_attr.cs @@ -0,0 +1,81 @@ +using SqlSugar; +using System; + +namespace Application.Domain.Entity +{ + [Tenant("Kg.SeaTime.Resource")] + public class game_equ_attr + { + /// + /// erId + /// + [SugarColumn(IsPrimaryKey = true, Length = 50)] + public string erId { get; set; } + + /// + /// equCode + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? equCode { get; set; } + + /// + /// minLev + /// + [SugarColumn(IsNullable = true)] + public int? minLev { get; set; } + + /// + /// maxLev + /// + [SugarColumn(IsNullable = true)] + public int? maxLev { get; set; } + + /// + /// 权重 + /// + [SugarColumn(IsNullable = true)] + public int? random { get; set; } + + /// + /// 属性类型:Number 数值 float 百分比 + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? nt { get; set; } + + /// + /// 属性 + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? code { get; set; } + + /// + /// compute + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? compute { get; set; } + + /// + /// min_v + /// + [SugarColumn(Length = 18, IsNullable = true)] + public decimal? min_v { get; set; } + + /// + /// max_v + /// + [SugarColumn(Length = 18, IsNullable = true)] + public decimal? max_v { get; set; } + + /// + /// tips + /// + [SugarColumn(Length = 255, IsNullable = true)] + public string? tips { get; set; } + + /// + /// remark + /// + [SugarColumn(Length = 255, IsNullable = true)] + public string? remark { get; set; } + } +} diff --git a/Service/Application.Domain.Entity/resource/game/game_equ_make.cs b/Service/Application.Domain.Entity/resource/game/game_equ_make.cs new file mode 100644 index 0000000..035b685 --- /dev/null +++ b/Service/Application.Domain.Entity/resource/game/game_equ_make.cs @@ -0,0 +1,45 @@ +using SqlSugar; +using System; + +namespace Application.Domain.Entity +{ + [Tenant("Kg.SeaTime.Resource")] + public class game_equ_make + { + /// + /// mkId + /// + [SugarColumn(IsPrimaryKey = true, Length = 50)] + public string mkId { get; set; } + + /// + /// goodsId + /// + [SugarColumn(IsNullable = true)] + public int? goodsId { get; set; } + + /// + /// equId + /// + [SugarColumn(IsNullable = true)] + public int? equId { get; set; } + + /// + /// equName + /// + [SugarColumn(Length = 50, IsNullable = true)] + public string? equName { get; set; } + + /// + /// random + /// + [SugarColumn(IsNullable = true)] + public int? random { get; set; } + + /// + /// 是否随机特性 + /// + [SugarColumn(IsNullable = true)] + public int? rdAttr { get; set; } + } +} \ No newline at end of file diff --git a/Service/Application.Domain.Entity/view/MakePaperView.cs b/Service/Application.Domain.Entity/view/MakePaperView.cs new file mode 100644 index 0000000..c6ec2f7 --- /dev/null +++ b/Service/Application.Domain.Entity/view/MakePaperView.cs @@ -0,0 +1,7 @@ +namespace Application.Domain.Entity; + +public class MakePaperView +{ + public game_goods goods { get; set; } + public long count { get; set; } +} \ No newline at end of file diff --git a/Service/Application.Domain/Config/GameConfig.cs b/Service/Application.Domain/Config/GameConfig.cs index 9b0ba43..0c643ed 100644 --- a/Service/Application.Domain/Config/GameConfig.cs +++ b/Service/Application.Domain/Config/GameConfig.cs @@ -17,4 +17,5 @@ public static class GameConfig public const int GameAutoDrugGoodsId = 10001;//急救箱物品ID public const int GameToMapNeedCopper = 5;//传送每海里费用 public const int TeamCacheTime = 300;//队伍缓存时间 + public const int GameEquApprGoods = 10001;//鉴定装备道具 } \ No newline at end of file diff --git a/Service/Application.Domain/Enum/GameEnum.cs b/Service/Application.Domain/Enum/GameEnum.cs index b99b983..06c8b14 100644 --- a/Service/Application.Domain/Enum/GameEnum.cs +++ b/Service/Application.Domain/Enum/GameEnum.cs @@ -55,11 +55,15 @@ public static class GameEnum RetBlood, RetMorale, RetVigour, + RetEqu, MapTo, + Store, + Make, } public enum DicCode { Awaken,//觉醒配置 + Quality,//洗练配置 } } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Interface/Equ/IGameEquService.cs b/Service/Application.Domain/Services/Interface/Equ/IGameEquService.cs index 937c5c4..9313e39 100644 --- a/Service/Application.Domain/Services/Interface/Equ/IGameEquService.cs +++ b/Service/Application.Domain/Services/Interface/Equ/IGameEquService.cs @@ -20,7 +20,8 @@ public interface IGameEquService Task GetUserEquByEquIdCount(string userId, int equId); Task> GetUserEquByEquId(string userId, int equId); Task AddUserEqu(string userId, int equId, int count, string remark); - + Task AddUserEqu(unit_user_equ equData, string remark); + Task AddUserEqu(string userId, int equId, bool rdAttr = false, string remark = ""); Task UpdateUserEquInfo(unit_user_equ equData, bool isAddLog = false, string code = "", string remark = ""); @@ -44,14 +45,22 @@ public interface IGameEquService #endregion + #region 洗练属性/词条 + + Task> GetRandomEquAttr(string equCode, int lev); + + #endregion + #region 强化相关 Task GetUserEquUpData(int lev); + #endregion #region 辅助 Task GetUserEquWeightSum(string userId); + Task GetMakeEquByGoodsId(int goodsId); #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Services/Service/Equ/GameEquService.cs b/Service/Application.Domain/Services/Service/Equ/GameEquService.cs index 5e2e576..1962f3a 100644 --- a/Service/Application.Domain/Services/Service/Equ/GameEquService.cs +++ b/Service/Application.Domain/Services/Service/Equ/GameEquService.cs @@ -180,6 +180,115 @@ public class GameEquService(ISqlSugarClient DbClient, IRedisCache redis) : IGame return result; } + public async Task AddUserEqu(unit_user_equ equData, string remark) + { + var db = DbClient.AsTenant().GetConnectionWithAttr(); + var result = await db.Insertable(equData).ExecuteCommandAsync() > 0; + if (result) + { + //添加日志 + await AddEquLogs([equData], 1, remark, true); + //更新负重 + int weightCount = Convert.ToInt32(equData.weight); + if (weightCount > 0) + { + var attrService = App.GetService(); + await attrService.UpdateUserWeight(equData.userId, 1, weightCount); + } + } + + return result; + } + + public async Task AddUserEqu(string userId, int equId, bool rdAttr = false, string remark = "") + { + var equ = await GetEquInfo(equId); + if (equ == null) + { + return null; + } + + unit_user_equ ue = new unit_user_equ(); + string ueId = StringAssist.NewGuid; + ue.ueId = ueId; + ue.userId = userId; + ue.owerId = userId; + ue.equId = equ.equId; + ue.equName = equ.equName; + ue.unitEquName = equ.equName; + ue.img = equ.img; + ue.sign = ""; + ue.isAppr = 1; + if (equ.isAppr == 0) + { + ue.minAtk = equ.minAtk; + ue.maxAtk = equ.maxAtk; + ue.Defense = Convert.ToInt32(equ.defense); + ue.Agility = Convert.ToInt32(equ.agility); + ue.Morale = Convert.ToInt32(equ.morale); + ue.Blood = Convert.ToInt32(equ.blood); + } + else + { + ue.minAtk = RandomAssist.GetFormatedNumeric((int)equ.minAtk, (int)equ.maxAtk); + ue.maxAtk = RandomAssist.GetFormatedNumeric((int)equ.minAtk, (int)equ.maxAtk); + string[] def = equ.defense.Split('-'); + ue.Defense = RandomAssist.GetFormatedNumeric(Convert.ToInt32(def[0]), Convert.ToInt32(def[1])); + string[] agi = equ.agility.Split('-'); + ue.Agility = RandomAssist.GetFormatedNumeric(Convert.ToInt32(agi[0]), Convert.ToInt32(agi[1])); + string[] mor = equ.morale.Split('-'); + ue.Morale = RandomAssist.GetFormatedNumeric(Convert.ToInt32(mor[0]), Convert.ToInt32(mor[1])); + string[] blo = equ.blood.Split('-'); + ue.Blood = RandomAssist.GetFormatedNumeric(Convert.ToInt32(blo[0]), Convert.ToInt32(blo[1])); + } + + ue.code = equ.code; + ue.suitCode = equ.suitCode; + ue.lev = equ.lev; + ue.durability = equ.durability; + ue.maxdurability = equ.durability; + ue.isIntensify = equ.isIntensify; + ue.intensifyLev = 0; + ue.isLock = 0; + ue.holeCount = equ.holeCount; + ue.sex = equ.sex; + ue.weight = equ.weight; + ue.sysPrice = equ.sysPrice; + ue.qualityAttr = new List(); + if (rdAttr == false) + { + ue.quality = equ.quality; + ue.qualityName = GameTool.GetEquQualityName((int)ue.quality); + ue.EquAttr = equ.equAttr; + } + else + { + var randomAttr = await GetRandomEquAttr(equ.code, (int)equ.lev); + ue.quality = randomAttr.Count; + ue.qualityName = GameTool.GetEquQualityName((int)ue.quality); + ue.EquAttr = randomAttr; + } + + ue.canEqualUp = equ.canEqualUp; + ue.isDeal = equ.isDeal; + ue.isGive = equ.isGive; + ue.opTime = 0; + ue.start = 0; + ue.EquMent = new EquMent(); + ue.EquAwaken = new List(); + ue.GemMent = new List(); + ue.useEndTime = TimeExtend.GetTimeStampBySeconds(DateTime.Now.AddYears(20)); + ue.isOn = 0; + if (await AddUserEqu(ue, remark)) + { + return ue; + } + else + { + return null; + } + } + public async Task UpdateUserEquInfo(unit_user_equ equData, bool isAddLog = false, string code = "", string remark = "") { @@ -507,6 +616,93 @@ public class GameEquService(ISqlSugarClient DbClient, IRedisCache redis) : IGame #endregion + #region 洗练属性/词条 + + private async Task> GetEquAttrData(string erCode) + { + string key = string.Format(BaseCache.BaseCacheKeys, "EquData", "EquAttrData"); + if (await redis.HExistsHashAsync(key, erCode)) + { + return await redis.GetHashAsync>(key, erCode); + } + + var db = DbClient.AsTenant().GetConnectionWithAttr(); + var data = await db.Queryable().Where(it => it.equCode == erCode).ToListAsync(); + await redis.AddHashAsync(key, erCode, data); + return data; + } + + public async Task> GetRandomEquAttr(string equCode, int lev) + { + //计算出的数量 + List numData = new List() + { + new RandomDataBase() { random = 100, data = 1 }, + new RandomDataBase() { random = 90, data = 2 }, + new RandomDataBase() { random = 80, data = 3 }, + new RandomDataBase() { random = 50, data = 4 }, + new RandomDataBase() { random = 30, data = 5 }, + new RandomDataBase() { random = 15, data = 6 }, + new RandomDataBase() { random = 5, data = 7 }, + }; + var numR = GameBus.GetRandomByWeight(numData); + int onNum = Convert.ToInt32(numR.data); + var attrData = await GetEquAttrData(equCode); + attrData = attrData.FindAll(it => it.minLev <= lev && it.maxLev >= lev); + + //开始随机拿属性权重 + List data = new List(); + List weights = new List(); + List attrResult = new List(); + Random rand = new Random(); + + foreach (var item in attrData) + { + data.Add(item); + weights.Add(ushort.Parse(item.random.ToString())); + } + + RandomAssist random = new RandomAssist(onNum); + + attrResult = random.ControllerRandomExtract(rand, data, weights); + List result = new List(); + if (attrResult.Count > 0) + { + foreach (var item in attrResult) + { + var onAttr = item as game_equ_attr; + + AttrItem temp = new AttrItem(); + temp.code = onAttr.code; + temp.compute = onAttr.compute; + if (onAttr.nt == "Number") + { + int onMin = Convert.ToInt32(onAttr.min_v); + int onMax = Convert.ToInt32(onAttr.max_v); + int onPar = RandomAssist.GetFormatedNumeric(onMin, onMax + 1); + temp.parameter = onPar; + string onTip = temp.parameter.ToString().TrimEnd('0').TrimEnd('.'); + temp.tip = string.Format(onAttr.tips, onTip); + } + else + { + int onMin = Convert.ToInt32(onAttr.min_v * 100); + int onMax = Convert.ToInt32(onAttr.max_v * 100); + int onPar = RandomAssist.GetFormatedNumeric(onMin, onMax + 1); + temp.parameter = Math.Round(Convert.ToDecimal(onPar / 100.000M), 2); + string onTip = (temp.parameter * 100).ToString().TrimEnd('0').TrimEnd('.'); + temp.tip = string.Format(onAttr.tips, onTip); + } + + result.Add(temp); + } + } + + return result; + } + + #endregion + #region 强化相关 public async Task GetUserEquUpData(int lev) @@ -522,9 +718,9 @@ public class GameEquService(ISqlSugarClient DbClient, IRedisCache redis) : IGame await redis.AddHashAsync(key, lev.ToString(), data); } } + return data; } - #endregion @@ -537,5 +733,43 @@ public class GameEquService(ISqlSugarClient DbClient, IRedisCache redis) : IGame return data.Sum(it => (int)it.weight); } + private async Task> GetEquMakeData(int goodsId) + { + string key = string.Format(BaseCache.BaseCacheKeys, "EquData", "EquUpData"); + if (await redis.HExistsHashAsync(key, goodsId.ToString())) + { + return await redis.GetHashAsync>(key, goodsId.ToString()); + } + + var db = DbClient.AsTenant().GetConnectionWithAttr(); + var data = await db.Queryable().Where(it => it.goodsId == goodsId).ToListAsync(); + await redis.AddHashAsync(key, goodsId.ToString(), data); + return data; + } + + public async Task GetMakeEquByGoodsId(int goodsId) + { + //构建随机数据 + List equBase = new List(); + var equData = await GetEquMakeData(goodsId); + foreach (var me in equData) + { + RandomDataBase temp = new RandomDataBase(); + temp.random = (double)me.random; + temp.data = me; + equBase.Add(temp); + } + + var makeEqu = GameBus.GetRandomByWeight(equBase); + if (makeEqu == null) + { + return null; + } + + var onMakeEqu = makeEqu.data as game_equ_make; + + return onMakeEqu; + } + #endregion } \ No newline at end of file diff --git a/Service/Application.Domain/Tool/Base/GameBus.cs b/Service/Application.Domain/Tool/Base/GameBus.cs index 027528a..64ead07 100644 --- a/Service/Application.Domain/Tool/Base/GameBus.cs +++ b/Service/Application.Domain/Tool/Base/GameBus.cs @@ -64,6 +64,11 @@ public static class GameBus isok = await accService.UpdateUserAcc(userId, operate, nameof(AccEnum.AccType.teach), count, nameof(AccEnum.Name.其他), remark); } + else if (goodsType.Equals(nameof(GameEnum.PropCode.map))) + { + var mapService = App.GetService(); + isok = await mapService.AddUserCityMap(userId, Convert.ToInt32(parameter)); + } return isok; } @@ -338,6 +343,7 @@ public static class GameBus isok = false; } } + result.Needs.Add(item); } @@ -351,6 +357,28 @@ public static class GameBus #region 概率 + public static RandomDataBase GetRandomByWeight(List data) + { + var _randomInstance = new Random(); + if (data.Count == 0) + { + return null; + } + double totalWeight = data.Sum(it => it.random); + int rnd = _randomInstance.Next(Convert.ToInt32(totalWeight) + 1); + double current = 0; + foreach (var item in data) + { + current += item.random; + if (rnd < current) + { + return item; + } + } + + return null; + } + public static List GetRandomGoods(RandomModel random, int count = 1, int luck = 0) { List result = new List(); diff --git a/Service/Application.Domain/Tool/Base/GameTool.cs b/Service/Application.Domain/Tool/Base/GameTool.cs index 3def85b..f9c2bb5 100644 --- a/Service/Application.Domain/Tool/Base/GameTool.cs +++ b/Service/Application.Domain/Tool/Base/GameTool.cs @@ -138,7 +138,41 @@ public class GameTool return result; } - + + public static string GetEquQualityName(int count) + { + string result = "白"; + switch (count) + { + case 1: + result = "红"; + break; + case 2: + result = "橙"; + break; + case 3: + result = "黄"; + break; + case 4: + result = "绿"; + break; + case 5: + result = "青"; + break; + case 6: + result = "粉"; + break; + case 7: + result = "紫"; + break; + case 8: + result = "金"; + break; + + } + return result; + } + #region 距离计算 /// diff --git a/Service/Application.Web/Controllers/Map/StoreController.cs b/Service/Application.Web/Controllers/Map/StoreController.cs index b9ddabe..7a2d084 100644 --- a/Service/Application.Web/Controllers/Map/StoreController.cs +++ b/Service/Application.Web/Controllers/Map/StoreController.cs @@ -50,6 +50,10 @@ public class StoreController : ControllerBase { return PoAction.Message("Npc不存在!"); } + if (!npcInfo.bus.Any(it => it.code == nameof(GameEnum.NpcBusCode.Store))) + { + return PoAction.Message("业务不可用!"); + } var onMap = await _mapService.GetUserOnMapId(userId); if (npcInfo.mapId != onMap) @@ -84,6 +88,10 @@ public class StoreController : ControllerBase { return PoAction.Message("Npc不存在!"); } + if (!npcInfo.bus.Any(it => it.code == nameof(GameEnum.NpcBusCode.Store))) + { + return PoAction.Message("业务不可用!"); + } var onMap = await _mapService.GetUserOnMapId(userId); if (npcInfo.mapId != onMap) @@ -157,7 +165,10 @@ public class StoreController : ControllerBase { return PoAction.Message("Npc不存在!"); } - + if (!npcInfo.bus.Any(it => it.code == nameof(GameEnum.NpcBusCode.Store))) + { + return PoAction.Message("业务不可用!"); + } var onMap = await _mapService.GetUserOnMapId(userId); if (npcInfo.mapId != onMap) { diff --git a/Service/Application.Web/Controllers/Pub/BusinessController.cs b/Service/Application.Web/Controllers/Pub/BusinessController.cs new file mode 100644 index 0000000..d0c1a8c --- /dev/null +++ b/Service/Application.Web/Controllers/Pub/BusinessController.cs @@ -0,0 +1,134 @@ +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; + +namespace Application.Web.Controllers.Pub; + +/// +/// 业务操作接口 +/// +[Route("[controller]/[action]")] +[ApiController] +[Authorize] +public class BusinessController : ControllerBase +{ + private readonly IGameMapService _mapService; + private readonly IGameEquService _equService; + private readonly IGameGoodsService _goodsService; + + public BusinessController(IGameEquService equService, IGameGoodsService goodsService, IGameMapService mapService) + { + _equService = equService; + _goodsService = goodsService; + _mapService = mapService; + } + + /// + /// 获取打造图纸 + /// + /// + [HttpGet] + public async Task GetEquPaper() + { + string userId = StateHelper.userId; + var data = await _goodsService.GetUserGoodsData(userId, nameof(GoodsEnum.Code.Paper)); + List result = new List(); + foreach (var item in data) + { + MakePaperView temp = new MakePaperView(); + temp.goods = await _goodsService.GetGoodsInfo((int)item.goodsId); + temp.count = (long)item.count; + result.Add(temp); + } + + return PoAction.Ok(result); + } + + /// + /// 打造装备 + /// + /// + /// + /// + [HttpGet] + public async Task HandleEquPaper(int npcId, int goodsId) + { + string userId = StateHelper.userId; + + #region NPC验证 + + var npcInfo = await _mapService.GetNpcInfo(npcId); + if (npcInfo == null) + { + return PoAction.Message("Npc不存在!"); + } + + if (npcInfo.status != 1) + { + return PoAction.Message("Npc不存在!"); + } + + if (!npcInfo.bus.Any(it => it.code == nameof(GameEnum.NpcBusCode.Make))) + { + return PoAction.Message("业务不可用!"); + } + + var onMap = await _mapService.GetUserOnMapId(userId); + if (npcInfo.mapId != onMap) + { + return PoAction.Message("Npc不存在!"); + } + + #endregion + + var myGoods = await _goodsService.GetUserGoodsInfo(userId, goodsId); + if (myGoods == null) + { + return PoAction.Message("暂无图纸!"); + } + + if (myGoods.count < 1) + { + return PoAction.Message("暂无图纸!"); + } + + if (myGoods.code != nameof(GoodsEnum.Code.Paper)) + { + return PoAction.Message("非图纸材料,无法打造!"); + } + + string needstr = await _goodsService.GetGoodsContent(goodsId); + var needs = JsonConvert.DeserializeObject>(needstr); + var check = await GameBus.CheckNeed(userId, needs); + if (check.result) + { + if (await GameBus.UpdateBag(userId, 0, needs, "装备打造")) + { + var onEqu = await _equService.GetMakeEquByGoodsId(goodsId); + if (onEqu == null) + { + return PoAction.Message("打造失败,请联系客服!"); + } + + //发放装备 + bool isRd = onEqu.rdAttr != 0; + var getEqu = await _equService.AddUserEqu(userId, (int)onEqu.equId, isRd, "打造装备"); + if (getEqu != null) + { + return PoAction.Ok(getEqu.ueId, $"打造成功,获得装备[{onEqu.equName}]"); + } + else + { + return PoAction.Message("打造失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("打造失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("材料不足!"); + } + } +} \ No newline at end of file diff --git a/Service/Application.Web/Controllers/Pub/EquController.cs b/Service/Application.Web/Controllers/Pub/EquController.cs index f67438b..8601127 100644 --- a/Service/Application.Web/Controllers/Pub/EquController.cs +++ b/Service/Application.Web/Controllers/Pub/EquController.cs @@ -16,15 +16,17 @@ public class EquController : ControllerBase private readonly IUnitUserService _userService; private readonly IGameDicService _dicService; private readonly IMessageService _messageService; + private readonly IGameGoodsService _goodsService; public EquController(IGameEquService equService, IUnitUserAttrService attrService, IUnitUserService userService, - IGameDicService dicService, IMessageService messageService) + IGameDicService dicService, IMessageService messageService, IGameGoodsService goodsService) { _equService = equService; _attrService = attrService; _userService = userService; _dicService = dicService; _messageService = messageService; + _goodsService = goodsService; } /// @@ -142,6 +144,71 @@ public class EquController : ControllerBase return PoAction.Ok(new { data, suit }); } + /// + /// 鉴定装备 + /// + /// + /// + [HttpGet] + public async Task ApprEqu(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 == 1) + { + return PoAction.Message("装备已鉴定!"); + } + + var resEqu = await _equService.GetEquInfo((int)equInfo.equId); + if (resEqu.isAppr == 0) + { + return PoAction.Message("装备数据异常,联系客服!"); + } + + var myGoods = await _goodsService.GetUserGoodsCount(userId, GameConfig.GameEquApprGoods); + if (myGoods < 1) + { + return PoAction.Message("暂无装备鉴定符!"); + } + + if (await _goodsService.UpdateUserGoods(userId, 0, GameConfig.GameEquApprGoods, 1, "鉴定装备")) + { + equInfo.minAtk = RandomAssist.GetFormatedNumeric((int)resEqu.minAtk, (int)resEqu.maxAtk); + equInfo.maxAtk = RandomAssist.GetFormatedNumeric((int)equInfo.minAtk, (int)resEqu.maxAtk); + string[] def = resEqu.defense.Split('-'); + equInfo.Defense = RandomAssist.GetFormatedNumeric(Convert.ToInt32(def[0]), Convert.ToInt32(def[1])); + string[] agi = resEqu.agility.Split('-'); + equInfo.Agility = RandomAssist.GetFormatedNumeric(Convert.ToInt32(agi[0]), Convert.ToInt32(agi[1])); + string[] mor = resEqu.morale.Split('-'); + equInfo.Morale = RandomAssist.GetFormatedNumeric(Convert.ToInt32(mor[0]), Convert.ToInt32(mor[1])); + string[] blo = resEqu.blood.Split('-'); + equInfo.Blood = RandomAssist.GetFormatedNumeric(Convert.ToInt32(blo[0]), Convert.ToInt32(blo[1])); + equInfo.isAppr = 1; + if (await _equService.UpdateUserEquInfo(equInfo)) + { + return PoAction.Ok(true, "装备鉴定成功!"); + } + else + { + return PoAction.Message("鉴定失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("鉴定失败,请稍后尝试!"); + } + } + /// /// 穿/卸装备 /// @@ -680,7 +747,7 @@ public class EquController : ControllerBase } var nextNeeds = await _equService.GetUserEquUpData((int)equInfo.intensifyLev + 1); - if (needs == null) + if (nextNeeds == null) { isMax = true; } @@ -693,7 +760,7 @@ public class EquController : ControllerBase if (equInfo.intensifyLev >= 60) { string msg = $"[{equInfo.equName}]装备强化至{equInfo.intensifyLev}级!"; - await _messageService.SendBroadcast(userId, nameof(MessageEnum.BroadcastCode.Promote), msg); + await _messageService.SendBroadcast(userId, nameof(MessageEnum.BroadcastCode.Promote), msg); } } else //执行材料返还 @@ -708,7 +775,7 @@ public class EquController : ControllerBase code = item.code, name = item.name, parameter = item.parameter, - count = item.count + count = item.retCount }; retProp.Add(temp); } @@ -736,4 +803,122 @@ public class EquController : ControllerBase return PoAction.Message("强化错误,请稍后尝试!"); } } + + /// + /// 获取洗练装备属性 + /// + /// + /// + [HttpGet] + public async Task GetEquQualityInfo(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("装备已过期!"); + } + + List CanOp = new List() + { "Hold", "Vice", "Head", "Wear", "Waist", "Foot", "Ornaments" }; + if (!CanOp.Contains(equInfo.code)) + { + return PoAction.Message("该部件不可洗练!"); + } + + var dicConfig = await _dicService.GetDicInfo(nameof(GameEnum.DicCode.Quality)); + List need = JsonConvert.DeserializeObject>(dicConfig.sign); + CheckTowerNeed result = await GameBus.CheckNeed(userId, need); + + return PoAction.Ok(new + { + equData = equInfo, + result + }); + } + + /// + /// 洗练装备 + /// + /// + /// + [HttpGet] + public async Task HandleEquQuality(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("装备已过期!"); + } + + List CanOp = new List() + { "Hold", "Vice", "Head", "Wear", "Waist", "Foot", "Ornaments" }; + if (!CanOp.Contains(equInfo.code)) + { + return PoAction.Message("该部件不可洗练!"); + } + + var dicConfig = await _dicService.GetDicInfo(nameof(GameEnum.DicCode.Quality)); + List need = JsonConvert.DeserializeObject>(dicConfig.sign); + CheckTowerNeed result = await GameBus.CheckNeed(userId, need); + if (result.result) + { + if (await GameBus.UpdateBag(userId, 0, need, "洗练装备")) + { + var attr = await _equService.GetRandomEquAttr(equInfo.code, (int)equInfo.lev); + equInfo.quality = attr.Count; + equInfo.qualityName = GameTool.GetEquQualityName(attr.Count); + equInfo.EquAttr = attr; + if (await _equService.UpdateUserEquInfo(equInfo, true, "洗练装备", "洗练装备")) + { + return PoAction.Ok(true, "洗练成功!"); + } + else + { + return PoAction.Message("洗练失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("洗练失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("洗练失败,请稍后尝试!"); + } + } } \ No newline at end of file diff --git a/Service/Application.Web/Controllers/Pub/RecoverController.cs b/Service/Application.Web/Controllers/Pub/RecoverController.cs index 66bf461..29ec57f 100644 --- a/Service/Application.Web/Controllers/Pub/RecoverController.cs +++ b/Service/Application.Web/Controllers/Pub/RecoverController.cs @@ -12,11 +12,15 @@ public class RecoverController : ControllerBase { private readonly IUnitUserAttrService _attrService; private readonly IGameMapService _mapService; + private readonly IUnitUserAccService _accService; + private readonly IGameEquService _equService; - public RecoverController(IUnitUserAttrService attrService, IGameMapService mapService) + public RecoverController(IUnitUserAttrService attrService, IGameMapService mapService,IUnitUserAccService accService,IGameEquService equService) { _attrService = attrService; _mapService = mapService; + _accService = accService; + _equService = equService; } /// @@ -179,6 +183,194 @@ public class RecoverController : ControllerBase #endregion + var data = await _attrService.GetUserVigourInfo(userId); + string time = TimeAssist.GetDateTimeYMDString(0); + if (data.upTime == time) + { + return PoAction.Message("今天已恢复过活力啦!"); + } + if (data.vitality >= data.upVitality) + { + return PoAction.Message("活力满满,无需恢复!"); + } + + bool result = await _attrService.UpdateUserVigour(userId, 2, (long)data.upVitality,time); + if (result) + { + return PoAction.Ok(true); + } + else + { + return PoAction.Message("恢复失败,请稍后尝试!"); + } + } + + /// + /// 获取恢复耐久的装备 + /// + /// + /// + [HttpGet] + public async Task GetUserRecoverEqu(int npcId) + { + string userId = StateHelper.userId; + + #region NPC验证 + + var npcInfo = await _mapService.GetNpcInfo(npcId); + if (npcInfo == null) + { + return PoAction.Message("Npc不存在!"); + } + + if (npcInfo.status != 1) + { + return PoAction.Message("Npc不存在!"); + } + + if (!npcInfo.bus.Any(it => it.code == nameof(GameEnum.NpcBusCode.RetEqu))) + { + return PoAction.Message("业务不可用!"); + } + + var onMap = await _mapService.GetUserOnMapId(userId); + if (npcInfo.mapId != onMap) + { + return PoAction.Message("Npc不存在!"); + } + + #endregion + + int need = 0; + var data = await _equService.GetUserOnEqu(userId); + var needData = data.FindAll(it => + it.isAppr == 1 && it.durability < it.maxdurability && it.useEndTime > TimeExtend.GetTimeStampSeconds); + need = needData.Sum(it => (int)it.maxdurability - (int)it.durability); + return PoAction.Ok(new { data, need }); + } + + /// + /// 恢复装备耐久 + /// + /// + /// + /// + [HttpGet] + public async Task RecoverEqu(int npcId,string? ueId) + { + string userId = StateHelper.userId; + + #region NPC验证 + + var npcInfo = await _mapService.GetNpcInfo(npcId); + if (npcInfo == null) + { + return PoAction.Message("Npc不存在!"); + } + + if (npcInfo.status != 1) + { + return PoAction.Message("Npc不存在!"); + } + + if (!npcInfo.bus.Any(it => it.code == nameof(GameEnum.NpcBusCode.RetEqu))) + { + return PoAction.Message("业务不可用!"); + } + + var onMap = await _mapService.GetUserOnMapId(userId); + if (npcInfo.mapId != onMap) + { + return PoAction.Message("Npc不存在!"); + } + + #endregion + + if (string.IsNullOrEmpty(ueId)) + { + var myEqu = await _equService.GetUserOnEqu(userId); + myEqu = myEqu.FindAll(it => + it.isAppr == 1 && it.durability < it.maxdurability && it.useEndTime > TimeExtend.GetTimeStampSeconds); + int need = myEqu.Sum(it => (int)it.maxdurability - (int)it.durability); + if (need < 1) + { + return PoAction.Message("耐久已满,无需恢复!"); + } + + var myAcc = await _accService.GetUserAccInfo(userId, nameof(AccEnum.AccType.copper)); + if (need > myAcc) + { + return PoAction.Message("铜贝不足!"); + } + + if (await _accService.UpdateUserCopper(userId, 0, need, "修复装备")) + { + foreach (var item in myEqu) + { + item.durability = item.maxdurability; + await _equService.UpdateUserEquInfo(item); + } + return PoAction.Ok(true, $"恢复成功,花费{need}铜贝!"); + } + else + { + return PoAction.Message("恢复失败,请稍后尝试!"); + } + } + else + { + var equInfo = await _equService.GetUserEquInfo(ueId); + if (equInfo == null) + { + return PoAction.Message("装备不存在!"); + } + + if (equInfo.userId != userId) + { + return PoAction.Message("装备不存在!"); + } + + if (equInfo.isAppr != 1) + { + return PoAction.Message("装备未鉴定!"); + } + + if (equInfo.useEndTime < TimeExtend.GetTimeStampSeconds) + { + return PoAction.Message("装备已过期!"); + } + + if (equInfo.durability >= equInfo.maxdurability) + { + return PoAction.Message("耐久已满,无需恢复!"); + } + + int need = (int)equInfo.maxdurability - (int)equInfo.durability; + var myAcc = await _accService.GetUserAccInfo(userId, nameof(AccEnum.AccType.copper)); + if (need > myAcc) + { + return PoAction.Message("铜贝不足!"); + } + + if (await _accService.UpdateUserCopper(userId, 0, need, "修复装备")) + { + equInfo.durability = equInfo.maxdurability; + if (await _equService.UpdateUserEquInfo(equInfo)) + { + return PoAction.Ok(true, $"恢复成功,花费{need}铜贝!"); + } + else + { + return PoAction.Message("恢复失败,请稍后尝试!"); + } + } + else + { + return PoAction.Message("恢复失败,请稍后尝试!"); + } + } + + var data = await _attrService.GetUserVigourInfo(userId); string time = TimeAssist.GetDateTimeYMDString(0); if (data.upTime == time) diff --git a/Service/Application.Web/Controllers/User/BagController.cs b/Service/Application.Web/Controllers/User/BagController.cs index 2fe4a17..3d0dda9 100644 --- a/Service/Application.Web/Controllers/User/BagController.cs +++ b/Service/Application.Web/Controllers/User/BagController.cs @@ -136,8 +136,18 @@ public class BagController : ControllerBase public async Task CheckUserProp([FromBody] CheckUserPropParms parms) { string userId = StateHelper.userId; - List needs = JsonConvert.DeserializeObject>(parms.needs); - var result = await GameBus.CheckNeeds(userId, needs, 1); - return PoAction.Ok(result); + parms.count = parms.count < 1 ? 1 : parms.count; + if (parms.type == 0) + { + List needs = JsonConvert.DeserializeObject>(parms.needs); + var result = await GameBus.CheckNeed(userId, needs, parms.count); + return PoAction.Ok(result); + } + else + { + List needs = JsonConvert.DeserializeObject>(parms.needs); + var result = await GameBus.CheckNeeds(userId, needs, parms.count); + return PoAction.Ok(result); + } } } \ No newline at end of file diff --git a/Service/Application.Web/Model/RequestParms/User/CheckUserPropParms.cs b/Service/Application.Web/Model/RequestParms/User/CheckUserPropParms.cs index 0a33a6f..1d9788e 100644 --- a/Service/Application.Web/Model/RequestParms/User/CheckUserPropParms.cs +++ b/Service/Application.Web/Model/RequestParms/User/CheckUserPropParms.cs @@ -2,5 +2,7 @@ public class CheckUserPropParms { + public int type { get; set; } + public int count { get; set; } public string needs { get; set; } } \ No newline at end of file diff --git a/Web/public/images/equ/gw.png b/Web/public/images/equ/gw.png new file mode 100644 index 0000000000000000000000000000000000000000..f312486e99d8aa076a56b1da5acdd82a76d6b188 GIT binary patch literal 1288 zcmXX_3rv#-5dIyAqI4q+r{YH3W^^uWV;HB&R8S!TLzI`=A+HK{GBv0On-ZZ22!dEz zOG_#5YNd7+5l|Gg#Zf2-l)m4uzkh%GvaLk~R&`}F`R=>ReYv~jE?0Fhejj2*&HIGnd@-Oe#={20Vt>#x z1t^xH+W5QbBoTGCVUcN2JZG742n;VC@+_lD+n55RbHUD0X(0Z(E1?{E%umh3uG;>hX_xyXrKXsx(b(9d#IvCz#n1 zD~D(Ny-kL0ckpG}7M84{8*CiV;d_lgT~qu?mG8tlM38b1PF~0W=_At-I1`%U(pXnuJ7>=EeCfKJ1(5iApR`V?EkRKpwY8jf-ZEzA{ z&h`rKpSE%YB2=U03151mMG<^u&g^ms6~d5ee(a6cp!r1x+0-{`8&jDEc=95ui8cfU zU$Nrol5Mq4xk-MJ=2BZ!kD+aRF(H^&o!Q{I(Z5e{;`$CTX4QHoorMEmKzw) zX0#UP*rX(jq+V5S7wEMcDpiC*Gn+3=Z;<9RLtPWLQPFG2p}=(U!m*|YZ1@lnW{!%I zNP7C1`N@=ZRB5<7smdS=eSB@MR25ExV1)E%rFn|p{#mm-;f6X z(8?My?!_9yufw+13`%d2pWo-XK`FzC3-ZSZm?@=6NDtmO2Q9nILkJM3 zqE;=q&YwTNKkOUXyhD@mrBC0_hm4=T4WrXeA^B;$mFZex z^`ji^d@}14AmS!Z-@Uf-tdrZqea2<6Y`21cgm~qv3x8mqtS#t9Od5R3{SVJ2ZyDcY zPgn04?BNJFA5*cI-4#$*1JtOoXQVyt`Fets5E$@PTxD;u>T&vTmq3=@QFWYkTZ2$lO literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/hm.gif b/Web/public/images/equ/hm.gif new file mode 100644 index 0000000000000000000000000000000000000000..617119b6e6bf101400260941f7f0a72ce4731cb3 GIT binary patch literal 3684 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 literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/l.gif b/Web/public/images/equ/l.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccb64a810d0120c78971c57fd7490cae320a6338 GIT binary patch literal 608 zcmZ?wbhEHb6k!lyc$UmC*Lmta$S<;Nn|X*bqgygBFC zRHeG@hF!-3+a{|tOjNGF(7y5Oy%$r|8+Vs%`1<10GWTh-mFpiZKK1n2ofYoWZf5jf zn0@s8!c+I=9be-){mSfP?=L@ky71&$`Gy59Q;)^;zr6VL`tlRY4LaT(z4zk4?U(bm z?X>RSS+e1F?ZOky+c&sOS*%ch&}GUk^Pcs#6Lx2<-0CuAdoj>GKkwDf-=fj_?d7Kx zvh|M^oOrcj->ZvHFJ?@Be*E6seHYg0cW%^ZU1rz6U88k^dczU3o-G!=bG2Hw%GNJY zsQ-NLC zw6?XksdaRBu=?~&u<}z8oY0-57ppt1Bgxp`VorNfgqiK4wj@_Zi50C$mW-T9n(LCB z8D)|Tw<$5QBzYyRNU~5I79L2DAe2QxK{1^KP*jr4BomSeJA_U4RiKJYCIdvWnFI)KVU~)2F{~{>(RL&hno3yyr_~bc7Ja zoB?Oxt^r_diRv1>AUa$qJz3j(s~6Z39n+K&zde3Q_a^6-bW`t^u(qX7Up|dItekUn z8Q!LC`}T9X#1^xhbhJ*?;FpuZLf6 z>)TO#u{pbAWz)4oJFe|n)U|Htw;`{F_~2dH{;hcxXIEAAZ2#fm&FG_L^N(of@0u@e znU~sC|v2DCXj{dmPMFMrKHrfd7|^qnU^ zUc289Y>!`g+L*Z`tKejL-%sD%esCjpYfQtXZCCGI+1$IS>*kr&J?o9#b?bXJEIn73 zd$QVaZtb=!tyMi+RfknjLtK0RG55ygqGNjE_;N+NKC5+M+Hqsp_JovnL-tX9W_xkw z@zT(PikQ8!^D(jo|+OC zk{HfqLlg@D07z3tTp}pObQt;c57MhKynxVw5+YBg3}8O$IL!oQ(g5aMejF614kPkq zQHwQ1%HsG`d~pGeN|`}{pub+ESEv<)4g>WHxl$|A2QV?IN|!2UrOD&KD2j3*E{Dryksd57W(9xCL*aJU#HpQr#53t({wf>u=ETNGV5z+{aN&$|{LL~bO z2q*+$I3nP)5F}T^%0&>EB@sXZmJlU-!i0RTFOtg~jhDX1+uQbe2v36Y5SFhHmyohW zFqQ=MKKs9gd~?t4hc$%i*z!boEQ~rh+H>%lFQ735y>%S9?1+#O5|dNavd{p zIVNKX5STASaVd+7qbLg@2ojhtjNCty5-Z&n>K#3Vg0&~>;JKKP2K8MwKXeE z#_APSl@;Y>rH19pmM&RbqAxBg)M+(~)GDPyUa(M>pO;HWaS4{QAbbA2kFqi|=BB5m zrX(jNCd9|Z#>|P1ii`*shlPd&2L%TB`-xDYz?YBkxG=Zx25C5sl~ny@y#~Lc4|g&c(u?4^iJ$)8mySiK;u7c&&j>G(G89QgI{<8 zbWg_!{lUJ_P|Jxa>?va5ILbH&`X;qopI2zFR|>6@2A5XaQ>EUBiQ8g4!0=}K^fT+C zr*8ExdeP}rT5buY-9p+Kj}zQPKE9PkC%oDSU!4W~4BxXn5kyV3r{#ncm)co@MU`tQ zV&FQb;$v#x;T#Lw4$8CrE?;B)4QU*zk9q*4)(h+xLw6f$9A{7_cqSBqIjb#FSJR2k z33s|{KzB$sht=cA3_ombW%);~4cG#9q}|s%fO3z@YC~Rv z(ZEbd64oYIc>m2YI_<(>n}f(PpX{hDCc!R`oK z8=KhJUSr~*tDS2be~{Z4Q&}I=;#le=0c@txdJ^*|5V1~JSmL~lLsj&8-++>#$7LRX zl~vB}b24?sz&5TfLr!z@IB)NSx1<4A@XJ;uhBTVHV`t+-z-@f+5Y5BdSh|0~xS2MM zd0m#1ime|Lvm4GH3fYrQ%NXbkp-or0Kh3`sGMN!S&NH@UD7e#|veP}_LaA3z&Eyba z&Xwk@H4O2}e24MWcTC#>6u=6gk`i+vburx#6e*5cYKSz@y$tBIlIRfyy}1pjzz3tA a&ZP#SA<@$?waTDKpPFu{^P!Nc_4^;NiSTUz literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/ms.png b/Web/public/images/equ/ms.png new file mode 100644 index 0000000000000000000000000000000000000000..7c48fcd6668127db281ff9d9ee260089b3bcb217 GIT binary patch literal 1342 zcmV-E1;P4>P)xN#00093P)t-sM{rCZ zo5nSP!y%i-HG#u4fWsM{#WH}yHi5$xpu`rS#U7-{J%q&|qsJSh$3cb08KcJ*pTr!c z$Q7W(8KT7%pu`rS#Tul>9i_-LfWsf1#vr4|I)cO=q{teg#~q}|Bc#bPk;o&R$2^0@ zL95UmrN|(r$tR@BBc;hjh{qYD#zLFTX}H@WrO7I&%sYa_D4E7bipW-<&~Uoj9G=A; zq{ma1%}c4#9i+%1q{%m`&K;h{6`;i|sLUXy$Q7W)8=}S@rN|Ya#DUJ}r`z#e!rbQc z{Ob1o_51$k_5ADi{nG6A+wl3x==ZPQ@WbZx*Y5gRyV`)w=dRuE)$RCo%jVMT`Qr2X z`ThUi@cBx#)5_@dvEA;Y+3&90?3dN;yW#I+#on0H-aUV&@-;jh|uYC z%H)mG>u<^9X2#%!%Go@!(QnA&AgRkavCt~4%wELa6`;gv$Khec-(khxTe`>}t*-WIr^vvk?q1fx-@%n_$=d#}K^!ol|!ro%T-jCAi&gu4=)#vH;`c<^n zdduY~tIe$3?ZD*pGp){+(&eA~gqq}uMr z=JdJZ^lHcA*Y5e6*6%p4&{w8RT0)a>h^8O;*!(poz&-l&EmM<>y6RjwA}E{ z>iJl?*oDvMV!+7f^!niP`@7@zlh57D>G;#?^pw=+eaG2>%h#CI>xatQY{=lY;qzU* z#$m$Lr`P3##NwjVwCF$R@vG{PFt^7btZ2R>e%O zE5~w^5~7#-`?z6Atb0?(+7UcJf|kS)l}j)8C)p zpWivNf6LsCTAz^Ammf>hY#0O`zrD^)+O=U)e|@#r#_KLwA8f4|I2>NwJ+~)1GR)1* z-96yq&4+KSco;Y=)6ecs3Grx*@bH|mZcW6sr{??&tOmN<*Us{*^Yv^A@SU9+cEQ+; zpMjl2Ng*(^seS5{c`Fvi&s?ozWT?-;z|J8hoz|Kh>g*g8x~yA8TT__{6ikwga?>Y7 zEe?!IU#_mmBLfO0NSJb|a&xP3F*7l-ure?J0C9nqx=a(iS^xk507*qoM6N<$f`eim AdjJ3c literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/r.gif b/Web/public/images/equ/r.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4c62824ffe4fba6d4c8299835dbc217173f5c3a GIT binary patch literal 615 zcmV-t0+{_rNk%w1VH5xq0Oo%HzDbtYe6Z}&<&S%3O}XW}Mla#?Nr7 z!+^ERa;*IH_v4eV>7KUDeW|o4h4bF&%ZIbun8fC%!P$nk&^(W*EQY*Xl+>KY*pa@~ zrOMZv#==vas4In^HHzf4)7Y8C-<-qs>G7E;f|V_V)sVc}qREydfYEZE%3!3WErp&V zfVLoj(d4-~jbF1T^ z$lZOQz(|$1E{Mf9jO)nW;FY!Oz1P4{n%|?!(RHx3I*y?&h5!HmA^8LW004ggEC2ui z02BZe000NXfPaF6goTEOh=Ngxi53}*haNj20+59tZ#X%Ygb*e~L7amiU1|uTf<|<8 z5uyoGX#gUvoID6{0BbXx1wUp@07y%m0!0!f07DYQX9`&WFki$z1bhHJ3Wy0)n280O&06Rw8 BOCxN#0004EP)t-sM{rDF z8HQjPhF>6wU>=BI9EV^Yh+r9pU>%2FA&FobhF~6uY)+kCDveu1m|{qpUq_l-M44Yk znRiv8byJ{kP@Y^wnO-oDT0@xs|NmS%la*?#V@aEBPMuvll>Ywz{{8-4I+MGJyk0Sn z{PXzGq|4B>)$Ql*)xw&_tbMih^7-x1htl?;)7YD?91Tv-s|SQ*!JV^_wDul^!WMd z^2~_2&zZxphPz%ynb)Jqb5Nd_Vy0n9o0ns!WKEr*X{l{cpKef|Vo95MSE6Q3o$%o9 zePE~k`~9|ty8G<&+^x^0lf{K#r=@MH^5pQUb+Gu|>hb9F`1JYp?)K=s*L`8AmTj&2 z^7pHDu=?@$bylL9cC*-=#N4*k*00g1fw-!Jx&He6w~M`^ZL1)%HI@JX01R|ePE!Cd zaF}ZF`5@x__K@_q0RsR4010qNS#tmY3labT3lag+-G2N400AyZL_t&-l~s{dZ^J+k zgzxOwv6DS8+hHg(bDJ_VGc)7=uP&r^9!J{I%(tj4EXlHj(O-oWm3SUel~C0TYkJJ5 z)Sxt`YvHmNAwG3i*LSx~my$@y)rfC!fSu>lE#Qkp6JAL74F=%Yj~721Ys-c%a+Mh6 zu(^Mqd%M|tT`BOaf)G}H7vSvs{p0iM`h0E(ToogUP!pV`!f1nk>Q0R25wXa{eD=AuL79??4Fs0&$QfWyNDjH2?qr07*qoM6N<$f&_q? A%m4rY literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/tq.png b/Web/public/images/equ/tq.png new file mode 100644 index 0000000000000000000000000000000000000000..13c5e37acb2630edda7173ad2ac4668d3efdbd16 GIT binary patch literal 1064 zcmXYvc}yI26vqchQK`jh_hcaqEXB3JZ-vSV6fG@KSU_0zVwVDPFNfTRy|__?El|rP zrD*U-trSpVThYd}X+sf9QxFk}Aad>e=GYl1OM~toPNT`YlK08`zT~}TMQp@A2PX#v zLH5Zb!<201JoRVo*!X<{breBtLlrUV@QC6VTq%I@LR`iBuYd{>uIBu2Dn72_L!}U^ zMJxl=0vN}3c~B){F&Hm`Dk0Q3u>dAViDE#v0P+-IIsk3-Vkf|CDNzB)GXUlSq6kp6 zQmPsdC4i~{=J%vb8!*>!TbTfc?fVt>Hw*smG z;Q4@Q^M+Y~de@C^^}-W)WUdpg<6{{Bi$k#_fGJRu9$*O)ybze)lE7?WZj#bQRs~>h z15><&JPWXtSIBonc!~>_2{tU`mAlvK)c(MzY2(WZOq;Q#bAF{}KdrC(e{mj)K zn9?0nqD=Q|_(=|P!3T>MWAW(reFb%jUBeqo16x<$*t+&6St*4EDbsP7>F~h~lE*jY zmY^Z8JVVyS?v1XQUj)S=sVRdkbtC$vH5)|OcZZKN=y-Am?MRHF?}A8rvX(D zOyOd((Aivj(0taNFbIhxE_K@N@tD@KR*xrgEz^3c65Sd+@;4Ph8xK(>F56h0Wj)h^ zWm#Y`nJ;241raGcrh!j4dNO@MPwoWZ8V->qz_mOwkH39C&a#|IH@wVr$(Y_iT+g@s zWnez>-x`t=Y0gxcE1t%~wOk_2g*3Pmg%YYjLX~>qdM*})ZuLZ)&-u~y0aOJF6U0=R zci5F*Z?Rt`C|Aa+5N3C0CGR8j)naBP&w63kx?{Ckcdfe?)zC7_JXaj4FGG;MFFkde znZ;@=g4h`3VaL>hu8dk+$5@#x*3mxm_T+@e^t8vFdlL@)Ov8&g-bJ#hcE9cY*=bEJ zzR|j`@@G$e85KP#3i1sN(|atava*IAeA_z9jp=cKlw*)GzHH*3~uSUb&k+wseq~8y;z%p6$7Do?}W~?wtQ2!??JT zb=csYlY^mcz!Qm>Vt_-^dSPe(u7|H6FVu}j*~QGH3;60har)|o#Z zA+0t-0l!8Q8ZA7^pAQaLUS4ZB@r<3F Z9b)sfdSLa@-Z}OTh&((tZ1{L;{l65l1bP4f literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/ty.png b/Web/public/images/equ/ty.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f3e11b60c4194933ff8ec8d14ffdeeda6db1f5 GIT binary patch literal 1290 zcmX9-c~Dbl5Rav0tOq(uDRPW}5JEu8plHRaSW!e`M1oos(F%i#7lTk0Er;4VPOVxi zC5Q*oDhi0i5RhAnh-d-Jp^$*V0CI>C2zl>&?|tvvhUv`yc7HRwzuiA}_gt_vVEPoB zDFT6Ddf;0B5L2|Az+^L%FWvHCg+O2?2$qDd4v3L3Web^7H>7e$r6wXqDlsbZ_}`c^ zF)9($g>J}HQ0hfL6wyjI^vDxcE@3N06Ov*Nq;f+=VpJ?foCN-D<@1`Zf9tk~M+hKxDJEPJMU!RW=A+~8$A zl#Yke*!qp^a~aovo_xq6`b;vKOS+u#a5_=XCtbE|-x(NA093|3bs?|)d5s4iNF$@S zz<7(i{hqXW1C__O&I4mHFqMFHKodx%v_Sk3N>E@m~@}VtlfG4S1RU5~!ulUWh7EE;onL{%D+r91a$W(Qnxeio)blf0H+WQg}ws%3m!{8B5i zmsiX)srTgOCee1UGT-_}?P6`~n%_>Rv_vXahWQ^j6cH4+?z`Pr?=>vjE;aX@9no{@ z^2^>lIU1HK^{di8c5aU9-d6b6U36|^!jZ$!di#YdWmkS8=v+!mftNC?F=P*kQubJ_ z+3zY@aXjVslvPgIx8Cf&VEoti)y0oD)kU%Du;Uiy=A*)zv3&bKHoQ5Ru#fA0lH((b zw6?Zxe-a&aC@z5=HKZMVFn8;cZGnoEa%b;|+LHdc*AkbsSNzzAW0uZv_LDa)KLN&m ztyWvrQB|<#=g($eEd4VhL-~HjmM?ua-L*C|GpkB|nv|B5gg!+Z|GsfrCJVB)v!6C? anxHM?Y{ZH6azE2z1c9ri{`ueTI`tnMd>^U+ literal 0 HcmV?d00001 diff --git a/Web/public/images/equ/zx.png b/Web/public/images/equ/zx.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9d9e6ecaebf1b32f1484a5ee7c55c7df637857 GIT binary patch literal 1233 zcmX9+3sjP47=D$~S!qozO=p*tE6WRrsG(F&ElH#1TF$dfP(S!LsjRU(Cj@{otQ$g7vK2eIM%5coOW!yG{8*us$_*MToT@{t8T63Vmmn>hA+hxnsgfr`0 zIc;#+!0Y*EC$)MRqaMm%EY58AOH~q5RcJ~LTp0;Sl5f#WLGi;7UYl!L^E$c;#0GES zO%Pm9yE_eMA1^^Jq{0x$Za(thO(d-*X20~)!aK2Pjd0}!fvH5v3UVEOoqXsWRK46<`!aIxHK;T^ zdOZ_Lsg6#PIUMQs%DEn$r6#2{fMU$!_+7a2oRF{bP~&)Qeks+i2O2jY?hIxs!w=TrS+)3#*6?%{@HIZi?l`lWZsm+*Bmdi% zA5Z!k^m>blrC){ST3AMrSY%?YbdF%Ol!kB)VZpeXOZU+u88;k97E zH*NeKEF>d-zUe;;G#eip;xB86D zPIh*E|MC^m*=GNV4K5Qz>`+MiT`c+p?iT;>I-5Q#_ZTnvi%cd1peJ+stH;%5 - - {{ equData.equName }}({{ equData.lev }}级) - - - {{ equData.equName }}({{ equData.lev }}级) - + + + + + + \ No newline at end of file diff --git a/Web/src/pages/business/equmake.vue b/Web/src/pages/business/equmake.vue new file mode 100644 index 0000000..3f8adaf --- /dev/null +++ b/Web/src/pages/business/equmake.vue @@ -0,0 +1,105 @@ + + \ No newline at end of file diff --git a/Web/src/pages/business/retEqu.vue b/Web/src/pages/business/retEqu.vue new file mode 100644 index 0000000..a15745b --- /dev/null +++ b/Web/src/pages/business/retEqu.vue @@ -0,0 +1,71 @@ + + \ No newline at end of file diff --git a/Web/src/pages/map/index.vue b/Web/src/pages/map/index.vue index 2153825..25abd0b 100644 --- a/Web/src/pages/map/index.vue +++ b/Web/src/pages/map/index.vue @@ -1,8 +1,5 @@