原创

基于SpringBoot2+vue2的可盈保险合同管理系统

温馨提示:
本文最后更新于 2026年06月03日,已超过 7 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 资源

放到文章后面

2. 项目简介

可盈保险合同管理系统旨在提供一个平台来管理保险合同及相关信息。系统支持两种角色:管理员和普通用户(业务人员)。

  • 管理员:可以对系统内的所有数据进行管理,包括用户信息、客户信息、保险合同、公告信息、留言反馈以及基础数据(如字典表)和系统配置(如轮播图)。管理员还可以回复用户的留言。
  • 用户(业务人员):可以管理自己名下的客户信息、创建和管理保险合同、浏览公告以及发表留言。

系统核心功能围绕“合同”管理展开,允许用户为特定客户创建合同,并记录合同的类型、金额、受益人、执行与到期日期等关键信息。同时,系统提供了公告发布和留言互动的功能,以增强信息传达。

3. 技术栈

  • 后端:
    • 基础框架: Spring Boot 2.2.2.RELEASE
    • 持久层: MyBatis-Plus 2.3, 配合MySQL数据库驱动。
    • 安全控制: Apache Shiro 1.3.2,用于权限和身份验证。
    • 工具库: Hutool, Apache Commons Lang3, Fastjson 1.2.8。
  • 前端:
    • 后台管理端: 基于Vue.js框架构建,使用了Element UI组件库,并通过ECharts实现图表展示。
    • 用户前端: 基于Layui框架,使用了jQuery,并集成Vue.js进行数据绑定。
  • 数据库:
    • MySQL 5.7.32-log
  • 其他:
    • 项目构建工具为Maven。
    • 通过Token进行身份验证。

4. 详细介绍

4.1. 系统核心功能模块

  • 用户管理:
    • 管理员可以管理系统用户(yonghu表),包括增、删、改、查。
    • 用户(业务人员)可以通过前台注册,也可以由管理员在后台创建。
    • 用户基本信息包括账户、密码、姓名、手机号、身份证号等。
  • 客户管理:
    • 用户可以为自己名下的投保人(客户)创建档案。
    • 客户信息包括姓名、手机号、身份证号、照片等,并与创建该客户的用户(业务人员)关联。
  • 合同管理:
    • 这是系统的核心功能。用户可以为已创建的客户生成保险合同(hetong表)。
    • 合同包含合同编号(系统生成)、类型(社会保险/商业保险)、长短类型(短期/长期)、保费、保额、受益人信息、合同介绍、执行日期、到期日期等。
    • 支持合同文件的附件上传。
    • 用户在合同管理模块拥有增、删、改、查以及报表查看的权限;管理员则拥有完整的管理权限。
  • 公告管理:
    • 管理员可以发布系统公告,公告支持分类(公告类型1/2),并可以上传图片。
    • 公告会展示在系统前端页面供所有用户查看。
  • 留言管理:
    • 用户可以在前台发表留言,提出疑问或建议。
    • 管理员可以在后台查看并回复这些留言。

4.2. 系统权限与安全

  • 系统采用基于Token的身份验证机制。用户登录成功后,服务器会返回一个Token,后续请求需在Header中携带此Token以验证身份。
  • 系统通过menu.js等配置文件定义了不同角色的菜单和权限按钮。例如,管理员拥有“新增”、“修改”、“删除”、“查看”等权限,而普通用户在某些模块(如合同管理)拥有更多操作权限,在某些模块(如公告)只有“查看”权限。
  • AuthorizationInterceptor拦截器负责验证Token的有效性。

4.3. 特色功能

  • 数据字典:系统使用dictionary表来管理常用的下拉选项(如性别、合同类型等),提高了数据的可维护性。
  • 图表统计:系统提供报表功能,可以通过后端通用接口(CommonController)生成柱状图、饼状图等统计图表,用于数据分析(例如合同按类型统计)。
  • 轮播图管理:管理员可以通过后台配置前端的轮播图片。

5. 部分代码

5.1. 后端:合同管理控制器(HetongController)- 分页查询

// 文件位置: ./baoxianhetong/src/main/java/com/controller/HetongController.java

package com.controller;

// ... 导入语句

@RestController
@Controller
@RequestMapping("/hetong")
public class HetongController {
    // ... 依赖注入

    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        // 日志记录
        logger.debug("page方法:,,Controller:{},,params:{}", this.getClass().getName(), JSONObject.toJSONString(params));

        // 获取当前用户角色,如果是“用户”,则只查询自己ID相关的合同
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("用户".equals(role))
            params.put("yonghuId", request.getSession().getAttribute("userId"));

        // 设置默认排序字段
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }

        // 执行分页查询
        PageUtils page = hetongService.queryPage(params);

        // 对查询结果进行字典表转换(例如将类型代码转换为实际文本)
        List<HetongView> list =(List<HetongView>)page.getList();
        for(HetongView c:list){
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }
}

5.2. 后端:登录与Token生成(YonghuController)- 用户登录

// 文件位置: ./baoxianhetong/src/main/java/com/controller/YonghuController.java

    /**
    * 登录
    */
    @IgnoreAuth // 该注解表示此方法不需要Token验证
    @RequestMapping(value = "/login")
    public R login(String username, String password, String captcha, HttpServletRequest request) {
        // 根据用户名查询用户
        YonghuEntity yonghu = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("username", username));
        // 校验账号和密码
        if(yonghu==null || !yonghu.getPassword().equals(password))
            return R.error("账号或密码不正确");

        // 生成Token
        String token = tokenService.generateToken(yonghu.getId(), username, "yonghu", "用户");
        R r = R.ok();
        // 将Token和用户信息存入返回结果
        r.put("token", token);
        r.put("role","用户");
        r.put("username", yonghu.getYonghuName());
        r.put("tableName","yonghu");
        r.put("userId", yonghu.getId());
        return r;
    }

5.3. 前端:管理端路由配置(router-static.js)

// 文件位置: ./baoxianhetong/src/main/resources/admin/admin/src/router/router-static.js

// ... 导入组件
import users from '@/views/modules/users/list'
import dictionary from '@/views/modules/dictionary/list'
import gonggao from '@/views/modules/gonggao/list'
import hetong from '@/views/modules/hetong/list'
import kehu from '@/views/modules/kehu/list'
import liuyan from '@/views/modules/liuyan/list'
import yonghu from '@/views/modules/yonghu/list'
// ... 其他路由

//2.配置路由
const routes = [{
    path: '/index',
    name: '首页',
    component: Index,
    children: [{
        path: '/',
        name: '首页',
        component: Home,
    }, {
        path: '/users',
        name: '管理信息',
        component: users
    }, {
        path: '/hetong',
        name: '合同',
        component: hetong
    }, {
        path: '/kehu',
        name: '客户',
        component: kehu
    // ... 其他子路由
    }]
  },
  // ... 登录等其他路由
]

export default router;

6. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24

7. 项目总结

“可盈保险合同管理系统”是一个功能较为完整、结构清晰的业务管理系统。从前端展示到后端业务逻辑,再到数据库设计,都体现了一个标准Web应用的特征。

  1. 业务逻辑清晰:项目围绕“用户(业务员)-客户(投保人)-合同”的核心业务线展开,逻辑关系明确,符合保险代理或客户管理领域的基础业务流程。
  2. 技术栈实用:该项目采用经典的Spring Boot + MyBatis-Plus + MySQL技术栈,稳定且开发效率高。前端分为面向管理员的Vue.js SPA应用和面向普通访客的Layui多页面应用,技术选型区分了不同的使用场景。
  3. 权限模型基础:通过角色(管理员/用户)和基于Token的认证实现了基础的权限控制,并通过前端菜单配置实现了功能的差异化展示。
  4. 可扩展性:系统设计了数据字典,方便扩展和维护下拉选项。通用控制器(CommonController)提供了多种图表统计接口,为后续数据分析和仪表盘功能的增强提供了基础。
  5. 代码结构规范:代码遵循了MVC分层架构(Controller, Service, DAO, Entity),各层职责清晰,便于维护和理解。同时使用了日志记录(Logger),有助于问题追踪。

总体而言,该项目可以作为中小型企业客户与合同管理系统的良好起点或参考实现,具备上线运行和二次开发的基础。

代码: https://fifteen.xiaobias.com/source/154

正文到此结束
本文目录