|
----------------枚举
|
// 用来区分不同功能的,避免产生魔鬼数字
|
// 统一由负责网络通信的人来定,并且客户端和服务端共用
|
// 最后和结构体一起放到同一个头文件里面,作为公共的部分 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、角色权限表
|
-------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|