IM中好友管理解決方案

客戶端處理接口:

  1. #define WM_GV_USERINFOUPDATE   WM_GV + 16                ///< 用戶信息更新通知,wParam(INT)表示用戶ID號,lParam(INT)表示更新類別

  2. #define WM_GV_FRIENDSTATUS     WM_GV + 17                ///< 好友在線狀態變化,wParam(INT)表示好友用戶ID號,lParam(INT)表示用戶的當前活動狀態:0 離線, 1 上線


  3. // 獲取用戶好友ID列表

  4. BRAC_API DWORD BRAC_GetUserFriends(LPDWORD lpUserIDArray, DWORD& dwUserNum);

  5. // 獲取好友在線狀態

  6. BRAC_API DWORD BRAC_GetFriendStatus(DWORD dwFriendUserId, DWORD& dwStatus);

  7. // 獲取用戶分組ID列表

  8. BRAC_API DWORD BRAC_GetUserGroups(LPDWORD lpGroupIDArray, DWORD& dwGroupNum);

  9. // 獲取分組下面的好友列表

  10. BRAC_API DWORD BRAC_GetGroupFriends(DWORD dwGroupId, LPDWORD lpUserIDArray, DWORD& dwUserNum);

  11. // 獲取用戶信息

  12. BRAC_API DWORD BRAC_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoName, DWORD dwLen);

  13. // 獲取用戶分組名稱

  14. BRAC_API DWORD BRAC_GetGroupName(DWORD dwGroupId, TCHAR* lpGroupName, DWORD dwLen);

複製代碼

服務端新增API接口:
  1. // 用戶信息控制類型定義(API:BRAS_UserInfoControl 傳入參數、OnUserInfoControl回調參數)

  2. #define BRAS_USERINFO_CTRLCODE_KICKOUT          1         ///< 將指定用戶從系統中踢掉

  3. #define BRAS_USERINFO_CTRLCODE_SYNCDATA         2         ///< 將指定用戶的數據同步給客戶端


  4. #define BRAS_USERINFO_CTRLCODE_ADDGROUP         20        ///< 添加用戶分組,wParam爲分組Id,lpStrValue爲分組名稱

  5. #define BRAS_USERINFO_CTRLCODE_DELGROUP         21        ///< 刪除用戶分組,wParam爲分組Id

  6. #define BRAS_USERINFO_CTRLCODE_ADDFRIEND        22        ///< 添加用戶好友,wParam爲好友Id

  7. #define BRAS_USERINFO_CTRLCODE_DELFRIEND        23        ///< 刪除用戶好友,wParam爲好友Id

  8. #define BRAS_USERINFO_CTRLCODE_SETGROUPRELATION 24        ///< 設置好友與分組的關聯關係,wParam爲分組Id,lParam爲好友Id,表示好友屬於某個分組



  9. // 設置用戶的詳細信息

  10. BRAS_API DWORD BRAS_SetUserInfo(DWORD dwUserId, DWORD dwInfoId, LPCTSTR lpInfoValue, DWORD dwFlags=0);

  11. // 獲取用戶的詳細信息

  12. BRAS_API DWORD BRAS_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoValue, DWORD dwSize);

  13. // 用戶信息控制

  14. BRAS_API DWORD BRAS_UserInfoControl(DWORD dwUserId, DWORD dwCtrlCode, DWORD wParam=0, DWORD lParam=0, LPCTSTR lpStrValue=NULL);

複製代碼

服務器端業務邏輯處理流程

在用戶登錄成功事件中設置用戶的好友列表、分組列表、用戶屬性,併發送數據同步指令:
  1. // 用戶登錄成功回調函數定義

  2. typedef void (CALLBACK* BRAS_OnUserLoginAction_CallBack)(DWORD dwUserId, LPCTSTR szUserName, DWORD dwLevel, LPCTSTR szIpAddr, LPVOID lpUserValue);

複製代碼

一、添加用戶分組
  1. DWORD dwGroupId = 1;

  2. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP,  dwGroupId, 0, "我的好友");

  3. dwGroupId = 2;

  4. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP,  dwGroupId, 0, "公司同事");

複製代碼

二、添加用戶好友
  1. DWORD dwFriendUserId = 10010;

  2. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND,  dwFriendUserId);

  3. dwFriendUserId = 10011;

  4. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND,  dwFriendUserId );

複製代碼

三、設置好友與分組的關係(即好友屬於哪一個分組)
  1. DWORD dwGroupId = 1;

  2. DWORD dwFriendUserId = 10010;

  3. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION,  dwGroupId, dwFriendUserId);

  4. dwGroupId = 2;

  5. dwFriendUserId = 10011;

  6. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION,  dwGroupId, dwFriendUserId);

複製代碼

四、設置用戶信息(用戶資料)
  1. BRAS_SetUserInfo(dwUserId, 1, "我的簽名");

  2. BRAS_SetUserInfo(dwUserId, 2, "020-85276986");

  3. ……

複製代碼

五、將前面設置的資料同步給客戶端
  1. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SYNCDATA,  0, 0);

複製代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章