SpringBoot整合Vue仓库管理系统之User 业务模块

举报
tea_year 发表于 2025/06/11 21:43:48 2025/06/11
【摘要】 完善各层代码Entity层User类@ApiModel(value="User对象", description="")@NoArgsConstructor@AllArgsConstructor@Datapublic class User implements Serializable { private static final long serialVersionUID = 1L; //默...

完善各层代码

Entity层

User类

@ApiModel(value="User对象", description="")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User implements Serializable {
private static final long serialVersionUID = 1L;
//默认自动主键策略,自增
//ApiModelProperty:swagger的注解可以不写!!!!到后面升级再写!!!
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;

@ApiModelProperty(value = "账号")
private String no;

@ApiModelProperty(value = "名字")
private String name;
@ApiModelProperty(value = "密码")
private String password;
@ApiModelProperty(value = "年龄")
private Integer age;
@ApiModelProperty(value = "性别")
private Integer sex;
@ApiModelProperty(value = "电话")
private String phone;

@ApiModelProperty(value = "角色 0超级管理员,1管理员,2普通账号")
private Integer roleId;

@ApiModelProperty(value = "是否有效,Y有效,其他无效")
@TableField("isValid")
private String isvalid;
}

Menu类

@ApiModel(value="Menu对象", description="")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Menu implements Serializable {
private static final long serialVersionUID = 1L;

@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(value = "主键")
private Integer id;

@ApiModelProperty(value = "菜单编码")
@TableField("menuCode")
private String menucode;

@ApiModelProperty(value = "菜单名字")
@TableField("menuName")
private String menuname;

@ApiModelProperty(value = "菜单级别")
@TableField("menuLevel")
private String menulevel;

@ApiModelProperty(value = "菜单的父code")
@TableField("menuParentCode")
private String menuparentcode;

@ApiModelProperty(value = "点击触发的函数")
@TableField("menuClick")
private String menuclick;

@ApiModelProperty(value = "权限 0超级管理员,1表示管理员,2表示普通用户,可以用逗号组合使用")
@TableField("menuRight")
private String menuright;

@TableField("menuComponent")
private String menucomponent;

@TableField("menuIcon")
private String menuicon;
}

Mapper层

UserMapper.java

public interface UserMapper extends BaseMapper<User> {
IPage pageC(IPage<User> page);
IPage pageCC(IPage<User>page, @Param(Constants.WRAPPER)Wrapper wrapper);
//现在先不用复制上面的代码
}

MenuMapper.java

public interface MenuMapper extends BaseMapper<Menu> {

}

Mapper对应的xml

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunhe.mapper.UserMapper">

<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yunhe.entity.User">
<id column="id" property="id" />
<result column="no" property="no" />
<result column="name" property="name" />
<result column="password" property="password" />
<result column="age" property="age" />
<result column="sex" property="sex" />
<result column="phone" property="phone" />
<result column="role_id" property="roleId" />
<result column="isValid" property="isvalid" />
</resultMap>

<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, no, name, password, age, sex, phone, role_id, isValid
</sql>

<select id="pageC" resultType="com.yunhe.entity.User">
select * from user
</select>

<select id="pageCC" resultType="com.yunhe.entity.User">
select * from user ${ew.customSqlSegment}
</select>

</mapper>

MenuMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunhe.mapper.MenuMapper">

<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yunhe.entity.Menu">
<id column="id" property="id" />
<result column="menuCode" property="menucode" />
<result column="menuName" property="menuname" />
<result column="menuLevel" property="menulevel" />
<result column="menuParentCode" property="menuparentcode" />
<result column="menuClick" property="menuclick" />
<result column="menuRight" property="menuright" />
<result column="menuComponent" property="menucomponent" />
<result column="menuIcon" property="menuicon" />
</resultMap>

<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, menuCode, menuName, menuLevel, menuParentCode, menuClick, menuRight, menuComponent, menuIcon
</sql>

</mapper>

Service层

*重点去深入拔源码IService.java

UserService.java

public interface UserService extends IService<User> {
IPage pageC(IPage<User>page);
IPage pageCC(IPage<User>page, Wrapper wrapper);
//代码暂时不写
}

UserServiceImpl.java

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage pageC(IPage<User> page) {
return userMapper.pageC(page);
}

@Override
public IPage pageCC(IPage<User> page, Wrapper wrapper) {
return userMapper.pageCC(page,wrapper);
}
}

MenuService.java

public interface MenuService extends IService<Menu> {

}

MenuServiceImpl.java

@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {

}

Controller层

MenuController.java

@RestController
@RequestMapping("/menu")
public class MenuController {
@Autowired
private MenuService menuService;
/*
* 根据用户身份获取菜单列表
* SELECT * from menu where menuRight like '%2%'
* @author yunhe
* @date 2023/1/3 20:48
*/
@GetMapping("/list")
public Result list(@RequestParam String roleId){
List list = menuService.lambdaQuery()
.like(Menu::getMenuright,roleId)
.list();
return Result.success(list);
}
@GetMapping("/list/{roleId}")
public List<Menu> list2(@PathVariable String roleId){
List<Menu> menuList = menuService.lambdaQuery().like(Menu::getMenuright, roleId).list();
return menuList;
}
}

postman测试

UserController.java

@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private MenuService menuService;
/**
* 查找所有的用户信息
* @return
*/
@GetMapping("/list")
public List<User>list(){
List<User> list = userService.list();
System.out.println(list.size());
return list;
}
/**
* 登录功能,①登录的时候,②一并将菜单信息查询出来;
* @return
*/
@PostMapping("/login")
public Result login(@RequestBody User user){
List<User> list = userService.lambdaQuery().eq(User::getNo, user.getNo()).eq(User::getPassword, user.getPassword()).list();
if(list.size()>0){
User user1 = (User)list.get(0);
List<Menu> menuList = menuService.lambdaQuery()
.like(Menu::getMenuright,user1.getRoleId())
.list();

HashMap res = new HashMap();
res.put("user",user1);
res.put("menu",menuList);
return Result.success(res);
}
return Result.fail();
}

}

点击左侧边栏--》用户信息管理

得到当前登录信息

前端代码

Aside.vue

<el-menu-item index="/Profile" style="font-size: 16px;">
<i class="el-icon-a-05" style="color: white;font-size: 22px;"></i>
<span slot="title"><b>个人中心</b></span>
</el-menu-item>

Header.vue

<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="toUser">个人中心</el-dropdown-item>
<el-dropdown-item @click.native="logout">退出登录</el-dropdown-item>
</el-dropdown-menu>

index.js(src/router)

{
path:'/Profile',
name:'profile',
meta:{
title:'个人中心'
},
component:()=>import('../components/Profile')
},

Profile.vue

<el-row style="text-align: left">
<el-button type="danger" @click="logout" style="margin: 25px 0 0 90px; font-size: 22px;">
退出登录</el-button>
</el-row>

logout() {
this.$confirm("您确定要退出登录吗?", "提示", {
confirmButtonText: "确定", //确认按钮的文字显示
type: "warning",
center: true, //文字居中显示
})
.then(() => {
this.$message({
type: "success",
message: "退出登录成功!",
});

this.$router.push("/");
sessionStorage.clear();
})
.catch(() => {
this.$message({
type: "info",
message: "已取消退出登录!",
});
});
}

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。