基于javaweb+mysql的springboot公司财务管理系统(java+springboot+vue+mysql+maven)

基于javaweb+mysql的springboot公司财务管理系统(java+springboot+vue+mysql+maven)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Node.js≥10

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行

前端:WebStorm/VSCode/HBuilderX等均可

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SpringBoot公司财务管理系统(java+springboot+vue+mysql+maven)

系统介绍

该系统是一个小巧精致的公司财务系统,所用皆为最新流行技术,非常适合个人研究学习或者二次开发。

技术说明

后台 SpringBoot2.x,JWT 鉴权,Druid连接池,数据库 Mysql

前台 vue-cli 3.0,vue-element-ui

前端启动命令:npm run dev

用户名/密码 admin/123456

                JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
                try{
                    jwtVerifier.verify(token);
                }catch (Exception e){
                    throw new RRException("token已过期");
                }
                return true;
            }
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

@Api(value="支出收入管理")
@RestController
@RequestMapping("/moneyinfo")
public class FmMoneyInfoController implements BaseController<FmMoneyInfoEntity> {
   @Autowired
                try {
                    userNumber = JWT.decode(token).getAudience().get(0);
                }catch (Exception e){
                    throw new RRException("token失效,请重新登录");
                }
                SysUserEntity user = sysUserService.findUserByNumber(userNumber);
                if(user==null){
                    throw new RRException("用户不存在,请重新登录");
                }
                // 验证 token
                JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
                try{
                    jwtVerifier.verify(token);
                }catch (Exception e){
                    throw new RRException("token已过期");
                }
                return true;
            }
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}


    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmNoticeEntity fmNoticeEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取公告留言信息", response = R.class,
            notes = "分页获取公告留言信息")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){
            int page = 0;
            int size = 10;
            if(map.containsKey("page")){
                page = (int)map.get("page");
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
            }
            PageEntity<FmNoticeEntity> pages = fmNoticeService.getPage(page, size);
            return R.ok("获取留言公告列表",pages);
        }
        return R.ok("获取留言公告列表","");
    }
}

@Api(value="支出收入管理")
@RestController
@RequestMapping("/business")
public class FmBusinessController implements BaseController<FmBusinessEntity>{
    @Autowired
    private FmBusinessService fmBusinessService;

    @ApiOperation(httpMethod = "POST", value = "添加业务", response = R.class,
            notes = "添加业务")
            }
        }
        return R.error(500,"更新失败");
    }

    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmMoneyInfoEntity fmMoneyInfoEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取收入支出信息", response = R.class,
            notes = "分页获取收入支出信息")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){
            int page = 0;
            int size = 10;
            if(map.containsKey("page")){
                page = (int)map.get("page");
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
            }
            PageEntity<FmMoneyInfoEntity> pages = fmMoneyInfoService.getPage(page, size);
            return R.ok("获取收入支出列表",pages);
        }
        return R.ok("获取收入支出列表","");
    }
}

@Api(value="公司公告留言管理")
@RestController
            SysUserEntity dbUser = sysUserService.findUserByNumber(user.getNumber());
            if(dbUser!=null){
                String md5Password = DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
                if(md5Password.equals(dbUser.getPassword())){
                    //获取token
                    String token = tokenService.getToken(dbUser);
                    dbUser.setToken(token);
                    LogUtil.i("当前登录用户信息:",dbUser);
                    return R.ok("登录成功",dbUser);
                }
            }
            return R.error(500,"账户名或者密码错误");
        }
        return R.error(500,"账户名或者密码不可为null");
    }

    @ApiOperation(httpMethod = "POST", value = "退出登录", response = R.class,
            notes = "系统用户退出登录")
    @PostMapping("/logout")
    @UserLoginToken
    public R logout(){
        LogUtil.i("退出登录:","");
        return R.ok("退出登录","");
    }

    @ApiOperation(httpMethod = "POST", value = "修改密码", response = R.class,
            notes = "系统用户修改密码")
    @PostMapping("/updatePassword")
    @UserLoginToken
    public R updatePassword(@RequestBody Map<String,String> map){
        LogUtil.i("用户更改密码:",map);
        if(map!=null){
            String number = TokenUtil.getTokenUserNumber();
            if(!map.containsKey("number")){
                return R.error(500,"更改密码失败,当前用户不是修改用户");
            }else if(!number.equals(map.get("number"))){
                return R.error(500,"更改密码失败,当前用户不是修改用户");
            }
            if(!map.containsKey("oldpwd")){
                return R.error(500,"旧密码不可为null");
            }
            if(!map.containsKey("newpwd")){
                return R.error(500,"新密码不可为null");
            }
            //查询用户
            SysUserEntity user = sysUserService.findUserByNumber(number);
            if(user!=null){
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
            }
            PageEntity<FmDepartmentEntity> pages = fmDepartmentService.getPages(page, size);
            return R.ok("获取客户列表",pages);
        }
        return R.ok("获取客户列表","");
    }

    @ApiOperation(httpMethod = "GET", value = "获取所有部门", response = R.class,
            notes = "获取所有部门")
    @GetMapping("/names")
    @UserLoginToken
    public R getNames() {
        List<Map<String, Object>> names = fmDepartmentService.getNames();
        if(names!=null&&names.size()>0){
            return R.ok("获取部门名称",names);
        }
        return R.error(500,"获取失败");
    }
}

@Api(value="支出收入类型管理")
@RestController
@RequestMapping("/moneytype")

@Api(value="系统用户")
@RestController
@RequestMapping("/user")
public class SysUserController implements BaseController<SysUserEntity>{
    @Autowired
    private SysUserService sysUserService;
    @Autowired
    TokenService tokenService;

    @ApiOperation(httpMethod = "POST", value = "系统用户添加", response = R.class,
            notes = "系统用户添加 ")
    @PostMapping("/add")
    @Override
    public R add(@RequestBody SysUserEntity sysUserEntity) {
        if(sysUserEntity!=null&&!StringUtil.isEmpty(sysUserEntity.getPhone())){
            //先查询用户是否存在
            SysUserEntity userByPhone = sysUserService.findUserByPhone(sysUserEntity.getPhone());
            if(userByPhone!=null){
                return R.error(500,"该用户手机号已经注册,请更新手机号");
            }
            sysUserEntity.setNumber("u"+sysUserEntity.getPhone());
            boolean add = sysUserService.add(sysUserEntity);
            if(add){
                return R.ok("添加成功","");
            }
        }
        return R.error(500,"添加失败");
    }

    @ApiOperation(httpMethod = "GET", value = "删除用户", response = R.class,
            notes = "删除用户")
    @GetMapping("/del")
    @UserLoginToken
    @Override
    public R del(Long id) {
        if(id>0){
            notes = "删除业务")
    @GetMapping("/del")
    @UserLoginToken
    @Override
    public R del(Long id) {
        if(id>0){
            boolean del = fmBusinessService.del(id);
            if(del){
                return R.ok("删除成功","");
            }
        }
        return R.error(500,"删除失败");
    }

    @ApiOperation(httpMethod = "POST", value = "更新业务信息", response = R.class,
            notes = "更新业务信息")
    @PostMapping("/update")
    @UserLoginToken
    @Override
    public R update(@RequestBody FmBusinessEntity fmBusinessEntity) {
        if(fmBusinessEntity!=null&&fmBusinessEntity.getId()>0){
            boolean update = fmBusinessService.update(fmBusinessEntity);
            if(update){
                return R.ok("更新成功","");
            }
        }
        return R.error(500,"更新失败");
    }

    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmBusinessEntity fmBusinessEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取业务信息", response = R.class,
            notes = "分页获取业务信息")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){

/**
 * 自己的拦截器 认证token
 */
public class AuthenticationInterceptor implements HandlerInterceptor {
    @Autowired
    private SysUserService sysUserService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        String token = request.getHeader("X-Token");// 从 http 请求头中取出 token
        // 如果不是映射到方法直接通过
        if(!(handler instanceof HandlerMethod)){
            return true;
        }
        HandlerMethod handlerMethod=(HandlerMethod)handler;
        Method method=handlerMethod.getMethod();
        //检查是否有passtoken注释,有则跳过认证
        if (method.isAnnotationPresent(PassToken.class)) {
            PassToken passToken = method.getAnnotation(PassToken.class);
            if (passToken.required()) {
                return true;
            }
        }
        //检查有没有需要用户权限的注解
        if (method.isAnnotationPresent(UserLoginToken.class)) {
            UserLoginToken userLoginToken = method.getAnnotation(UserLoginToken.class);
    public R logout(){
        LogUtil.i("退出登录:","");
        return R.ok("退出登录","");
    }

    @ApiOperation(httpMethod = "POST", value = "修改密码", response = R.class,
            notes = "系统用户修改密码")
    @PostMapping("/updatePassword")
    @UserLoginToken
    public R updatePassword(@RequestBody Map<String,String> map){
        LogUtil.i("用户更改密码:",map);
        if(map!=null){
            String number = TokenUtil.getTokenUserNumber();
            if(!map.containsKey("number")){
                return R.error(500,"更改密码失败,当前用户不是修改用户");
            }else if(!number.equals(map.get("number"))){
                return R.error(500,"更改密码失败,当前用户不是修改用户");
            }
            if(!map.containsKey("oldpwd")){
                return R.error(500,"旧密码不可为null");
            }
            if(!map.containsKey("newpwd")){
                return R.error(500,"新密码不可为null");
            }
            //查询用户
            SysUserEntity user = sysUserService.findUserByNumber(number);
            if(user!=null){
                String oldpwd = DigestUtils.md5DigestAsHex(map.get("oldpwd").getBytes());
                String newpwd = DigestUtils.md5DigestAsHex(map.get("newpwd").getBytes());
                if(oldpwd.equals(user.getPassword())){
                    //更新
                    user.setPassword(newpwd);
                    boolean update = sysUserService.update(user);
                    if(update){
                        return R.ok("修改成功","");
                    }else{
                        return R.error(500,"更改密码失败");
                    }
                }else{
                    return R.error(500,"旧密码错误");
                }
            }
        }
        //先判断是否是当前用户
        return R.error(500,"更改密码失败");
    }

    @ApiOperation(httpMethod = "POST", value = "修改信息", response = R.class,
            notes = "系统用户修改信息")
    @PostMapping("/updateInfo")
    @UserLoginToken
    public R updateUserInfo(@RequestBody SysUserEntity sysUserEntity){
        LogUtil.i("用户数据修改:",sysUserEntity);
            if(update){
                return R.ok("更新部门信息成功","");
            }
        }
        return R.error(500,"更新失败");
    }

    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmDepartmentEntity fmDepartmentEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取部门信息", response = R.class,
            notes = "部门列表")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){
            int page = 0;
            int size = 10;
            if(map.containsKey("page")){
                page = (int)map.get("page");
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
            }
            PageEntity<FmDepartmentEntity> pages = fmDepartmentService.getPages(page, size);
            return R.ok("获取客户列表",pages);
        }
        return R.ok("获取客户列表","");
    }

    @ApiOperation(httpMethod = "GET", value = "获取所有部门", response = R.class,
            notes = "获取所有部门")
    @GetMapping("/names")
    @UserLoginToken
    @UserLoginToken
    @Override
    public R add(@RequestBody FmDepartmentEntity fmDepartmentEntity) {
        LogUtil.i("添加的部门",fmDepartmentEntity);
        if(fmDepartmentEntity!=null){
            boolean isExits = fmDepartmentService.getDepartmentByName(fmDepartmentEntity.getName());
            if(!isExits){
                boolean add = fmDepartmentService.add(fmDepartmentEntity);
                if(add){
                    return R.ok("添加成功","");
                }
            }else{
                return R.error(500,"添加失败,该部门已经存在");
            }

        }
        return R.error(500,"添加失败");
    }

    @ApiOperation(httpMethod = "POST", value = "删除部门信息", response = R.class,
            notes = "删除部门信息")
    @GetMapping("/del")
    @UserLoginToken
    @Override
    public R del(Long id) {
        if(id>0){
            boolean del = fmDepartmentService.del(id);
            if(del){
                return R.ok("删除成功","");
            }
        }
        return R.error(500,"删除失败");
    }

    @ApiOperation(httpMethod = "POST", value = "更新部门信息", response = R.class,
            notes = "更新部门信息")
    @PostMapping("/update")
    @UserLoginToken
    @Override
    public R update(@RequestBody FmDepartmentEntity fmDepartmentEntity) {
        if(fmDepartmentEntity!=null&&fmDepartmentEntity.getId()>0){
            boolean update = fmDepartmentService.update(fmDepartmentEntity);
            if(update){
                return R.ok("更新部门信息成功","");

@Api(value="支出收入管理")
@RestController
@RequestMapping("/moneyinfo")
public class FmMoneyInfoController implements BaseController<FmMoneyInfoEntity> {
   @Autowired
   private FmMoneyInfoService fmMoneyInfoService;

    @ApiOperation(httpMethod = "POST", value = "添加支出收入", response = R.class,
            notes = "添加支出收入")
    @PostMapping("/add")
    @UserLoginToken
    @Override
    public R add(@RequestBody FmMoneyInfoEntity fmMoneyInfoEntity) {
        if(fmMoneyInfoEntity!=null){
            boolean add = fmMoneyInfoService.add(fmMoneyInfoEntity);
            if(add){
                return R.ok("添加成功","");
            }
        }
        return R.error(500,"添加失败");
    }

    @ApiOperation(httpMethod = "GET", value = "删除收入支出", response = R.class,
            notes = "删除收入支出")
    @GetMapping("/del")
    @UserLoginToken
    @Override
    public R del(Long id) {
        if(id>0){
            boolean del = fmMoneyInfoService.del(id);
            if(del){
                return R.ok("删除成功","");
            }
        }
        return R.error(500,"删除失败");
    }

    @ApiOperation(httpMethod = "POST", value = "更新收入支出信息", response = R.class,
            notes = "更新收入支出信息")
    @PostMapping("/update")

@Api(value="支出收入类型管理")
@RestController
@RequestMapping("/moneytype")
public class FmMoneyTypeController implements BaseController<FmMoneyTypeEntity> {
    @Autowired
    private FmMoneyTypeService fmMoneyTypeService;

    @ApiOperation(httpMethod = "POST", value = "添加收入支出标签类型", response = R.class,
            notes = "添加收入支出标签类型")
    @PostMapping("/add")
    @UserLoginToken
    @Override
    public R add(@RequestBody FmMoneyTypeEntity fmMoneyTypeEntity) {
        if(fmMoneyTypeEntity!=null&& !StringUtil.isEmpty(fmMoneyTypeEntity.getName())){
            //先判断是否存在
            boolean existMoneyType = fmMoneyTypeService.isExistMoneyType(fmMoneyTypeEntity.getName());
            if(!existMoneyType){
                boolean add = fmMoneyTypeService.add(fmMoneyTypeEntity);
                if(add){
                    return R.ok("添加成功","");
                }
            }else{
                return R.error(500,"添加失败,改类型已经存在");

            }
        }
        return R.error(500,"添加类型失败");
    }

    @ApiOperation(httpMethod = "GET", value = "删除收入支出标签类型", response = R.class,
        }
        return R.error(500,"删除失败");
    }

    @ApiOperation(httpMethod = "POST", value = "更新业务信息", response = R.class,
            notes = "更新业务信息")
    @PostMapping("/update")
    @UserLoginToken
    @Override
    public R update(@RequestBody FmBusinessEntity fmBusinessEntity) {
        if(fmBusinessEntity!=null&&fmBusinessEntity.getId()>0){
            boolean update = fmBusinessService.update(fmBusinessEntity);
            if(update){
                return R.ok("更新成功","");
            }
        }
        return R.error(500,"更新失败");
    }

    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmBusinessEntity fmBusinessEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取业务信息", response = R.class,
            notes = "分页获取业务信息")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){
            int page = 0;
            int size = 10;
            if(map.containsKey("page")){
                page = (int)map.get("page");
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
            }
            PageEntity<FmBusinessEntity> pages = fmBusinessService.getPages(page, size);
            return R.ok("获取收入支出列表",pages);
        }
    @UserLoginToken
    @Override
    public R del(Long id) {
        if(id>0){
            boolean del = fmBusinessService.del(id);
            if(del){
                return R.ok("删除成功","");
            }
        }
        return R.error(500,"删除失败");
    }

    @ApiOperation(httpMethod = "POST", value = "更新业务信息", response = R.class,
            notes = "更新业务信息")
    @PostMapping("/update")
    @UserLoginToken
    @Override
    public R update(@RequestBody FmBusinessEntity fmBusinessEntity) {
        if(fmBusinessEntity!=null&&fmBusinessEntity.getId()>0){
            boolean update = fmBusinessService.update(fmBusinessEntity);
            if(update){
                return R.ok("更新成功","");
            }
        }
        return R.error(500,"更新失败");
    }

    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmBusinessEntity fmBusinessEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取业务信息", response = R.class,
            notes = "分页获取业务信息")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){
            int page = 0;
            int size = 10;
            if(map.containsKey("page")){
                page = (int)map.get("page");
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
    public R update(@RequestBody FmBusinessEntity fmBusinessEntity) {
        if(fmBusinessEntity!=null&&fmBusinessEntity.getId()>0){
            boolean update = fmBusinessService.update(fmBusinessEntity);
            if(update){
                return R.ok("更新成功","");
            }
        }
        return R.error(500,"更新失败");
    }

    @Override
    public R getAll() {
        return null;
    }

    @Override
    public R get(FmBusinessEntity fmBusinessEntity) {
        return null;
    }

    @ApiOperation(httpMethod = "POST", value = "分页获取业务信息", response = R.class,
            notes = "分页获取业务信息")
    @PostMapping("/page")
    @UserLoginToken
    public R getPages(@RequestBody Map<String,Object> map) {
        if(map!=null){
            int page = 0;
            int size = 10;
            if(map.containsKey("page")){
                page = (int)map.get("page");
            }
            if(map.containsKey("size")){
                size = (int)map.get("size");
            }
            PageEntity<FmBusinessEntity> pages = fmBusinessService.getPages(page, size);
            return R.ok("获取收入支出列表",pages);
        }
        return R.ok("获取收入支出列表","");
    }
}

                }else{
                    incomeList.add(fmMoneyTypeEntity);
                }
            }
            map.put("income",incomeList);
            map.put("expenditure",expenditureList);
            return R.ok("获取成功",map);
        }
        return R.ok("获取成功","");
    }

    @Override
    public R get(FmMoneyTypeEntity fmMoneyTypeEntity) {
        return null;
    }
}

/**
 * 自己的拦截器 认证token
 */
public class AuthenticationInterceptor implements HandlerInterceptor {
    @Autowired

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值