240617班级,工业自动化系统,紫鸾PCB
编辑 | blame | 历史 | 原始文档
----------------枚举
// 用来区分不同功能的,避免产生魔鬼数字
// 统一由负责网络通信的人来定,并且客户端和服务端共用
// 最后和结构体一起放到同一个头文件里面,作为公共的部分  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、角色权限表
		-------------------