----------------枚举 // 用来区分不同功能的,避免产生魔鬼数字 // 统一由负责网络通信的人来定,并且客户端和服务端共用 // 最后和结构体一起放到同一个头文件里面,作为公共的部分 common.h enum TypeInfo { REGISTER_REQ, // 注册请求 REGISTER_RES, // 注册响应 LOGIN_REQ, // 登录请求 LOGIN_RES, // 登录响应 CHANGE_PASSWORD_REQ, // 修改密码请求 CHANGE_PASSWORD_RES, // 修改密码响应 CHANGE_PASSWORD_BY_TEL_REQ, // 通过手机号改密码请求 CHANGE_PASSWORD_BY_TEL_RES, // 通过手机号改密码响应 PER_SEARCH_USER_REQ, // 权限管理:查询用户请求 PER_SEARCH_USER_RES, // 权限管理:查询用户响应 CHANGE_PERMISSION_REQ, // 权限管理: 修改权限请求 CHANGE_PERMISSION_RES, // 权限管理: 修改权限响应 }; ----------------数据头 struct Head { int type; int len; }; ======================================== C端:客户端 1、注册、登录 1.1 注册 用户名、用户id[sql自动生成]、 邮箱、密码、权限[自动生成最低权限]、 部门、注册时间[自动生成] 用户状态[自动生成]、[AES、RSA、MD5] 手机号 ------客户端发起的 用户名 密码 [确认密码] 邮箱 部门 手机号 ------------- 请求结构体: struct RegisterReq { Head head; char user_name[32]; char password[32]; char email[32]; char department[32]; char tel[20]; }; 响应: 回一个状态码表示成功、失败 struct RegisterRes { Head head; char user_name[32]; int state; // 状态 1:注册成功、2:用户名已存在、3:用户名非法、4:密码非法、5、邮箱非法、6、手机号非法 }; 1.2 登录 用户名、密码、[部门]、[手机号] 请求: struct LoginReq { Head head; char user_name[32]; char password[32]; }; 响应: struct Permission { int admin; int history; int map_change; int device_manage; int pro_plan; // 生成计划 int warning; int sto_manage; // 库存关联 }; struct LoginRes { Head head; char user_name[32]; int state; // 1:登录成功、2、用户名不存在、3:密码错误、4:用户名格式错误、5:密码错误、6:已注销、7:已被禁用 Permission per; // 权限,根据具体权限来显示不同的子窗口 }; ------------------------------ 1.3 修改密码 1.3.1 登录成功后,修改密码 需:原密码、新密码、[确认新密码] struct ChangePasswordReq { Head head; char user_name[32]; char password[32]; }; struct ChangePasswordRes { Head head; char user_name[32]; int state; // 状态:1:成功、2:与原密码相同、3:密码非法 }; 1.3.2 未登录修改密码 需:手机号--验证码、新密码、[确认新密码] struct ChangePasswordByTelReq { Head head; char tel[32]; char tel_code[32]; char password[32]; }; struct ChangePasswordByTelRes { Head head; char user_name[32]; int state; // 状态:1:成功、2:与原密码相同、3:密码非法 、4:验证码错误 }; ----------------------------------------- 2、权限管理 对特定用户的权限进行管理:增加、减少权限 特定用户:得查询--显示查询到的单个或多个用户 改权限:选中某个用户进行修改 7个权限:会产生固定的组合关系 最多2的7次方共128种 单独的权限表--角色id--用户信息表 ------------- 2.1 查询用户 条件:名字[支持模糊匹配]、部门、注册时间[段]、手机号、邮箱 [有限使用单条件查询、也可以多条件组合] // 可以通过字符串长度 strlen来判断是否有内容,记得提前初始化为空\0 struct PerSearchUserReq { Head head; char user_name[32]; char department[32]; char register_time_begin[32]; char register_time_end[32]; char tel[20]; char email[32]; }; // 响应,有可能会查到多个用户信息,就得使用柔性数组来表示 struct UserInfo { char user_name[32]; char department[32]; char register_time[32]; char tel[20]; char email[32]; int role_id; // 角色id Permission per; // 具体权限 }; struct PerSearchUserRes { Head head; UserInfo user_info[0]; }; 2.2 修改权限 指定用户名修改 快速选择:通过角色id或者角色名来改 详细选择:直接按具体的权限字段去勾选 struct ChangePermissionReq { Head head; char user_name[32]; Permission per; // 具体权限 }; struct ChangePermissionRes { Head head; char user_name[32]; int state; // 1:修改成功 2:修改失败 }; ------------------- 和 注册、登录 共用同样的数据库表 1、用户信息表 2、角色权限表 -------------------