kookmin-sw / capstone-2024-45

시간은행 v2
https://kookmin-sw.github.io/capstone-2024-45/
1 stars 1 forks source link

[Front][API 연결] User, UserAccount 정보 얻어서 송금하는 과정 정리 #33

Closed sunJ0120 closed 3 months ago

sunJ0120 commented 4 months ago

login을 통해 deviceId 얻음 -> deviceId를 이용해서 api 요청, user_id 얻음 -> user_id를 통해 api 요청, 회원 정보 얻음. 이걸 User 클래스에 저장해서 프론트에서 사용 👉🏻 어느 화면에서 이 과정을 거칠지가 중요한데, mainAccount에서 하게 되지 않을까..싶습니다.

User 클래스 안에 있는 user_id로 api 요청해서 accounts 조회 -> accounts에서 특정 하나의 accountId로 api 요청해서 단일 account 조회(개인 회원의 경우는 하나라 일단 하나로 보고 해도 될 듯 합니다.) -> 받은 정보 UserAccountInfo 클래스에 저장


  1. qr 생성시 송금시 사용하는 User 클래스 내부의 정보 일부 + UserAccount 정보 일부를 클래스로 생성해서 암호화 api에 보냄 -> 암호화된 request를 받음, 이걸 qr에 띄우기

  2. qr 송금시 scan한 암호화 정보를 복호화 api에 보내기 -> 해독 api에서 복호화된 정보들을 받고 ScannedUserData 클래스에 저장 -> 그 정보들로 송금 화면을 구성 -> 송금을 위한 정보들(ScannedUserData의 일부 + 자신의 User 클래스의 정보 중 일부 + 자신의 UserAccountInfo 정보의 일부)를 송금 api에 전송 -> request 받고 송금 완료

sunJ0120 commented 4 months ago

api 연결을 위한 구현 부분들 완료 될 때 마다 comment로 연결해서 쭉 달겠습니다.

sunJ0120 commented 4 months ago

요청 과정

api/user/{device_id} 👉🏻 api/user/{user_id} -> User 클래스에 저장

✅User 클래스 일부

class User {
   late String deviceId;
   late String name; //이름값
   late String profile; //프로필 사진, user 정보에 추가 필요!
   late String phoneNumber;
   late String userId; 
//......
}

📌api/user/{user_id}로 얻을 수 있는 유저 전체 정보에서 프로필 사진 정보가 있어야 할 것 같습니다!

sunJ0120 commented 4 months ago

요청 과정

api/user/{user_id}/accounts -> UserAccounts에 저장 api/accounts/{account_id} -> UserAccountInfo에 저장

✅UserAccounts 클래스 일부 UserAccountInfo를 리스트 형식으로 저장

class UserAccounts {
//.......
  void initializeData(Map<String, dynamic> data) {
    List<UserAccountInfo> userAccounts = (data['accounts'] as List<dynamic>).map((accountData) {
      var userAccountInfo = UserAccountInfo();
      userAccountInfo.initializeData(accountData);
      return userAccountInfo;
    }).toList();
  }
}

✅UserAccountInfo 클래스 일부

class UserAccountInfo {
  late String accountId; 
  late String userId;
  late String accountName; 
  late String name; //소유주 이름 //필요할지 미지수
  late String phoneNumber; //전화번호  //필요할지 미지수
  late int balance;
  late bool blocked;
  late String blockedType; //blocked 계좌 여부
//.....
}

📌 특정 계좌 조회시 blocked, blockedType 정보가 필요할 것 같습니다!

sunJ0120 commented 4 months ago

qr 생성, 스캔에 대한 부분은 추가 api 요청으로 인해 약간 수정이 필요한 상황입니다. 최대한 오늘 qr 생성 파트까지는 정리할 예정입니다.

sunJ0120 commented 4 months ago

받는 사람 QR 생성 과정

✅ ScannedUser 클래스 일부

class ScannedUser {
  late String accountId; //accountId
  late String name; //이름값
  late String profile; //프로필 사진
  late String userId; //유저 id
}

해당 정보를 암호화 api로 보낼 예정 -> name, profile, userId등은 화면에 띄워야 해서 일단 넣었는데, 암호화가 필요 없을 경우 특정 계좌 정보 조회 api로 accountId를 보내서 userId를 얻어서 user 정보를 얻어오는 단계를 추가할 예정입니다.


✅ secretScannedUserData 클래스 일부

class secretScannedUserData {
  late String incodingData;
}

암호화 api에서 받아올 암호화 정보를 저장하는 클래스입니다. -> 암호화 정보의 경우, 해독할 때만 쓰일 것 같아서 이걸 클래스로 저장할지, 아니면 api 정보 받아와서 바로 사용하는 방법이 좋을지 고민중입니다.