基于javaweb+mysql的springboot学生会管理系统(java+springboot+thymeleaf+html+layui+bootstrap+maven+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot学生会管理系统(java+springboot+thymeleaf+html+layui+bootstrap+maven+mysql)
项目介绍
学生会管理系统.主要功能包括:
后台首页:最新活动展示、最新公告、学生会部门职能介绍; 财务管理:资金报销登记、赞助商管理; 物资管理:物资借还管理、全部物资;添加、编辑、删除; 日常事务管理:工作计划管理、活动管理、文件管理; 申请请假:添加、修改、删除、查看;
我的待办;
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7版本;
技术栈
-
后端:SpringBoot
-
前端:Thymeleaf+html+layui+jQuery+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 将项目中application.yml及activiti.cfg.xml配置文件中的数据库配置改为自己的配置; 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 4. 运行项目,输入localhost:8085 登录
public String toSignOut() {
//销毁session
try{
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
HttpSession session = request.getSession();
if (session != null) {
User loginUser = (User) session.getAttribute("sysUserInfo");
ServletContext application = session.getServletContext();
@SuppressWarnings("unchecked")
Map<String, Object> loginMap = (Map<String, Object>) application.getAttribute("loginMap");
loginMap.remove(loginUser.getId());
application.setAttribute("loginMap", loginMap);
session.removeAttribute("user");
session.invalidate();//清除session信息
}
}catch(Exception e){
e.printStackTrace();
}
return "system/index/login";
}
/**
* 跳转到首页
*
* @return
*/
@RequestMapping("index")
public String index() {
return "system/index/index";
}
/**
* 跳转到登陆台
*
* @return
*/
@RequestMapping("toDeskManager")
public String toDeskManager() {
return "system/index/deskManager";
}
/**
* 跳转到部门管理
*
* @param
* @return
*/
@RequestMapping("loadAllsponsors")
public Dataobj loadAllsponsors(SponsorVo sponsorVo){
IPage<sponsors> page = new Page<>(sponsorVo.getPage(),sponsorVo.getLimit());
QueryWrapper<sponsors> q = new QueryWrapper<>();
q.like(StringUtils.isNotBlank(sponsorVo.getSponsor()),"sponsor",sponsorVo.getSponsor());
q.like(StringUtils.isNotBlank(sponsorVo.getContent()),"content",sponsorVo.getContent());
q.orderByAsc("id");
sponsorService.page(page,q);
List list =sponsorService.list(q);
long num=list.size();
if(list.isEmpty()){
return new Dataobj(null,num);
}else {
//返回DataGridView
return new Dataobj(page.getRecords(), page.getTotal());
}
}
/**添加赞助商*/
@RequestMapping("addsponsors")
public Resultreturn addsponsors(SponsorVo sponsorVo){
try {
sponsorService.save(sponsorVo);
return Resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.ADD_ERROR;
}
}
/** 修改赞助商*/
@RequestMapping("updatesponsors")
public Resultreturn updatesponsors(SponsorVo sponsorVo){
try {
sponsorService.updateById(sponsorVo);
return Resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.UPDATE_ERROR;
}
}
//删除赞助商
@RequestMapping("deletesponsors")
roleService.deleteRolePermissionByRid(rid);
roleService.saveRolePermission(rid, ids);
}
}
return resultreturn.DISPATCH_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DISPATCH_ERROR;
}
}
}
/**
*/
@Controller
@RequestMapping("sys")
public class XitongController {
/**
* 跳转到登陆页面
*
* @return
*/
@RequestMapping("toLogin")
public String toLogin() {
return "system/index/login";
/**
* 跳转到登陆台
*
* @return
*/
@RequestMapping("toDeskManager")
public String toDeskManager() {
return "system/index/deskManager";
}
/**
* 跳转到部门管理
*
* @return
*/
@RequestMapping("toDeptManager")
public String toDeptManager() {
return "system/dept/deptManager";
}
/**
* 跳转到权限管理
*
* @return
*/
@RequestMapping("toPermissionManager")
public String toPermissionManager() {
return "system/permission/permissionManager";
}
/**
* 跳转到角色管理
*
* @return
*/
@RequestMapping("toRoleManager")
public String toRoleManager() {
return "system/role/roleManager";
}
/**
* 跳转到用户管理
*
* @return
*/
@RequestMapping("toUserManager")
public String toUserManager() {
return "system/user/userManager";
//删除文件
@RequestMapping("deletefiles")
public Resultreturn deletefiles(Integer fileid){
try {
filesService.removeById(fileid);
return Resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.DELETE_ERROR;
}
}
}
QueryWrapper<leaver> query=new QueryWrapper<>();
query.eq("leaver",userName.getName()).eq("status",2);
leaver leave1=leaverService.getOne(query);
List<task> list1 = null;
if (userName.getRemark().equals("干事")&&leave.isEmpty()) {
list1 = findPersonalTask(userName.getName());
}else {
list1 = findPersonalTaskList(userName.getName());
}
long num = list1.size();
if (list1.size() == 0) {
return new Dataobj(null, num);
} else {
return new Dataobj(list1, num);
}
}
@RequestMapping("completeTask")
public Resultreturn completeTask (task task, HttpSession session){//task当前任务实体类,HttpSession存储用户数据
try {
records records = new records();//实例化审核记录实体类
com.ywj.system.model.leaver useleaver=new leaver();//实例化请假实体类
Map<String, Object> variables = new HashMap<String, Object>();//实例化map集合
User user = (User) session.getAttribute("user");//通过session获取当前用户信息
if(user.getRemark().equals("干事")) {//判断当前用户身份
QueryWrapper<leaver> queryWrapper = new QueryWrapper<>();
//查询请假人和请假状态为审核中的请假单
queryWrapper.eq("leaver", task.getLeaver()).eq("status", 2);
List<leaver> leaver= leaverService.list(queryWrapper);
QueryWrapper<leaver> qu = new QueryWrapper<>();
//查询请假人和请假状态为被驳回的请假单
qu.eq("leaver", task.getLeaver()).eq("status", 3);
List<leaver> lea= leaverService.list(qu);
if(lea.isEmpty()){//如果为空表示当前任务为初次办理
//循环遍历查询出来的请假状态为审核中的请假单
for (com.ywj.system.model.leaver item:leaver) {
int len = 0;
byte[] buf = new byte[1024];
while ((len=bufferedInputStream.read(buf))!=-1){
if (flag) {
name=new String(buf,0,len);
flag=false;
}else {
// message += "\n" + " " + name + ": " + simpleDateFormat.format(new Date()) + "port:" + socket.getRemoteSocketAddress() + "\n" + " " + new String(buf, 0, len);
message = "\n" + " " + name + ": " + simpleDateFormat.format(new Date()) + "<br>" + " " + new String(buf, 0, len);
}
new zhuanfa().start();
}
}
}catch (IOException e){
e.printStackTrace();
}
}
class zhuanfa extends Thread{
@Override
public void run() {
OutputStream os= null;
for (int i = 0; i <sockets.size(); i++) {
try {
os= sockets.get(i).getOutputStream();
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(os);
bufferedOutputStream.write(message.getBytes());
bufferedOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws IOException {
}
}
@Autowired
UserService userService;
@Autowired
private IbumenService deptService;
@Autowired
private IjiaoseService roleService;
@Autowired
private LoginService loginService;
Map<String,Client> map=new HashMap<>();
@RequestMapping("/login")
public resultreturn login(userv userv, String code) throws IOException{
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
HttpSession session = request.getSession();
//获得存储在session中的验证码
String sessionCode = (String) session.getAttribute("code");
if (code!=null&&sessionCode.equals(code)){
AuthenticationToken token = new UsernamePasswordToken(userv.getLoginname(), userv.getPassword());
Subject subject = SecurityUtils.getSubject();
try {
//对用户进行认证登陆
subject.login(token);
//通过subject获取以认证活动的user
UserRenZheng userRenZheng = (UserRenZheng) subject.getPrincipal();
//单一登录操作设置
ServletContext application = session.getServletContext();
Map<Integer, Object> loginMap = (Map<Integer, Object>)application.getAttribute("loginMap");
if (loginMap == null) {
loginMap = new HashMap<Integer, Object>();
}
boolean flag=false;
boolean flag1=false;
for (Integer key : loginMap.keySet()) {
if (userRenZheng.getUser().getId().intValue() == key.intValue()) {
//删除物资
@RequestMapping("deleteGoods1")
public Resultreturn deleteGoods1(Integer id){
try {
AllgoodsService.removeById(id);
return Resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.DELETE_ERROR;
}
}
/**
* 批量删除
* @param goodsVo1 选中的
* @return
*/
@RequestMapping("batchDeleteGoods1")
public Resultreturn batchDeletefiles(GoodsVo1 goodsVo1){
try {
Collection<Serializable> idList = new ArrayList<Serializable>();
for (Integer id : goodsVo1.getIds()) {
idList.add(id);
}
AllgoodsService.removeByIds(idList);
return Resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.DELETE_ERROR;
}
}
}
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DELETE_ERROR;
}
}
//部署流程并开启流程
public void deploymentProcess(String name) throws Exception{
//请假流程部署
Deployment deployment =this.processEngine.getRepositoryService()
.createDeployment()//创建流程
.name("学生会请假流程.....")//流程名称
.addClasspathResource("diagrams/LeaveProgress.bpmn")//流程图文件
.addClasspathResource("diagrams/LeaveProgress.png")//流程图
.deploy();
//获取RuntimeService对象
RuntimeService runtimeService = this.processEngine.getRuntimeService();
//根据流程key值,获取流程
String processKey ="leave";
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("logintype","生活文体部").eq("remark","部长");
User user=userService.getOne(queryWrapper);//查询生活文体部部长
QueryWrapper<User> q=new QueryWrapper<>();
q.eq("logintype","行政秘书部").eq("remark","部长");
User user1=userService.getOne(q);//查询行政秘书部部长
QueryWrapper<User> q1=new QueryWrapper<>();
q1.eq("logintype","实践部").eq("remark","部长");
User user2=userService.getOne(q1);
QueryWrapper<User> q2=new QueryWrapper<>();
q2.eq("logintype","组织部").eq("remark","部长");
User user3=userService.getOne(q2);
QueryWrapper<User> q3=new QueryWrapper<>();
q3.eq("logintype","策划部").eq("remark","部长");
User user4=userService.getOne(q3);
QueryWrapper<User> q4=new QueryWrapper<>();
q4.eq("logintype","宣传部").eq("remark","部长");
User user5=userService.getOne(q4);
//添加审核记录
recordsService.save(records);
//执行完成任务
this.processEngine.getTaskService().complete(task.getId().toString(), variables);
} else if(user.getRemark().equals("部长")) {
if(task.getLeaver().equals(user.getName())){//如果成立表示部长请假
QueryWrapper<leaver> queryWrapper = new QueryWrapper<>();
//查询请假状态为初始化的请假单
queryWrapper.eq("leaver", task.getLeaver()).eq("status", 2);
List<leaver> leaver= leaverService.list(queryWrapper);
QueryWrapper<leaver> qu = new QueryWrapper<>();
//查询请假状态为被驳回的请假单
qu.eq("leaver", task.getLeaver()).eq("status", 3);
List<leaver> lea= leaverService.list(qu);
if(lea.isEmpty()){//如果为空表示初次办理任务
//循环遍历请假状态为初始化的请假单
for (com.ywj.system.model.leaver item:leaver) {
//将信息加入map,以便传入流程中
variables.put("请假人", item.getLeaver());
variables.put("请假id", item.getId());
variables.put("请假类型", item.getStyle());
variables.put("请假原因", item.getLeavereson());
variables.put("备注", item.getRemark());
variables.put("请假时间", new Date());
records.setLeaverid(item.getId());
}
}else {//循环遍历请假状态为被驳回的请假单
for (com.ywj.system.model.leaver leaver1:lea) {
//将信息加入map,以便传入流程中
variables.put("请假人", leaver1.getLeaver());
variables.put("请假id", leaver1.getId());
variables.put("请假类型", leaver1.getStyle());
variables.put("请假原因", leaver1.getLeavereson());
variables.put("备注", leaver1.getRemark());
records.setLeaverid(leaver1.getId());
}
}
//设置流程变量,确保流程正常运行
variables.put("部长批注", task.getPi());
variables.put("请假时间", new Date());
QueryWrapper<leaver> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("leaver",user.getName()).eq("status",2);
QueryWrapper<leaver> q=new QueryWrapper<>();
q.eq("leaver",user.getName()).eq("status",0);
leaver leaver=leaverService.getOne(queryWrapper);
leaver leaver1=leaverService.getOne(q);
if(leaver!=null||leaver1!=null){
return resultreturn.jia_ERROR;
}else if(leaver1==null&&leaver==null){
leaveV.setLeaver(user.getName());
leaveV.setStatus(0);
leaverService.save(leaveV);
}
return resultreturn.ADD_SUCCESS;
}
} catch (Exception e) {
e.printStackTrace();
return resultreturn.ADD_ERROR;
}
}
/**
* 修改请假单
* @param leaveV
* @return
*/
@RequestMapping("updateLeave")
public resultreturn updateLeave(LeaveV leaveV){
try {
leaverService.updateById(leaveV);
return resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.UPDATE_ERROR;
}
}
/**
AllgoodsService.save(goodsVo1);
return Resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.ADD_ERROR;
}
}
/**
* 修改物资
* @param goodsVo
* @return
*/
@RequestMapping("updateGoods1")
public Resultreturn updateGoods1(GoodsVo1 goodsVo){
try {
AllgoodsService.updateById(goodsVo);
return Resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.UPDATE_ERROR;
}
}
//删除物资
@RequestMapping("deleteGoods1")
public Resultreturn deleteGoods1(Integer id){
try {
AllgoodsService.removeById(id);
return Resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.DELETE_ERROR;
}
}
/**
* 批量删除
* @param goodsVo1 选中的
* @return
*/
@RequestMapping("batchDeleteGoods1")
public Resultreturn batchDeletefiles(GoodsVo1 goodsVo1){
try {
}
}
/**
* 添加角色
* @param jiaosev
* @return
*/
@RequestMapping("addRole")
public resultreturn addRole(jiaosev jiaosev){
try {
roleService.save(jiaosev);
return resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.ADD_ERROR;
}
}
/**
* 修改角色
* @param jiaosev
* @return
*/
@RequestMapping("updateRole")
public resultreturn updateRole(jiaosev jiaosev){
try {
roleService.updateById(jiaosev);
return resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.UPDATE_ERROR;
}
}
/**
* 删除角色
* @param id
* @return
*/
@RequestMapping("deleteRole")
public resultreturn deleteRole(Integer id){
try {
@RestController
@RequestMapping("permission")
public class QuanxianController {
@Autowired
private IquanxianService permissionService;
/**
* 查询所有权限数据
* @param quanxianv
* @return
*/
@RequestMapping("loadAllPermission")
public Dataobj loadAllPermission(quanxianv quanxianv){
IPage<permisson> page = new Page<>(quanxianv.getPage(), quanxianv.getLimit());
//进行模糊查询
QueryWrapper<permisson> q = new QueryWrapper<>();
//只能查询权限
q.eq("type", Changliang.TYPE_PERMISSION);
q.like(StringUtils.isNotBlank(quanxianv.getTitle()),"title", quanxianv.getTitle());
q.like(StringUtils.isNotBlank(quanxianv.getPercode()),"percode", quanxianv.getPercode());
q.eq(quanxianv.getId()!=null,"pid", quanxianv.getId());
q.orderByAsc("id");
//进行查询
permissionService.page(page,q);
//返回DataGridView
List list =permissionService.list(q);
long num=list.size();
if(list.isEmpty()){
return new Dataobj(null,num);
}else {
//返回DataGridView
return new Dataobj(page.getRecords(), page.getTotal());
}
login.setLogintime(new Date());
loginService.save(login);
// User user = userRenZheng.getUser();
// Client client= new Client();
// client.connectton(user);
// Thread thread=new Thread(client);
// thread.start();
// map.put(user.getName(),client);
//将user存储到session中
session.setAttribute("user", userRenZheng.getUser());
return resultreturn.LOGIN_SUCCESS;
}
} catch (UnknownAccountException e) {
return resultreturn.LOGIN_ERROR_PASS;
}catch (IncorrectCredentialsException e){
return resultreturn.LOGIN_ERROR_PASS;
}
}else {
return resultreturn.LOGIN_ERROR_CODE;
}
}
//查询当前用户信息
@RequestMapping("getNowUser")
public User getNowUser(HttpSession session) {
//1.获取当前session中的user
User user1 = (User) session.getAttribute("user");
return user1;
}
//
// @RequestMapping("readMessage")
// public String readMessage(HttpSession session){
// User user= (User) session.getAttribute("user");
// Client client = null;
@RequestMapping("index")
public String index() {
return "system/index/index";
}
/**
* 跳转到登陆台
*
* @return
*/
@RequestMapping("toDeskManager")
public String toDeskManager() {
return "system/index/deskManager";
}
/**
* 跳转到部门管理
*
* @return
*/
@RequestMapping("toDeptManager")
public String toDeptManager() {
return "system/dept/deptManager";
}
/**
* 跳转到权限管理
*
* @return
*/
@RequestMapping("toPermissionManager")
public String toPermissionManager() {
return "system/permission/permissionManager";
}
@Autowired
private PlansService plansService;
/**
* 查询计划
* @param
* @return
*/
@RequestMapping("loadAllplans")
public Dataobj loadAllGoods1(PlansVo plansVo){
IPage<plans> page = new Page<>(plansVo.getPage(),plansVo.getLimit());
QueryWrapper<plans> q = new QueryWrapper<>();
q.like(StringUtils.isNotBlank(plansVo.getPlanname()),"planname",plansVo.getPlanname());
q.like(StringUtils.isNotBlank(plansVo.getSumitdepart()),"sumitdepart",plansVo.getSumitdepart());
q.like(StringUtils.isNotBlank(plansVo.getSumitor()),"sumitor",plansVo.getSumitor());
q.orderByAsc("pid");
plansService.page(page,q);
List list =plansService.list(q);
long num=list.size();
if(list.isEmpty()){
return new Dataobj(null,num);
}else {
//返回DataGridView
return new Dataobj(page.getRecords(), page.getTotal());
}
}
/**
* 新建计划
* @param
* @return
*/
@RequestMapping("addplans")
public Resultreturn addGoods1(PlansVo plansVo){
try {
plansService.save(plansVo);
return Resultreturn.ADD_SUCCESS;
} catch (Exception e) {