240617班级,工业自动化系统,紫鸾PCB
bumie
2024-10-16 0e044ab10af038f55d625671337349110a314361
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
 
----------------枚举
// 用来区分不同功能的,避免产生魔鬼数字
// 统一由负责网络通信的人来定,并且客户端和服务端共用
// 最后和结构体一起放到同一个头文件里面,作为公共的部分  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、角色权限表
        -------------------