作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师
主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助
收藏点赞不迷路 关注作者有好处
文末获取源码
项目编号: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智能应用
基于大数据实现的各类数据管理和推荐系统