项目编号:BS-PT-018
数据库:mysql
开发工具:IDEA / Eclipse
开发语言:JAVA
使用框架:Springboot+SSM
本系统基于Springboot和SSM框架来实现校友录管理。分前端系统和后端系统。后端系统模块主要实现功能有:校友信息管理、校友会信息管理、校友活动管理、新闻管理、招聘管理、捐赠项目管理、系统管理等模块。前端系统主要进行数据展示和相应信息操作,用户注册登陆后可以查看新闻,查看校友会并加入选择的校友会,查看并申请校友活动(管理员后台审核),查看并发布招聘信息(管理员后台审核),论坛发贴,项目损赠和发布等模块。功能完整,运行无误。
部分展示功能如下:
后端功能:
后台主界面:
校友信息管理:
校友会管理:用户前创建校友会,管理员后端审核
校友活动管理:
新闻管理:
内推招聘模块:
项目损赠管理:
系统设置:
前端系统模块:
首页:
新闻查看:
查看并加入校友会:
查看并创建校友活动:
论坛交流模块:
查看并设置捐赠:
发布招聘信息
前端用户个人主页
个人资料
以上是展示的部分系统的功能模块
部分功能实现代码:
package com.lgy.xiaoyou_manage.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.lgy.tools.entity.TbStu;
import com.lgy.tools.entity.TbUserRole;
import com.lgy.xiaoyou_manage.config.CustomUserDetailsService;
import com.lgy.xiaoyou_manage.service.ITbStuService;
import com.lgy.xiaoyou_manage.service.ITbUserRoleService;
import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpSession;
/**
*
* 前端控制器
*
*
* @author lgy
* @since 2020-02-07
*/
@Controller
public class LoginController {@Autowired
private ITbStuService tbStuService;@Autowired
private CustomUserDetailsService userDetailsService;@Autowired
private ITbUserRoleService userRoleService;private Logger logger= LoggerFactory.getLogger(LoginController.class);
@RequestMapping("/home")
public String showHome(Model m, Authentication authentication){
String name = SecurityContextHolder.getContext().getAuthentication().getName();
logger.info("当前登录用户:"+name);
TbStu tbStu = tbStuService.getByUserName(name);
m.addAttribute("tbStu",tbStu);
return "home";
}@RequestMapping("/login")
public String showLogin() {return "login";
}@RequestMapping("/check/UserName")
@ResponseBody
public Integer checkUserName(@Param("username") String username){
TbStu tbStu = tbStuService.getOne(new QueryWrapper().eq("username", username).select("username"));
if(tbStu!=null){
return 1;
}else {
return 2;
}
}/*@RequestMapping("/check/PassWord")
@ResponseBody
public Integer checkPassWord(@Param("password") String password,@Param("username") String username){
TbStu tbStu = tbStuService.getOne(new QueryWrapper().eq("password", password).eq("username",username).select("username"));
if(tbStu!=null){
return 1;
}else {
return 2;
}
}*/@RequestMapping("/check/PassWord")
@ResponseBody
public Integer checkRole(@Param("password") String password,@Param("username") String username){
TbStu tbStu = tbStuService.getOne(new QueryWrapper().eq("password", password).eq("username",username).select("username","user_id"));
if(tbStu==null){
return 2;
}else {
TbUserRole userRole = userRoleService.getById(tbStu.getUserId());
if(userRole!=null){
if(userRole.getRoleId()==1){
return 1;
}else {
return 3;
}
}else {
return 3;
}
}
}@RequestMapping("/index")
public String showIndex(){
return "index";
}@RequestMapping("/password")
public String pwd(){
return "/settings/password";
}@RequestMapping("/editPwd")
@ResponseBody
public Integer editPwd(@Param("newpwd") String newpwd, HttpSession session){
System.out.println(newpwd);
TbStu tbStu= (TbStu) session.getAttribute("tbStu");
boolean b = tbStuService.update(new UpdateWrapper().set("password", newpwd).eq("user_id", tbStu.getUserId()));
if(b){
return 1;
}else {
return 0;
}
}
@RequestMapping("/admin")
@ResponseBody
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String printAdmin() {
return "如果你看见这句话,说明你有ROLE_ADMIN角色";
}@RequestMapping("/user")
@ResponseBody
public String printUser() {
return "如果你看见这句话,说明你有ROLE_USER角色";
}}
package com.lgy.xiaoyou_manage.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lgy.tools.common.utils.MailUtils;
import com.lgy.tools.common.utils.QueryObj;
import com.lgy.tools.entity.TbActivity;
import com.lgy.tools.entity.TbActivityJoin;
import com.lgy.tools.entity.TbStu;
import com.lgy.xiaoyou_manage.service.ITbActivityJoinService;
import com.lgy.xiaoyou_manage.service.ITbActivityService;
import com.lgy.xiaoyou_manage.service.ITbStuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import javax.mail.MessagingException;
import java.util.List;/**
*
* 前端控制器
*
*
* @author lgy
* @since 2020-02-11
*/
@Controller
@RequestMapping("/act")
public class TbActivityController {@Autowired
private ITbActivityService activityService;@Autowired
private ITbActivityJoinService activityJoinService;@Autowired
private ITbStuService tbStuService;/**
* 分页获取所有活动
* @param m
* @param page
* @param limit
* @param queryObj
* @return
*/
@RequestMapping("/getAllAct")
public String getAllAct(Model m, @RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long limit, QueryObj queryObj){
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.setEntity(queryObj);
IPageactPage = activityService.getAllAct(page,limit,wrapper);
m.addAttribute("actPage",actPage);
m.addAttribute("page",page);
m.addAttribute("queryObj",queryObj);
return "/activity/act-base";}
/**
* 根据id获取活动信息
* @param m
* @param acId
* @return
*/
@RequestMapping("/getActById")
public String getActById(Model m,Integer acId){
TbActivity act=activityService.getActById(acId);
m.addAttribute("act",act);
return "/activity/act-edit";
}/**
* 根据Id更新活动
* @param tbActivity
* @return
*/
@RequestMapping("/updateActById")
@ResponseBody
public Integer updateActById(TbActivity tbActivity){
activityService.updateById(tbActivity);
TbActivityJoin activityJoin = new TbActivityJoin();
activityJoin.setUserId(tbActivity.getAcPer());
activityJoin.setAcId(tbActivity.getAcId());
boolean b = activityJoinService.save(activityJoin);
if(b){
TbStu tbStu = tbStuService.getOne(new QueryWrapper().select("name", "email").eq("user_id", tbActivity.getAcPer()));
if(tbActivity.getAcStatus()==1&&tbStu.getEmail()!=null){
try {
MailUtils.sendMail(tbStu.getEmail(),"你申请的校友活动审核通过啦"," ");
return 1;
} catch (MessagingException e) {
e.printStackTrace();
return 2;
}
}
if(tbActivity.getAcStatus()==2&&tbStu.getEmail()!=null){
try {
MailUtils.sendMail(tbStu.getEmail(),"你申请的校友活动未通过审核","请重新申请活动");
return 1;
} catch (MessagingException e) {
e.printStackTrace();
return 2;
}
}
}
return 2;
}/**
* 查询参与活动的校友
* @param m
* @param acId
* @param page
* @param limit
* @return
*/
@RequestMapping("/getActJoinById")
public String getActJoinById(Model m,Integer acId,@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long limit){
IPagestuPage = tbStuService.getActJoinById(new Page (page,limit),acId);
m.addAttribute("stuPage",stuPage);
m.addAttribute("page",page);
m.addAttribute("acId",acId);
return "/activity/actStu-look";
}/**
* 删除加入活动的校友
* @param userIds
* @param acId
* @return
*/
@RequestMapping("/delActJoinById")
public String delActJoinById(@RequestParam("userId") ListuserIds,Integer acId){
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.in("user_id",userIds);
activityJoinService.remove(wrapper);
return "redirect:/act/getActJoinById?acId="+acId;
}
/**
* 根据id删除
* @param acIds
* @return
*/
@RequestMapping("/delActById")
public String delActById(@RequestParam("acId") ListacIds){
activityService.removeByIds(acIds);
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.in("ac_id",acIds);
activityJoinService.remove(wrapper);
return "redirect:/act/getAllAct";
}}
package com.lgy.xiaoyou_manage.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lgy.tools.common.utils.MailUtils;
import com.lgy.tools.common.utils.QueryObj;
import com.lgy.tools.entity.TbAss;
import com.lgy.tools.entity.TbAssstu;
import com.lgy.tools.entity.TbStu;
import com.lgy.xiaoyou_manage.service.ITbAssService;
import com.lgy.xiaoyou_manage.service.ITbAssstuService;
import com.lgy.xiaoyou_manage.service.ITbStuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import javax.mail.MessagingException;
import java.time.LocalDateTime;
import java.util.List;/**
*
* 前端控制器
*
*
* @author lgy
* @since 2020-02-03
*/
@Controller
@RequestMapping("/ass")
public class TbAssController {@Autowired
ITbAssService tbAssService;@Autowired
ITbAssstuService tbAssstuService;@Autowired
ITbStuService tbStuService;/**
* 分页查询校友会信息
* @param m
* @param page
* @param limit
* @param queryObj
* @return
*/
@RequestMapping("/getAllAss")
public String getAllAss(Model m, @RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long limit, QueryObj queryObj){
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.setEntity(queryObj);
IPageassPage = tbAssService.getAllAss(page,limit,wrapper);
m.addAttribute("assPage",assPage);
m.addAttribute("page",page);
m.addAttribute("queryObj",queryObj);
return "/aluAss/aluAss-base";}
/**
* 根据ID查询
* @param m
* @param assId
* @return
*/
@RequestMapping("/getAssById")
public String getAssById(Model m,Integer assId){
TbAss tbAss = tbAssService.getAssById(assId);
m.addAttribute("ass",tbAss);
return "/aluAss/aluAss-edit";
}/**
* 更新信息
* @param tbAss
* @return
*/@RequestMapping("/updateAssById")
@ResponseBody
public Integer updateAssById(TbAss tbAss) {
tbAss.setAssExaminetime(LocalDateTime.now());
tbAssService.updateById(tbAss);
TbAssstu assstu = new TbAssstu();
assstu.setUserId(tbAss.getAssPer());
assstu.setAssId(tbAss.getAssId());
boolean b = tbAssstuService.save(assstu);
if(b){
TbStu tbStu = tbStuService.getOne(new QueryWrapper().select("name", "email").eq("user_id", tbAss.getAssPer()));
if(tbAss.getAssStatus()==1&&tbStu.getEmail()!=null){
try {
MailUtils.sendMail(tbStu.getEmail(),"你申请的校友会审核通过啦"," ");
return 1;
} catch (MessagingException e) {
e.printStackTrace();
return 2;
}
}
if(tbAss.getAssStatus()==2&&tbStu.getEmail()!=null){
try {
MailUtils.sendMail(tbStu.getEmail(),"你申请的校友会未通过审核","请重新申请");
return 1;
} catch (MessagingException e) {
e.printStackTrace();
return 2;
}
}
}
return 2;
}
/**
* 根据校友会ID查询所有的校友
* @param m
* @param assId
* @return
*/
@RequestMapping("/getAssStuById")
public String getAssStuById(Model m,Integer assId,@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long limit){
IPagestuList=tbAssService.getAssStuById(new Page<>(page,limit),assId);
m.addAttribute("stuPage",stuList);
m.addAttribute("page",page);
m.addAttribute("assId",assId);
return "/aluAss/AssStu-look";
}/**
* 删除校友会
* @param assIds
* @return
*/
@RequestMapping("delAssById")
public String delAssById(@RequestParam("assId")ListassIds){
tbAssService.removeByIds(assIds);
QueryWrapperwrapper = new QueryWrapper<>();
wrapper.in("ass_id",assIds);
tbAssstuService.remove(wrapper);
return "redirect:/ass/getAllAss";
}/**
* 根据校友ID删除对应的校友会成员信息表
* @param userIds
* @return
*/
@RequestMapping("/delAssStuById")
public String delAssStuById(@RequestParam("userId") ListuserIds,Integer assId){
QueryWrapperqueryWrapper = new QueryWrapper<>();
queryWrapper.in("user_id",userIds);
tbAssstuService.remove(queryWrapper);
return "redirect:/ass/getAssStuById?assId="+assId;
}}