设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5687|回复: 1
打印 上一主题 下一主题

AnyChat大厅好友业务逻辑详解

[复制链接]

249

主题

2967

帖子

9075

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9075
跳转到指定楼层
楼主
发表于 2013-10-10 18:43:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端新增API接口:
  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);
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

249

主题

2967

帖子

9075

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9075
沙发
 楼主| 发表于 2013-10-10 19:11:38 | 只看该作者

服务器端业务逻辑处理流程

在用户登录成功事件中设置用户的好友列表、分组列表、用户属性,并发送数据同步指令:
  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);
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-4-20 11:50 , Processed in 0.118345 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表