国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

這篇具有很好參考價(jià)值的文章主要介紹了基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

今天給大家開(kāi)源一個(gè)基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng),系統(tǒng)基于腳手架工程,花了大概1周時(shí)間做出來(lái)的。

該系統(tǒng)完全開(kāi)源。

系統(tǒng)完美運(yùn)行,無(wú)任何的bug,技術(shù)較多,可以當(dāng)做
面試的項(xiàng)目或者作為畢設(shè)的項(xiàng)目。

通過(guò)本項(xiàng)目你可以學(xué)到:

  • 項(xiàng)目是怎樣前后端分離的
  • vue 是如何用于后臺(tái)管理的
  • 如何用MyBaitsPlus 代碼生成器生成代碼的
  • 單表增刪改查(包括分頁(yè)模糊查詢)
  • 批量刪除
  • 基于RBAC的權(quán)限管理是如何設(shè)計(jì)的
  • 菜單管理又是如何實(shí)現(xiàn)的
  • 文件上傳的實(shí)現(xiàn)
  • 導(dǎo)入導(dǎo)出
  • 主從表的數(shù)據(jù)是如何在前端呈現(xiàn)的

獲取源碼的方式見(jiàn)文章底部。

為防止刷著刷著找不到,大家點(diǎn)贊、收藏文章。

具體的介紹如下所示。

1.技術(shù)介紹

核心技術(shù):SpringBoot+MyBatis-Plus;

前端:vue+elementui;

開(kāi)發(fā)工具:Idea,VS Code, Git;

數(shù)據(jù)庫(kù):mysql5.7;

2.系統(tǒng)設(shè)計(jì)

本系統(tǒng)考慮的應(yīng)用場(chǎng)景是在寵物店或?qū)櫸镝t(yī)院里, 主要有預(yù)約管理、藥品管理、訂單管理、充值管理等功能。

主要分了用戶、醫(yī)生和管理員三個(gè)角色。每個(gè)角色登錄系統(tǒng)會(huì)有不同的菜單功能呈現(xiàn),頁(yè)面中不同的角色有不同的權(quán)限。各角色可訪問(wèn)的菜單都由管理員進(jìn)行配置。

2.1系統(tǒng)功能設(shè)計(jì)

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

2.2預(yù)約流程

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

2.3就診流程

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

2.4商品流程

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

2.5充值流程

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

3.功能介紹

3.1登錄或注冊(cè)

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】
沒(méi)有賬號(hào)可以注冊(cè)賬號(hào),當(dāng)前只開(kāi)放 普通用戶的注冊(cè)。對(duì)于醫(yī)生和管理員的注冊(cè),由系統(tǒng)管理員在管理段注冊(cè)。(默認(rèn)管理員的賬號(hào)和密碼都是 admin)

登錄之后,后臺(tái)會(huì)菜單和權(quán)限的配置生成相應(yīng)數(shù)據(jù)告知前端,前端進(jìn)入相應(yīng)的模塊。

4.用戶端

4.1就診預(yù)約

用戶可以查看所有醫(yī)生信息,并根據(jù)寵物病情選擇預(yù)約對(duì)應(yīng)的醫(yī)生預(yù)約排隊(duì)(即添加預(yù)約信息)。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

4.2預(yù)約管理

用戶查看自己的預(yù)約信息,查看預(yù)約審核狀態(tài);并實(shí)現(xiàn)預(yù)約信息的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

4.3藥品管理

用戶可以查詢治療寵物需要用到的所有藥品或食品,針對(duì)自己寵物需要用到的商品可以進(jìn)行訂購(gòu)(不能對(duì)商品實(shí)現(xiàn)添加,修改,刪除功能)。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

4.4訂單管理

用戶可以查看自己的所有商品訂單,并實(shí)現(xiàn)修改,刪除,查詢功能,針未支付的訂單可以進(jìn)行支付,收到商品以后進(jìn)行確認(rèn)收貨。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

4.5充值中心

用戶針對(duì)自己的賬戶進(jìn)行余額充值。每筆充值記錄及消費(fèi)記錄都可查詢到。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

4.6個(gè)人中心

用戶可以查看自己的個(gè)人信息,并實(shí)現(xiàn)修改功能(例如:修改賬號(hào),密碼等)。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

5.醫(yī)生端

醫(yī)生的注冊(cè)目前只能由管理員在管理員端進(jìn)行注冊(cè),暫不開(kāi)放自己注冊(cè)。

5.1預(yù)約管理

醫(yī)生可以查詢預(yù)約了自己的所有預(yù)約信息,實(shí)現(xiàn)預(yù)約信息的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

5.2診斷管理

針對(duì)每一個(gè)自己診斷的寵物進(jìn)行記錄,方便下次診斷時(shí)查詢,實(shí)現(xiàn)就診記錄的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

5.3.個(gè)人中心

醫(yī)生可以查看自己的個(gè)人信息,并實(shí)現(xiàn)修改功能(例如:修改賬號(hào),密碼等)。
(截圖可參見(jiàn)前面用戶端的)

6.管理員端

6.1.用戶管理

查詢所有普通用戶信息,實(shí)現(xiàn)普通用戶的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

6.2.醫(yī)生管理

查詢所有醫(yī)生信息,實(shí)現(xiàn)醫(yī)生的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

6.3.藥品管理

查詢所有治療寵物的藥品或食品信息,實(shí)現(xiàn)商品的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

6.4.訂單管理

查詢用戶的所有訂單,針對(duì)已經(jīng)付款的訂單進(jìn)行發(fā)貨處理,針對(duì)已經(jīng)完成的訂單,以及未支付的訂單可以進(jìn)行刪除處理,不能修改用戶訂單。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

6.5.科室管理

查詢科室信息,實(shí)現(xiàn)科室的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

6.6.寵物種類(lèi)管理

查詢寵物種類(lèi)信息,實(shí)現(xiàn)科室的添加,修改,刪除,查詢功能。
基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

6.7.個(gè)人中心

管理員查詢自己的個(gè)人信息,并可以實(shí)現(xiàn)修改功能(例如:修改賬號(hào),密碼等)。
(截圖可參見(jiàn)前面用戶端的)

7.核心代碼

/**
 * <p>
 *  訂單管理控制器
 * </p>
 *
 * @author 
 * @since 2023-04-24
 */
@RestController
@RequestMapping("/order")
public class OrderController {

    @Resource
    private IOrderBaseService orderBaseService;

    @Resource
    private IOrderItemService orderItemService;

    @Resource
    private IDrugService drugService;

    @Resource
    private IUserService userService;

    private final String now = DateUtil.now();

    // 新增或者更新
    @PostMapping
    public Result save(@RequestBody OrderDTO orderDTO) {
        if (orderDTO.getItems() == null || orderDTO.getItems().size()<1) {
            return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤.訂單缺少項(xiàng)目信息");
        }

        if (StringUtils.isEmpty(orderDTO.getReceiverPhone())) {
            return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤.請(qǐng)?zhí)峁┦肇浫穗娫?);
        }

        if (StringUtils.isEmpty(orderDTO.getReceiverAddress())) {
            return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤.請(qǐng)?zhí)峁┦肇浫说刂?);
        }

        //判斷用戶是否存在
        QueryWrapper<User> queryWrapperCustom = new QueryWrapper<>();
        queryWrapperCustom.eq("username", orderDTO.getUserName());
        queryWrapperCustom.eq("role", RoleEnum.ROLE_USER.toString());
        User findUser = userService.getOne(queryWrapperCustom);
        if (null == findUser) {
            return Result.error(Constants.CODE_404, "用戶不存在");
        }

        if (orderDTO.getRemark() == null) {
            orderDTO.setRemark("");
        }

        BigDecimal totalAmount = new BigDecimal(0);

        OrderBase orderBase = new OrderBase();

        orderBase.setStatus(OrderBase.OrderStatus.UN_PAY);

        orderBase.setPayMode(OrderBase.PayMode.UNKNOWN);
        orderBase.setPayVoucherNo("");

        orderBase.setUserId(findUser.getId());
        orderBase.setUserName(findUser.getUsername());
        orderBase.setReceiverPhone(orderDTO.getReceiverPhone());
        orderBase.setReceiverAddress(orderDTO.getReceiverAddress());
        orderBase.setRemark(orderDTO.getRemark());

        long oid = 0;
        if (orderDTO.getId() == null) {
            //添加操作
            OrderIdGenerator orderIdGenerator = new OrderIdGenerator();
            oid = orderIdGenerator.nextId(this);
            orderDTO.setId(oid);

            User currentUser = TokenUtils.getCurrentUser();
            orderBase.setCreateName(currentUser.getUsername());
            orderBase.setCreateBy(String.valueOf(currentUser.getId()));
            orderBase.setCreateRole(currentUser.getRole());
            orderBase.setCreateTime(new Date());

        }else {
            //更新操作
            oid = orderDTO.getId();

            //找出原訂單信息
            OrderBase oldOrder = orderBaseService.getById(oid);
            if (null == oldOrder) {
                return Result.error(Constants.CODE_404, "訂單記錄不存在.id=" + oid);
            }

            //只有待支付狀態(tài)的訂單才 可以 修改
            if (oldOrder.getStatus() != OrderBase.OrderStatus.UN_PAY) {
                return Result.error(Constants.CODE_600, "只有待支付狀態(tài)的訂單才可以修改 .id=" + oid);
            }

            orderBase.setCreateName(oldOrder.getCreateName());
            orderBase.setCreateBy(oldOrder.getCreateBy());
            orderBase.setCreateRole(oldOrder.getCreateRole());
            orderBase.setCreateTime(oldOrder.getCreateTime());

            //刪除原來(lái)項(xiàng)目 表的內(nèi)容
            orderItemService.delByOrderId(oid);
        }

        //先保存項(xiàng)目表
        int seq = 0;
        String orderOverview = "" ; // 訂單項(xiàng)目簡(jiǎn)要
        for (OrderItem orderItem: orderDTO.getItems() ) {
            orderItem.setOrderId(oid);

            //處理 序號(hào)
            seq++;
            orderItem.setSeq(seq);

            if (orderItem.getItemId() == null ) {
                return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤. 訂單項(xiàng)目id為Null");
            };

            if (orderItem.getQty() == null ) {
                return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤. 訂單項(xiàng)目數(shù)量為Null");
            }

            if (orderItem.getQty() <= 0 ) {
                return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤. 訂單項(xiàng)目數(shù)量必須大于0");
            }

            //數(shù)據(jù)庫(kù)中查找商品是否存在
            Drug drug = drugService.getById(orderItem.getItemId());
            if (null == drug) {
                return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤. 商品不存在. 項(xiàng)目id=" + orderItem.getItemId());
            }
            orderItem.setPrice(drug.getRetailPrice());
            orderItem.setName(drug.getName() + " " + drug.getProductName());
            orderItem.setUnit(drug.getUnit());

            orderOverview += "|";
            orderOverview += orderItem.getName();

            //計(jì)算合計(jì)
            totalAmount = totalAmount.add(orderItem.getPrice().multiply(new BigDecimal(orderItem.getQty())));

            if (!orderItemService.save(orderItem)) {
                return Result.error(Constants.CODE_600, "業(yè)務(wù)異常.無(wú)法保存某訂單的項(xiàng)目.項(xiàng)目id=" + orderItem.getItemId());
            };
        }

        orderOverview += "|";
        if (orderOverview.length()>128) {
            orderOverview = orderOverview.substring(0,127);
        }
        orderBase.setId(oid);
        orderBase.setOverview(orderOverview);
        orderBase.setAmount(totalAmount);

        //再保存主表的
        if (orderBaseService.saveOrUpdate(orderBase)) {
            return Result.success();
        }else {
            return Result.error(Constants.CODE_600, "業(yè)務(wù)異常.保存訂單主表失敗" );
        }


    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Long id) {

        OrderBase orderBase = orderBaseService.getById(id);
        if (null == orderBase ){
            return Result.error(Constants.CODE_404, "訂單不存在. 訂單id=" + id );
        }

        //只能刪除未支付或已簽收的訂單
        if (orderBase.getStatus()==OrderBase.OrderStatus.UN_PAY ||
                orderBase.getStatus()==OrderBase.OrderStatus.SIGN ) {
            ;
        }else {
            return Result.error(Constants.CODE_600, "無(wú)效訂單狀態(tài).只能刪除未支付或已簽收的訂單");
        }


        //先刪除項(xiàng)目表的記錄
        orderItemService.delByOrderId(id);
        orderBaseService.removeById(id);
        return Result.success();
    }

    @PostMapping("/del/batch")
    public Result deleteBatch(@RequestBody List<Long> ids) {
        //先刪除項(xiàng)目表的記錄
        for (Long id: ids) {
            orderItemService.delByOrderId(id);
        }
        orderBaseService.removeByIds(ids);
        return Result.success();
    }

    @GetMapping
    public Result findAll() {
        return Result.success(orderBaseService.list());
    }

    @GetMapping("/{id}")
    public Result findOne(@PathVariable Long id) {
        return Result.success(orderBaseService.getById(id));
    }

    @GetMapping("/page")
    public Result findPage(@RequestParam(defaultValue = "") String userName,
                           @RequestParam Integer pageNum,
                           @RequestParam Integer pageSize) {
        QueryWrapper<OrderBase> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("create_time");
        if (!"".equals(userName)) {
            queryWrapper.like("user_name", userName);
        }

        User currentUser = TokenUtils.getCurrentUser();
        if (currentUser.getRole().equals(RoleEnum.ROLE_USER.toString())) {
            //普通用戶只能查看自己的預(yù)約記錄
            queryWrapper.eq("user_id", currentUser.getId());
        }

        Object object = orderBaseService.page(new Page<>(pageNum, pageSize), queryWrapper);
        return Result.success(object);
        //return Result.success(orderBaseService.page(new Page<>(pageNum, pageSize), queryWrapper));
    }

    @GetMapping("/items/{id}")
    public Result findOrderItems(@PathVariable Long id) {
        //查找訂單項(xiàng)目列表
        QueryWrapper<OrderItem> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("seq");
        queryWrapper.eq("order_id", id);

        return Result.success(orderItemService.list(queryWrapper));
    }

    /**
    * 導(dǎo)出接口
    */
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws Exception {
        // 從數(shù)據(jù)庫(kù)查詢出所有的數(shù)據(jù)
        List<OrderBase> list = orderBaseService.list();
        // 在內(nèi)存操作,寫(xiě)出到瀏覽器
        ExcelWriter writer = ExcelUtil.getWriter(true);

        // 一次性寫(xiě)出list內(nèi)的對(duì)象到excel,使用默認(rèn)樣式,強(qiáng)制輸出標(biāo)題
        writer.write(list, true);

        // 設(shè)置瀏覽器響應(yīng)的格式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        String fileName = URLEncoder.encode("OrderBase信息表", "UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");

        ServletOutputStream out = response.getOutputStream();
        writer.flush(out, true);
        out.close();
        writer.close();

        }

    /**
     * excel 導(dǎo)入
     * @param file
     * @throws Exception
     */
    @PostMapping("/import")
    public Result imp(MultipartFile file) throws Exception {
        InputStream inputStream = file.getInputStream();
        ExcelReader reader = ExcelUtil.getReader(inputStream);
        // 通過(guò) javabean的方式讀取Excel內(nèi)的對(duì)象,但是要求表頭必須是英文,跟javabean的屬性要對(duì)應(yīng)起來(lái)
        List<OrderBase> list = reader.readAll(OrderBase.class);

        orderBaseService.saveBatch(list);
        return Result.success();
    }

    @PostMapping("/delivery/{id}")
    public Result delivery(@PathVariable Long id) {
        //發(fā)貨

        //判斷訂單是否存在
        OrderBase orderBase = orderBaseService.getById(id);
        if (null == orderBase) {
            return Result.error(Constants.CODE_404, "訂單不存在.訂單id=" + id);
        }

        //判斷訂單是否已經(jīng)支付
        if (orderBase.getStatus() == OrderBase.OrderStatus.PAYED){

        }else {
            return Result.error(Constants.CODE_600, "訂單不是已支付狀態(tài), 不允許發(fā)貨.");
        }

        if (orderBaseService.updateDeliveryInfo(id, OrderBase.OrderStatus.DELIVERED, new Date()) >0) {
            return Result.success(orderBaseService.getById(id));
        }else {
            return Result.error(Constants.CODE_600, "業(yè)務(wù)異常.更新訂單發(fā)貨信息失敗" );
        }

    }

    @PostMapping("/sign/{id}")
    public Result sign(@PathVariable Long id) {
        //簽收,
        //判斷訂單是否存在
        OrderBase orderBase = orderBaseService.getById(id);
        if (null == orderBase) {
            return Result.error(Constants.CODE_404, "訂單不存在.訂單id=" + id);
        }

        //判斷訂單是否已經(jīng)支付
        if (orderBase.getStatus() == OrderBase.OrderStatus.DELIVERED){
            ;
        }else {
            return Result.error(Constants.CODE_600, "訂單不是已發(fā)貨狀態(tài), 不允許簽收.");
        }

        if (orderBaseService.updateSignInfo(id, OrderBase.OrderStatus.SIGN, new Date())>0) {
            return Result.success(orderBaseService.getById(id));
        }else {
            return Result.error(Constants.CODE_600, "業(yè)務(wù)異常.更新訂單簽收信息失敗" );
        }

    }

    private User getUser() {
        return TokenUtils.getCurrentUser();
    }

}

/**
 * <p>
 *  預(yù)約管理控制器
 * </p>
 *
 * @author 
 * @since 2023-04-23
 */
@RestController
@RequestMapping("/appointment")
public class AppointmentController {

    @Resource
    private IAppointmentService appointmentService;

    @Resource
    private IUserService userService;

    @Resource
    private IDoctorService doctorService;

    private final String now = DateUtil.now();

    // 新增或者更新
    @PostMapping
    public Result save(@RequestBody Appointment appointment) {
        if (appointment.getAppointmentTime() == null) {
            return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤:請(qǐng)?zhí)峁╊A(yù)約時(shí)間");
        }

        //查找顧客信息
        QueryWrapper<User> queryWrapperCustom = new QueryWrapper<>();
        queryWrapperCustom.eq("username", appointment.getCustomName());
        queryWrapperCustom.eq("role", RoleEnum.ROLE_USER.toString());
        User findCustom = userService.getOne(queryWrapperCustom);
        if (null == findCustom) {
            return Result.error(Constants.CODE_404, "顧客不存在");
        }
        appointment.setCustomId(findCustom.getId());
        appointment.setCustomName(findCustom.getUsername());
        appointment.setCustomPhone(findCustom.getPhone());

        //查找醫(yī)生信息
        QueryWrapper<User> queryWrapperDoctor = new QueryWrapper<>();
        queryWrapperDoctor.eq("username", appointment.getDoctorName());
        queryWrapperDoctor.eq("role", RoleEnum.ROLE_DOCTOR.toString());
        User findDoctor = userService.getOne(queryWrapperDoctor);
        if (null == findDoctor) {
            return Result.error(Constants.CODE_404, "醫(yī)生不存在");
        }
        appointment.setDoctorId(findDoctor.getId());
        appointment.setDoctorName(findDoctor.getUsername());
        appointment.setDoctorPhone(findDoctor.getPhone());

        if (appointment.getRemark() == null) {
            appointment.setRemark("");
        }

        if (appointment.getId() == null) {
            //添加操作
            appointment.setStatus(Appointment.AppointmentStatus.WAIT_AUDIT);

            User currentUser = TokenUtils.getCurrentUser();
            appointment.setCreateName(currentUser.getUsername());
            appointment.setCreateBy(String.valueOf(currentUser.getId()));
            appointment.setCreateRole(currentUser.getRole());
            appointment.setCreateTime(new Date());
        }else {
            //更新操作
            if (appointment.getStatus() == null) {
                return Result.error(Constants.CODE_400, "參數(shù)錯(cuò)誤:請(qǐng)?zhí)峁╊A(yù)約狀態(tài)");
            }

            //不更新原 創(chuàng)建人信息
            Appointment  oldAppointment = appointmentService.getById(appointment.getId());
            if (null==oldAppointment) {
                return Result.error(Constants.CODE_404, "預(yù)約記錄不存在");
            }

            appointment.setCreateName(oldAppointment.getCreateName());
            appointment.setCreateBy(oldAppointment.getCreateBy());
            appointment.setCreateRole(oldAppointment.getCreateRole());
            appointment.setCreateTime(oldAppointment.getCreateTime());
        }
        appointmentService.saveOrUpdate(appointment);
        return Result.success();
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Long id) {
        appointmentService.removeById(id);
        return Result.success();
    }

    @PostMapping("/del/batch")
    public Result deleteBatch(@RequestBody List<Long> ids) {
        appointmentService.removeByIds(ids);
        return Result.success();
    }

//    @GetMapping
//    public Result findAll() {
//        return Result.success(appointmentService.list());
//    }

    @GetMapping("/{id}")
    public Result findOne(@PathVariable Long id) {
        return Result.success(appointmentService.getById(id));
    }

    @GetMapping("/page")
    public Result findPage(@RequestParam Integer pageNum,
                           @RequestParam Integer pageSize,
                           @RequestParam(defaultValue = "") String customName,
                           @RequestParam(defaultValue = "") String doctorName) {
        QueryWrapper<Appointment> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("id");
        if (!"".equals(customName)) {
            queryWrapper.like("custom_name", customName);
        }

        if (!"".equals(doctorName)) {
            queryWrapper.like("doctor_name", doctorName);
        }

        User currentUser = TokenUtils.getCurrentUser();
        if (currentUser.getRole().equals(RoleEnum.ROLE_USER.toString())) {
            //普通用戶只能查看自己的預(yù)約記錄
            queryWrapper.eq("create_by", currentUser.getId());
        }else if (currentUser.getRole().equals(RoleEnum.ROLE_DOCTOR.toString())) {
            //醫(yī)生可以查看自己的記錄和 別人約自己的
            queryWrapper.eq("create_by", currentUser.getId()).or().eq("doctor_id", currentUser.getId());
        }
        return Result.success(appointmentService.page(new Page<>(pageNum, pageSize), queryWrapper));
    }

    /**
    * 導(dǎo)出接口
    */
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws Exception {
        // 從數(shù)據(jù)庫(kù)查詢出所有的數(shù)據(jù)
        List<Appointment> list = appointmentService.list();
        // 在內(nèi)存操作,寫(xiě)出到瀏覽器
        ExcelWriter writer = ExcelUtil.getWriter(true);

        // 一次性寫(xiě)出list內(nèi)的對(duì)象到excel,使用默認(rèn)樣式,強(qiáng)制輸出標(biāo)題
        writer.write(list, true);

        // 設(shè)置瀏覽器響應(yīng)的格式
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        String fileName = URLEncoder.encode("Appointment信息表", "UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");

        ServletOutputStream out = response.getOutputStream();
        writer.flush(out, true);
        out.close();
        writer.close();

        }

    /**
     * excel 導(dǎo)入
     * @param file
     * @throws Exception
     */
    @PostMapping("/import")
    public Result imp(MultipartFile file) throws Exception {
        InputStream inputStream = file.getInputStream();
        ExcelReader reader = ExcelUtil.getReader(inputStream);
        // 通過(guò) javabean的方式讀取Excel內(nèi)的對(duì)象,但是要求表頭必須是英文,跟javabean的屬性要對(duì)應(yīng)起來(lái)
        List<Appointment> list = reader.readAll(Appointment.class);

        appointmentService.saveBatch(list);
        return Result.success();
    }

    private User getUser() {
        return TokenUtils.getCurrentUser();
    }

}

8.設(shè)計(jì)文檔

提供需求說(shuō)明和關(guān)鍵的業(yè)務(wù)數(shù)據(jù)庫(kù)表字典,很難得喔。

基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】

9.源碼獲取

如果你喜歡這個(gè)項(xiàng)目的話, 給個(gè)一鍵三連,點(diǎn)贊越多,往后提高更多的開(kāi)源項(xiàng)目, 謝謝大家,gitee鏈接附上。

后端:https://gitee.com/madifu/petHis-backend
前端:https://gitee.com/madifu/petHis-fontend-admin

10.后記

在開(kāi)發(fā)這個(gè)系統(tǒng)時(shí),遇到過(guò)幾個(gè)坑,包括 VUE的,還有js 的,它們是怎么繞過(guò)去的,將另行文章做相關(guān)介紹。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-466617.html

到了這里,關(guān)于基于SpringBoot+VUE的寵物醫(yī)院后臺(tái)管理系統(tǒng)【源碼開(kāi)源】【建議收藏】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Web的寵物醫(yī)院信息管理系統(tǒng)論文

    基于Web的寵物醫(yī)院信息管理系統(tǒng)論文

    現(xiàn)代經(jīng)濟(jì)快節(jié)奏發(fā)展以及不斷完善升級(jí)的信息化技術(shù),讓傳統(tǒng)數(shù)據(jù)信息的管理升級(jí)為軟件存儲(chǔ),歸納,集中處理數(shù)據(jù)信息的管理方式。本寵物醫(yī)院信息管理系統(tǒng)就是在這樣的大環(huán)境下誕生,其可以幫助管理者在短時(shí)間內(nèi)處理完畢龐大的數(shù)據(jù)信息,使用這種軟件工具可以幫助管

    2024年04月25日
    瀏覽(19)
  • 基于SpringBoot的寵物醫(yī)院管理系統(tǒng)+84724(免費(fèi)領(lǐng)源碼)可做計(jì)算機(jī)畢業(yè)設(shè)計(jì)JAVA、PHP、爬蟲(chóng)、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

    基于SpringBoot的寵物醫(yī)院管理系統(tǒng)+84724(免費(fèi)領(lǐng)源碼)可做計(jì)算機(jī)畢業(yè)設(shè)計(jì)JAVA、PHP、爬蟲(chóng)、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

    現(xiàn)如今生活質(zhì)量提高,人們追求精神健康,與家中寵物朝夕相處,感情深厚,寵物漸漸成了我們身邊的朋友。因而寵物生病了,需要去看病,自古醫(yī)院救死扶傷,生命無(wú)貴賤,無(wú)論人類(lèi)還是動(dòng)物都需要合適而又方便的場(chǎng)所看病。同時(shí)智能化醫(yī)院的普及,以往獸醫(yī)站開(kāi)始嘗試改善

    2024年02月21日
    瀏覽(23)
  • 基于springBoot的寵物醫(yī)院管理系統(tǒng)--84724(免費(fèi)領(lǐng)源碼、附論文)可做計(jì)算機(jī)畢業(yè)設(shè)計(jì)JAVA、PHP、爬蟲(chóng)、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

    基于springBoot的寵物醫(yī)院管理系統(tǒng)--84724(免費(fèi)領(lǐng)源碼、附論文)可做計(jì)算機(jī)畢業(yè)設(shè)計(jì)JAVA、PHP、爬蟲(chóng)、APP、小程序、C#、C++、python、數(shù)據(jù)可視化、大數(shù)據(jù)、全套文案

    現(xiàn)如今生活質(zhì)量提高,人們追求精神健康,與家中寵物朝夕相處,感情深厚,寵物漸漸成了我們身邊的朋友。因而寵物生病了,需要去看病,自古醫(yī)院救死扶傷,生命無(wú)貴賤,無(wú)論人類(lèi)還是動(dòng)物都需要合適而又方便的場(chǎng)所看病。同時(shí)智能化醫(yī)院的普及,以往獸醫(yī)站開(kāi)始嘗試改善

    2024年02月04日
    瀏覽(24)
  • 基于ssm+vue的寵物醫(yī)院系統(tǒng)(前后端分離)

    基于ssm+vue的寵物醫(yī)院系統(tǒng)(前后端分離)

    博主主頁(yè) :貓頭鷹源碼 博主簡(jiǎn)介 :Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專(zhuān)家、公司架構(gòu)師、全網(wǎng)粉絲5萬(wàn)+、專(zhuān)注Java技術(shù)領(lǐng)域和畢業(yè)設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn) 主要內(nèi)容 :畢業(yè)設(shè)計(jì)(Javaweb項(xiàng)目|小程序等)、簡(jiǎn)歷模板、學(xué)習(xí)資料、面試題庫(kù)、技術(shù)咨詢 文末聯(lián)系獲取 如今互聯(lián)網(wǎng)高速發(fā)展,網(wǎng)絡(luò)遍布全

    2024年01月19日
    瀏覽(17)
  • 基于springboot的微信小程序?qū)櫸镱I(lǐng)養(yǎng)醫(yī)院系統(tǒng)(源代碼+數(shù)據(jù)庫(kù)+10000字論文)085

    基于springboot的微信小程序?qū)櫸镱I(lǐng)養(yǎng)醫(yī)院系統(tǒng)(源代碼+數(shù)據(jù)庫(kù)+10000字論文)085

    本項(xiàng)目有網(wǎng)頁(yè)版和小程序端 本系統(tǒng)分為管理員、醫(yī)生、用戶三種角色 用戶角色包含以下功能: 登錄、注冊(cè)、寵物領(lǐng)養(yǎng)、醫(yī)生在線咨詢、查看掛號(hào)、個(gè)人中心、密碼修改、寵物寄養(yǎng)查看 醫(yī)生角色包含以下功能: 登錄、查詢掛號(hào)、在線回復(fù)、掛號(hào)、掛號(hào)查詢處理、個(gè)人中心、

    2024年02月13日
    瀏覽(23)
  • java項(xiàng)目之寵物醫(yī)院信息管理系統(tǒng)(ssm框架)

    java項(xiàng)目之寵物醫(yī)院信息管理系統(tǒng)(ssm框架)

    寵物醫(yī)院信息管理系統(tǒng) 實(shí)現(xiàn)了以下功能: 管理員: 個(gè)人中心、用戶管理、醫(yī)生管理、醫(yī)學(xué)知識(shí)管理、科室信息管理、醫(yī)生信息管理、預(yù)約掛號(hào)管理、醫(yī)囑信息管理、藥品信息管理、訂單信息管理、留言板管理、系統(tǒng)管理。 用戶: 個(gè)人中心、預(yù)約掛號(hào)管理、醫(yī)囑信息管理、

    2024年02月08日
    瀏覽(33)
  • (附源碼)spring boot寵物醫(yī)院管理系統(tǒng) 畢業(yè)設(shè)計(jì) 180923

    (附源碼)spring boot寵物醫(yī)院管理系統(tǒng) 畢業(yè)設(shè)計(jì) 180923

    Springboot寵物醫(yī)院管理系統(tǒng) 摘?要 現(xiàn)如今生活質(zhì)量提高,人們追求精神健康,與家中寵物朝夕相處,感情深厚,寵物漸漸成了我們身邊的朋友。因而寵物生病了,需要去看病,自古醫(yī)院救死扶傷,生命無(wú)貴賤,無(wú)論人類(lèi)還是動(dòng)物都需要合適而又方便的場(chǎng)所看病。同時(shí)智能化醫(yī)

    2023年04月19日
    瀏覽(31)
  • 基于微信小程序的寵物醫(yī)院小程序

    基于微信小程序的寵物醫(yī)院小程序

    博主主頁(yè): 一點(diǎn)素材 博主簡(jiǎn)介: 專(zhuān)注Java技術(shù)領(lǐng)域和畢業(yè)設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)、Java、微信小程序、安卓等技術(shù)開(kāi)發(fā),遠(yuǎn)程調(diào)試部署、代碼講解、文檔指導(dǎo)、ppt制作等技術(shù)指導(dǎo)。 主要內(nèi)容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、小程序、安卓app、大數(shù)據(jù)等設(shè)計(jì)與開(kāi)發(fā)。 感興

    2024年02月22日
    瀏覽(32)
  • 基于微信小程序的寵物醫(yī)院平臺(tái)【源碼論文】

    基于微信小程序的寵物醫(yī)院平臺(tái)【源碼論文】

    ???博主介紹 :??全網(wǎng)個(gè)人號(hào)和企業(yè)號(hào) 粉絲40W+ ,每年輔導(dǎo)幾千名大學(xué)生較好的完成畢業(yè)設(shè)計(jì),專(zhuān)注計(jì)算機(jī)軟件領(lǐng)域的項(xiàng)目研發(fā),不斷的進(jìn)行新技術(shù)的項(xiàng)目實(shí)戰(zhàn)?? ?? 熱門(mén)專(zhuān)欄推薦訂閱 ?? 訂閱收藏起來(lái),防止下次找不到 ??千套JAVA實(shí)戰(zhàn)項(xiàng)目持續(xù)更新中~ ??上百套小程序

    2024年04月11日
    瀏覽(25)
  • 基于微信小程序的寵物醫(yī)院系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于微信小程序的寵物醫(yī)院系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    ??博主介紹:?全網(wǎng)粉絲10W+,CSDN全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/知乎/華為云/阿里云等平臺(tái)優(yōu)質(zhì)作者。 ???? 精彩專(zhuān)欄 推薦訂閱???? 計(jì)算機(jī)畢業(yè)設(shè)計(jì)精品項(xiàng)目案例(持續(xù)更新) ?? 文末獲取源碼+數(shù)據(jù)庫(kù)+文檔 ?? 感興趣的可以先收藏起來(lái),還有大家在畢設(shè)選題,項(xiàng)

    2024年02月20日
    瀏覽(35)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包