(免费分享)springboot论坛bbs系统

news2024/11/18 15:30:35

源码获取:关注文末gongzhonghao,输入010领取下载链接
开发工具:IDEA 数据库mysql5.7
技术:springboot+jpa+shiro+redis+layui
前台截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后台截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.qxczh.admin.service.impl;

import com.qxczh.admin.service.AdminUserService;
import com.qxczh.admin.service.PermissionService;
import com.qxczh.admin.service.RoleService;
import com.qxczh.common.base.BaseServiceImpl;
import com.qxczh.common.dao.RoleDao;
import com.qxczh.common.dto.QuarkResult;
import com.qxczh.common.entity.Permission;
import com.qxczh.common.entity.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;

import static java.util.stream.Collectors.toSet;


@Service
@Transactional
public class RoleServiceImpl extends BaseServiceImpl<RoleDao, Role> implements RoleService {

    @Autowired
    private AdminUserService userService;

    @Autowired
    private PermissionService permissionService;

    @Override
    public QuarkResult findRolesAndSelected(Integer id) {
        Set<Role> userRole = userService.findOne(id).getRoles();
        List<Role> roles = findAll();
        for (Role r: roles) {
            if (userRole.contains(r)) r.setSelected(1);
        }

        return QuarkResult.ok(roles);
    }

    @Override
    public Page<Role> findByPage(int pageNo, int length) {
        PageRequest pageRequest = new PageRequest(pageNo, length);
        Page<Role> page = repository.findAll(pageRequest);
        return page;
    }

    @Override
    public void saveRolePermission(Integer roleid, Permission[] pers) {
        Role role = findOne(roleid);
        if (pers==null){
            role.setPermissions(new HashSet<>());
        }
        else {
            role.setPermissions(Stream.of(pers).collect(toSet()));
        }
        save(role);
    }
}

package com.qxczh.admin.service.impl;

import com.qxczh.admin.service.UserService;
import com.qxczh.common.base.BaseServiceImpl;
import com.qxczh.common.dao.UserDao;
import com.qxczh.common.entity.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;

import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@Service
public class UserServiceImpl extends BaseServiceImpl<UserDao,User> implements UserService {

@Override
public Page<User> findByPage(User user, int pageNo, int length) {
    PageRequest pageable = new PageRequest(pageNo, length);

    Specification<User> specification = new Specification<User>() {
        @Override
        public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
            Path<Integer> $id = root.get("id");
            Path<String> $username = root.get("username");
            Path<String> $email = root.get("email");
            Path<Integer> $enable = root.get("enable");

            ArrayList<Predicate> list = new ArrayList<>();
            if (user.getId() != null) list.add(criteriaBuilder.equal($id, user.getId()));
            if (user.getEnable() != null) list.add(criteriaBuilder.equal($enable, user.getEnable()));
            if (user.getUsername() != null)
                list.add(criteriaBuilder.like($username, "%" + user.getUsername() + "%"));
            if (user.getEmail()!=null)
                list.add(criteriaBuilder.like($email, "%" + user.getEmail() + "%"));

            Predicate predicate = criteriaBuilder.and(list.toArray(new Predicate[list.size()]));
            return predicate;
        }
    };
    Page<User> page = repository.findAll(specification, pageable);

    return page;
}

@Override
public void saveUserEnable(Integer[] id) {
    List<User> all = findAll(Arrays.asList(id));
    for (User user :all) {
        if (user.getEnable() == 1) {
            user.setEnable(0);
        } else {
            user.setEnable(1);
        }
    }
    save(all);
}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云南美食介绍 简单静态HTML网页作品 美食餐饮网站设计与实现 学生美食网站模板

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

A puma at large

New words and expressions puma n. 美洲狮 spot v. 看出,发现 evidence n. 证据 accumulate v. 积累,积聚 oblige v. 使……感到必须 hunt n. 追猎;寻找 blackberry n. 黑莓 Pumas are large, cat-like animals which are found in America. When reports came i…

点击化学PEG试剂巯基吡啶-PEG-叠氮,OPSS-PEG-azide,OPSS-PEG-N3

点击化学PEG试剂OPSS-PEG-azide&#xff08;OPSS-PEG-N3 &#xff09;化学试剂其中文名为巯基吡啶-聚乙二醇-叠氮&#xff0c;它所属分类为Azide PEG Orthopyridyl disulfide (OPSS) PEG。 其分子量均可定制&#xff0c;有&#xff1a;2K 巯基吡啶-PEG-叠氮、5k OPSS-PEG-N3、…

TCP/IP协议、UDP协议及网络基础概念

网络程序设计编写的是与其他计算机进行通信的程序。Java已经将网络程序所需要的东西封装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络知识&#xff0c;也可以编写出高质量的网络通信程序。 1.局域网与因特网 …

如何快速实现根因分析/业务大盘

Ideas Worth Spreading 写在前面的话 特别感谢 感谢在最早开发鱼骨图带领我前进的技术负责人-佳哥&#xff08;总监&#xff09;。他一丝不苟的技术态度、严密的逻辑和高要求&#xff08;这里大家都懂的&#xff09;&#xff0c;让我成长。这里是他在语雀的博客&#xff0c;其…

(new online judge)1322蓝桥杯2017初赛 包子凑数

P1322 - [蓝桥杯2017初赛]包子凑数 - New Online Judge 题目分两步&#xff1a;&#xff08;1&#xff09;判断结果是否为INF&#xff1b;&#xff08;2&#xff09;如果不是INF&#xff0c;统计数量。考点是“数论gcd简单DP”。 1. 什么时候答案不是INF 什么时候答案不是INF…

ADSP21489之CCES开发笔记(六)

一、仿真调试CCES代码 1、导入21489的Demo代码 2、修改设计SS4SH存储代码&#xff0c;如红框部分 3、搭配USBi调试&#xff0c;修改如下代码部分 oSSnConfig.bSkipInitialDownload 0; //usbi调试时&#xff0c;设置为0&#xff0c;默认为1 oCommConfig.nSelectSPI SELECT_SP…

英文Essay写作中存在哪些门道?

刚进入英国学校学习的小伙伴&#xff0c;每次放假都要赶Essay。那么什么是Essay呢&#xff1f;Essay怎么写呢&#xff1f;今天我们就来讲讲Essay中的门道。 A little partner who has just entered a British school must catch up with Essay every holiday.So what is Essay?…

入门:树莓派装系统、亮机,无需外接显示器键盘鼠标(保姆级教程)

借鉴了&#xff1a;https://blog.csdn.net/qq_24211837/article/details/120255311 1.官网下载树莓派系统 https://www.raspberrypi.org/software/operating-systems/ 安装后页面还是比较柔和的 2.格式化SD卡 首次入门&#xff0c;还是先学习前辈的方法进行操作 下载格式…

如何自定义代码生成器(下)

4.2 编码 4.2.1 常量类 package freemarker.constant;public class TemplateConstant {//实体类模板public static final String entityTemplate "templates/Entity.ftl";//Mapper模板public static final String mapperTemplate "templates/Mapper.ftl&quo…

k8s教程(12)-pod 全自动调度

文章目录01 引言02 Deployment & RC2.1 功能2.2 举例03 文末01 引言 声明&#xff1a;本文为《Kubernetes权威指南&#xff1a;从Docker到Kubernetes实践全接触&#xff08;第5版&#xff09;》的读书笔记 在前面的博客《k8s教程&#xff08;11&#xff09;-pod调度概述》&…

【2022秋线上作业-第5次-第11-13周】选择题

2-1 下列线索二叉树中&#xff08;用虚线表示线索&#xff09;&#xff0c;符合后序线索树定义的是&#xff1a;B 解析&#xff1a; 后序遍历dbca 所以d前驱为null&#xff0c;d后继为b&#xff0c;c没有孩子&#xff0c;前驱为b&#xff0c;后继为a&#xff0c;a有左右孩子。…

拓扑排序板子练习

目录 一、前言 二、拓扑排序板子 三、题目&#xff1a;拓扑顺序 1、上链接 2、基本思路 3、代码 &#xff08;1&#xff09;C&#xff08;AC&#xff09; &#xff08;2&#xff09;python&#xff08;AC&#xff09; 四、题目&#xff1a;可达性统计 1、上链接 2、…

C++线程创建的方式和使用

进程与线程 进程 简单的可以认为是一个程序执行的过程。进程就是活跃的程序&#xff0c;在内存中运行&#xff0c;占用系统的资源。线程 线程也叫轻量级进程&#xff0c;通常一个进程包含若干个线程。线程可以利用进程所拥有的资源。在引入线程的操作系统中&#xff0c;通常都…

关于软件文档写作

关于软件文档写作目录概述需求&#xff1a;设计思路实现思路分析1.业务逻辑2.代码表达3.形式归纳4.方式和工具参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better resul…

JS模块化—CJSAMDCMDES6-前端面试知识点查漏补缺

本文从以时间为轴从以下几个方面进行总结JS模块化。从无模块化 > IIFE > CJS > AMD > CMD > ES6 > webpack这几个阶段进行分析。 历史 幼年期&#xff1a;无模块化 方式 需要在页面中加载不同的js&#xff0c;用于动画&#xff0c;组件&#xff0c;格式化…

【软件测试】一个边界值事故,领导leader心里苦季度奖金没了还被罚3K......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 项目组长&#xff1…

java类的练习--下面给出一个根据雇员类型利用多态性完成

java类的练习–下面给出一个根据雇员类型利用多态性完成… 题目 ​ 下面给出一个根据雇员类型利用多态性完成工资单计算的程序。定义一个类Employee作为超类&#xff0c;Employee的子类有Boss&#xff08;每星期发给他固定工资&#xff0c;而不计工作时间&#xff09;、Piece…

顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了

如果你是一位后端工程师&#xff0c;面试时八成会被问到 Redis&#xff0c;特别是那些大型互联网公司&#xff0c;不仅要求面试者能简单使用 Redis&#xff0c;还要深入理解其底层实现原理&#xff0c;具备解决常见问题的能力。可以说&#xff0c;熟练使用 Redis 就是后端工程师…

超140支爆款B站恰饭,2022年B站双11战报来了!

- 导语 从0到3.06亿月活&#xff0c;从“与世无争”到今天手持高粘性、高活跃的用户参战双十一&#xff0c;在B站的品牌们有了更成熟的营销模式。 2022年双十一已经落下帷幕&#xff0c;在B站全面拥抱双十一的火热氛围下&#xff0c;有哪些品牌做到了声量、销量双丰收&#x…