From 0d04e5434b2102a711750086fd46afec5590541e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=84=9C?= Date: Wed, 28 Feb 2024 12:27:13 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=98=EB=AA=BB=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=EB=90=9C=20=EB=82=B4=EC=9A=A9=20=EC=9E=AC=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/SQL/RewardData.cs | 4 +- Server/Service/BuyShopItem.cs | 121 ++++++++++++++++++++++++++++++++++ Server/System/Enums.cs | 2 + 3 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 Server/Service/BuyShopItem.cs diff --git a/Server/SQL/RewardData.cs b/Server/SQL/RewardData.cs index ffb3ae7..7c144a8 100644 --- a/Server/SQL/RewardData.cs +++ b/Server/SQL/RewardData.cs @@ -7,7 +7,7 @@ namespace Server.SQL { [Key] public long index { get; set; } - public eBuyType buy_type { get; set; } + public eRewardItemType reward_item_type { get; set; } public long return_item { get; set; } } @@ -44,7 +44,7 @@ namespace Server.SQL { RewardData rewardData = new RewardData(); rewardData.index = item.Key; - rewardData.buy_type = (eBuyType)item.Value["part"]; + rewardData.reward_item_type = (eBuyType)item.Value["part"]; rewardData.return_item = (long)item.Value["return_item"]; this.rewardData.Add(item.Key, rewardData); } diff --git a/Server/Service/BuyShopItem.cs b/Server/Service/BuyShopItem.cs new file mode 100644 index 0000000..a392963 --- /dev/null +++ b/Server/Service/BuyShopItem.cs @@ -0,0 +1,121 @@ +using Server.System; +using Newtonsoft.Json; +using Server.SQL; +using LibGit2Sharp; + +namespace Server.Service +{ + public class BuyShopItem : AbstractService + { + private BuyShopItemReq req; + + private void SaveSQL() + { + Statics.userSQL.SaveChanges(); + } + + public override string Process() + { + User user = Statics.userSQL.SelectUuid(req.uuid); + ShopItemData shopItemData = Statics.shopItemExcel.getShopItemData(req.index); + RewardData rewardData; + + //획득 가능한 아이템인지 확인 + switch (shopItemData.buy_type) + { + case eBuyType.gold: + if(user.gold < shopItemData.buy) + { + throw new RuntimeException("Not gold", Error.nogold); + } + user.gold -= shopItemData.buy; + break; + case eBuyType.cash: + if (!user.buyCash(shopItemData.buy)) + { + throw new RuntimeException("Not cash", Error.nogold); + } + break; + case eBuyType.money://현금결제 현재로서는 무조건 결제완료가 나오도록 처리할것 + break; + default: + throw new RuntimeException("Not case", Error.nodata); + } + + //아이템 획득 처리 + if(shopItemData.reward == 0) + { + //따로 처리가 필요함. + } + else + { + rewardData = Statics.rewardExcel.getRewardData(shopItemData.reward); + switch (rewardData.reward_item_type) + { + case eRewardItemType.gold: + user.gold += rewardData.return_item; + break; + case eRewardItemType.freecash: + user.free_cash += rewardData.return_item; + break; + case eRewardItemType.paycash: + user.pay_cash += rewardData.return_item; + break; + case eRewardItemType.character: + + break; + case eRewardItemType.equipment: + + break; + case eRewardItemType.consumable: + + break; + case eRewardItemType.etc: + + break; + default: + throw new RuntimeException("Not case", Error.nodata); + + + } + } + + + + SaveSQL(); + return makeResp(); + } + + public override Protocol ProtocolValue() => Protocol.BuyShopItem; + + public override Req Requst(string json) + { + req = JsonConvert.DeserializeObject(json); + return req; + } + + private string makeResp() + { + BuyShopItemResp resp = new BuyShopItemResp(); + return resp.ToJson(); + } + + + } + + public class BuyShopItemReq : Req + { + public string uuid; + public long index; + public override bool IsReceivedAllField() + { + if (uuid == "" || index == 0) + return false; + return true; + } + } + + public class BuyShopItemResp : Resp + { + } +} diff --git a/Server/System/Enums.cs b/Server/System/Enums.cs index 5dd54e0..70d3220 100644 --- a/Server/System/Enums.cs +++ b/Server/System/Enums.cs @@ -15,6 +15,8 @@ EquipChange = 200,//장비 변경 DeckChange = 201,//덱 유닛 변경 NicknameChange = 202,//닉네임 변경 + + BuyShopItem = 300,//상점 아이템 구매 } public enum Error