닉네임 변경 프로토콜 작업 완료

This commit is contained in:
김판돌 2024-02-24 23:34:05 +09:00
parent d9a5d29628
commit 1a1c8f5e78
7 changed files with 94 additions and 4 deletions

View File

@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace Server.SQL namespace Server.SQL
@ -6,6 +7,7 @@ namespace Server.SQL
[Table("dynamic_data", Schema = "gamedb")] [Table("dynamic_data", Schema = "gamedb")]
public class DynamicData public class DynamicData
{ {
[Key]
public long id { get; set; } public long id { get; set; }
public string name { get; set; } public string name { get; set; }
public string value { get; set; } public string value { get; set; }

View File

@ -19,12 +19,14 @@ namespace Server.SQL
public bool buyCash(long buy) public bool buyCash(long buy)
{ {
if (buy == 0) { return true; }
long freeCash = free_cash; long freeCash = free_cash;
long payCash = pay_cash; long payCash = pay_cash;
freeCash -= buy; freeCash -= buy;
if(freeCash < 0) if(freeCash < 0)
{ {
payCash -= freeCash; payCash += freeCash;
freeCash = 0;
} }
if(payCash >= 0) if(payCash >= 0)

View File

@ -8,7 +8,7 @@ namespace Server.Service
{ {
private DeckChangeReq req; private DeckChangeReq req;
public void SaveSQL() private void SaveSQL()
{ {
Statics.deckInfoSQL.SaveChanges(); Statics.deckInfoSQL.SaveChanges();
} }

View File

@ -8,7 +8,7 @@ namespace Server.Service
{ {
private EquipChangeReq req; private EquipChangeReq req;
public void SaveSQL() private void SaveSQL()
{ {
Statics.equipmentrSQL.SaveChanges(); Statics.equipmentrSQL.SaveChanges();
Statics.deckUnitInfoSQL.SaveChanges(); Statics.deckUnitInfoSQL.SaveChanges();

View File

@ -51,7 +51,7 @@ namespace Server.Service
user = new User(); user = new User();
user.mail = req.mail; user.mail = req.mail;
user.uuid = Guid.NewGuid().ToString(); user.uuid = Guid.NewGuid().ToString();
user.nickname = "NoName"; user.nickname = Statics.dynamicDataSQL.SelectName("defaultNick").value;
Statics.userSQL.Insert(user); //저장하고 유닛의 id를 얻어오기 위함. Statics.userSQL.Insert(user); //저장하고 유닛의 id를 얻어오기 위함.
#endregion #endregion
#region #region

View File

@ -0,0 +1,83 @@
using Server.System;
using Newtonsoft.Json;
using Server.SQL;
using System.Text.RegularExpressions;
namespace Server.Service
{
public class NicknameChange : AbstractService
{
private NicknameChangeReq req;
private void SaveSQL()
{
Statics.userSQL.SaveChanges();
}
public override string Process()
{
User user = Statics.userSQL.SelectUuid(req.uuid);
string newNickname = req.newNickname;
string regular = @"^[가-힣a-zA-Z0-9\s]*$";
int buy;
//닉네임 체크
//if(!Regex.IsMatch(newNickname, regular) || (newNickname.Length < 2 || newNickname.Length > 16) || user.nickname == newNickname)
//{
// //해당 데이터가 들어온다면 유저 정보와 같이 로그를 남기게 만들것
// throw new RuntimeException("Nickname not allowed", Error.errordata);
//}
//가격 체크
if (user.nickname == Statics.dynamicDataSQL.SelectName("defaultNick").value)
buy = 0;
else
buy = int.Parse(Statics.dynamicDataSQL.SelectName("nicknameCash").value);
//현재 충분한 제화가 있는지 확인
if (!user.buyCash(buy))
{
throw new RuntimeException("Cache shortage", Error.nogold);
}
user.nickname = newNickname;
SaveSQL();
return makeResp(user);
}
public override Protocol ProtocolValue() => Protocol.NicknameChange;
public override Req Requst(string json)
{
req = JsonConvert.DeserializeObject<NicknameChangeReq>(json);
return req;
}
private string makeResp(User user)
{
NicknameChangeResp resp = new NicknameChangeResp();
resp.status = 200;
resp.nickname = user.nickname;
resp.cash = (ulong)(user.free_cash + user.pay_cash);
return resp.ToJson();
}
}
public class NicknameChangeReq : Req
{
public string uuid;
public string newNickname;
public override bool IsReceivedAllField()
{
if (uuid == "")
return false;
return true;
}
}
public class NicknameChangeResp : Resp
{
public string nickname;
public ulong cash;
}
}

View File

@ -14,6 +14,7 @@
EquipChange = 200,//장비 변경 EquipChange = 200,//장비 변경
DeckChange = 201,//덱 유닛 변경 DeckChange = 201,//덱 유닛 변경
NicknameChange = 202,//닉네임 변경
} }
public enum Error public enum Error
@ -23,6 +24,8 @@ public enum Error
success = 200,//성공 success = 200,//성공
notFound = 404,//프로토콜 없음 notFound = 404,//프로토콜 없음
unknown = 500,//파라미터 오류 unknown = 500,//파라미터 오류
errordata = 501,//잘못된 데이터
crypto = 800,//암복호화 에러 crypto = 800,//암복호화 에러
nodata = 900,//데이터가 없음 nodata = 900,//데이터가 없음
nogold = 901,//소모재화가 없음
} }