Ver Fonte

增加使用手册管理

亨利王 há 1 ano atrás
pai
commit
8f6c536237

+ 21 - 15
.idea/workspace.xml

@@ -4,14 +4,16 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="46b159bd-08ca-42f0-b80f-41d4944a8a29" name="Changes" comment="refined">
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/ApproveAccountController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/ApproveAccountController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/DepartmentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/DepartmentController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/DictController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/DictController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/EmployeeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/EmployeeController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/MenuController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/MenuController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/RoleController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/RoleController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/user/RoleMenuController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/RoleMenuController.java" afterDir="false" />
+    <list default="true" id="46b159bd-08ca-42f0-b80f-41d4944a8a29" name="Changes" comment="controller2admin">
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/GuideController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/UtilController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/po/Guide.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/mapper/GuideMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/service/IGuideService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/service/impl/GuideServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/mapper/GuideMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-dev.yml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -60,6 +62,7 @@
   "keyToString": {
     "ASKED_ADD_EXTERNAL_FILES": "true",
     "Maven.OperationSystem [clean].executor": "Run",
+    "Maven.OperationSystem [package].executor": "Run",
     "Maven.OperationSystem [validate].executor": "Run",
     "RequestMappingsPanelOrder0": "0",
     "RequestMappingsPanelOrder1": "1",
@@ -72,7 +75,7 @@
     "WebServerToolWindowFactoryState": "false",
     "git-widget-placeholder": "permission-wxy",
     "kotlin-language-version-configured": "true",
-    "last_opened_file_path": "/Users/wangwulin/IdeaProjects/OperationSystem/src/main/java/com/om/controller/user",
+    "last_opened_file_path": "/Users/wangwulin/IdeaProjects/OperationSystem/src/main/resources/mapper",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.tslint": "true",
     "node.js.selected.package.eslint": "(autodetect)",
@@ -92,21 +95,21 @@
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/src/main/resources/mapper" />
       <recent name="$PROJECT_DIR$/src/main/java/com/om/controller/user" />
       <recent name="$PROJECT_DIR$/src/main/java/com/om/service" />
       <recent name="$PROJECT_DIR$/src/main/java/com/om/entity/po" />
       <recent name="$PROJECT_DIR$/src/main/java/com/om/service/impl" />
-      <recent name="$PROJECT_DIR$/src/main/java/com/om/mapper" />
     </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="$PROJECT_DIR$/screenshots" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
-      <recent name="com.om.controller.user" />
-      <recent name="com.om.config" />
-      <recent name="com.om.utils" />
-      <recent name="com.om.entity.dto" />
-      <recent name="com.om.controller" />
+      <recent name="com.om.controller.admin" />
+      <recent name="com.om.service.impl" />
+      <recent name="com.om.service" />
+      <recent name="com.om.mapper" />
+      <recent name="com.om.entity.po" />
     </key>
   </component>
   <component name="RunManager" selected="Spring Boot.OperationApplication">
@@ -137,6 +140,8 @@
       <list>
         <item itemvalue="Spring Boot.OperationApplication" />
         <item itemvalue="npm.dev" />
+        <item itemvalue="Spring Boot.OperationApplication" />
+        <item itemvalue="npm.dev" />
       </list>
     </recent_temporary>
   </component>
@@ -188,6 +193,7 @@
       <workItem from="1708670527995" duration="3132000" />
       <workItem from="1708916949997" duration="4355000" />
       <workItem from="1708925853376" duration="15000000" />
+      <workItem from="1709043200200" duration="1433000" />
     </task>
     <task id="LOCAL-00001" summary="管理员登录">
       <option name="closed" value="true" />

+ 60 - 0
src/main/java/com/om/controller/admin/GuideController.java

@@ -0,0 +1,60 @@
+package com.om.controller.admin;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.om.entity.po.Guide;
+import com.om.service.IGuideService;
+import com.om.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author henry-ong
+ * @since 2024-02-27
+ */
+@RestController
+@RequestMapping("/guide")
+@Api(tags = "用户手册控制类")
+public class GuideController {
+  IGuideService guideService;
+
+  @Value("${files.upload.path}")
+  private String fileUploadPath;
+
+  @Autowired
+  public GuideController(IGuideService guideService) {
+    this.guideService = guideService;
+  }
+
+  @ApiOperation("新增使用手册")
+  @PostMapping("/save")
+  public Result save(@RequestBody Guide guide) {
+    return Result.succ(guideService.save(guide));
+  }
+
+  @ApiOperation("编辑使用手册接口")
+  @PostMapping("/edit")
+  public Result edit(@RequestBody Guide guide) {
+    return Result.succ(guideService.saveOrUpdate(guide));
+  }
+
+  @ApiOperation("根据ID删除单个使用手册接口")
+  @DeleteMapping("/delete/{id}")
+  public Result delete(@PathVariable(name = "id") Integer id) {
+    return Result.succ(guideService.removeById(id));
+  }
+
+  @ApiOperation("分页查询全部使用手册接口")
+  @GetMapping("/page")
+  public Result findPage(@RequestParam Integer pageNum,
+                         @RequestParam Integer pageSize,
+                         @RequestParam(defaultValue = "") String title) {
+    return Result.succ(guideService.findGuide(new Page<>(pageNum, pageSize), title));
+  }
+}

+ 83 - 0
src/main/java/com/om/controller/admin/UtilController.java

@@ -0,0 +1,83 @@
+package com.om.controller.admin;
+
+import com.om.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@RestController
+@Api(tags = "文件上传控制类")
+public class UtilController {
+    //人脸信息储存位置
+    @Value("${files.upload.path}")
+    private String fileUploadPath;
+    //临时照片存储位置
+    @Value("${photo.tmp}")
+    private String tmpPhoto;
+
+    @ApiOperation("文件下载接口")
+    @GetMapping("/download")
+    public void download(String name, HttpServletResponse response) {
+        try {
+            //输入流,通过输入流读取文件内容
+            FileInputStream fileInputStream = new FileInputStream(fileUploadPath  + name);
+            //输出流,通过输出流将文件写回浏览器,在浏览器展示图片
+            ServletOutputStream outputStream = response.getOutputStream();
+            response.setContentType("image/png");
+            int len = 0;
+            byte[] bytes = new byte[1024];
+            while ((len = fileInputStream.read(bytes)) != -1) {
+                outputStream.write(bytes, 0, len);
+            }
+            outputStream.close();
+            fileInputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation("视频上传接口")
+    @PostMapping("/video")
+    public Result video(@RequestParam("file") MultipartFile file,
+                              HttpServletRequest request,
+                              @RequestParam("id") Integer id) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        MultipartFile headerImage = multipartRequest.getFile("file");
+        String fileName = headerImage.getOriginalFilename();
+
+        //根据当前时间生成文件名
+        fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + "." + fileName;
+        // 确定文件存放的路径
+        File dest = new File(fileUploadPath + fileName);
+        //判断当前目录是否存在
+        if (!dest.exists()) {
+            //目录不存在,需要创建
+            dest.mkdir();
+        }
+        try {
+            // 存储文件
+            headerImage.transferTo(dest);
+        } catch (IOException e) {
+            throw new RuntimeException("上传文件失败,服务器发生异常!", e);
+        }
+
+        System.out.println("文件名:" + fileName);
+
+        return Result.succ(fileName);
+    }
+}

+ 58 - 0
src/main/java/com/om/entity/po/Guide.java

@@ -0,0 +1,58 @@
+package com.om.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author henry-ong
+ * @since 2024-02-27
+ */
+//@Getter
+//@Setter
+@TableName("guide")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "Guide对象", description = "")
+public class Guide implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+      @ApiModelProperty("id")
+      @TableId(value = "id", type = IdType.AUTO)
+      private Integer id;
+
+      @ApiModelProperty("描述")
+      private String title;
+
+      @ApiModelProperty("视频名称")
+      private String url;
+
+      @ApiModelProperty("语言")
+      private String lang;
+
+      @ApiModelProperty("状态")
+      private String status;
+
+      @ApiModelProperty("创建时间")
+      @TableField(value="createTime")
+      private LocalDateTime createTime;
+
+      @ApiModelProperty("更新时间")
+      @TableField(value="updateTime")
+      private LocalDateTime updateTime;
+}

+ 24 - 0
src/main/java/com/om/mapper/GuideMapper.java

@@ -0,0 +1,24 @@
+package com.om.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import com.om.config.MybatisRedisCache;
+import com.om.entity.po.Guide;
+import org.apache.ibatis.annotations.CacheNamespace;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author henry-ong
+ * @since 2024-02-27
+ */
+@Mapper
+@CacheNamespace(implementation = MybatisRedisCache.class, eviction = MybatisRedisCache.class)
+public interface GuideMapper extends BaseMapper<Guide> {
+
+  Page<Guide> findGuide(Page<Guide> page, String title);
+}

+ 18 - 0
src/main/java/com/om/service/IGuideService.java

@@ -0,0 +1,18 @@
+package com.om.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.om.entity.po.Guide;
+
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author henry-ong
+ * @since 2024-02-27
+ */
+public interface IGuideService extends IService<Guide> {
+  Page<Guide> findGuide(Page<Guide> page, String title);
+}

+ 33 - 0
src/main/java/com/om/service/impl/GuideServiceImpl.java

@@ -0,0 +1,33 @@
+package com.om.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.om.entity.po.Guide;
+import com.om.mapper.GuideMapper;
+import com.om.service.IGuideService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author henry-ong
+ * @since 2024-02-27
+ */
+@Service
+@Transactional
+public class GuideServiceImpl extends ServiceImpl<GuideMapper, Guide> implements IGuideService {
+  final GuideMapper guideMapper;
+
+  public GuideServiceImpl(GuideMapper guideMapper) {
+    this.guideMapper = guideMapper;
+  }
+
+  @Override
+  public Page<Guide> findGuide(Page<Guide> page, String title) {
+    return guideMapper.findGuide(page, title);
+  }
+}

+ 8 - 0
src/main/resources/application-dev.yml

@@ -32,5 +32,13 @@ jwt:
   secret: opera
   expiration: 86400000  #过期时间24小时
 
+# 手册视频上传路径
+files:
+  upload:
+    path: /Users/wangwulin/Desktop/
+#    path: C:/temp/FaceInfo/
 
+# 照片存放路径
+photo:
+  tmp: C:/temp/Photo/
 

+ 12 - 0
src/main/resources/mapper/GuideMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.om.mapper.GuideMapper">
+
+    <select id="findGuide" resultType="com.om.entity.po.Guide">
+        select e.*
+        from guide as e
+        <if test="title != null and title != ''">
+            where e.title like concat('%',#{title},'%')
+        </if>
+    </select>
+</mapper>