诸暨麻将添加redis
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

372 lines
11 KiB

  1. #ifndef SERVER_USER_MANAGER_HEAD_FILE
  2. #define SERVER_USER_MANAGER_HEAD_FILE
  3. #pragma once
  4. #include "AfxTempl.h"
  5. #include "GameServiceHead.h"
  6. #include <string>
  7. //////////////////////////////////////////////////////////////////////////////////
  8. //用户信息
  9. class GAME_SERVICE_CLASS CServerUserItem : public IServerUserItem, public IServerUserService
  10. {
  11. //友元定义
  12. friend class CServerUserManager;
  13. //属性变量
  14. protected:
  15. tagUserInfo m_UserInfo; //用户信息
  16. tagUserRule m_UserRule; //用户规则
  17. tagUserScore m_ScoreFormer; //先前分数
  18. tagUserProperty m_UserProperty; //玩家道具
  19. //变更记录
  20. protected:
  21. tagVariationInfo m_RecordInfo; //记录信息
  22. tagVariationInfo m_VariationInfo; //变更信息
  23. //附加变量
  24. protected:
  25. DWORD m_dwUserRight; //用户权限
  26. DWORD m_dwMasterRight; //管理权限
  27. //托管变量
  28. protected:
  29. SCORE m_lTrusteeScore; //托管积分
  30. SCORE m_lRestrictScore; //限制积分
  31. SCORE m_lFrozenedScore; //冻结积分
  32. //登录信息
  33. protected:
  34. DWORD m_dwDBQuestID; //请求标识
  35. DWORD m_dwLogonTime; //登录时间
  36. DWORD m_dwInoutIndex; //进出索引
  37. //客户类型
  38. protected:
  39. bool m_bMobileUser; //手机用户
  40. bool m_bAndroidUser; //机器用户
  41. //比赛信息
  42. protected:
  43. DWORD m_dwSignUpTime; //报名时间
  44. BYTE m_cbSignUpStatus; //报名状态
  45. VOID * m_pMatchData; //比赛数据
  46. //辅助变量
  47. protected:
  48. bool m_bTrusteeUser; //系统托管
  49. bool m_bClientReady; //连接标志
  50. bool m_bModifyScore; //修改标志
  51. TCHAR m_szLogonPass[LEN_PASSWORD]; //用户密码
  52. //系统属性
  53. protected:
  54. WORD m_wBindIndex; //绑定索引
  55. DWORD m_dwClientAddr; //连接地址
  56. TCHAR m_szMachineID[LEN_MACHINE_ID]; //机器标识
  57. //组件接口
  58. protected:
  59. IServerUserItemSink * m_pIServerUserItemSink; //回调接口
  60. //手机定义
  61. protected:
  62. WORD m_wDeskPos; //当前分页
  63. WORD m_wDeskCount; //分页桌数
  64. WORD m_wMobileUserRule; //手机规则
  65. WORD m_szMachineType; //机器类型
  66. //函数定义
  67. protected:
  68. //构造函数
  69. CServerUserItem();
  70. //析构函数
  71. virtual ~CServerUserItem();
  72. //基础接口
  73. public:
  74. //释放对象
  75. virtual VOID Release() { delete this; }
  76. //接口查询
  77. virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
  78. //属性信息
  79. public:
  80. //绑带索引
  81. virtual WORD GetBindIndex() { return m_wBindIndex; }
  82. //用户地址
  83. virtual DWORD GetClientAddr() { return m_dwClientAddr; }
  84. //客户端版本标示
  85. virtual LPCTSTR GetMachineID() { return m_szMachineID; }
  86. //登录信息
  87. public:
  88. //请求标识
  89. virtual DWORD GetDBQuestID() { return m_dwDBQuestID++; }
  90. //登录时间
  91. virtual DWORD GetLogonTime() { return m_dwLogonTime; }
  92. //记录索引
  93. virtual DWORD GetInoutIndex() { return m_dwInoutIndex; }
  94. //用户信息
  95. public:
  96. //用户信息
  97. virtual tagUserInfo * GetUserInfo() { return &m_UserInfo; }
  98. //用户规则
  99. virtual tagUserRule * GetUserRule() { return &m_UserRule; }
  100. //道具信息
  101. virtual tagUserProperty * GetUserProperty() { return &m_UserProperty; };
  102. //时间信息
  103. virtual tagTimeInfo * GetTimeInfo() { return &m_UserInfo.TimerInfo; }
  104. //属性信息
  105. public:
  106. //用户性别
  107. virtual BYTE GetGender() { return m_UserInfo.cbGender; }
  108. //用户标识
  109. virtual DWORD GetUserID() { return m_UserInfo.dwUserID; }
  110. //游戏标识
  111. virtual DWORD GetGameID() { return m_UserInfo.dwGameID; }
  112. //用户昵称
  113. virtual LPCTSTR GetNickName() { return m_UserInfo.szNickName; }
  114. //状态接口
  115. public:
  116. //桌子号码
  117. virtual WORD GetTableID() { return m_UserInfo.wTableID; }
  118. //桌子号码
  119. virtual WORD GetLastTableID() { return m_UserInfo.wLastTableID; }
  120. //椅子号码
  121. virtual WORD GetChairID() { return m_UserInfo.wChairID; }
  122. //设置椅子号码
  123. virtual VOID SetChairID(WORD chairID) { m_UserInfo.wChairID = chairID; }
  124. //用户状态
  125. virtual BYTE GetUserStatus() { return m_UserInfo.cbUserStatus; }
  126. //权限信息
  127. public:
  128. //用户权限
  129. virtual DWORD GetUserRight() { return m_dwUserRight; }
  130. //管理权限
  131. virtual DWORD GetMasterRight() { return m_dwMasterRight; }
  132. //等级信息
  133. public:
  134. //用户权限
  135. virtual BYTE GetMemberOrder() { return m_UserInfo.cbMemberOrder; }
  136. //管理权限
  137. virtual BYTE GetMasterOrder() { return m_UserInfo.cbMasterOrder; }
  138. //积分信息
  139. public:
  140. //用户积分
  141. virtual SCORE GetUserScore() { return m_UserInfo.lScore; }
  142. //用户成绩
  143. virtual SCORE GetUserGrade() { return m_UserInfo.lGrade; }
  144. //用户银行
  145. virtual SCORE GetUserInsure() { return m_UserInfo.lInsure; }
  146. //托管信息
  147. public:
  148. //托管积分
  149. virtual SCORE GetTrusteeScore() { return m_lTrusteeScore; }
  150. //冻结积分
  151. virtual SCORE GetFrozenedScore() { return m_lFrozenedScore; }
  152. //积分信息
  153. public:
  154. //用户胜率
  155. virtual WORD GetUserWinRate();
  156. //用户输率
  157. virtual WORD GetUserLostRate();
  158. //用户和率
  159. virtual WORD GetUserDrawRate();
  160. //用户逃率
  161. virtual WORD GetUserFleeRate();
  162. //游戏局数
  163. virtual DWORD GetUserPlayCount() { return m_UserInfo.dwWinCount + m_UserInfo.dwLostCount + m_UserInfo.dwDrawCount + m_UserInfo.dwFleeCount; }
  164. //效验接口
  165. public:
  166. //对比帐号
  167. virtual bool ContrastNickName(LPCTSTR pszNickName);
  168. //对比密码
  169. virtual bool ContrastLogonPass(LPCTSTR pszPassword);
  170. //托管状态
  171. public:
  172. //判断状态
  173. virtual bool IsTrusteeUser() { return m_bTrusteeUser; }
  174. //设置状态
  175. virtual VOID SetTrusteeUser(bool bTrusteeUser) { m_bTrusteeUser = bTrusteeUser; }
  176. //游戏状态
  177. public:
  178. //连接状态
  179. virtual bool IsClientReady() { return m_bClientReady; };
  180. //设置连接
  181. virtual VOID SetClientReady(bool bClientReady) { m_bClientReady = bClientReady; }
  182. //手机用户
  183. public:
  184. //控制状态
  185. virtual bool IsMobileUser() { return m_bMobileUser; }
  186. //设置控制
  187. virtual VOID SetMobileUser(bool bMobileUser) { m_bMobileUser = bMobileUser; }
  188. //控制用户
  189. public:
  190. //控制状态
  191. virtual bool IsAndroidUser() { return m_bAndroidUser; }
  192. //设置控制
  193. virtual VOID SetAndroidUser(bool bAndroidUser) { m_bAndroidUser = bAndroidUser; }
  194. //比赛接口
  195. public:
  196. //报名数据
  197. virtual VOID * GetMatchData() { return m_pMatchData; }
  198. //报名数据
  199. virtual VOID SetMatchData(VOID * pMatchData) { m_pMatchData = pMatchData; }
  200. //报名时间
  201. virtual DWORD GetSignUpTime() { return m_dwSignUpTime; }
  202. //报名时间
  203. virtual VOID SetSignUpTime(DWORD dwSignUpTime) { m_dwSignUpTime = dwSignUpTime; }
  204. //报名状态
  205. virtual BYTE GetSignUpStatus() { return m_cbSignUpStatus; }
  206. //报名状态
  207. virtual VOID SetSignUpStatus(BYTE cbSignUpStatus) { m_cbSignUpStatus = cbSignUpStatus; }
  208. //记录接口
  209. public:
  210. //变更判断
  211. virtual bool IsVariation() { return m_bModifyScore; }
  212. //查询记录
  213. virtual bool QueryRecordInfo(tagVariationInfo & RecordInfo);
  214. //提取变更
  215. virtual bool DistillVariation(tagVariationInfo & VariationInfo);
  216. //管理接口
  217. public:
  218. //设置状态
  219. virtual bool SetUserStatus(BYTE cbUserStatus, WORD wTableID, WORD wChairID, bool bSendState = false);
  220. //写入积分
  221. virtual bool WriteUserScore(SCORE lScore, SCORE lGrade, SCORE lRevenue, SCORE lIngot, BYTE cbScoreType, DWORD dwPlayTimeCount, DWORD dwWinExperience);
  222. //写临时积分记录(私有房间)
  223. bool WriteUserTmpScoreRecord(SCORE lScore, BYTE cbScoreType, DWORD dwPlayTimeCount);
  224. //冻结接口
  225. public:
  226. //冻结积分
  227. virtual bool FrozenedUserScore(SCORE lScore);
  228. //解冻积分
  229. virtual bool UnFrozenedUserScore(SCORE lScore);
  230. //修改接口
  231. public:
  232. //修改信息
  233. virtual bool ModifyUserProperty(SCORE lScore, LONG lLoveLiness);
  234. //参数接口
  235. public:
  236. //解除绑定
  237. virtual bool DetachBindStatus();
  238. //银行操作
  239. virtual bool ModifyUserInsure(SCORE lScore, SCORE lInsure, SCORE lRevenue);
  240. //设置参数
  241. virtual bool SetUserParameter(DWORD dwClientAddr, WORD wBindIndex, TCHAR szMachineID[LEN_MACHINE_ID], bool bAndroidUser, bool bClientReady);
  242. //修改权限
  243. virtual VOID ModifyUserRight(DWORD dwAddRight, DWORD dwRemoveRight, BYTE cbRightKind = UR_KIND_GAME);
  244. //辅助函数
  245. private:
  246. //重置数据
  247. VOID ResetUserItem();
  248. //手机定义
  249. public:
  250. //手机定义
  251. virtual WORD GetMobileUserRule(){ return m_wMobileUserRule; }
  252. //设置定义
  253. virtual VOID SetMobileUserRule(WORD wMobileUserRule) { m_wMobileUserRule = wMobileUserRule; }
  254. //当前分页
  255. virtual WORD GetMobileUserDeskPos(){ return m_wDeskPos; }
  256. //当前分页
  257. virtual VOID SetMobileUserDeskPos(WORD wMobileUserDeskPos){ m_wDeskPos = wMobileUserDeskPos; }
  258. //分页桌数
  259. virtual WORD GetMobileUserDeskCount(){ return m_wDeskCount; }
  260. //分页桌数
  261. virtual VOID SetMobileUserDeskCount(WORD wMobileUserDeskCount){ m_wDeskCount = wMobileUserDeskCount; }
  262. //器类型
  263. virtual WORD GetMobileUserMachineType() { return m_szMachineType; }
  264. //机器类型
  265. virtual VOID SetMobileUserMachineType(WORD MachineType) { m_szMachineType = MachineType; }
  266. };
  267. //////////////////////////////////////////////////////////////////////////////////
  268. //用户索引类
  269. typedef CWHArray<CServerUserItem *> CServerUserItemArray;
  270. typedef CMap<DWORD, DWORD, CServerUserItem *, CServerUserItem *> CServerUserItemMap;
  271. //用户管理类
  272. class GAME_SERVICE_CLASS CServerUserManager : public IServerUserManager
  273. {
  274. //用户变量
  275. protected:
  276. CServerUserItemMap m_UserIDMap; //用户索引
  277. CServerUserItemArray m_UserItemArray; //用户数组
  278. CServerUserItemArray m_UserItemStore; //存储用户
  279. //组件接口
  280. protected:
  281. IServerUserItemSink * m_pIServerUserItemSink; //回调接口
  282. //函数定义
  283. public:
  284. //构造函数
  285. CServerUserManager();
  286. //析构函数
  287. virtual ~CServerUserManager();
  288. //基础接口
  289. public:
  290. //释放对象
  291. virtual VOID Release() { return; }
  292. //接口查询
  293. virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
  294. //配置函数
  295. public:
  296. //设置接口
  297. virtual bool SetServerUserItemSink(IUnknownEx * pIUnknownEx);
  298. //查找函数
  299. public:
  300. //枚举用户
  301. virtual IServerUserItem * EnumUserItem(WORD wEnumIndex);
  302. //查找用户
  303. virtual IServerUserItem * SearchUserItem(DWORD dwUserID);
  304. //查找用户
  305. virtual IServerUserItem * SearchUserItem(LPCTSTR pszNickName);
  306. //统计函数
  307. public:
  308. //机器人数
  309. virtual DWORD GetAndroidCount();
  310. //在线人数
  311. virtual DWORD GetUserItemCount() { return (DWORD)m_UserItemArray.GetCount(); }
  312. //管理函数
  313. public:
  314. //删除用户
  315. virtual bool DeleteUserItem();
  316. //删除用户
  317. virtual bool DeleteUserItem(IServerUserItem * pIServerUserItem);
  318. //插入用户
  319. virtual bool InsertUserItem(IServerUserItem * * pIServerUserResult, tagUserInfo & UserInfo, tagUserInfoPlus & UserInfoPlus);
  320. };
  321. //////////////////////////////////////////////////////////////////////////////////
  322. #endif