基于javaweb+mysql的springboot家庭财务管理系统(java+springboot+ssm+mysql+maven+thymeleaf+html)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot家庭财务管理系统(java+springboot+ssm+mysql+maven+thymeleaf+html)
一、项目简述
功能: 家庭财务管理系统,具有收入统计,支出统计,汇总报 表,工资录入,其他收入等录入开支信息,echart图标插 件弓I入展示,分页查询,角色管理,用户管理,权限管理 等功能
二、项目运行
环境配置: jdk8+tomcat8+mysql+Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都主持)
项目技术: Thymeleaf+SpringBoot+Mybatis+html+css+JavaScript+Echart
System.out.println(bill);
PageModel model = new PageModel<>(pageNo,bill);
model.setPageSize(pageSize);
return billService.findByWhere(model);
}
@RequestMapping("/getBillsByUserid/{userid}/{pageNo}/{pageSize}/{year}/{month}")
public Result getBillsByUserid(@PathVariable Integer userid, @PathVariable int pageNo, @PathVariable int pageSize, @PathVariable int year, @PathVariable int month){
Bill bill = new Bill();
bill.setUserid(userid);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
bill.setStartTime(year+"-0"+month+"-01");
try {
Date date = sdf.parse(year+"-0"+(month+1)+"-01");
date.setDate(date.getDate()-1);
bill.setEndTime(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
PageModel model = new PageModel<>(pageNo,bill);
model.setPageSize(pageSize);
Result result = billService.findByWhere(model);
List<Map<String,String>> r = billService.getMonthlyInfo(model);
Map<String,String> map = new HashMap<>();
for (Map<String,String> m: r) {
map.put(m.get("typeid"),String.format("%.2f",m.get("sum(money)")));
}
result.setData(map);
return result;
}
private Bill getHouseBill(Bill bill, HttpSession session) {
UserInfo currentUser = Config.getSessionUser(session);
//当登录用户为家主时,查询默认查询全家账单情况
//当登录用户为普通用户时,仅查询当前用户的账单
if (currentUser.getRoleid() == 2){
bill.setHouseid(currentUser.getHouseid());
}else if (currentUser.getRoleid() == 3){
bill.setUserid(currentUser.getId());
}
return bill;
}
@RequestMapping(value = "/addBill",method = RequestMethod.POST)
public Result add(Bill bill, HttpSession session){
if (Config.getSessionUser(session)!=null){
bill.setUserid(Config.getSessionUser(session).getId());
}
Utils.log(bill.toString());
try {
/**
* description: TODO
*/
@Controller
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@Resource
private PrivilegeService privilegeService;
@RequestMapping(value = {"/", "login.html"})
public String toLogin(HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession();
if(session.getAttribute(Config.CURRENT_USERNAME)==null){
return "login";
}else {
try {
response.sendRedirect("/pages/index");
} catch (IOException e) {
e.printStackTrace();
return "login";
}
return null;
}
}
// @RequestMapping(value = "/login.do",method = RequestMethod.POST)
@RequestMapping(value = "/login.do")
@ResponseBody
public Result getUserInfo(UserInfo userInfo, HttpServletRequest request, HttpServletResponse response){
boolean userIsExisted = userInfoService.userIsExisted(userInfo);
System.out.println(userIsExisted + " - " + request.getHeader("token"));
userInfo = getUserInfo(userInfo);
return ResultUtil.success(payways);
}else {
return ResultUtil.unSuccess();
}
} catch (Exception e) {
return ResultUtil.error(e);
}
}
}
/**
* description: TODO
*/
public class SessionInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// System.out.println("token: "+request.getHeader("token"));
System.out.println(request.getRequestURL());
HttpSession session = request.getSession();
//若session中没有用户信息 但cookie中存在用户信息,
//则通过cookie中的信息重新初始化该用户信息,达到免登录的效果
if(session.getAttribute(Config.CURRENT_USERNAME) == null && getCookieUser(request)!=null){
// System.out.println(HandlerMethod.class +"==="+ handler.getClass());
if(HandlerMethod.class.equals(handler.getClass())){
Object controller = ((HandlerMethod) handler).getBean();
if (controller instanceof UserInfoController){
UserInfoController userInfoController = (UserInfoController) controller;
String userinfoStr = getCookieUser(request);
UserInfo userInfo = new UserInfo();
userInfo.setId(Integer.parseInt(userinfoStr.split("_")[1]));
userInfo.setUsername(userinfoStr.split("_")[0]);
userInfo = userInfoController.getUserInfo(userInfo);
String userinfoStr = getCookieUser(request);
UserInfo userInfo = new UserInfo();
userInfo.setId(Integer.parseInt(userinfoStr.split("_")[1]));
userInfo.setUsername(userinfoStr.split("_")[0]);
userInfo = userInfoController.getUserInfo(userInfo);
userInfoController.setSessionUserInfo(userInfo,session);
return true;
}
}
}
//如果是移动端登录,则跳过登录验证
if ("client".equals(request.getHeader("token"))){
return true;
}
String uri = request.getRequestURI();
// System.out.println("session:"+uri);
//是登录页面或者静态资源,不拦截
if("/".equals(uri) || "/login.html".equals(uri) || "/login.do".equals(uri) || uri.contains("/static/")){
// System.out.println("---放行---");
}else {
//不是登录页面,则验证是否有session,没有则跳转到登录页面
if (session.getAttribute(Config.CURRENT_USERNAME) == null){
response.sendRedirect("/login.html");
return false;
}
}
return true;
}
// @Override
// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
// }
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// System.out.println(request.getRequestURI());
String uri = request.getRequestURI();
if("/logout".equals(uri) && request.getSession().getAttribute(Config.CURRENT_USERNAME) == null){
response.sendRedirect("/login.html");
}
}
/**
* 获取cookie中的用户信息
* @param request
}else {
//不是登录页面,则验证是否有session,没有则跳转到登录页面
if (session.getAttribute(Config.CURRENT_USERNAME) == null){
response.sendRedirect("/login.html");
return false;
}
}
return true;
}
// @Override
// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
// }
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// System.out.println(request.getRequestURI());
String uri = request.getRequestURI();
if("/logout".equals(uri) && request.getSession().getAttribute(Config.CURRENT_USERNAME) == null){
response.sendRedirect("/login.html");
}
}
/**
* 获取cookie中的用户信息
* @param request
* @return
*/
private String getCookieUser(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if (cookies == null){
return null;
}else {
for (Cookie cookie : cookies){
if (Config.CURRENT_USERNAME.equals(cookie.getName())){
return cookie.getValue();
}
}
return null;
}
}
try {
List<Payway> payways = billService.getAllPayways();
if (payways!=null && payways.size()>0){
return ResultUtil.success(payways);
}else {
return ResultUtil.unSuccess();
}
} catch (Exception e) {
return ResultUtil.error(e);
}
}
}
/**
* description: TODO
*/
public class SessionInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// System.out.println("token: "+request.getHeader("token"));
System.out.println(request.getRequestURL());
HttpSession session = request.getSession();
//若session中没有用户信息 但cookie中存在用户信息,
//则通过cookie中的信息重新初始化该用户信息,达到免登录的效果
if(session.getAttribute(Config.CURRENT_USERNAME) == null && getCookieUser(request)!=null){
// System.out.println(HandlerMethod.class +"==="+ handler.getClass());
if(HandlerMethod.class.equals(handler.getClass())){
Object controller = ((HandlerMethod) handler).getBean();
if (controller instanceof UserInfoController){
UserInfoController userInfoController = (UserInfoController) controller;
String userinfoStr = getCookieUser(request);
UserInfo userInfo = new UserInfo();
userInfo.setId(Integer.parseInt(userinfoStr.split("_")[1]));
response.addCookie(cookie);
}
/**
* 通过用户信息获取用户权限信息,并存入session中
* @param userInfo
* @param session
* @return
*/
public UserInfo setSessionUserInfo(UserInfo userInfo, HttpSession session){
List<Privilege> privileges = privilegeService.getPrivilegeByRoleid(userInfo.getRoleid());
userInfo.setPrivileges(privileges);
session.setAttribute(Config.CURRENT_USERNAME,userInfo);
return userInfo;
}
public UserInfo getUserInfo(UserInfo userInfo){
return userInfoService.getUserInfo(userInfo);
}
}
/**
* description: TODO
*/
@RestController
@RequestMapping("/bills")
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);
}
/**
* 注销时删除cookie信息
* @param request
* @param response
*/
private void delCookieUser(HttpServletRequest request, HttpServletResponse response){
UserInfo user = getSessionUser(request.getSession());
Cookie cookie = new Cookie(Config.CURRENT_USERNAME,user.getUsername()+"_"+user.getId());
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
/**
* 通过用户信息获取用户权限信息,并存入session中
* @param userInfo
* @param session
* @return
*/
public UserInfo setSessionUserInfo(UserInfo userInfo, HttpSession session){
List<Privilege> privileges = privilegeService.getPrivilegeByRoleid(userInfo.getRoleid());
userInfo.setPrivileges(privileges);
session.setAttribute(Config.CURRENT_USERNAME,userInfo);
return userInfo;
}
public UserInfo getUserInfo(UserInfo userInfo){
return userInfoService.getUserInfo(userInfo);
}
}
public @ResponseBody Result getRoleById(@PathVariable String id){
try {
Role role = userInfoService.getRoleById(id);
if(role != null){
return ResultUtil.success(role);
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
/**
* 登录时将用户信息加入cookie中
* @param response
*/
private void setCookieUser(HttpServletRequest request, HttpServletResponse response){
UserInfo user = getSessionUser(request.getSession());
Cookie cookie = new Cookie(Config.CURRENT_USERNAME,user.getUsername()+"_"+user.getId());
//cookie 保存7天
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);
}
/**
* 注销时删除cookie信息
* @param request
* @param response
*/
private void delCookieUser(HttpServletRequest request, HttpServletResponse response){
UserInfo user = getSessionUser(request.getSession());
Cookie cookie = new Cookie(Config.CURRENT_USERNAME,user.getUsername()+"_"+user.getId());
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
/**
* 通过用户信息获取用户权限信息,并存入session中
* @param userInfo
* @param session
* @return
*/
public UserInfo setSessionUserInfo(UserInfo userInfo, HttpSession session){
List<Privilege> privileges = privilegeService.getPrivilegeByRoleid(userInfo.getRoleid());
userInfo.setPrivileges(privileges);
session.setAttribute(Config.CURRENT_USERNAME,userInfo);
return userInfo;
}
public UserInfo getUserInfo(UserInfo userInfo){
return userInfoService.getUserInfo(userInfo);
}
return ResultUtil.success();
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/getSessionUser")
@ResponseBody
public UserInfo getSessionUser(HttpSession session){
UserInfo sessionUser = (UserInfo) session.getAttribute(Config.CURRENT_USERNAME);
sessionUser.setPassword(null);
return sessionUser;
}
@RequestMapping("/logout")
public String logout(HttpServletRequest request, HttpServletResponse response){
delCookieUser(request, response);
request.getSession().removeAttribute(Config.CURRENT_USERNAME);
return "login";
}
@RequestMapping("/getAllRoles")
public @ResponseBody Result<Role> getAllRoles(){
try {
List<Role> roles = userInfoService.getAllRoles();
if (roles.size()>0){
return ResultUtil.success(roles);
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/role/add")
public @ResponseBody Result addRole(Role role){
try {
int num = userInfoService.addRole(role);
if(num>0){
privilegeService.addDefaultPrivilegesWhenAddRole(role.getRoleid().toString());
return ResultUtil.success();
* @param request
* @param response
*/
private void delCookieUser(HttpServletRequest request, HttpServletResponse response){
UserInfo user = getSessionUser(request.getSession());
Cookie cookie = new Cookie(Config.CURRENT_USERNAME,user.getUsername()+"_"+user.getId());
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
/**
* 通过用户信息获取用户权限信息,并存入session中
* @param userInfo
* @param session
* @return
*/
public UserInfo setSessionUserInfo(UserInfo userInfo, HttpSession session){
List<Privilege> privileges = privilegeService.getPrivilegeByRoleid(userInfo.getRoleid());
userInfo.setPrivileges(privileges);
session.setAttribute(Config.CURRENT_USERNAME,userInfo);
return userInfo;
}
public UserInfo getUserInfo(UserInfo userInfo){
return userInfoService.getUserInfo(userInfo);
}
}
}
@RequestMapping("/user/update")
public @ResponseBody Result updateUser(UserInfo userInfo){
try {
int num = userInfoService.update(userInfo);
if(num>0){
return ResultUtil.success();
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/user/del/{id}")
public @ResponseBody Result deleteUser(@PathVariable String id){
try {
int num = userInfoService.delete(id);
if(num>0){
return ResultUtil.success();
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/getSessionUser")
@ResponseBody
public UserInfo getSessionUser(HttpSession session){
UserInfo sessionUser = (UserInfo) session.getAttribute(Config.CURRENT_USERNAME);
sessionUser.setPassword(null);
return sessionUser;
}
@RequestMapping("/logout")
public String logout(HttpServletRequest request, HttpServletResponse response){
delCookieUser(request, response);
@RequestMapping("/getAllRoles")
public @ResponseBody Result<Role> getAllRoles(){
try {
List<Role> roles = userInfoService.getAllRoles();
if (roles.size()>0){
return ResultUtil.success(roles);
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/role/add")
public @ResponseBody Result addRole(Role role){
try {
int num = userInfoService.addRole(role);
if(num>0){
privilegeService.addDefaultPrivilegesWhenAddRole(role.getRoleid().toString());
return ResultUtil.success();
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/role/update")
public @ResponseBody Result updateRole(Role role){
try {
int num = userInfoService.updateRole(role);
if(num>0){
return ResultUtil.success();
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
public UserInfo getSessionUser(HttpSession session){
UserInfo sessionUser = (UserInfo) session.getAttribute(Config.CURRENT_USERNAME);
sessionUser.setPassword(null);
return sessionUser;
}
@RequestMapping("/logout")
public String logout(HttpServletRequest request, HttpServletResponse response){
delCookieUser(request, response);
request.getSession().removeAttribute(Config.CURRENT_USERNAME);
return "login";
}
@RequestMapping("/getAllRoles")
public @ResponseBody Result<Role> getAllRoles(){
try {
List<Role> roles = userInfoService.getAllRoles();
if (roles.size()>0){
return ResultUtil.success(roles);
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/role/add")
public @ResponseBody Result addRole(Role role){
try {
int num = userInfoService.addRole(role);
if(num>0){
privilegeService.addDefaultPrivilegesWhenAddRole(role.getRoleid().toString());
return ResultUtil.success();
}else {
return ResultUtil.unSuccess();
}
}catch (Exception e){
return ResultUtil.error(e);
}
}
@RequestMapping("/role/update")
public @ResponseBody Result updateRole(Role role){
try {
}
/**
* 获取cookie中的用户信息
* @param request
* @return
*/
private String getCookieUser(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if (cookies == null){
return null;
}else {
for (Cookie cookie : cookies){
if (Config.CURRENT_USERNAME.equals(cookie.getName())){
return cookie.getValue();
}
}
return null;
}
}
}
/**
* description: TODO
*/
/**
* description: TODO
*/
@Controller
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@Resource
private PrivilegeService privilegeService;
@RequestMapping(value = {"/", "login.html"})
public String toLogin(HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession();
if(session.getAttribute(Config.CURRENT_USERNAME)==null){
return "login";
}else {
try {
response.sendRedirect("/pages/index");
} catch (IOException e) {
e.printStackTrace();
return "login";
}
return null;
}
}
// @RequestMapping(value = "/login.do",method = RequestMethod.POST)
@RequestMapping(value = "/login.do")
@ResponseBody
public Result getUserInfo(UserInfo userInfo, HttpServletRequest request, HttpServletResponse response){
boolean userIsExisted = userInfoService.userIsExisted(userInfo);
System.out.println(userIsExisted + " - " + request.getHeader("token"));
userInfo = getUserInfo(userInfo);
if("client".equals(request.getHeader("token")) && !userIsExisted){
//用户不存在
return ResultUtil.success(-1);
}
private void delCookieUser(HttpServletRequest request, HttpServletResponse response){
UserInfo user = getSessionUser(request.getSession());
Cookie cookie = new Cookie(Config.CURRENT_USERNAME,user.getUsername()+"_"+user.getId());
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
/**
* 通过用户信息获取用户权限信息,并存入session中
* @param userInfo
* @param session
* @return
*/
public UserInfo setSessionUserInfo(UserInfo userInfo, HttpSession session){
List<Privilege> privileges = privilegeService.getPrivilegeByRoleid(userInfo.getRoleid());
userInfo.setPrivileges(privileges);
session.setAttribute(Config.CURRENT_USERNAME,userInfo);
return userInfo;
}
public UserInfo getUserInfo(UserInfo userInfo){
return userInfoService.getUserInfo(userInfo);
}
}
/**
* description: TODO