【开源】基于SpringBoot的车险自助理赔系统的设计和实现

news/2024/7/10 21:41:19 标签: 开源, spring boot, 后端, java, spring, vue.js

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 角色管理模块
    • 2.3 车辆档案模块
    • 2.4 车辆理赔模块
    • 2.5 理赔照片模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 角色表
      • 3.2.2 车辆表
      • 3.2.3 理赔表
      • 3.2.4 理赔照片表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询车辆档案
    • 5.2 申请车辆理赔
    • 5.3 上传理赔照片
    • 5.4 小程序登录
    • 5.5 修改个人昵称
  • 六、免责说明


一、摘要

1.1 项目介绍

基于Vue+SpringBoot+MySQL 的车险自助理赔系统包含车辆管理模块、车险理赔模块、理赔审核模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,车险自助理赔系统基于角色的访问控制,给车险管理员、用户、理赔专员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

项目编号: S 018 ,源码已在 B i l i b i l i 中上架,需要的朋友请自行下载。 \color{red}{项目编号:S018,源码已在 Bilibili 中上架,需要的朋友请自行下载。} 项目编号:S018,源码已在Bilibili中上架,需要的朋友请自行下载。

java">https://gf.bilibili.com/item/detail/1104012029

为了帮助小白入门 Java,博主录制了本项目配套的《项目手把手启动教程》,希望能给同学们带来帮助。

1.2 项目录屏


二、功能模块

车险自助理赔系统的功能性需求主要包含数据中心模块、角色管理模块、车辆档案模块、车辆理赔模块这五大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下:

2.1 数据中心模块

数据中心模块包含了车险自助理赔系统的系统基础配置,如登录用户的管理、运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。
其中登录用户管理模块,由管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。
组织架构,指的是运营公司的组织架构,该模块适用于管理这些组织架构的部门层级和员工的部门归属情况。
用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。
系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。
公用云盘管理模块,用于统一化维护车险自助理赔系统中的图片,如理赔单照片、车辆照片等等。

2.2 角色管理模块

车险自助理赔系统是给多个角色使用的,车主和理赔管理员拥有着不同的菜单权限,所以需要建立角色管理模块。其中角色的字段包括角色名称、状态、排序值、备注、创建人、创建时间、更新人、更新时间等,管理员可以新增、删除、修改、条件查询角色,用户查询管理员发布的角色数据。

2.3 车辆档案模块

车辆是车险自助理赔系统的核心,有了车辆才可以申请理赔,所以需要对车辆的档案进程维护,车辆信息包括归属人、联系电话、车牌号、车辆照片、品牌、保险状态、创建人、创建时间等,车主可以申请添加自己名下的车辆,管理员可以对车辆信息进行添加、删除、编辑和条件查询操作。

2.4 车辆理赔模块

车辆理赔模块用于车主对自己车辆的理赔事宜进行申请和维护。车辆理赔的字段包括车辆、归属人、联系电话、车牌号、车辆照片、品牌、理赔事由、审核状态等,车主可以发起车辆理赔申请,管理员可以对车主发起的理赔申请进行审核操作。

2.5 理赔照片模块

为了更好的表达车辆理赔的情况,设计了理赔照片模块,车主可以根据需要上传理赔的照片,更好的说明理赔的情况,理赔照片的字段包括理赔单、照片、上传时间、上传、备注、排序值、更新时间、更新人,车主可以上传理赔照片,并挂靠到某个车辆理赔单上,管理员可以根据理赔单查询理赔的照片数据。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 角色表

在这里插入图片描述

3.2.2 车辆表

在这里插入图片描述

3.2.3 理赔表

在这里插入图片描述

3.2.4 理赔照片表

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询车辆档案

java">@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询车辆")
public Result<IPage<Vehicle>> getByPage(@ModelAttribute Vehicle vehicle ,@ModelAttribute PageVo page){
    QueryWrapper<Vehicle> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(vehicle.getUserName())) {
        qw.like("user_name",vehicle.getUserName());
    }
    if(!ZwzNullUtils.isNull(vehicle.getCarNumber())) {
        qw.like("car_number",vehicle.getCarNumber());
    }
    if(!ZwzNullUtils.isNull(vehicle.getStatus())) {
        qw.like("status",vehicle.getStatus());
    }
    IPage<Vehicle> data = iVehicleService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Vehicle>>().setData(data);
}

5.2 申请车辆理赔

java">@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "小程序申请理赔")
public Result<Object> addOne(@RequestParam String carId,@RequestParam String reason,@RequestParam String money,@RequestParam String image){
    Vehicle v = iVehicleService.getById(carId);
    if(v == null) {
        return ResultUtil.error("车辆不存在");
    }
    VehicleClaim vc = new VehicleClaim();
    vc.setVehicleId(v.getId());
    vc.setUserId(v.getUserId());
    vc.setUserName(v.getUserName());
    vc.setMobile(v.getMobile());
    vc.setCarNumber(v.getCarNumber());
    vc.setImage(v.getImage());
    vc.setBrand(v.getBrand());
    vc.setClaimReason(reason);
    vc.setClaimTime1(DateUtil.now());
    vc.setClaimTime2("");
    vc.setClaimStatus("未审核");
    vc.setClaimUser("");
    try {
        vc.setClaimMoney(BigDecimal.valueOf(Long.parseLong(money)));
    } catch (Exception e) {
        vc.setClaimMoney(BigDecimal.ZERO);
    }
    iVehicleClaimService.saveOrUpdate(vc);
    User currUser = securityUtil.getCurrUser();
    String[] imageList = image.split(",");
    for (String vo : imageList) {
        VehicleImage vi = new VehicleImage();
        vi.setClaimId(vc.getId());
        vi.setImage(vo);
        vi.setUploadTime(DateUtil.now());
        vi.setUploadUser(currUser.getNickname());
        iVehicleImageService.saveOrUpdate(vi);
    }
    return ResultUtil.success();
}

5.3 上传理赔照片

java">@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增照片")
public Result<VehicleImage> addOne(@RequestParam String id,@RequestParam String image){
    User currUser = securityUtil.getCurrUser();
    String[] imageList = image.split(",");
    for (String vo : imageList) {
        VehicleImage vi = new VehicleImage();
        vi.setClaimId(id);
        vi.setImage(vo);
        vi.setUploadTime(DateUtil.now());
        vi.setUploadUser(currUser.getNickname());
        iVehicleImageService.saveOrUpdate(vi);
    }
    return ResultUtil.success();
}

5.4 小程序登录

java">@RequestMapping(value = "/loginOnWeb", method = RequestMethod.GET)
@ApiOperation(value = "小程序登陆")
public Result<String> loginOnWeb(@RequestParam String userName, @RequestParam String password){
    QueryWrapper<User> qw = new QueryWrapper<>();
    qw.eq("username",userName);
    List<User> userList = iUserService.list(qw);
    if(userList.size() < 1) {
        User u = new User();
        u.setUsername(userName);
        u.setNickname(userName);
        u.setMobile(userName);
        u.setEmail(u.getMobile() + "@qq.com");
        String encryptPass = new BCryptPasswordEncoder().encode(password);
        u.setPassword(encryptPass).setType(0);
        iUserService.saveOrUpdate(u);
        QueryWrapper<Role> roleQw = new QueryWrapper<>();
        roleQw.eq("default_role",true);
        List<Role> roleList = iRoleService.list(roleQw);
        if(roleList.size() > 0){
            for(Role role : roleList) {
                iUserRoleService.saveOrUpdate(new UserRole().setUserId(u.getId()).setRoleId(role.getId()));
            }
        }
        String accessToken = securityUtil.getToken(u.getUsername(), true);
        UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(new SecurityUserDetails(u), null, null);
        SecurityContextHolder.getContext().setAuthentication(authentication);
        return new ResultUtil<String>().setData(accessToken);
    }
    User user = userList.get(0);
    if(!new BCryptPasswordEncoder().matches(password, user.getPassword())){
        return ResultUtil.error("密码不正确");
    }
    String accessToken = securityUtil.getToken(user.getUsername(), true);
    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(new SecurityUserDetails(user), null, null);
    SecurityContextHolder.getContext().setAuthentication(authentication);
    return new ResultUtil<String>().setData(accessToken);
}

5.5 修改个人昵称

java">@RequestMapping(value = "/changeName", method = RequestMethod.GET)
@ApiOperation(value = "修改昵称")
public Result<User> changeName(@RequestParam String nickname){
    User user = iUserService.getById(securityUtil.getCurrUser().getId());
    if(user == null) {
        return ResultUtil.error("用户不存在");
    }
    user.setNickname(nickname);
    iUserService.saveOrUpdate(user);
    return new ResultUtil<User>().setData(user);
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

http://www.niftyadmin.cn/n/5129257.html

相关文章

Dataworks API:调取 MC 项目下所有表单

文章目录 前言Dataworks API 文档解读GetMetaDBTableList 接口文档 API 调试在线调试本地调试运行环境账密问题请求数据进一步处理 小结 前言 最近&#xff0c;我需要对公司的数据资产进行梳理&#xff0c;这其中便包括了Dataworks各个项目下的表单。这些表单&#xff0c;作为…

Python---continue关键字对while...else结构的影响(只是跳过某次,之后继续正常结束,执行else)

回顾&#xff1a; 在Python循环中&#xff0c;经常会遇到两个常见的关键词&#xff1a;break 与 continue break&#xff1a;代表终止整个循环结构 continue&#xff1a;代表中止当前本次循环&#xff0c;继续下一次循环 break&#xff1a; 英 /breɪk/ v. 打破&#xff…

视频转换器WinX HD Video Converter mac中文特点介绍

WinX HD Video Converter mac是一款功能强大的视频转换器&#xff0c;它可以将各种不同格式的视频文件转换为其他视频格式&#xff0c;以便用户在各种设备上进行播放。WinX HD Video Converter是一个功能强大、易于使用的视频转换器&#xff0c;适用于各种类型的用户&#xff0…

Delft3D水动力-富营养化模型实践技术高级应用

湖泊富营养化等水质问题严重威胁我国经济社会的发展&#xff0c;也是水环境和水生态领域科研热点之一。水环境模型是制定湖泊富营养化控制对策&#xff0c;预测湖泊水环境发展轨迹的重要工具&#xff0c;在环境影响评价、排污口论证等方面也有着广泛的应用。荷兰Delft研究所开发…

Vue中this指向问题

文章目录 1 由Vue管理的函数2 不被Vue管理的函数3 总结 1 由Vue管理的函数 computed 计算属性watch 监视属性filters (Vue3中已弃用且不再支持) 过滤器methods 上述属性里配置的函数this指向Vue实例&#xff0c;不要采用箭头函数写法&#xff0c;因为箭头函数没有自己的this对…

损失函数和目标函数|知识补充

这张图中&#xff0c;横坐标size表示房屋的大小&#xff0c;纵坐标price表示房屋的价格&#xff0c;现在需要建立模型来表示两者之间的关系。 对于给定的输入x&#xff0c;模型会有一个输出f(x)&#xff0c;用一个函数来度量拟合的程度&#xff0c;也就是真实值和预测值之间的…

记一次任意文件下载到Getshell

任意文件下载&#xff08;Arbitrary File Download&#xff09;是一种常见的 Web 攻击技术&#xff0c;用于窃取服务器上任意文件的内容。攻击者利用应用程序中的漏洞&#xff0c;通过构造恶意请求&#xff0c;使应用程序将任意文件&#xff08;如配置文件、敏感数据等&#xf…

【Docker】github Actions自动构建

通过github的Actions 实现代码push仓库后自动构建容器并发布到DockerHub. 创建项目 首先我们创建一个项目,这里我就用Vue项目进行演示. npm init vuelatest Actions-demo-swback进去项目&#xff0c;按照提示执行 npm install npm run dev 启动项目. 首先保证项目的正常启动…