毕业设计——基于springboot+vue前后端分离架构一卡通消费系统,支持人脸、刷码、实体卡

完整项目源码可以私信

一卡通消费系统,支持人脸、刷码、实体卡。

应用场景

可广泛应用于智慧校园、智慧园区、企事业单位食堂、门禁、门禁、考勤、就餐、消费、停车场出入,巡逻签到、会议签到,电梯使用等场景。系统采用模块化、软硬件分离、前后端分离设计,极大地方便了一卡通系统扩展、升级。

技术选型


  • 系统环境

Java EE 8 Servlet 3.0 Apache Maven 3

  • 主框架

Spring Boot 2.1 Spring Framework 5.1 Spring Security 5.1

  • 持久层

Apache MyBatis 3.4 Hibernate Validation 6.0 Alibaba Druid 1.1

  • 视图层

Vue 2.6 Axios 0.18 Element UI 2.11

  • 移动端

Uniapp

  • 数据库

Mysql 5.7

  • 缓存

redis 4.0

界面展示

内置功能

  • 账户管理:充值、补贴、冻结、解冻
  • 卡管理:挂失、解挂、补卡、注销
  • 商户管理:商户、设备、报表
  • 交易管理:消费记录、补贴记录、充值记录、交易渠道
  • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  • 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  • 岗位管理:配置系统用户所属担任职务。
  • 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  • 参数设置:对系统中常用参数进行动态配置。
  • 通知公告:系统通知公告信息发布维护。
  • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  • 登录日志:系统登录日志记录查询包含登录异常。
  • 在线用户:当前系统中活跃用户状态监控。
  • 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  • 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  • 系统接口:根据业务代码自动生成相关的api接口文档。
  • 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  • 在线构建器:拖动表单元素生成相应的HTML代码。
  • 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

部分代码:

package com.huohuzhihui.web.controller.account;

import java.util.List;

import com.huohuzhihui.common.constant.CardConstants;
import com.huohuzhihui.common.constant.UserConstants;
import com.huohuzhihui.common.core.domain.entity.Card;
import com.huohuzhihui.common.utils.SecurityUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.huohuzhihui.common.annotation.Log;
import com.huohuzhihui.common.core.controller.BaseController;
import com.huohuzhihui.common.core.domain.AjaxResult;
import com.huohuzhihui.common.enums.BusinessType;
import com.huohuzhihui.account.service.IAccCardService;
import com.huohuzhihui.common.utils.poi.ExcelUtil;
import com.huohuzhihui.common.core.page.TableDataInfo;

/**
 * 账户下的卡Controller
 * 
 * @author zylu
 * @date 2020-11-14
 */
@RestController
@RequestMapping("/account/card")
public class AccCardController extends BaseController
{
    @Autowired
    private IAccCardService accCardService;

    /**
     * 查询账户下的卡列表
     */
    @PreAuthorize("@ss.hasPermi('account:card:list')")
    @GetMapping("/list")
    public TableDataInfo list(Card accCard)
    {
        startPage();
        List<Card> list = accCardService.selectAccCardList(accCard);
        return getDataTable(list);
    }

    /**
     * 导出账户下的卡列表
     */
    @PreAuthorize("@ss.hasPermi('account:card:export')")
    @Log(title = "账户下的卡", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(Card accCard)
    {
        List<Card> list = accCardService.selectAccCardList(accCard);
        ExcelUtil<Card> util = new ExcelUtil<Card>(Card.class);
        return util.exportExcel(list, "card");
    }

    /**
     * 获取账户下的卡详细信息
     */
    @PreAuthorize("@ss.hasPermi('account:card:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return AjaxResult.success(accCardService.selectAccCardById(id));
    }

    /**
     * 新增账户下的卡
     */
    @PreAuthorize("@ss.hasPermi('account:card:add')")
    @Log(title = "开卡", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody Card accCard)
    {
        if (CardConstants.NOT_UNIQUE.equals(accCardService.checkCardNoUnique(accCard.getCardNo())))
        {
            return AjaxResult.error("开卡失败,卡号'"+accCard.getCardNo()+"'已存在");
        }
        accCard.setCreateBy(SecurityUtils.getUsername());
        return toAjax(accCardService.insertAccCard(accCard));
    }

    /**
     * 修改账户下的卡
     */
    @PreAuthorize("@ss.hasPermi('account:card:edit')")
    @Log(title = "编辑卡", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody Card accCard)
    {
        accCard.setUpdateBy(SecurityUtils.getUsername());
        return toAjax(accCardService.updateAccCard(accCard));
    }

    /**
     * 删除账户下的卡
     */
    @PreAuthorize("@ss.hasPermi('account:card:remove')")
    @Log(title = "账户下的卡", businessType = BusinessType.DELETE)
	@DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(accCardService.deleteAccCardByIds(ids));
    }


    /**
     * 补卡
     * @param accCard 卡对象
     * @return
     */
    @PreAuthorize("@ss.hasPermi('account:card:replace')")
    @Log(title = "补卡", businessType = BusinessType.INSERT)
    @PostMapping(value = "/replace")
    @ResponseBody
    public AjaxResult replace(@RequestBody Card accCard)
    {
        if (CardConstants.NOT_UNIQUE.equals(accCardService.checkCardNoUnique(accCard.getCardNo())))
        {
            return AjaxResult.error("补卡失败,卡号'"+accCard.getCardNo()+"'已存在");
        }
        accCard.setUpdateBy(SecurityUtils.getUsername());
        return toAjax(accCardService.replaceAccCard(accCard));
    }


    /**
     * 批量挂失卡
     * @param ids 卡ID集合
     * @return
     */
    @PreAuthorize("@ss.hasPermi('account:card:loss')")
    @Log(title = "挂失卡", businessType = BusinessType.UPDATE)
    @PostMapping(value = "/loss")
    @ResponseBody
    public AjaxResult loss( Long[] ids)
    {
        return toAjax(accCardService.lossAccCardByIds(ids));
    }

    /**
     * 批量解挂卡
     * @param ids 卡ID集合
     * @return
     */
    @PreAuthorize("@ss.hasPermi('account:card:unloss')")
    @Log(title = "解挂卡", businessType = BusinessType.UPDATE)
    @PostMapping(value = "/unloss")
    @ResponseBody
    public AjaxResult unloss( Long[] ids)
    {
        return toAjax(accCardService.unlossAccCardByIds(ids));
    }

    /**
     * 批量注销卡
     * @param ids 卡ID集合
     * @return
     */
    @PreAuthorize("@ss.hasPermi('account:card:cancel')")
    @Log(title = "注销卡", businessType = BusinessType.UPDATE)
    @PostMapping(value = "/cancel")
    @ResponseBody
    public AjaxResult cancel( Long[] ids)
    {
        return toAjax(accCardService.cancelAccCardByIds(ids));
    }
}

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

毕业小助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值