系统的层次图

image-20240420220744707

整个项目被分为3部分 web网页前端,springboot的后端 ,还有由python组成的数据处理系统

每一个部分都被分开

数据流图

python数据处理系统的数据流图

image-20240420222219519

  1. 需要启动虚拟机
  2. 在node1节点启动hadoop
  3. 获得数据集以后会启动juypter,打开makeupana文件
  4. 开始进行数据处理和数据分析具体参照 spark淘宝数据处理
  5. 处理完之后会产生处理结果给web使用
  6. 存储数据到mysql 具体原理 关于将csv写入mysql.md

web的数据流图

image-20240420222913340

springboot后端的系统流程图

image-20240421090459255

上图各个模块的代码解释

账户密码登录

当收到的请求是登录请求时请求会被发送到image-20240430132836886

这个controler

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
package makeup.web.controller.system;
//import部分sheng

/**
* 登录验证
*
* @author ruoyi
*/
@RestController
public class SysLoginController
{
@Autowired
private SysLoginService loginService;

@Autowired
private ISysMenuService menuService;

@Autowired
private SysPermissionService permissionService;

/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}

/**
* 获取用户信息
*
* @return 用户信息
*/
@GetMapping("getInfo")
public AjaxResult getInfo()
{
SysUser user = SecurityUtils.getLoginUser().getUser();
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
AjaxResult ajax = AjaxResult.success();
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
return ajax;
}

/**
* 获取路由信息
*
* @return 路由信息
*/
@GetMapping("getRouters")
public AjaxResult getRouters()
{
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
return AjaxResult.success(menuService.buildMenus(menus));
}
}

这段代码是一个Java Spring Boot控制器类,名为SysLoginController,用于处理登录验证和获取用户信息的请求。

主要功能包括:

  1. login方法:处理登录请求,验证用户名、密码和验证码,并生成令牌(token)。使用SysLoginServicelogin方法进行登录验证,并将令牌存储在AjaxResult对象中返回给客户端。

  2. getInfo方法:获取当前登录用户的信息。使用SecurityUtils获取当前登录用户的信息,并通过SysPermissionService获取用户的角色集合和权限集合。将用户信息、角色和权限存储在AjaxResult对象中返回给客户端。

  3. getRouters方法:获取用户的路由信息。使用SecurityUtils获取当前登录用户的ID,然后使用ISysMenuService查询该用户可访问的菜单树。最后,通过menuService.buildMenus方法将菜单列表转换为路由信息,并将结果存储在AjaxResult对象中返回给客户端。

此代码主要用于实现用户登录验证和获取用户信息的功能,以及获取用户可访问的路由信息用于前端页面的渲染和权限控制。

对于登录部分的代码具体的流程就是

当用户发起登录请求时,login方法会被调用。该方法使用@PostMapping("/login")注解,表示它处理POST请求,并映射到"/login"路径。

方法签名如下:

1
2
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)

方法参数是一个LoginBody对象,该对象包含登录所需的信息,包括用户名、密码、验证码和UUID。使用@RequestBody注解将请求体中的JSON数据映射到LoginBody对象。

方法体内的逻辑如下:

1
2
3
4
AjaxResult ajax = AjaxResult.success();
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;

首先,创建一个成功的AjaxResult对象,表示登录成功。然后调用loginService.login方法进行登录验证,并传递用户名、密码、验证码和UUID作为参数。该方法返回一个令牌(token),表示登录成功。

接下来,将令牌(token)存储在AjaxResult对象中,使用ajax.put(Constants.TOKEN, token)将令牌存储在名为"token"的键下。

最后,将包含令牌的AjaxResult对象作为响应返回给客户端。

通过这段代码,用户可以通过发送包含用户名、密码、验证码的POST请求来进行登录验证,并获取生成的令牌(token)。令牌可以用于后续的身份验证和授权操作。

web前端的系统流程图

image-20240421091603047