Java项目:springboot个人理财系统

发布于:2022-07-24 ⋅ 阅读:(150) ⋅ 点赞:(0)

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

该毕业设计使用了当前较为流行的spring boot,spring,spring mvc,mybatis,shiro框架分页处理使用了pagehelper进行操作,前台使用了模板语言thymeleaf,界面较为炫酷,适合年轻朋友。开发工具采用的是IDEA。该系统主要解决了理财中的一些问题,包含功能:权限管理,用户信息管理,理财产品管理等内容。

主要分为管理员和普通用户两种用户;
1.管理员模块主要包括:
用户信息管理:用户信息、银行卡、个人征信;
理财产品管理:零钱理财、工资理财、期限理财、基金理财、精选银行;
权限管理:用户权限、管理员权限

网贷管理:网贷审核、网贷信息;

2.普通用户模块主要包括
个人理财:零钱理财、工资理财、期限理财、基金理财、银行推荐;
金融工具:资金记录、安全网贷;
个人中心:我的理财、我的借贷、银行卡管理、账户安全;

技术选型

springboot+bootstrap+mysql8.0

运行

项目访问路径:

http://localhost:8080/

管理员登录: admin  123456

普通用户登录: lisi  123456

运行截图

 

 

 

 

 

  

相关代码

银行卡控制器

@Controller
public class BankCardController {

    @Autowired
    BankCardService bankCardService;

    /**
     * 跳转到银行卡管理界面(用户)
     *
     * @param model
     * @param session
     * @return
     */
    @GetMapping("/user/personal/toBankCard.html")
    public String toBankCard(Model model, HttpSession session) {
        User loginUser = (User) session.getAttribute("loginUser");
        List<Bankcard> list = bankCardService.selectBankCardByUserId(loginUser.getId());
        model.addAttribute("bankCardList", list);

        model.addAttribute("pageTopBarInfo", "银行卡管理界面");
        model.addAttribute("activeUrl1", "personalActive");
        model.addAttribute("activeUrl2", "bankCardActive");
        return "/user/personal/bankcard";
    }

    /**
     * 新增银行卡
     *
     * @param bankcard
     * @param session
     * @return
     */
    @PostMapping("/user/addBankCard")
    @ResponseBody
    public Msg addBankCard(Bankcard bankcard, HttpSession session) {
        //System.out.println(bankcard.getCardbank());
        User loginUser = (User) session.getAttribute("loginUser");
        bankcard.setUserid(loginUser.getId());
        Integer result = bankCardService.insertBankCard(bankcard);
        if (result == 1) {
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 修改银行卡时回显银行卡信息
     *
     * @param id
     * @return
     */
    @GetMapping("/user/getBankCardById/{id}")
    @ResponseBody
    public Msg getBankCardById(@PathVariable("id") Integer id) {
        Bankcard bankcard = bankCardService.selectBankCardById(id);
        return Msg.success().add("bankcard", bankcard);
    }

    /**
     * 修改银行卡信息
     *
     * @param id
     * @param bankcard
     * @return
     */
    @PutMapping("/user/updateBankCard/{update-id}")
    @ResponseBody
    public Msg updateBankCard(@PathVariable("update-id") Integer id, Bankcard bankcard) {
        bankcard.setId(id);
        Integer result = bankCardService.updateBankCard(bankcard);
        if (result == 1) {
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 删除银行卡
     *
     * @param id
     * @return
     */
    @DeleteMapping("/user/deleteBankCard/{id}")
    @ResponseBody
    public Msg deleteBankCard(@PathVariable("id") Integer id) {
        Integer result = bankCardService.deleteBankCardById(id);
        if (result == 1) {
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 跳转到银行卡管理界面(管理员)
     * @param pageNum
     * @param pageSize
     * @param model
     * @param session
     * @return
     */
    @GetMapping("/admin/userinfo/toBankCard.html")
    public String toBankCard1(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                              @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                              Model model, HttpSession session) {
        PageHelper.startPage(pageNum, pageSize);
        List<Bankcard> list = bankCardService.selectAllBankCard();
        PageInfo<Bankcard> pageInfo = new PageInfo<Bankcard>(list, 5);
        model.addAttribute("bankcardPageInfo",pageInfo);
        model.addAttribute("bankcardList",list);

        model.addAttribute("pageTopBarInfo", "银行卡管理界面");
        model.addAttribute("activeUrl1", "userInfoActive");
        model.addAttribute("activeUrl2", "bankcardActive");
        return "/admin/userinfo/bankcard";
    }
}

银行控制器

@Controller
public class BankController {
    @Autowired
    BankService bankService;

    /**
     * 跳转用户银行推荐界面
     * @param model
     * @return
     */
    @RequestMapping("/user/finance/toBank.html")
    public String toBank(Model model){
        List<Bank> list = bankService.selectAllBank();
        model.addAttribute("bankList",list);
        model.addAttribute("pageTopBarInfo","银行推荐界面");
        model.addAttribute("activeUrl1","financeActive");
        model.addAttribute("activeUrl2","bankActive");
        return "user/finance/bank";
    }

    /**
     * 跳转到推荐银行管理界面(管理员)
     * @param pageNum
     * @param pageSize
     * @param model
     * @param session
     * @return
     */
    @GetMapping("/admin/finance/toBank.html")
    public String toBank(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                                @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                                Model model, HttpSession session) {
        PageHelper.startPage(pageNum, pageSize);
        List<Bank> list = bankService.selectAllBank();
        PageInfo<Bank> pageInfo = new PageInfo<Bank>(list, 5);
        model.addAttribute("finacnePageInfo",pageInfo);
        model.addAttribute("financeList",list);

        model.addAttribute("activeUrl1", "financeActive");
        model.addAttribute("activeUrl2", "bankctive");
        model.addAttribute("pageTopBarInfo", "推荐银行管理界面");
        return "/admin/finance/bank";
    }

    /**
     * 新增推荐银行
     *
     * @return
     */
    @PostMapping("/admin/addBank")
    @ResponseBody
    public Msg addBank(Bank bank){
        Integer result = bankService.insertBank(bank);
        if (result==1){
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 更新时回显信息
     * @param id
     * @return
     */
    @GetMapping("/admin/getBankInfoById/{id}")
    @ResponseBody
    public Msg getBankInfoById(@PathVariable("id") Integer id){
        Bank bank = bankService.selectBankById(id);
        return Msg.success().add("bank",bank);
    }

    /**
     * 更新
     * @param id
     *
     * @return
     */
    @PutMapping("/admin/updateBank/{id}")
    @ResponseBody
    public Msg updateBank(@PathVariable("id") Integer id,Bank bank){
        bank.setId(id);
        Integer result = bankService.updateBank(bank);
        if (result==1){
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @DeleteMapping("/admin/deleteBankById/{id}")
    @ResponseBody
    public Msg deleteBankById(@PathVariable("id") Integer id){
        Integer result = bankService.deleteBankById(id);
        if (result==1){
            return Msg.success();
        }
        return Msg.fail();
    }
}

零钱修改

@Controller
public class ChangeMoneyController {
    @Autowired
    ChangeMoneyService changeMoneyService;
    @Autowired
    UserChangeMoneyService userChangeMoneyService;
    @Autowired
    FlowOfFundsService flowOfFundsService;

    /**
     * 跳转到零钱理财界面(用户)
     * @param model
     * @return
     */
    @RequestMapping("/user/finance/toChangeMoney.html")
    public String toChangemoney(Model model){
        List<ChangeMoney> list = changeMoneyService.selectAllChangeMoney();
        model.addAttribute("changeMoneyList",list);
        model.addAttribute("pageTopBarInfo","零钱理财界面");
        model.addAttribute("activeUrl1","financeActive");
        model.addAttribute("activeUrl2","changeMoneyActive");
        return "/user/finance/changemoney";
    }

    /**
     * 买入工资理财产品
     * @param changeMoneyId
     * @param userId
     * @return
     */
    @PostMapping("/user/buyChangeMoney")
    @ResponseBody
    public Msg buyChangeMoney(@RequestParam("changeMoneyId")Integer changeMoneyId,
                              @RequestParam("userId") Integer userId ){
        ChangeMoney cm = changeMoneyService.selectChangeMoneyById(changeMoneyId);
        UserChangeMoney ucm = new UserChangeMoney();
        ucm.setUserid(userId);
        ucm.setChangeid(changeMoneyId);
        ucm.setStarttime(new Date());
        ucm.setAveryield(cm.getAnnualincome());
        ucm.setProfit(cm.getAnnualincome().multiply(cm.getInvesmoney()));
        ucm.setStatus(1);
        Integer result = userChangeMoneyService.insertUserChangeMoney(ucm);
        if (result==1){
            FlowOfFunds fof = new FlowOfFunds();
            fof.setUserid(userId);
            fof.setFlowmoney(cm.getInvesmoney());
            fof.setType(1);
            fof.setSource(cm.getName());
            fof.setCreatetime(new Date());
            fof.setFunddesc("无");
            flowOfFundsService.insertFlowOfFunds(fof);
            return Msg.success();
        }else {
            return Msg.fail();
        }
    }

    /**
     * 跳转到零钱理财管理界面(管理员)
     * @param pageNum
     * @param pageSize
     * @param model
     * @param session
     * @return
     */
    @GetMapping("/admin/finance/toChangeMoney.html")
    public String toUserInfo(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                             @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                             Model model, HttpSession session) {
        PageHelper.startPage(pageNum, pageSize);
        List<ChangeMoney> list = changeMoneyService.selectAllChangeMoney();
        PageInfo<ChangeMoney> pageInfo = new PageInfo<ChangeMoney>(list, 5);
        model.addAttribute("finacnePageInfo",pageInfo);
        model.addAttribute("financeList",list);

        model.addAttribute("activeUrl1", "financeActive");
        model.addAttribute("activeUrl2", "changemoneyActive");
        model.addAttribute("pageTopBarInfo", "零钱理财管理界面");
        return "/admin/finance/changemoney";
    }

    /**
     * 新增零钱理财产品
     * @param changeMoney
     * @return
     */
    @PostMapping("/admin/addChangeMoney")
    @ResponseBody
    public Msg addChangeMoney(ChangeMoney changeMoney){
        Integer result = changeMoneyService.insertChangeMoney(changeMoney);
        if (result==1){
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 更新时回显信息
     * @param id
     * @return
     */
    @GetMapping("/admin/getChangeMoneyInfoById/{id}")
    @ResponseBody
    public Msg getChangeMoneyInfoById(@PathVariable("id") Integer id){
        ChangeMoney changeMoney = changeMoneyService.selectChangeMoneyById(id);
        return Msg.success().add("changeMoney",changeMoney);
    }

    /**
     * 更新
     * @param id
     * @param changeMoney
     * @return
     */
    @PutMapping("/admin/updateChangeMoney/{id}")
    @ResponseBody
    public Msg updateChangeMoney(@PathVariable("id") Integer id,ChangeMoney changeMoney){
        changeMoney.setId(id);
        Integer result = changeMoneyService.updateChangeMoney(changeMoney);
        if (result==1){
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @DeleteMapping("/admin/deleteChangeMoneyById/{id}")
    @ResponseBody
    public Msg deleteChangeMoneyById(@PathVariable("id") Integer id){
        Integer result = changeMoneyService.deleteChangeMoneyById(id);
        if (result==1){
            return Msg.success();
        }
        return Msg.fail();
    }
}

贷款控制器

@Controller
public class LoanController {
    @Autowired
    LoanService loanService;
    @Autowired
    InfoService infoService;

    /**
     * 跳转到网贷申请界面
     *
     * @param model
     * @return
     */
    @RequestMapping("/user/tools/toApplyLoan.html")
    public String toApplyLoan(Model model) {

        model.addAttribute("pageTopBarInfo", "网贷申请界面");
        model.addAttribute("activeUrl1", "toolsActive");
        model.addAttribute("activeUrl2", "applyLoanActive");
        return "/user/tools/applyloan";
    }

    /**
     * 跳转到我的借贷界面
     *
     * @param model
     * @return
     */
    @RequestMapping("/user/personal/toMyLoan.html")
    public String toMyLoan(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                           @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                           Model model, HttpSession session) {
        User loginUser = (User) session.getAttribute("loginUser");

        PageHelper.startPage(pageNum, pageSize);
        List<Loan> list = loanService.selectLoanByLoanId(loginUser.getId());
        PageInfo<Loan> pageInfo = new PageInfo<Loan>(list, 5);
        model.addAttribute("myLoansPageInfo", pageInfo);
        model.addAttribute("loansList", list);

        model.addAttribute("pageTopBarInfo", "我的借贷界面");
        model.addAttribute("activeUrl1", "personalActive");
        model.addAttribute("activeUrl2", "myLoanActive");
        return "/user/personal/myloan";
    }

    /**
     * 新增网贷申请
     *
     * @param amout
     * @param term
     * @param rate
     * @param session
     * @return
     */
    @PostMapping("/user/applyLoan")
    @ResponseBody
    public Msg applyLoan(@RequestParam("amout") BigDecimal amout,
                         @RequestParam("term") Integer term,
                         @RequestParam("rate") BigDecimal rate, HttpSession session) {
        User loginUser = (User) session.getAttribute("loginUser");

        Loan loan = new Loan();
        loan.setLoanid(loginUser.getId());
        loan.setLoantime(new Date());
        loan.setAmount(amout);
        loan.setTerm(term);
        loan.setRate(rate);
        loan.setApplystatus(0);
        loan.setLoanstatus(0);
        Integer result = loanService.insertLoan(loan);
        if (result == 1) {
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 还款
     *
     * @param id
     * @return
     */
    @PutMapping("/user/repayment/{id}")
    @ResponseBody
    public Msg repayment(@PathVariable("id") Integer id) {
        Loan loan = loanService.selectLoanById(id);
        loan.setLoanstatus(2);
        Integer result = loanService.updateLoan(loan);
        if (result == 1) {
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 跳转到网贷审核(管理员)
     *
     * @param pageNum
     * @param pageSize
     * @param model
     * @param session
     * @return
     */
    @GetMapping("/admin/loan/toLoanexam.html")
    public String toLoanexam(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                             @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                             Model model, HttpSession session) {
        // 引入PageHelper插件,在查询之前调用startPage方法,传入页码以及每页大小
        PageHelper.startPage(pageNum, pageSize);
        List<Loan> list = loanService.selectAllLoanByApplyStatusAsc();
        // 使用PageInfo包装查询后的结果,并交给页面处理
        // PageInfo封装了详细的分页信息,包括我们查询出来的数据,还可以传入连续显示的页数(5)
        PageInfo<Loan> pageInfo = new PageInfo<Loan>(list, 5);
        model.addAttribute("loanPageInfo", pageInfo);
        model.addAttribute("loanList", list);

        model.addAttribute("activeUrl1", "loanActive");
        model.addAttribute("activeUrl2", "loanexamActive");
        model.addAttribute("pageTopBarInfo", "网贷审核界面");
        return "admin/loan/loanexam";
    }

    /**
     * 审核通过
     *
     * @param id
     * @return
     */
    @PutMapping("/loan/passApplyStatus/{id}")
    @ResponseBody
    public Msg passApplyStatus(@PathVariable("id") Integer id, HttpSession session) {
        Admin admin = (Admin) session.getAttribute("loginAdmin");
        Loan loan = loanService.selectLoanById(id);
        loan.setExamineid(admin.getId());
        loan.setApplystatus(2);
        Integer result = loanService.updateLoan(loan);
        if (result == 1) {
            Info info = new Info();
            info.setSendid(admin.getId());
            info.setReceiveid(loan.getLoanid());
            info.setCreatetime(new Date());
            info.setTitle("网贷审核通过");
            info.setInfodesc("用户" + loan.getUser().getUsername() + "的" + loan.getAmount() + "元网贷申请审核通过!审核人为:" + admin.getUsername());
            info.setStatus(0);
            infoService.insertInfo(info);
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 审核不通过
     *
     * @param id
     * @return
     */
    @PutMapping("/loan/notPassApplyStatus/{id}")
    @ResponseBody
    public Msg notPassApplyStatus(@PathVariable("id") Integer id, HttpSession session) {
        Admin admin = (Admin) session.getAttribute("loginAdmin");
        Loan loan = loanService.selectLoanById(id);
        loan.setExamineid(admin.getId());
        loan.setApplystatus(1);
        Integer result = loanService.updateLoan(loan);
        if (result == 1) {
            Info info = new Info();
            info.setSendid(admin.getId());
            info.setReceiveid(loan.getUser().getId());
            info.setCreatetime(new Date());
            info.setTitle("网贷审核未通过");
            info.setInfodesc("用户" + loan.getUser().getUsername() + "的" + loan.getAmount() + "元网贷申请审核未通过!审核人为:" + admin.getUsername());
            info.setStatus(0);
            infoService.insertInfo(info);
            return Msg.success();
        }
        return Msg.fail();
    }

    /**
     * 跳转到网贷信息界面(管理员)
     *
     * @param pageNum
     * @param pageSize
     * @param model
     * @param session
     * @return
     */
    @GetMapping("/admin/loan/toLoaninfo.html")
    public String toLoaninfo(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                             @RequestParam(value = "pageSize", defaultValue = "5") Integer pageSize,
                             Model model, HttpSession session) {
        // 引入PageHelper插件,在查询之前调用startPage方法,传入页码以及每页大小
        PageHelper.startPage(pageNum, pageSize);
        List<Loan> list = loanService.selectAllExamedLoan();
        // 使用PageInfo包装查询后的结果,并交给页面处理
        // PageInfo封装了详细的分页信息,包括我们查询出来的数据,还可以传入连续显示的页数(5)
        PageInfo<Loan> pageInfo = new PageInfo<Loan>(list, 5);
        model.addAttribute("loanPageInfo", pageInfo);
        model.addAttribute("loanList", list);

        model.addAttribute("activeUrl1", "loanActive");
        model.addAttribute("activeUrl2", "loaninfoActive");
        model.addAttribute("pageTopBarInfo", "网贷信息界面");
        return "admin/loan/loaninfo";
    }

    @PutMapping("/loan/remindPay/{id}")
    @ResponseBody
    public Msg remindPay(@PathVariable("id") Integer id, HttpSession session) {
        Admin admin = (Admin) session.getAttribute("loginAdmin");
        Loan loan = loanService.selectLoanById(id);
        Info info = new Info();
        info.setSendid(admin.getId());
        info.setReceiveid(loan.getUser().getId());
        info.setCreatetime(new Date());
        info.setTitle("还款通知");
        info.setInfodesc("用户" + loan.getUser().getUsername() + "申请的" + loan.getAmount() + "元网贷该还款了!该提醒发送人为:" + admin.getUsername());
        info.setStatus(0);
        Integer result = infoService.insertInfo(info);
        if (result == 1) {
            return Msg.success();
        }
        return Msg.fail();
    }
}

 如果也想学习本系统,下面领取。回复:013springboot