项目编号:ZJL
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
二,项目简介
一个功能完备的个人博客系统, redis缓存记录可恢复未完成的博客。可以自己使用或者学习 后端框架是SpringBoot、Mybatis,前端框架是VUE,数据库使用MySQL,缓存中间件Redis等技术 博客系统分为前台展示页面、后台管理 前台展示博客列表文章,分类,标签,评论以及时间轴等等 后台: 博客管理:用户可新增博客,对博客修改, 管理员可对 对分类,标签进行管理、 用户管理、 评论管理等等。 日志监控:对系统日志、在线用户黑名单进行管理 系统管理:可以对用户、角色、菜单、字典、 页面通知、 轮播图进行管理 系统工具:可以管理定时任务、已经对本地存储、七牛云存储进行管理,同步七牛云文件等等
三,系统展示
3.1 后台管理系统
3.2 前台功能
四,核心代码展示
4.1 轮播图代码
@Service public class CarouselServiceImpl implements CarouselService { @Autowired CarouselMapper carouselMapper; @Override public Carousel selectCarouselById(Long id) { return carouselMapper.selectCarouselById(id); } @Override public List<Carousel> selectCarouselList(Carousel carousel) { return carouselMapper.selectCarouselList(carousel); } @Override public int insertCarousel(Carousel carousel) { carousel.setCreateBy(SecurityUtils.getUsername()); return carouselMapper.insertCarousel(carousel); } @Override public int updateCarousel(Carousel carousel) { carousel.setUpdateBy(SecurityUtils.getUsername()); return carouselMapper.updateCarousel(carousel); } @Override public int deleteCarouselById(Long id) { String username = SecurityUtils.getUsername(); return carouselMapper.deleteCarouselById(id, username); } }
4.2 用户管理代码
@Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Autowired private RoleMapper roleMapper; @Autowired private UserRoleMapper userRoleMapper; @Autowired TokenService tokenService; @Override public List<SysUser> selectUserList(SysUser user) { return userMapper.selectUserList(user); } @Override public SysUser selectUserByUserName(String userName) { return userMapper.selectUserByUserName(userName); } @Override public SysUser selectUserById(Long userId) { return userMapper.selectUserById(userId); } @Override public String selectUserRoleGroup(String userName) { List<Role> list = roleMapper.selectRolesByUserName(userName); StringBuilder idsStr = new StringBuilder(); for (Role role : list) { idsStr.append(role.getRoleName()).append(","); } if (StringUtils.isNotEmpty(idsStr.toString())) { return idsStr.substring(0, idsStr.length() - 1); } return idsStr.toString(); } @Override public String checkUserNameUnique(String userName) { int count = userMapper.checkUserNameUnique(userName); if (count > 0) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkPhoneUnique(SysUser user) { Long userId = StringUtils.isNull(user.getId()) ? -1L : user.getId(); SysUser info = userMapper.checkPhoneUnique(user.getPhone()); if (StringUtils.isNotNull(info) && info.getId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkEmailUnique(SysUser user) { Long userId = StringUtils.isNull(user.getId()) ? -1L : user.getId(); SysUser info = userMapper.checkEmailUnique(user.getEmail()); if (StringUtils.isNotNull(info) && info.getId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public void checkUserAllowed(SysUser user) { if (StringUtils.isNotNull(user.getId()) && user.isAdmin()) { throw new CustomException("不允许操作超级管理员用户"); } } @Override @Transactional public int insertUser(SysUser user) { // 新增用户信息 int rows = userMapper.insertUser(user); // 新增用户与角色管理 insertUserRole(user); return rows; } @Override @Transactional public int updateUser(SysUser user) { Long userId = user.getId(); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 新增用户与角色管理 insertUserRole(user); return userMapper.updateUser(user); } @Override public int updateUserStatus(SysUser user) { return userMapper.updateUser(user); } @Override public int updateUserProfile(SysUser user) { user.setId(SecurityUtils.getLoginUser().getUser().getId()); int result = userMapper.updateUser(user); //更新redis缓存 refreshTokenClaims(user.getId()); return result; } /** * 同步刷新Redis缓存 * * @param id sys_user id */ private void refreshTokenClaims(Long id) { //更新redis缓存 LoginUser loginUser = SecurityUtils.getLoginUser(); loginUser.setUser(userMapper.selectUserById(id)); tokenService.refreshToken(loginUser); } @Override public int resetPwd(SysUser user) { return userMapper.updateUser(user); } @Override public int resetUserPwd(String userName, String password) { return userMapper.resetUserPwd(userName, password); } public void insertUserRole(SysUser user) { Long[] roles = user.getRoleIds(); if (StringUtils.isNotNull(roles)) { // 新增用户与角色管理 List<UserRole> list = new ArrayList<>(); for (Long roleId : roles) { UserRole ur = new UserRole(); ur.setUserId(user.getId()); ur.setRoleId(roleId); list.add(ur); } if (!list.isEmpty()) { userRoleMapper.batchUserRole(list); } } } @Override @Transactional public int deleteUserByIds(String ids) { Long[] userIds = ConvertUtils.toLongArray(ids); for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); } String loginUsername = SecurityUtils.getUsername(); return userMapper.deleteUserByIds(userIds, loginUsername); } }
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统