From 309419967469ba08d2a73cbe7138fe85380c3fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=8C=90=EB=8F=8C?= Date: Sat, 16 Dec 2023 17:25:55 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=A5=EB=B9=84=20=EC=9E=A5=EC=B0=A9=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=9E=91=EC=97=85=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/Git/AbstractGit.cs | 14 +++++- Server/Git/ExcelSQL.cs | 2 +- Server/Program.cs | 2 +- Server/SQL/DeckInfo.cs | 24 ++++----- Server/SQL/DeckUnitInfo.cs | 26 +++++----- Server/SQL/DynamicData.cs | 4 +- Server/SQL/Equipment.cs | 15 ++++-- Server/SQL/EquipmentData.cs | 40 +++++++++++++++ Server/SQL/SQL.cs | 4 +- Server/SQL/User.cs | 6 ++- Server/Service/EquipChange.cs | 91 +++++++++++++++++++++++++++++++++++ Server/Service/Login.cs | 1 + Server/System/Enums.cs | 3 ++ Server/System/Statics.cs | 9 ++-- 14 files changed, 201 insertions(+), 40 deletions(-) create mode 100644 Server/SQL/EquipmentData.cs create mode 100644 Server/Service/EquipChange.cs diff --git a/Server/Git/AbstractGit.cs b/Server/Git/AbstractGit.cs index df5705c..2013180 100644 --- a/Server/Git/AbstractGit.cs +++ b/Server/Git/AbstractGit.cs @@ -32,6 +32,9 @@ namespace Server.Git Push(excel); if (isRestart) goto restart; + + //최종 데이터 세팅 + DataSet(); } /// @@ -44,7 +47,7 @@ namespace Server.Git if (!Directory.Exists(_repositoryPath)) { Directory.CreateDirectory(_repositoryPath); - RepositorySet($"clone {STATICS.remoteUrl} {_repositoryPath}", null); + RepositorySet($"clone {Statics.remoteUrl} {_repositoryPath}", null); //main브렌치로 세팅 RepositorySet("branch -m main", _repositoryPath); @@ -162,5 +165,14 @@ namespace Server.Git return xlsxFileList; } + + /// + /// 엑셀 데이터 저장 + /// + public void DataSet() + { + EquipmentDataSQL equipmentDataSQL = new EquipmentDataSQL(); + equipmentDataSQL.init(); + } } } diff --git a/Server/Git/ExcelSQL.cs b/Server/Git/ExcelSQL.cs index 9b23308..384cf7b 100644 --- a/Server/Git/ExcelSQL.cs +++ b/Server/Git/ExcelSQL.cs @@ -21,7 +21,7 @@ namespace Server.Git public void DataUpdate() { - using (NpgsqlConnection connection = new NpgsqlConnection(STATICS.EXCEL_SQL_URL)) + using (NpgsqlConnection connection = new NpgsqlConnection(Statics.EXCEL_SQL_URL)) { try { diff --git a/Server/Program.cs b/Server/Program.cs index 192b1bf..d2868e8 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -17,4 +17,4 @@ app.MapPost("/git", GItWebhook.Process); //app.MapPost("/update", GItWebhook.Process); -app.Run(STATICS.URL); +app.Run(Statics.URL); diff --git a/Server/SQL/DeckInfo.cs b/Server/SQL/DeckInfo.cs index 2475dcd..dcdcdb8 100644 --- a/Server/SQL/DeckInfo.cs +++ b/Server/SQL/DeckInfo.cs @@ -8,25 +8,25 @@ namespace Server.SQL [Table("deck_info", Schema = "gamedb")] public class DeckInfo { - public int id { get; set; } + public long id { get; set; } public int deck_type { get; set; } - public int deck_unit0_id { get; set; } - public int deck_unit1_id { get; set; } - public int deck_unit2_id { get; set; } - public int deck_unit3_id { get; set; } - public int deck_unit4_id { get; set; } - public int deck_unit5_id { get; set; } - public int deck_unit6_id { get; set; } - public int deck_unit7_id { get; set; } - public int deck_unit8_id { get; set; } - public int user_id { get; set; } + public long deck_unit0_id { get; set; } + public long deck_unit1_id { get; set; } + public long deck_unit2_id { get; set; } + public long deck_unit3_id { get; set; } + public long deck_unit4_id { get; set; } + public long deck_unit5_id { get; set; } + public long deck_unit6_id { get; set; } + public long deck_unit7_id { get; set; } + public long deck_unit8_id { get; set; } + public long user_id { get; set; } } public class DeckInfoSQL : SQL { public override DbSet table { get; set; } - public override List SelectUid(int user_id) + public override List SelectUid(long user_id) { return table.Where(data => data.user_id == user_id).ToList(); } diff --git a/Server/SQL/DeckUnitInfo.cs b/Server/SQL/DeckUnitInfo.cs index 5e82ed5..1bc9bd0 100644 --- a/Server/SQL/DeckUnitInfo.cs +++ b/Server/SQL/DeckUnitInfo.cs @@ -8,26 +8,30 @@ namespace Server.SQL [Table("deck_unit_info", Schema = "gamedb")] public class DeckUnitInfo { - public int id { get; set; } - public int unit_id { get; set; } - public int user_id { get; set; } - public int equip0 { get; set; } - public int equip1 { get; set; } - public int equip2 { get; set; } - public int equip3 { get; set; } - public int equip4 { get; set; } - public int equip5 { get; set; } + public long id { get; set; } + public long unit_id { get; set; } + public long user_id { get; set; } + public long equip0_id { get; set; } + public long equip1_id { get; set; } + public long equip2_id { get; set; } + public long equip3_id { get; set; } + public long equip4_id { get; set; } + public long equip5_id { get; set; } public int level { get; set; } - public int exp { get; set; } + public long exp { get; set; } } public class DeckUnitInfoSQL : SQL { public override DbSet table { get; set; } - public override List SelectUid(int user_id) + public override List SelectUid(long user_id) { return table.Where(data => data.user_id == user_id).ToList(); } + public DeckUnitInfo SelectItem(long user_id, long unit_id) + { + return table.FirstOrDefault(data => (data.user_id == user_id) && (data.id == unit_id)); + } } } diff --git a/Server/SQL/DynamicData.cs b/Server/SQL/DynamicData.cs index cbf746c..9fe07fb 100644 --- a/Server/SQL/DynamicData.cs +++ b/Server/SQL/DynamicData.cs @@ -8,7 +8,7 @@ namespace Server.SQL [Table("dynamic_data", Schema = "gamedb")] public class DynamicData { - public int id { get; set; } + public long id { get; set; } public string name { get; set; } public string value { get; set; } } @@ -39,7 +39,7 @@ namespace Server.SQL } } - public override List SelectUid(int user_id) + public override List SelectUid(long user_id) { return null;//table.Where(data => data.id == user_id).ToList(); } diff --git a/Server/SQL/Equipment.cs b/Server/SQL/Equipment.cs index a123dff..40dff09 100644 --- a/Server/SQL/Equipment.cs +++ b/Server/SQL/Equipment.cs @@ -9,11 +9,11 @@ namespace Server.SQL [Table("equipment", Schema = "gamedb")] public class Equipment { - public int id { get; set; } - public int user_id { get; set; } - public int equip_unit { get; set; } + public long id { get; set; } + public long user_id { get; set; } + public long equip_unit { get; set; } public int rand_stats { get; set; } - public int equipment_data_id { get; set; } + public long equipment_data_id { get; set; } } public class EquipmentrSQL : SQL @@ -25,9 +25,14 @@ namespace Server.SQL table.Update(equipment); } - public override List SelectUid(int user_id) + public override List SelectUid(long user_id) { return table.Where(data => data.user_id == user_id).ToList(); } + + public Equipment SelectItem(long user_id, long equipment_id) + { + return table.FirstOrDefault(data => (data.user_id == user_id) && (data.id == equipment_id)); + } } } diff --git a/Server/SQL/EquipmentData.cs b/Server/SQL/EquipmentData.cs new file mode 100644 index 0000000..545bc22 --- /dev/null +++ b/Server/SQL/EquipmentData.cs @@ -0,0 +1,40 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using NLog; +using Server.System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Server.SQL +{ + [Table("equipmentdata", Schema = "excel")] + public class EquipmentData + { + [Key] + public long index { get; set; } + public int part { get; set; } + } + + public class EquipmentDataSQL : SQL + { + private static readonly NLog.ILogger logger = LogManager.GetCurrentClassLogger(); + public override DbSet table { get; set; } + + public override List SelectUid(long user_id) + { + return null; + } + + public void init() + { + logger.Info("동작1"); + Statics.equipmentData = new Dictionary(); + logger.Info("동작2"); + List equipmentDatas = table.ToList(); + for(int n = 0; n < equipmentDatas.Count; n++) + { + Statics.equipmentData.Add(equipmentDatas[n].index, equipmentDatas[n]); + } + } + } +} diff --git a/Server/SQL/SQL.cs b/Server/SQL/SQL.cs index 72d5def..c73d607 100644 --- a/Server/SQL/SQL.cs +++ b/Server/SQL/SQL.cs @@ -14,7 +14,7 @@ namespace Server.SQL { if (!optionsBuilder.IsConfigured) { - optionsBuilder.UseNpgsql(STATICS.SQL_URL); + optionsBuilder.UseNpgsql(Statics.SQL_URL); // 다른 옵션들을 추가할 수 있습니다. } } @@ -49,7 +49,7 @@ namespace Server.SQL return table.ToList(); } - public abstract List SelectUid(int user_id); + public abstract List SelectUid(long user_id); // Select 예시 // 각자 상황에 맞게 작성해서 사용할것 diff --git a/Server/SQL/User.cs b/Server/SQL/User.cs index 9fd5291..cf3b623 100644 --- a/Server/SQL/User.cs +++ b/Server/SQL/User.cs @@ -9,7 +9,7 @@ namespace Server.SQL [Table("user", Schema = "gamedb")] public class User { - public int id { get; set; } + public long id { get; set; } public string uuid { get; set; } public string mail { get; set; } public string nickname { get; set; } @@ -39,9 +39,11 @@ namespace Server.SQL /// /// /// - public override List SelectUid(int user_id) + public override List SelectUid(long user_id) { return null; } + + } } diff --git a/Server/Service/EquipChange.cs b/Server/Service/EquipChange.cs new file mode 100644 index 0000000..a4d214d --- /dev/null +++ b/Server/Service/EquipChange.cs @@ -0,0 +1,91 @@ +using Server.System; +using Newtonsoft.Json; +using Server.SQL; + +namespace Server.Service +{ + public class EquipChange : AbstractService + { + private EquipChangeReq req; + public override string Process() + { + //문제 1 장비 장착 저장이 안됨. + //문제 2 기존에 장비가 있다면 신규 장비로 교체가 되야함. + UserSQL userSQL = new UserSQL(); + EquipmentrSQL equipmentrSQL = new EquipmentrSQL(); + DeckUnitInfoSQL deckUnitInfoSQL = new DeckUnitInfoSQL(); + User user = userSQL.SelectUuid(req.uuid); + Equipment equipment = equipmentrSQL.SelectItem(user.id, req.equipment_id); + DeckUnitInfo deckUnitInfo = deckUnitInfoSQL.SelectItem(user.id, req.unit_id); + + if(equipment == null || deckUnitInfo == null) + { + throw new RuntimeException("Not Data", Error.nodata); + } + + EquipmentData equipmentData = Statics.equipmentData[equipment.equipment_data_id]; + + switch (equipmentData.part) + { + case 0: + deckUnitInfo.equip0_id = equipment.id; + break; + case 1: + deckUnitInfo.equip1_id = equipment.id; + break; + case 2: + deckUnitInfo.equip2_id = equipment.id; + break; + case 3: + deckUnitInfo.equip3_id = equipment.id; + break; + case 4: + deckUnitInfo.equip4_id = equipment.id; + break; + case 5: + deckUnitInfo.equip5_id = equipment.id; + break; + } + equipment.equip_unit = deckUnitInfo.id; + + equipmentrSQL.Update(equipment); + deckUnitInfoSQL.Update(deckUnitInfo); + + return makeResp(equipment, deckUnitInfo); + } + + public override Protocol ProtocolValue() => Protocol.EquipChange; + + public override Req Requst(string json) + { + req = JsonConvert.DeserializeObject(json); + return req; + } + + private string makeResp(Equipment equipment, DeckUnitInfo deck_unit_info) + { + EquipChangeResp resp = new EquipChangeResp(); + resp.status = 200; + resp.equipment = equipment; + resp.deck_unit_info = deck_unit_info; + return resp.ToJson(); + } + } + + public class EquipChangeReq : Req + { + public string uuid; + public long unit_id; + public long equipment_id; + public override bool IsReceivedAllField() + { + return true; + } + } + + public class EquipChangeResp : Resp + { + public Equipment equipment; + public DeckUnitInfo deck_unit_info; + } +} diff --git a/Server/Service/Login.cs b/Server/Service/Login.cs index 271c28b..0f3649b 100644 --- a/Server/Service/Login.cs +++ b/Server/Service/Login.cs @@ -161,6 +161,7 @@ namespace Server.Service { public string uuid; public string nickname; + public long id; public List dynamic_data; public List deck_unit; public List deck_info; diff --git a/Server/System/Enums.cs b/Server/System/Enums.cs index bcda68d..e527ee8 100644 --- a/Server/System/Enums.cs +++ b/Server/System/Enums.cs @@ -11,6 +11,9 @@ Downlode = 100,//기획 데이터 다운로드 Login = 101,//기획 데이터 다운로드 ChangeDeck = 102,//기획 데이터 다운로드 + + + EquipChange = 200,//장비 변경 } public enum Error diff --git a/Server/System/Statics.cs b/Server/System/Statics.cs index 7232b30..036d3c3 100644 --- a/Server/System/Statics.cs +++ b/Server/System/Statics.cs @@ -1,6 +1,8 @@ -namespace Server.System +using Server.SQL; + +namespace Server.System { - public static class STATICS + public static class Statics { #if DEBUG public static readonly string SQL_URL = "Host=192.168.0.2;Port=5432;Username=manager;Password=Zn2zs558W5SdD8K;Database=project_thewar;"; @@ -16,6 +18,7 @@ public static readonly string URL = "https://0.0.0.0:4860"; public static readonly string PATTERN = "[^a-zA-Z0-9가-힣 ]"; - } + public static Dictionary equipmentData = new Dictionary(); + } }