tlias智能学习辅助系统-学习笔记Part04

YangeIT大约 10 分钟tlias智能学习辅助系统MysqlApifoxServletHTTPGETPOST

tlias智能学习辅助系统-学习笔记Part04

今日目标

  • 员工管理
    • aliyunOss文件上传 ✏️
    • 新增员工 ✏️
  • 修改部门 🔫
  • 修改员工 🔫

1. 文件上传

文件上传

文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。

文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。

image-20221216203904713
image-20221216203904713

在我们的案例中,在新增员工的时候,要上传员工的头像,此时就会涉及到文件上传的功能。在进行文件上传时,我们点击加号或者是点击图片,就可以选择手机或者是电脑本地的图片文件了。当我们选择了某一个图片文件之后,这个文件就会上传到服务器,从而完成文件上传的操作。

想要完成文件上传这个功能需要涉及到两个部分: 👇

  1. 前端程序
  2. 服务端程序

阿里云OSS上传代码操作

将前端传过来的文件,传到阿里云oss上。

点击查看使用阿里云OSS的原因open in new window👈

阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商 。

image-20221229093412464
image-20221229093412464

阿里云对象存储OSS(Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

点击查看阿里云文档,开通阿里云OSS服务

  1. 导入阿里云oss 所需依赖后,点击右上角的刷新image
  <!--阿里云OSS-->
  <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.15.1</version>
  </dependency>
  <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>2.3.1</version>
  </dependency>
  <dependency>
      <groupId>javax.activation</groupId>
      <artifactId>activation</artifactId>
      <version>1.1.1</version>
  </dependency>
  <!-- no more than 2.3.3-->
  <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>jaxb-runtime</artifactId>
      <version>2.3.3</version>
  </dependency>
  1. 在utils工具类包中,导入AliOSSUtils工具类,在工具类中填写秘钥等信息 点击查看详细图解open in new window

/**
 * 阿里云 OSS 工具类
 */
@Component
public class AliOSSUtils {
//   区域
    @Value("${aliyun.endpoint}")
    private String endpoint;
//    访问id
    @Value("${aliyun.accessKeyId}")
    private String accessKeyId;
//    秘钥
    @Value("${aliyun.accessKeySecret}")
    private String accessKeySecret;
//    桶的名称
    @Value("${aliyun.bucketName}")
    private String bucketName;

    /**
     * 实现上传图片到OSS
     */
    public String upload(MultipartFile file) throws IOException {
        // 获取上传的文件的输入流
        InputStream inputStream = file.getInputStream();

        // 避免文件覆盖
        String originalFilename = file.getOriginalFilename();
        String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));

        //上传文件到 OSS
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, fileName, inputStream);

        //文件访问路径
        String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
        // 关闭ossClient
        ossClient.shutdown();
        return url;// 把上传到oss的路径返回
    }

}


  1. 将下列阿里云的配置信息,粘贴到application.yml中
aliyun:
  endpoint: https://oss-cn-hangzhou.aliyuncs.com
  accessKeyId: 见微信群
  accessKeySecret: 见微信群
  bucketName: java79oss

课堂作业

🚩 可以自行开通阿里云oss,也可以暂时使用笔记提供的阿里云账号信息,完成图片上传功能。

2. 员工管理-新增员工

新增员工

image-20221216162622582
image-20221216162622582

在新增用户时,我们需要保存用户的基本信息,并且还需要上传的员工的图片,目前我们先完成第一步操作,保存用户的基本信息。

点击查看项目原型效果open in new window

点我查看接口信息 👈

功能开发 👇 👇

新增员工的具体的流程
新增员工的具体的流程

EmpController

@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {

    @Autowired
    private EmpService empService;

    //新增
    @PostMapping
    public Result save(@RequestBody Emp emp){
        //记录日志
        log.info("新增员工, emp:{}",emp);
        //调用业务层新增功能
        empService.save(emp);
        //响应
        return Result.success();
    }

    //省略...
}

课堂作业

  1. 🚩 独自完成新增员工的逻辑,并进行ApiFox测试,最后在进行前后联调

3. 部门修改 讲解+实战

点我跳转

4. 员工管理-修改员工 实战

修改员工

  1. 修改员工信息
image-20220904220001994
image-20220904220001994
image-20220904220001994
image-20220904220001994

修改员工需要操作的接口:

  1. 根据ID查询员工信息
  2. 保存修改的员工信息

点击我查看原型图open in new window

修改员工实操之根据id获取员工信息

点我查看接口信息

image-20221230161841795
image-20221230161841795
  • EmpController
@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {

    @Autowired
    private EmpService empService;

    //根据id查询
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        Emp emp = empService.getById(id);
        return Result.success(emp);
    }
    
    //省略...
}

修改员工实操之根据id修改员工

当用户修改完数据之后,点击保存按钮,就需要将数据提交到服务端,然后服务端需要将修改后的数据更新到数据库中。

点我查看接口信息

思路
思路
  • EmpController
image
image