二、讲师管理接口开发总结

news2024/12/23 9:36:42

首先本项目将实体类单独放在model包中,方便后期集体的调用:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8eG9pu1-1683852706462)(/upload/2022/08/image-1659430321384.png)]

整个项目的建包结构都是在java包中建立com.lxl.ggkt包,方便后期包路径的扫描。

上述有三个包:

enums包规定了一些状态规定,比如优惠券是否使用,规定code=0为未使用,code=1为使用等等,这些不展开说明。

model则为对应的实体类。

vo是对数据的封装,往往前端需要我们返回对应数据的集合,这样就需要对得到的数据进行集合封装。

vod最终配置文件如下:

server.port=8301

spring.application.name=service-vod


spring.profiles.active=dev

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/glkt_vod?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456lxl


spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8


mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB

tencent.cos.file.region=ap-beijing
tencent.cos.file.secretid=AKIDQjskRxPgs1HPNl0LSM3c2GF3jGbkiXCh
tencent.cos.file.secretkey=TsBVoARdensvvqlfVI2ueJwjP1a3Tl07

tencent.cos.file.bucketname=ggkt-1312247070

tencent.video.appid=1312247070

mybatis-plus.mapper-locations=classpath:com/lxl/ggkt/vod/mapper/xml/*.xml

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

TeacherController:

主要涉及到查询所有讲师,删除讲师信息,条件分页查询讲师信息,增加讲师信息,修改讲师信息,批量删除讲师信息。

package com.lxl.ggkt.vod.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lxl.ggkt.exception.GgktException;
import com.lxl.ggkt.model.vod.Teacher;
import com.lxl.ggkt.result.Result;
import com.lxl.ggkt.vo.vod.TeacherQueryVo;
import com.lxl.ggkt.vod.service.TeacherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 讲师 前端控制器
 * </p>
 *
 * @author lxl
 * @since 2022-07-16
 */
@Api(tags = "讲师管理接口")
@RestController
@RequestMapping("/admin/vod/teacher")
//@CrossOrigin
public class TeacherController {

    @Autowired
    private TeacherService teacherService;

    //查询所有讲师
//    @ApiOperation("查询所有讲师")
//    @GetMapping("findAll")
//    public List<Teacher> findAllTeacher(){
//        List<Teacher> list = teacherService.list();
//        return list;
//    }

    @ApiOperation("查询所有讲师")
    @GetMapping("findAll")
    public Result findAllTeacher() {
//        try{
//            int i = 10/0;
//        }catch (Exception e){
//            throw new GgktException(201,"执行了自定义异常处理GgktException");
//        }

        List<Teacher> list = teacherService.list();
        return Result.ok(list).message("查询数据成功");
    }

    //删除讲师
    @ApiOperation("逻辑删除讲师")
    @DeleteMapping("remove/{id}")
    public Result removeTeacher(@ApiParam(name = "id", value = "ID", required = true) @PathVariable Long id){
        boolean isSuccess = teacherService.removeById(id);
        if (isSuccess){
            return Result.ok(null);
        }else{
            return Result.fail(null);
        }
    }

    //条件查询分页
    @ApiOperation("条件查询分页")
    @PostMapping("findQueryPage/{current}/{limit}")
    public Result findPage(@PathVariable long current,
                           @PathVariable long limit,
                           @RequestBody(required = false) TeacherQueryVo teacherQueryVo){

        Page<Teacher> pageParam = new Page<>(current, limit);

        if (teacherQueryVo == null){
            IPage<Teacher> pageModel = teacherService.page(pageParam,null);
            return Result.ok(pageModel);
        }else{
            String name = teacherQueryVo.getName();
            Integer level = teacherQueryVo.getLevel();
            String joinDateBegin = teacherQueryVo.getJoinDateBegin();
            String joinDateEnd = teacherQueryVo.getJoinDateEnd();

            QueryWrapper<Teacher> wrapper = new QueryWrapper<>();
            if (!StringUtils.isEmpty(name)){
                wrapper.like("name",name);
            }
            if (!StringUtils.isEmpty(level)){
                wrapper.like("level",level);
            }
            if (!StringUtils.isEmpty(joinDateBegin)){
                wrapper.ge("join_date",joinDateBegin);
            }
            if (!StringUtils.isEmpty(joinDateEnd)){
                wrapper.le("join_date",joinDateEnd);
            }

            IPage<Teacher> pageModel = teacherService.page(pageParam, wrapper);

            return Result.ok(pageModel);
        }
    }

    //增加讲师
    @ApiOperation("增加讲师")
    @PostMapping("saveTeacher")
    public Result saveTeacher(@RequestBody Teacher teacher){
        boolean isSuccess = teacherService.save(teacher);
        if (isSuccess){
            return Result.ok(null);
        }else{
            return Result.fail(null);
        }
    }


    //修改讲师
    @ApiOperation("根据id查询")
    @GetMapping("getTeacher/{id}")
    public Result getTeacher(@PathVariable Long id){
        Teacher teacher = teacherService.getById(id);
        return Result.ok(teacher);
    }

    @ApiOperation("修改最终实现")
    @PostMapping("updateTeacher")
    public Result updateTeacher(@RequestBody Teacher teacher){
        boolean isSuccess = teacherService.updateById(teacher);
        if (isSuccess){
            return Result.ok(null);
        }else{
            return Result.fail(null);
        }
    }

    //批量删除讲师
    @ApiOperation("批量删除讲师")
    @DeleteMapping("removeBatch")
    public Result removeBatch(@RequestBody List<Long> idList){
        boolean isSuccess = teacherService.removeByIds(idList);
        if (isSuccess){
            return Result.ok(null);
        }else{
            return Result.fail(null);
        }
    }
}

TeacherServiceImpl:

简单继承对应接口,因为TeacherController调用方法都为mybatis-plus提供的方法,所以无需其他方法构造。

package com.lxl.ggkt.vod.service.impl;

import com.lxl.ggkt.model.vod.Teacher;

import com.lxl.ggkt.vod.mapper.TeacherMapper;
import com.lxl.ggkt.vod.service.TeacherService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 讲师 服务实现类
 * </p>
 *
 * @author atguigu
 * @since 2022-07-16
 */
@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements TeacherService {

}

TeacherQueryVo的数据封装:

@Data
public class TeacherQueryVo {
	
	@ApiModelProperty(value = "讲师姓名")
	private String name;

	@ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
	private Integer level;

	@ApiModelProperty(value = "入驻时间")
	private String joinDateBegin;

	@ApiModelProperty(value = "入驻时间")
	private String joinDateEnd;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CVE-2017-7921漏洞复现

文章目录 漏洞描述 漏洞描述 0x01 CVE-2017-7921漏洞复现 许多HikvisionIP摄像机包含一个后门&#xff0c;允许未经身份验证的模拟任何配置的用户帐户。 0x02 漏洞复现&#xff1a; 利用工具发现漏洞&#xff08;CVE-2017-7921&#xff09;&#xff1a; 利用路径&#xff…

“数字裂变”宇宙,华为云与和伙伴组成“银河护卫队”

最近&#xff0c;《银河护卫队3》正在上映&#xff0c;取得了豆瓣高分和全网好评。很多朋友走出电影院都感叹&#xff0c;真想有像银河护卫队一样的朋友和伙伴。 “伙伴”这个词&#xff0c;不仅是超级英雄电影的内核&#xff0c;更是云计算产业的“新贵”。关注云产业的朋友可…

Go项目组织:在单一repo中管理多个Go module指南

0. 单repo单module管理回顾 众所周知&#xff0c;Go在1.11版本中引入了go module[1]&#xff0c;随着近几年Go module机制的逐渐成熟&#xff0c;它已经被Go团队确定为Go标准的依赖管理与构建方案&#xff0c;原先的GOPATH mode已经被彻底废弃。 在Go module模式下&#xff0c;…

C++——类和对象(5)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月8日 内容&#xff1a;C类和对象内容讲解 目录 前言&#xff1a; 1.操作符重载&#xff08;续&#xff09;&#xff1a; 前置和后置&#xff1a; 日期减日期&#xff1a; <<操作符&#xff1a; 结尾&#xff…

智能里既有技术也有艺术

智能不仅仅是技术方面的创新和应用&#xff0c;也是一种艺术的体现。智能技术需要融合多个学科和领域的知识&#xff0c;包括计算机科学、数学、心理学、哲学、人文艺术、宗教民俗等等&#xff0c;从而形成一个完整的系统。这个系统的设计和实现&#xff0c;需要技术人员具备深…

跟着我学 AI丨“Hey,Siri”的前生今世

Siri 是由苹果公司开发的一款智能语音助手&#xff0c;它可以通过语音识别和自然语言处理来回答用户的问题、执行任务、提供建议等等。Siri 可以在 iOS 和 macOS 设备上使用&#xff0c;它的出现极大地改变了人机交互的方式&#xff0c;让我们用语音成为了交互的媒介。 Siri 的…

轻松客观认识大模型系列:一

这是我关于《轻松客观认识大模型系列》第一篇 一、前言 这篇文章旨在为没有计算机科学背景的读者提供一些关于ChatGPT及其类似的人工智能系统&#xff08;如GPT-3、GPT-4、Bing Chat、Bard等&#xff09;如何工作的原理。ChatGPT是一种聊天机器人&#xff0c;建立在一个大型语…

AI 自动补全的这句日志能正常打印吗?

最近用上了 GitHub Copilot&#xff0c;它的能力不时让我惊叹&#xff0c;于是越来越多地面向 tab 编程&#xff0c;机械键盘的损耗都小了许多:-p 这天&#xff0c;它给我自动生成了一句像这样的日志打印代码&#xff1a; try {// ... } catch (Exception e) {log.error("…

Vue列表过滤与数据原理

目录 列表过滤 使用计算属性 使用watch监视属性 列表排序 Vue中数据原理 练习数据原理 Vue中数据原理总结 列表过滤 可以进行模糊搜索 使用计算属性 <!DOCTYPE html> <html lang"en" xmlns:v-model"http://www.w3.org/1999/xhtml"> <…

YARN框架概述

Yarn 概述 Yarn概述对Yarn的需求简介变迁YARN于MRv1的区别MRv1YARN介绍 YARN集群安装部署集群角色介绍ResourceManager(RM)NodeManager(NM)集群部署规划 YARN RM重启机制概述**开启重启机制**RM状态数据的存储介质开启 后续正在学习&#xff1a;YARN HA高可用 YARN架构体系官方…

DNDC模型

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

harbor(docker仓库)仓库部署

harbor仓库部署 1. harbor概述2. harbor主要功能3. harbor架构介绍4. Docker Compose4.1 compose简介4.2 docker-compose工具命令 5. harbor部署5.1 部署Docker Compose5.2 部署harbor5.3 部署harbor开机自启 6. harbor应用6.1 配置客户端访问harbor6.2 harbor的web管理界面 1.…

炸裂!Hugging Face 发布重磅更新,人手一个 AutoGPT!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; Hugging Face&#xff0c;作为 AI 开源圈最为知名的「网红」创业公司&#xff0c;成立仅几年&#xff0c;便在 GitHub 开源了诸多实用开源项目&#xff0c;受到了不少开发者的赞赏。 其中影…

中小学智慧校园平台电子班牌系统源码的应用

智慧校园云平台电子班牌系统源码 智慧班牌系统是专门为学校打造的智能信息展示平台&#xff0c;为学校、教师、学生、家长创造一个学习成长交流的共享平台。主要用于显示班级信息、 班级风采、校园文化、课程表、校园活动通知、家校互联等。以图片、音视频、文字、动画、文档等…

【ADS867x】14 位 500kSPS 4/8 通道 ADC 简介及驱动应用示例

器件特性 具有集成模拟前端的 14 位模数转换器 (ADC)具有自动和手动扫描功能的 4 通道、8 通道多路复用器通道独立可编程输入&#xff1a; 10.24V、5.12V、2.56V、1.28V、0.64V10.24V、5.12V、2.56V、1.28V 5V 模拟电源&#xff1a;1.65V 到 5V I/O 电源恒定的阻性输入阻抗&am…

Android 14 快速适配要点

随着 Google I/O 2023 发布的 Android beta2 &#xff0c;预计 Android 14 将在2023年第三季度发布&#xff0c;目前看整体需要适配的内容已经趋向稳定&#xff0c;那就根据官方文档简单做个适配要点总结吧。 如何做到最优雅的版本适配&#xff1f;那就是尽可能提高 minitSdkVe…

详细版易学版TypeScript - 类型声明:字符串数字null布尔undefined数组any对象void类型推断联合类型

根据官方 TypeScript 的注意事项&#xff0c;建议不要使用 Number、String、Boolean、Symbol 或 Object。 ts各类型声明的代码如下&#xff1a; 一、字符串类型 let str: string hello; str ts; 二、数字类型 let num: number 123; num 456; 三、布尔类型 let flag: boolea…

C语言实现队列--数据结构

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…

No.065<软考>《(高项)备考大全》【专项3】《论文》

《论文》 1 论文部分相关1.1 考试相关1.2 考试核心相关1.3 历年考试分析1.4 复习建议1.5 评分标准1.5.1 评分的几个方面1.5.2 不及格的几种类型1.5.3 扣分项1.5.4 加分项 1.6 时间进度安排1.7 如何准备 2 必背核心知识 - 10大领域47个过程3 论文写作技巧3.1 论文架构3.2 论文题…

SpringBoot——引导类的简单介绍

简单介绍&#xff1a; 之前我们就说到过引导类&#xff0c;之不过当时就是简单的说了一下这个名字&#xff0c;让大家记住我们运行的程序的学名叫做引导类&#xff0c;但是我们并没有进入看过&#xff0c;介绍过它的作用&#xff0c;这次我们就来简单的介绍一下这个类的作用。…