From 8cb4207ef6309f38ac9658a36899abc80022a2ad Mon Sep 17 00:00:00 2001 From: Seonkyu_Kim Date: Thu, 6 Mar 2025 13:42:49 +0900 Subject: [PATCH] =?UTF-8?q?[=E2=99=BB=EF=B8=8F]=20=ED=91=B8=EC=8B=9C=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=EC=9D=84=20=EC=95=84=EC=B9=B4=EB=8D=B0?= =?UTF-8?q?=EB=AF=B8=EC=99=80=20=EC=97=B0=EA=B3=84=EC=8B=9C=EC=BC=9C=20bid?= =?UTF-8?q?=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98=EA=B2=8C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program/V1/Controllers/PushController.cs | 85 +++++++++++++++++------- Program/V1/Models/PushPayload.cs | 4 ++ 2 files changed, 64 insertions(+), 25 deletions(-) diff --git a/Program/V1/Controllers/PushController.cs b/Program/V1/Controllers/PushController.cs index cba1a3f..9dfb8b6 100644 --- a/Program/V1/Controllers/PushController.cs +++ b/Program/V1/Controllers/PushController.cs @@ -31,8 +31,29 @@ public class PushController : ControllerBase [HttpGet()] [CustomOperation("푸시 확인", "저장된 양식을 확인 할 수 있다..", "푸시")] - public IActionResult GetPushData() + public async Task GetPush(string? pid) { + if (pid != null) + { + var pushData = await _dbContext.DBPayload + .Where(p => p.pid == pid) + .FirstOrDefaultAsync(); + } + else + { + + } + + try + { + + } + catch (Exception ex) + { + _logger.LogError($"[푸시] {ex.Message}"); + return StatusCode(500, APIResponse.UnknownError()); + } + return Ok("SEND"); } @@ -57,7 +78,7 @@ public class PushController : ControllerBase try { var payload = await _dbContext.DBPayload - .Where(p => p.pid == pushRequest.pid) + .Where(p => p.pid == pushRequest.pid && p.bid == pushRequest.bid ) .Select(p => new Payload { aps = new Aps @@ -66,6 +87,7 @@ public class PushController : ControllerBase category = p.category }, pid = pushRequest.pid, + bid = pushRequest.bid, content = p.content ?? "", }) .FirstOrDefaultAsync(); @@ -74,32 +96,44 @@ public class PushController : ControllerBase { foreach (var uid in pushRequest.uids) { - var badge = await _dbContext.PushCabinet - .Where(c => c.uid == uid && c.check_yn == false && c.pid != pushRequest.pid) - .CountAsync(); + if ( + await _dbContext.UserAcademy + .Where(ua => ua.uid == uid && ua.bid == pushRequest.bid) + .AnyAsync() + ) + { + var badge = await _dbContext.PushCabinet + .Where(c => c.uid == uid + && c.bid == pushRequest.bid + && c.pid != pushRequest.pid + && c.check_yn == false ) + .CountAsync(); - var pushToken = await _dbContext.User - .Where(u => u.uid == uid) - .Select(u => u.push_token) - .FirstOrDefaultAsync() ?? ""; + var pushToken = await _dbContext.User + .Where(u => u.uid == uid) + .Select(u => u.push_token) + .FirstOrDefaultAsync() ?? ""; - var pushCabinet = new PushCabinet - { - uid = uid, - pid = pushRequest.pid, - send_date = DateTime.Now, - }; + var pushCabinet = new PushCabinet + { + uid = uid, + bid = pushRequest.bid, + pid = pushRequest.pid, + send_date = DateTime.Now, + }; - if (payload != null) payload.aps.badge = badge + 1; + if (payload != null) payload.aps.badge = badge + 1; - var pushData = new PushData - { - pushToken = pushToken, - payload = payload ?? throw new PushInvalidException("payload is NULL") - }; - await _repositoryService.SaveDataFK(pushCabinet); + var pushData = new PushData + { + pushToken = pushToken, + payload = payload ?? throw new PushInvalidException("payload is NULL") + }; + await _repositoryService.SaveDataFK(pushCabinet); + + _pushQueue.Enqueue(pushData); + } - _pushQueue.Enqueue(pushData); } }); @@ -130,7 +164,7 @@ public class PushController : ControllerBase try { var dbPayload = await _dbContext.DBPayload - .FirstOrDefaultAsync(p => p.pid == request.pid); + .FirstOrDefaultAsync(p => p.pid == request.pid && p.bid == request.bid); if (dbPayload != null) { @@ -143,7 +177,8 @@ public class PushController : ControllerBase if (await _repositoryService.SaveData(dbPayload, p => p.pid)) return Ok(APIResponse.Send("000", "PUSH 정보 변경 완료", Empty)); } - return Ok(APIResponse.Send("100", "PID 또는 Cabinet 오류", Empty)); + + return Ok(APIResponse.Send("100", "PID, BID 또는 Cabinet 오류", Empty)); } catch (Exception ex) { diff --git a/Program/V1/Models/PushPayload.cs b/Program/V1/Models/PushPayload.cs index 1467a6b..1196e42 100644 --- a/Program/V1/Models/PushPayload.cs +++ b/Program/V1/Models/PushPayload.cs @@ -78,6 +78,7 @@ public class DBPayload [Key] [MaxLength(22)] public string pid { get; set; } + public string bid { get; set; } public string title {get; set;} public string? subtitle {get; set;} public string body {get; set;} @@ -91,12 +92,14 @@ public class PushCabinet { public string uid { get; set; } public string pid { get; set; } + public string bid { get; set; } public DateTime send_date { get; set; } public bool check_yn { get; set; } } public class PushRequest { + public string bid { get; set; } public List uids { get; set; } public string pid { get; set; } } @@ -106,6 +109,7 @@ public class Payload { public Aps aps { get; set; } public string pid { get; set; } + public string bid { get; set; } public string content { get; set; } // public string customKey { get; set; } 이런식으로 추가도 가능