쪽지 리스트를 메신저처럼 꾸며보기에 도전하고 있는데요. (참고)
이게 생각처럼 쉽지만은 않네요.
특히 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단에서 쿼리 최소화를 위해 좀 더 고민이 필요합니다. 캐시 활용도 해야겠고요. 새 테이블에 데이터를 임포트해올 때 좀 더 효율적인 방법이 있지는 않은지도요.
- 검색 관련해서도 작업이 필요해보입니다. 통합검색에서 문서/댓글 검색이 분류되듯 채팅방, 메시지 검색도 분류를 해야 하는지...
- 스킨은... 괜히 카톡식으로 했어요ㅜ 이메일 애플리케이션처럼 해야 좀 더 간단했을 텐데요. 무엇보다 쪽지 목록에서 무한스크롤이나 더보기 버튼으로 다른 페이지의 목록을 추가하는 까다로운 작업을 해야겠습니다;;;
- 아 그리고 쪽지 보내기 필드도 만들어야 되는군요ㅋㅋㅋㅠㅠㅠ
- 또 뭐가 있을까요... 조언 주시면 감사하겠습니다!
연말 건강하게 보내세요.