쪽지 리스트를 메신저처럼 꾸며보기에 도전하고 있는데요. (참고)

이게 생각처럼 쉽지만은 않네요.

특히 UI/UX 쪽 신경 쓸 게 많아서 새삼 관련 종사자분들을 존경하고 있습니다.

그동안의 과정과 코드를 정리하고 싶은데 막상 하려니까 힘이 달리네요ㅜ 암튼 경과는 대강 이렇습니다.

 

 

1. 테이블 생성 및 데이터 입력

 

- 일단 db에 넣을 테이블을 새로 만들었어요. 컬럼명을 보면 각각 어떤 의미인지 대강 이해가 될 겁니당. (이렇게 하면 인덱싱인지 뭔지를 통해서 빠르게 데이터 추출할 수 있는 거 맞겠죠?)

<table name="member_message_list">
    <column name="member_srl" type="number" size="11" notnull="notnull" unique="unique_member_keys" />
    <column name="partner_srl" type="number" size="11" notnull="notnull" unique="unique_member_keys" />
    <column name="first_message_srl" type="number" size="11" notnull="notnull" index="idx_first_message_srl" />
    <column name="last_message_srl" type="number" size="11" notnull="notnull" index="idx_last_message_srl" />
    <column name="message_count" type="number" size="11" default="0" notnull="notnull" index="idx_message_count" />
    <column name="unread_count" type="number" size="11" default="0" notnull="notnull" index="idx_unread_count" />
    <column name="first_regdate" type="date" notnull="notnull" index="idx_first_regdate" />
    <column name="last_regdate" type="date" notnull="notnull" index="idx_last_regdate" />
</table>

 

- 로그인한 회원이 '쪽지함 보기'에 들어가게 되면 기존의 쪽지 관련 데이터를 정리해서(관련 동작은 여기를 참고) 새로 생성한 테이블에 'upsert' 해줍니다.

<query id="insertMessageList" action="insert" update-duplicate="true">
    <tables>
        <table name="member_message_list" />
    </tables>
    <columns>
        <column name="member_srl" var="member_srl" notnull="notnull" />
        <column name="partner_srl" var="partner_srl" notnull="notnull" />
        <column name="first_message_srl" var="first_message_srl" notnull="notnull" />
        <column name="last_message_srl" var="last_message_srl" notnull="notnull" />
        <column name="first_regdate" var="first_regdate" default="curdate()" />
        <column name="last_regdate" var="last_regdate" default="curdate()" />
        <column name="message_count" var="message_count" default="0" />
        <column name="unread_count" var="unread_count" default="0" />
    </columns>
</query>

 

 

2. 목록 추출 (이 부분 함수는 힘드니까 자세한 코드는 생략)

 

- 목록은 크게 두 종류로 추출합니다. 하나는 1) 쪽지 파트너들 목록, 2) 파트너와의 쪽지 목록

1) url 파라미터에 'partner_srl'가 없으면 파트너 목록만 띄워줍니다. 이때 db에 해당 회원과 파트너 회원으로 이뤄진 데이터가 없으면 기존 member_message 테이블을 참조해서 데이터를 변환해서 가져옵니다.

2) url 파라미터에 'partner_srl'가 있으면, 파트너와의 쪽지 목록을 띄워줍니다. 이건 새로 생성한 테이블(member_message_list)에서 간단하게 데이터만 갖고 오면 됩니다.

+ 또한 url에 message_srl이 있다면(즉, 쪽지 콘텐츠 보기 모드), 쪽지 콘텐츠 데이터도 가져옵니다.

 

 

3. 스킨 작업

 

- 요게 쉽지가 않더군요. 이틀 동안 여기에 매달린 듯해요ㅜ 스킨은 별 거 없이 카톡 pc 버전을 켜고 모양을 흉내내봤습니다.

1) message_head_list.html 이라는 템플릿 파일을 만들고, 거기서 파트너 목록을 디스플레이합니다. 이거는 php 단에서 목록 전달만 잘 받으면 되니까 어렵지 않습니다.

2) 다음으로 message_list_by_partner.html 템플릿 파일을 만들고, 쪽지 목록을 디스플레이합니다. (회원 자신이) 보낸 쪽지의 경우는 우측으로, 받은 쪽지는 좌측으로 정렬합니다. 풍선말로 된 쪽지 제목을 클릭하면 그 안에 쪽지 내용을 출력하도록 합니다.

 

 

4. 앞으로 해야 할 작업

 

- php단에서 쿼리 최소화를 위해 좀 더 고민이 필요합니다. 캐시 활용도 해야겠고요. 새 테이블에 데이터를 임포트해올 때 좀 더 효율적인 방법이 있지는 않은지도요.

- 검색 관련해서도 작업이 필요해보입니다. 통합검색에서 문서/댓글 검색이 분류되듯 채팅방, 메시지 검색도 분류를 해야 하는지...

- 스킨은... 괜히 카톡식으로 했어요ㅜ 이메일 애플리케이션처럼 해야 좀 더 간단했을 텐데요. 무엇보다 쪽지 목록에서 무한스크롤이나 더보기 버튼으로 다른 페이지의 목록을 추가하는 까다로운 작업을 해야겠습니다;;;

- 아 그리고 쪽지 보내기 필드도 만들어야 되는군요ㅋㅋㅋㅠㅠㅠ

- 또 뭐가 있을까요... 조언 주시면 감사하겠습니다!

 

 

 

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile
    감사합니다. ^^*
    연말 건강하게 보내세요.
  • profile profile
    새해엔 더 많은 축복을 받으세요!
  • profile
    구현해놓은거 실제로 보니 더 좋네요
  • profile profile
    갈 길이 매우 멉니다ㅠㅠ
  • profile
    와우,, 이렇게 구현도 되는군요!! 멋있습니다 ㅎㅎㅎ
  • profile
    인사드린김에,, 2023년도 고생많이 하셨고 새해복 많이받으세요~~
    항상 만들어주신 애드온,모듈 잘 사용하고있습니다!
  • profile profile
    잘 써주시면 저야말로 감개무량이죠. 부족한 자료들이어서 언제나 부끄럽습니다. 새해에는 부끄러움이 없기를.
  • ?

    확실히 더 직관적 이네요 ㄷㄷ

  • ? profile
    뭔가 좋은 뜻으로 해석해보겠습니다ㅎㅎㅎ
  • profile ?
    아 직관적이라고 작성할걸 잘못 작성했네요 ㅠㅠㅠ 더 좋습니다!!
  • profile
    메시지 클릭 시 입력 커서가 나오네요? 안 보여야 깔끔할 것 같아요!
    답장 내용은 이미지로 출력되는 건가요? 흠.. 복붙이 안되겠군요(?)
    ㄴ 링크나 버튼이 들어간 메시지라면..!!?

    정말 메시지느낌이 나려면 제목 자체는 없애고 내용만 나오는 게 낫지 않을까요?
    하단에 메시지 입력 창이 있고.. 특정 메시지에 대한 답글을 할 수 있게 출력은 답글하는 게시글도 같이 언급되게
    정말 카톡이나 채팅처럼..!!
  • profile profile
    - 커서는 제가 사용하는 브라우저가 자동으로 그냥 찍어주는 거라서...
    - 메시지 내용은 당연히 텍스트지요. html 그대로 받아옵니다.
    - 제목은 안 그래도 고민 중인데 코어 기준으로는 필수긴 합니다. 본문의 일부를 제목으로 자동 입력하게 하고 디스플레이에선 그냥 내용만 출력하는 것도 방법일 것 같아요.
    - 답글 기능은 생각 못하고 있었는데 고민이 좀 되긴 하네요. DB 구조상 구현 가능한지 살펴봐야겠습니다.
    코멘트 감사합니다~
  • profile
    역시 윤삼님!!
  • profile
    오~~ 멋집니다.
  • profile profile
    오, 방금은 url에 message_srl이 있을 때 메시지 리스트의 페이지를 찾아가는 쿼리에 성공했습니다. 재미가 있어요ㅋㅋㅋ
  • profile
    역시는 역시라고 윤삼님 멋져요