forked from AcaMate/AcaMate_API
[♻️] 푸시 로직을 아카데미와 연계시켜 bid를 사용하게 변경
This commit is contained in:
parent
289fe748a9
commit
8cb4207ef6
|
@ -31,8 +31,29 @@ public class PushController : ControllerBase
|
|||
|
||||
[HttpGet()]
|
||||
[CustomOperation("푸시 확인", "저장된 양식을 확인 할 수 있다..", "푸시")]
|
||||
public IActionResult GetPushData()
|
||||
public async Task<IActionResult> 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>(pushCabinet);
|
||||
var pushData = new PushData
|
||||
{
|
||||
pushToken = pushToken,
|
||||
payload = payload ?? throw new PushInvalidException("payload is NULL")
|
||||
};
|
||||
await _repositoryService.SaveDataFK<PushCabinet>(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, string>(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)
|
||||
{
|
||||
|
|
|
@ -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<string> 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; } 이런식으로 추가도 가능
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user