Pārlūkot izejas kodu

Merge branch 'master' of http://47.100.37.243:10080/wutt/childrenLibraryBMS

sunyadv 5 gadi atpakaļ
vecāks
revīzija
9b89c83115
49 mainītis faili ar 2647 papildinājumiem un 0 dzēšanām
  1. 32 0
      bms/pom.xml
  2. 18 0
      bms/src/main/java/com/hssx/bms/BmsApplication.java
  3. 13 0
      bms/src/main/java/com/hssx/bms/constant/Constant.java
  4. 123 0
      bms/src/main/java/com/hssx/bms/controller/BookController.java
  5. 105 0
      bms/src/main/java/com/hssx/bms/controller/InstitutionalInformationController.java
  6. 22 0
      bms/src/main/java/com/hssx/bms/controller/InstitutionalPicController.java
  7. 59 0
      bms/src/main/java/com/hssx/bms/controller/SystemUserController.java
  8. 108 0
      bms/src/main/java/com/hssx/bms/entity/Book.java
  9. 101 0
      bms/src/main/java/com/hssx/bms/entity/BookCategory.java
  10. 80 0
      bms/src/main/java/com/hssx/bms/entity/BookPage.java
  11. 243 0
      bms/src/main/java/com/hssx/bms/entity/InstitutionalInformation.java
  12. 108 0
      bms/src/main/java/com/hssx/bms/entity/InstitutionalPic.java
  13. 107 0
      bms/src/main/java/com/hssx/bms/entity/SystemUser.java
  14. 40 0
      bms/src/main/java/com/hssx/bms/entity/vo/InstitutionalInformationVO.java
  15. 16 0
      bms/src/main/java/com/hssx/bms/mapper/BookCategoryMapper.java
  16. 16 0
      bms/src/main/java/com/hssx/bms/mapper/BookMapper.java
  17. 16 0
      bms/src/main/java/com/hssx/bms/mapper/BookPageMapper.java
  18. 19 0
      bms/src/main/java/com/hssx/bms/mapper/InstitutionalInformationMapper.java
  19. 16 0
      bms/src/main/java/com/hssx/bms/mapper/InstitutionalPicMapper.java
  20. 16 0
      bms/src/main/java/com/hssx/bms/mapper/SystemUserMapper.java
  21. 20 0
      bms/src/main/java/com/hssx/bms/service/BookCategoryService.java
  22. 21 0
      bms/src/main/java/com/hssx/bms/service/BookPageService.java
  23. 22 0
      bms/src/main/java/com/hssx/bms/service/BookService.java
  24. 25 0
      bms/src/main/java/com/hssx/bms/service/InstitutionalInformationService.java
  25. 19 0
      bms/src/main/java/com/hssx/bms/service/InstitutionalPicService.java
  26. 19 0
      bms/src/main/java/com/hssx/bms/service/SystemUserService.java
  27. 36 0
      bms/src/main/java/com/hssx/bms/service/impl/BookCategoryServiceImpl.java
  28. 55 0
      bms/src/main/java/com/hssx/bms/service/impl/BookPageServiceImpl.java
  29. 76 0
      bms/src/main/java/com/hssx/bms/service/impl/BookServiceImpl.java
  30. 109 0
      bms/src/main/java/com/hssx/bms/service/impl/InstitutionalInformationServiceImpl.java
  31. 66 0
      bms/src/main/java/com/hssx/bms/service/impl/InstitutionalPicServiceImpl.java
  32. 68 0
      bms/src/main/java/com/hssx/bms/service/impl/SystemUserServiceImpl.java
  33. 217 0
      bms/src/main/java/com/hssx/bms/until/CodeGenerator.java
  34. 39 0
      bms/src/main/java/com/hssx/bms/until/HttpRespMsg.java
  35. 135 0
      bms/src/main/java/com/hssx/bms/until/MD5Util.java
  36. 58 0
      bms/src/main/java/com/hssx/bms/until/PageUtil.java
  37. 48 0
      bms/src/main/java/com/hssx/bms/until/UploadFileToFileNameUtil.java
  38. 58 0
      bms/src/main/resources/application-prod.properties
  39. 32 0
      bms/src/main/resources/application-prod.yml
  40. 53 0
      bms/src/main/resources/application.properties
  41. 30 0
      bms/src/main/resources/application.yml
  42. 19 0
      bms/src/main/resources/mapper/BookCategoryMapper.xml
  43. 20 0
      bms/src/main/resources/mapper/BookMapper.xml
  44. 18 0
      bms/src/main/resources/mapper/BookPageMapper.xml
  45. 64 0
      bms/src/main/resources/mapper/InstitutionalInformationMapper.xml
  46. 19 0
      bms/src/main/resources/mapper/InstitutionalPicMapper.xml
  47. 19 0
      bms/src/main/resources/mapper/SystemUserMapper.xml
  48. 10 0
      bms/src/main/resources/static/index.html
  49. 14 0
      pom.xml

+ 32 - 0
bms/pom.xml

@@ -44,6 +44,38 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper</artifactId>
+            <version>4.1.0</version>  <!--我这里用的是4.1.0版本-->
+        </dependency>
+
+        <!-- mybatis-plus依赖 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.1.2</version>
+        </dependency>
+        <!-- mybatis-plus代码生成器依赖 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.1.2</version>
+        </dependency>
+
+        <!-- velocity模板引擎 -->
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity-engine-core</artifactId>
+            <version>2.0</version>
+        </dependency>
+
+        <!-- freemarker 模板引擎-->
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.23</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 18 - 0
bms/src/main/java/com/hssx/bms/BmsApplication.java

@@ -1,13 +1,31 @@
 package com.hssx.bms;
 
+import com.github.pagehelper.PageHelper;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+import java.util.Properties;
 
 @SpringBootApplication
+@MapperScan("com.hssx.bms.mapper")
 public class BmsApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(BmsApplication.class, args);
     }
 
+    //配置分页插件
+    @Bean
+    public PageHelper pageHelper(){
+        PageHelper pageHelper = new PageHelper();
+        Properties properties = new Properties();
+        properties.setProperty("offsetAsPageNum","true");
+        properties.setProperty("rowBoundsWithCount","true");
+        properties.setProperty("reasonable","true");
+        properties.setProperty("dialect","mysql");    //配置mysql数据库的方言
+        pageHelper.setProperties(properties);
+        return pageHelper;
+    }
 }

+ 13 - 0
bms/src/main/java/com/hssx/bms/constant/Constant.java

@@ -0,0 +1,13 @@
+package com.hssx.bms.constant;
+
+/**
+ * Author: 吴涛涛
+ * Date : 2019 - 07 - 24 16:00
+ * Description:<描述>常量配置类
+ * Version: 1.0
+ */
+public class Constant {
+    public static final String DEFAULT_PWD = "000000";//默认密码
+    public static final Integer ADMINISTRATORS_TYPE = 0;//管理员角色类型
+    public static final Integer INSTITUTION_TYPE = 1;//培训机构角色类型
+}

+ 123 - 0
bms/src/main/java/com/hssx/bms/controller/BookController.java

@@ -0,0 +1,123 @@
+package com.hssx.bms.controller;
+
+
+import com.hssx.bms.entity.Book;
+import com.hssx.bms.entity.BookCategory;
+import com.hssx.bms.entity.BookPage;
+import com.hssx.bms.service.BookCategoryService;
+import com.hssx.bms.service.BookPageService;
+import com.hssx.bms.service.BookService;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.PageUtil;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+@Controller
+@RequestMapping("/book")
+public class BookController {
+
+    @Autowired
+    private BookService bookService;
+    @Autowired
+    private BookPageService bookPageService;
+    @Autowired
+    private BookCategoryService bookCategoryService;
+    /**
+     * 图书信息的录入
+     * 参数:name 名称,author 作者,descrip 描述
+     *      file 封面文件(可不传)
+     * 修改时需要:id 图书id
+     * @return
+     */
+    @ApiOperation(value = "图书信息的录入", notes = "图书信息的录入")
+    @RequestMapping("/addOrUpdateBook")
+    @ResponseBody
+    public HttpRespMsg addOrUpdateBook(Book book, @RequestParam(required = false) MultipartFile file){
+        HttpRespMsg msg = bookService.addOrUpdateBook(book,file);
+        return msg;
+    }
+
+    /**
+     * 图书信息的列表
+     * 参数:
+     * @return
+     */
+    @ApiOperation(value = "图书信息的列表", notes = "图书信息的列表方法")
+    @RequestMapping("/list")
+    @ResponseBody
+    public HttpRespMsg list(PageUtil page){
+        HttpRespMsg msg = bookService.getList(page);
+        return msg;
+    }
+
+    /**
+     * 图书信息的录入
+     * 参数:bookId 图书对应的id
+     *      file 上传的图书图片文件数组
+     * @return
+     */
+    @ApiOperation(value = "图书图片的上传", notes = "图书图片的上传方法")
+    @RequestMapping("/addBookPage")
+    @ResponseBody
+    public HttpRespMsg addBookPage(BookPage bookPage, @RequestParam(required = false) MultipartFile[] file){
+        HttpRespMsg msg = bookPageService.addBookPage(bookPage,file);
+        return msg;
+    }
+
+
+    /**
+     * 图书图片删除
+     * 参数:id 图书图片对应的id
+     * @return
+     */
+    @ApiOperation(value = "图书图片删除", notes = "图书图片删除方法")
+    @RequestMapping("/deleteBookPage")
+    @ResponseBody
+    public HttpRespMsg deleteBookPage(BookPage bookPage){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data  = bookPageService.removeById(bookPage.getId());
+        return msg;
+    }
+
+    /**
+     * 单个图书图片列表(图片总张数)
+     * 参数:bookId 图书的id
+     * @return
+     */
+    @ApiOperation(value = "单个图书图片列表(图片总张数)", notes = "单个图书图片列表(图片总张数)方法")
+    @RequestMapping("/bookPageList")
+    @ResponseBody
+    public HttpRespMsg bookPageList(BookPage bookPage){
+        HttpRespMsg msg = bookPageService.getBookPageList(bookPage);
+        return msg;
+    }
+
+
+    /**
+     * 图书目录的录入/修改
+     * 参数:bookId 图书id rank 章节(对应数字0-序 1-第一章 2-第二章...)
+     *      name 目录名称  pageNum 起始页码
+     * 修改时:需要传 id 目录的id
+     * @return
+     */
+    @ApiOperation(value = "图书目录的录入和修改", notes = "图书目录的录入和修改方法")
+    @RequestMapping("/addOrUpdateRank")
+    @ResponseBody
+    public HttpRespMsg addOrUpdateRank(BookCategory BookCategory){
+        HttpRespMsg msg = bookCategoryService.addOrUpdateRank(BookCategory);
+        return msg;
+    }
+
+}
+

+ 105 - 0
bms/src/main/java/com/hssx/bms/controller/InstitutionalInformationController.java

@@ -0,0 +1,105 @@
+package com.hssx.bms.controller;
+
+
+import com.hssx.bms.entity.InstitutionalInformation;
+import com.hssx.bms.entity.InstitutionalPic;
+import com.hssx.bms.entity.vo.InstitutionalInformationVO;
+import com.hssx.bms.service.InstitutionalInformationService;
+import com.hssx.bms.service.InstitutionalPicService;
+import com.hssx.bms.service.SystemUserService;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.PageUtil;
+import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+@Controller
+@RequestMapping("/institutional")
+public class InstitutionalInformationController {
+    @Autowired
+    private InstitutionalInformationService institutionalService;
+    @Autowired
+    private InstitutionalPicService institutionalPicService;
+
+    /**
+     * 教育机构的添加
+     * 参数:account 账号,name 名称,address 地址,lng 经度 lat 纬度
+     *      phone 电话,
+     * @return
+     */
+    @ApiOperation(value = "教育机构的添加", notes = "教育机构的添加方法")
+    @RequestMapping("/add")
+    @ResponseBody
+    public HttpRespMsg addInstitutionalInformation(InstitutionalInformationVO institutionalInformationVO){
+        HttpRespMsg msg = institutionalService.add(institutionalInformationVO);
+        return msg;
+    }
+    /**
+     * 教育机构信息的修改
+     * 参数:id 机构信息id,name 名称,address 地址,lng 经度 lat 纬度
+     *      phone 电话,amTime 上午上课时间,pmTime 下午上课时间,briefIntroductionPic 简介图片
+     *      classAdvantages 课程特色,briefIntroduction 机构简介说明,file 简介图片文件
+     * @return
+     */
+    @ApiOperation(value = "教育机构信息的修改", notes = "教育机构信息的修改")
+    @RequestMapping("/update")
+    @ResponseBody
+    public HttpRespMsg updateInstitutionalInformation(InstitutionalInformation institutionalInformation,@RequestParam(required = false) MultipartFile file){
+        HttpRespMsg msg = institutionalService.updateInstitutionalInformation(institutionalInformation,file);
+        return msg;
+    }
+    /**
+     * 教育机构信息的背景图片的修改
+     * 参数:id 机构信息id,file 上传的文件数组
+     * @return
+     */
+    @ApiOperation(value = "教育机构信息的背景图片的修改", notes = "教育机构信息的背景图片的修改")
+    @RequestMapping("/update")
+    @ResponseBody
+    public HttpRespMsg updateInstitutionPics(Integer id, @RequestParam(required = false) MultipartFile[] file){
+        HttpRespMsg msg = institutionalPicService.institutionalPicService(id,file);
+        return msg;
+    }
+    /**
+     * 教育机构信息的背景图片的删除
+     * 参数:id 要删除的背景图片id
+     * @return
+     */
+    @ApiOperation(value = "教育机构信息的背景图片的删除", notes = "教育机构信息的背景图片的删除")
+    @RequestMapping("/delete")
+    @ResponseBody
+    public HttpRespMsg deleteInstitutionPics(Integer id){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = institutionalPicService.removeById(id);
+        return msg;
+    }
+
+
+    /**
+     * 教育机构信息的背景图片的删除
+     * 参数:pageNum 当前页码,pageSize 每页条数
+     * @return
+     */
+    @ApiOperation(value = "教育机构信息列表", notes = "教育机构信息列表方法")
+    @RequestMapping("/list")
+    @ResponseBody
+    public HttpRespMsg list(@RequestParam(required = false) PageUtil page){
+        HttpRespMsg msg = institutionalService.getInstitutionList(page);
+        return msg;
+    }
+
+
+
+}
+

+ 22 - 0
bms/src/main/java/com/hssx/bms/controller/InstitutionalPicController.java

@@ -0,0 +1,22 @@
+package com.hssx.bms.controller;
+
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+@Controller
+@RequestMapping("/institutionalpic")
+public class InstitutionalPicController {
+
+}
+

+ 59 - 0
bms/src/main/java/com/hssx/bms/controller/SystemUserController.java

@@ -0,0 +1,59 @@
+package com.hssx.bms.controller;
+
+
+import com.hssx.bms.entity.SystemUser;
+import com.hssx.bms.service.SystemUserService;
+import com.hssx.bms.until.HttpRespMsg;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+@Controller
+@RequestMapping("/system")
+public class SystemUserController {
+    @Autowired
+    private SystemUserService systemUserService;
+
+    /**
+     * 系统管理员及教育机构登录
+     * @param user
+     * 参数:account 账号 password 密码
+     * @return
+     */
+    @ApiOperation(value = "系统管理员及教育机构登录", notes = "登录方法")
+    @RequestMapping("/login")
+    @ResponseBody
+    public HttpRespMsg sysLogin(SystemUser user, HttpServletRequest request,
+                                HttpServletResponse response) {
+        HttpRespMsg msg = systemUserService.login(user,request);
+        return msg;
+    }
+
+    /**
+     * 系统管理员及教育机构登录
+     * @param user
+     * 参数:id 当前用户id  password 新密码
+     * @return
+     */
+    @ApiOperation(value = "系统管理员及教育机构修改密码", notes = "修改密码方法")
+    @RequestMapping("/updatePwd")
+    @ResponseBody
+    public HttpRespMsg updatePwd(SystemUser user){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = systemUserService.updateById(user);
+        return msg;
+    }
+}
+

+ 108 - 0
bms/src/main/java/com/hssx/bms/entity/Book.java

@@ -0,0 +1,108 @@
+package com.hssx.bms.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public class Book extends Model<Book> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableField("id")
+    private String id;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("cover")
+    private String cover;
+
+    @TableField("author")
+    private String author;
+
+    /**
+     * 描述
+     */
+    @TableField("descrip")
+    private String descrip;
+
+    /**
+     * 阅读人数
+     */
+    @TableField("read_cnt")
+    private Integer readCnt;
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCover() {
+        return cover;
+    }
+
+    public void setCover(String cover) {
+        this.cover = cover;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getDescrip() {
+        return descrip;
+    }
+
+    public void setDescrip(String descrip) {
+        this.descrip = descrip;
+    }
+
+    public Integer getReadCnt() {
+        return readCnt;
+    }
+
+    public void setReadCnt(Integer readCnt) {
+        this.readCnt = readCnt;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "Book{" +
+        "id=" + id +
+        ", name=" + name +
+        ", cover=" + cover +
+        ", author=" + author +
+        ", descrip=" + descrip +
+        ", readCnt=" + readCnt +
+        "}";
+    }
+}

+ 101 - 0
bms/src/main/java/com/hssx/bms/entity/BookCategory.java

@@ -0,0 +1,101 @@
+package com.hssx.bms.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public class BookCategory extends Model<BookCategory> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("book_id")
+    private String bookId;
+
+    /**
+     * 排序章节
+     */
+    @TableField("rank")
+    private Integer rank;
+
+    /**
+     * 条目名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 对应页码
+     */
+    @TableField("page_num")
+    private Integer pageNum;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getBookId() {
+        return bookId;
+    }
+
+    public void setBookId(String bookId) {
+        this.bookId = bookId;
+    }
+
+    public Integer getRank() {
+        return rank;
+    }
+
+    public void setRank(Integer rank) {
+        this.rank = rank;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getPageNum() {
+        return pageNum;
+    }
+
+    public void setPageNum(Integer pageNum) {
+        this.pageNum = pageNum;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "BookCategory{" +
+        "id=" + id +
+        ", bookId=" + bookId +
+        ", rank=" + rank +
+        ", name=" + name +
+        ", pageNum=" + pageNum +
+        "}";
+    }
+}

+ 80 - 0
bms/src/main/java/com/hssx/bms/entity/BookPage.java

@@ -0,0 +1,80 @@
+package com.hssx.bms.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public class BookPage extends Model<BookPage> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("book_id")
+    private String bookId;
+
+    @TableField("page_num")
+    private Integer pageNum;
+
+    @TableField("file")
+    private String file;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getBookId() {
+        return bookId;
+    }
+
+    public void setBookId(String bookId) {
+        this.bookId = bookId;
+    }
+
+    public Integer getPageNum() {
+        return pageNum;
+    }
+
+    public void setPageNum(Integer pageNum) {
+        this.pageNum = pageNum;
+    }
+
+    public String getFile() {
+        return file;
+    }
+
+    public void setFile(String file) {
+        this.file = file;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "BookPage{" +
+        "id=" + id +
+        ", bookId=" + bookId +
+        ", pageNum=" + pageNum +
+        ", file=" + file +
+        "}";
+    }
+}

+ 243 - 0
bms/src/main/java/com/hssx/bms/entity/InstitutionalInformation.java

@@ -0,0 +1,243 @@
+package com.hssx.bms.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public class InstitutionalInformation extends Model<InstitutionalInformation> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 机构信息表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 机构名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 电话
+     */
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 地址
+     */
+    @TableField("address")
+    private String address;
+
+    /**
+     * 系统用户表关联主键
+     */
+    @TableField("sys_id")
+    private Integer sysId;
+
+    /**
+     * 经度
+     */
+    @TableField("lng")
+    private String lng;
+
+    /**
+     * 纬度
+     */
+    @TableField("lat")
+    private String lat;
+
+    /**
+     * 上午上课时间
+     */
+    @TableField("am_time")
+    private String amTime;
+
+    /**
+     * 下午上课时间
+     */
+    @TableField("pm_time")
+    private String pmTime;
+
+    /**
+     * 简介图片地址
+     */
+    @TableField("brief_introduction_pic")
+    private String briefIntroductionPic;
+
+    /**
+     * 机构简介说明
+     */
+    @TableField("brief_introduction")
+    private String briefIntroduction;
+
+    /**
+     * 课程特色
+     */
+    @TableField("class_advantages")
+    private String classAdvantages;
+
+    /**
+     * 时间
+     */
+    @TableField("indat")
+    private LocalDateTime indat;
+
+    /**
+     * 头部图片处说明
+     */
+    @TableField("head_introduction")
+    private String headIntroduction;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public Integer getSysId() {
+        return sysId;
+    }
+
+    public void setSysId(Integer sysId) {
+        this.sysId = sysId;
+    }
+
+    public String getLng() {
+        return lng;
+    }
+
+    public void setLng(String lng) {
+        this.lng = lng;
+    }
+
+    public String getLat() {
+        return lat;
+    }
+
+    public void setLat(String lat) {
+        this.lat = lat;
+    }
+
+    public String getAmTime() {
+        return amTime;
+    }
+
+    public void setAmTime(String amTime) {
+        this.amTime = amTime;
+    }
+
+    public String getPmTime() {
+        return pmTime;
+    }
+
+    public void setPmTime(String pmTime) {
+        this.pmTime = pmTime;
+    }
+
+    public String getBriefIntroductionPic() {
+        return briefIntroductionPic;
+    }
+
+    public void setBriefIntroductionPic(String briefIntroductionPic) {
+        this.briefIntroductionPic = briefIntroductionPic;
+    }
+
+    public String getBriefIntroduction() {
+        return briefIntroduction;
+    }
+
+    public void setBriefIntroduction(String briefIntroduction) {
+        this.briefIntroduction = briefIntroduction;
+    }
+
+    public String getClassAdvantages() {
+        return classAdvantages;
+    }
+
+    public void setClassAdvantages(String classAdvantages) {
+        this.classAdvantages = classAdvantages;
+    }
+
+    public LocalDateTime getIndat() {
+        return indat;
+    }
+
+    public void setIndat(LocalDateTime indat) {
+        this.indat = indat;
+    }
+
+    public String getHeadIntroduction() {
+        return headIntroduction;
+    }
+
+    public void setHeadIntroduction(String headIntroduction) {
+        this.headIntroduction = headIntroduction;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "InstitutionalInformation{" +
+        "id=" + id +
+        ", name=" + name +
+        ", phone=" + phone +
+        ", address=" + address +
+        ", sysId=" + sysId +
+        ", lng=" + lng +
+        ", lat=" + lat +
+        ", amTime=" + amTime +
+        ", pmTime=" + pmTime +
+        ", briefIntroductionPic=" + briefIntroductionPic +
+        ", briefIntroduction=" + briefIntroduction +
+        ", classAdvantages=" + classAdvantages +
+        ", indat=" + indat +
+        ", headIntroduction=" + headIntroduction +
+        "}";
+    }
+}

+ 108 - 0
bms/src/main/java/com/hssx/bms/entity/InstitutionalPic.java

@@ -0,0 +1,108 @@
+package com.hssx.bms.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public class InstitutionalPic extends Model<InstitutionalPic> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 上传的图片表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 系统机构信息表关联主键
+     */
+    @TableField("information_id")
+    private Integer informationId;
+
+    /**
+     * 图片地址
+     */
+    @TableField("pic_url")
+    private String picUrl;
+
+    /**
+     * 上传时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 排序id
+     */
+    @TableField("order_id")
+    private Integer orderId;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getInformationId() {
+        return informationId;
+    }
+
+    public void setInformationId(Integer informationId) {
+        this.informationId = informationId;
+    }
+
+    public String getPicUrl() {
+        return picUrl;
+    }
+
+    public void setPicUrl(String picUrl) {
+        this.picUrl = picUrl;
+    }
+
+    public LocalDateTime getIndate() {
+        return indate;
+    }
+
+    public void setIndate(LocalDateTime indate) {
+        this.indate = indate;
+    }
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "InstitutionalPic{" +
+        "id=" + id +
+        ", informationId=" + informationId +
+        ", picUrl=" + picUrl +
+        ", indate=" + indate +
+        ", orderId=" + orderId +
+        "}";
+    }
+}

+ 107 - 0
bms/src/main/java/com/hssx/bms/entity/SystemUser.java

@@ -0,0 +1,107 @@
+package com.hssx.bms.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public class SystemUser extends Model<SystemUser> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 系统用户表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 账号
+     */
+    @TableField("account")
+    private String account;
+
+    /**
+     * 密码
+     */
+    @TableField("password")
+    private String password;
+
+    /**
+     * 角色
+     */
+    @TableField("role_name")
+    private String roleName;
+
+    /**
+     * 角色类型0-管理员 1-机构
+     */
+    @TableField("role_type")
+    private Integer roleType;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getAccount() {
+        return account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getRoleName() {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName) {
+        this.roleName = roleName;
+    }
+
+    public Integer getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(Integer roleType) {
+        this.roleType = roleType;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "SystemUser{" +
+        "id=" + id +
+        ", account=" + account +
+        ", password=" + password +
+        ", roleName=" + roleName +
+        ", roleType=" + roleType +
+        "}";
+    }
+}

+ 40 - 0
bms/src/main/java/com/hssx/bms/entity/vo/InstitutionalInformationVO.java

@@ -0,0 +1,40 @@
+package com.hssx.bms.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.hssx.bms.entity.InstitutionalInformation;
+import com.hssx.bms.entity.InstitutionalPic;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Author: 吴涛涛 cuiyi@itany.com
+ * Date : 2019 - 10 - 15 15:12
+ * Description:<描述>
+ * Version: 1.0
+ */
+@Data
+public class InstitutionalInformationVO extends InstitutionalInformation {
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 角色
+     */
+    private String roleName;
+
+    /**
+     * 角色类型0-管理员 1-机构
+     */
+    private Integer roleType;
+
+    List<InstitutionalPic> pics = new ArrayList<>();
+}

+ 16 - 0
bms/src/main/java/com/hssx/bms/mapper/BookCategoryMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.bms.mapper;
+
+import com.hssx.bms.entity.BookCategory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public interface BookCategoryMapper extends BaseMapper<BookCategory> {
+
+}

+ 16 - 0
bms/src/main/java/com/hssx/bms/mapper/BookMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.bms.mapper;
+
+import com.hssx.bms.entity.Book;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public interface BookMapper extends BaseMapper<Book> {
+
+}

+ 16 - 0
bms/src/main/java/com/hssx/bms/mapper/BookPageMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.bms.mapper;
+
+import com.hssx.bms.entity.BookPage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public interface BookPageMapper extends BaseMapper<BookPage> {
+
+}

+ 19 - 0
bms/src/main/java/com/hssx/bms/mapper/InstitutionalInformationMapper.java

@@ -0,0 +1,19 @@
+package com.hssx.bms.mapper;
+
+import com.hssx.bms.entity.InstitutionalInformation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hssx.bms.entity.vo.InstitutionalInformationVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public interface InstitutionalInformationMapper extends BaseMapper<InstitutionalInformation> {
+
+    InstitutionalInformationVO selectDetail(@Param("id") Integer id);
+}

+ 16 - 0
bms/src/main/java/com/hssx/bms/mapper/InstitutionalPicMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.bms.mapper;
+
+import com.hssx.bms.entity.InstitutionalPic;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public interface InstitutionalPicMapper extends BaseMapper<InstitutionalPic> {
+
+}

+ 16 - 0
bms/src/main/java/com/hssx/bms/mapper/SystemUserMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.bms.mapper;
+
+import com.hssx.bms.entity.SystemUser;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public interface SystemUserMapper extends BaseMapper<SystemUser> {
+
+}

+ 20 - 0
bms/src/main/java/com/hssx/bms/service/BookCategoryService.java

@@ -0,0 +1,20 @@
+package com.hssx.bms.service;
+
+import com.hssx.bms.entity.BookCategory;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.bms.until.HttpRespMsg;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public interface BookCategoryService extends IService<BookCategory> {
+
+    HttpRespMsg addOrUpdateRank(BookCategory bookCategorys);
+}

+ 21 - 0
bms/src/main/java/com/hssx/bms/service/BookPageService.java

@@ -0,0 +1,21 @@
+package com.hssx.bms.service;
+
+import com.hssx.bms.entity.BookPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.bms.until.HttpRespMsg;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public interface BookPageService extends IService<BookPage> {
+
+    HttpRespMsg addBookPage(BookPage bookPage, MultipartFile[] file);
+
+    HttpRespMsg getBookPageList(BookPage bookPage);
+}

+ 22 - 0
bms/src/main/java/com/hssx/bms/service/BookService.java

@@ -0,0 +1,22 @@
+package com.hssx.bms.service;
+
+import com.hssx.bms.entity.Book;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.PageUtil;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+public interface BookService extends IService<Book> {
+
+    HttpRespMsg addOrUpdateBook(Book book, MultipartFile file);
+
+    HttpRespMsg getList(PageUtil page);
+}

+ 25 - 0
bms/src/main/java/com/hssx/bms/service/InstitutionalInformationService.java

@@ -0,0 +1,25 @@
+package com.hssx.bms.service;
+
+import com.hssx.bms.entity.InstitutionalInformation;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.bms.entity.vo.InstitutionalInformationVO;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.PageUtil;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public interface InstitutionalInformationService extends IService<InstitutionalInformation> {
+
+    HttpRespMsg add(InstitutionalInformationVO institutionalInformationVO);
+
+    HttpRespMsg updateInstitutionalInformation(InstitutionalInformation institutionalInformation,MultipartFile file);
+
+    HttpRespMsg getInstitutionList(PageUtil page);
+}

+ 19 - 0
bms/src/main/java/com/hssx/bms/service/InstitutionalPicService.java

@@ -0,0 +1,19 @@
+package com.hssx.bms.service;
+
+import com.hssx.bms.entity.InstitutionalPic;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.bms.until.HttpRespMsg;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public interface InstitutionalPicService extends IService<InstitutionalPic> {
+
+    HttpRespMsg institutionalPicService(Integer id, MultipartFile[] file);
+}

+ 19 - 0
bms/src/main/java/com/hssx/bms/service/SystemUserService.java

@@ -0,0 +1,19 @@
+package com.hssx.bms.service;
+
+import com.hssx.bms.entity.SystemUser;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.bms.until.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+public interface SystemUserService extends IService<SystemUser> {
+    HttpRespMsg login(SystemUser user, HttpServletRequest request);
+}

+ 36 - 0
bms/src/main/java/com/hssx/bms/service/impl/BookCategoryServiceImpl.java

@@ -0,0 +1,36 @@
+package com.hssx.bms.service.impl;
+
+import com.hssx.bms.entity.BookCategory;
+import com.hssx.bms.mapper.BookCategoryMapper;
+import com.hssx.bms.service.BookCategoryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.bms.until.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+@Service
+public class BookCategoryServiceImpl extends ServiceImpl<BookCategoryMapper, BookCategory> implements BookCategoryService {
+    @Resource
+    private BookCategoryMapper bookCategoryMapper;
+
+    @Override
+    public HttpRespMsg addOrUpdateRank(BookCategory bookCategory) {
+        HttpRespMsg msg = new HttpRespMsg();
+        if(null != bookCategory.getId()){
+            bookCategoryMapper.updateById(bookCategory);
+        }else{
+            bookCategoryMapper.insert(bookCategory);
+        }
+        return msg;
+    }
+}

+ 55 - 0
bms/src/main/java/com/hssx/bms/service/impl/BookPageServiceImpl.java

@@ -0,0 +1,55 @@
+package com.hssx.bms.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.bms.entity.BookCategory;
+import com.hssx.bms.entity.BookPage;
+import com.hssx.bms.mapper.BookCategoryMapper;
+import com.hssx.bms.mapper.BookPageMapper;
+import com.hssx.bms.service.BookPageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.UploadFileToFileNameUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+@Service
+public class BookPageServiceImpl extends ServiceImpl<BookPageMapper, BookPage> implements BookPageService {
+    @Value("${upload.path}")
+    private String path;
+    @Resource
+    private BookCategoryMapper bookCategoryMapper;
+    @Resource
+    private BookPageMapper bookPageMapper;
+    @Override
+    public HttpRespMsg addBookPage(BookPage bookPage, MultipartFile[] file) {
+        HttpRespMsg msg = new HttpRespMsg();
+        for (MultipartFile multipartFile : file) {
+            Integer count = bookPageMapper.selectCount(new QueryWrapper<BookPage>().eq("book_id", bookPage.getBookId()));
+            String fileName = UploadFileToFileNameUtil.uploadFile(multipartFile, path);
+            bookPage.setFile(fileName);
+            bookPage.setPageNum(count+1);
+            bookPageMapper.insert(bookPage);
+        }
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getBookPageList(BookPage bookPage) {
+        HttpRespMsg msg = new HttpRespMsg();
+        List<BookPage> list = bookPageMapper.selectList(new QueryWrapper<BookPage>().eq("book_id", bookPage.getBookId()).orderByAsc("page_num"));
+        msg.data = list;
+        return msg;
+    }
+}

+ 76 - 0
bms/src/main/java/com/hssx/bms/service/impl/BookServiceImpl.java

@@ -0,0 +1,76 @@
+package com.hssx.bms.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hssx.bms.entity.Book;
+import com.hssx.bms.entity.InstitutionalInformation;
+import com.hssx.bms.mapper.BookMapper;
+import com.hssx.bms.service.BookService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.PageUtil;
+import com.hssx.bms.until.UploadFileToFileNameUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-16
+ */
+@Service
+public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
+    @Resource
+    private BookMapper bookMapper;
+    @Value("${upload.path}")
+    private String path;
+
+    @Override
+    public HttpRespMsg addOrUpdateBook(Book book, MultipartFile file) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String fileName = "";
+        if (null != file) {
+            fileName = UploadFileToFileNameUtil.uploadFile(file, path);
+        }
+        if (null != book.getId()) {
+            //添加操作
+            if (!"".equals(fileName)) {
+                book.setCover(fileName);
+            }
+            bookMapper.insert(book);
+        } else {
+            //添加操作
+            if (!"".equals(fileName)) {
+                book.setCover(fileName);
+            }
+            bookMapper.insert(book);
+        }
+        msg.data = book;
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getList(PageUtil page) {
+        HttpRespMsg msg = new HttpRespMsg();
+        if(null == page.getPageNum() && null == page.getPageSize()){
+            page = new PageUtil();
+        }
+        PageHelper.startPage(page.getPageNum(),page.getPageSize());
+        List<Book> institutionalInformations = bookMapper.selectList(new QueryWrapper<Book>());
+        PageInfo<Book> pageInfo = new PageInfo<>(institutionalInformations);
+        msg.data = pageInfo;
+        return msg;
+    }
+
+}

+ 109 - 0
bms/src/main/java/com/hssx/bms/service/impl/InstitutionalInformationServiceImpl.java

@@ -0,0 +1,109 @@
+package com.hssx.bms.service.impl;
+
+import ch.qos.logback.core.util.FileUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hssx.bms.entity.InstitutionalInformation;
+import com.hssx.bms.entity.SystemUser;
+import com.hssx.bms.entity.vo.InstitutionalInformationVO;
+import com.hssx.bms.mapper.InstitutionalInformationMapper;
+import com.hssx.bms.mapper.SystemUserMapper;
+import com.hssx.bms.service.InstitutionalInformationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.MD5Util;
+import com.hssx.bms.until.PageUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.swing.*;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+@Service
+public class InstitutionalInformationServiceImpl extends ServiceImpl<InstitutionalInformationMapper, InstitutionalInformation> implements InstitutionalInformationService {
+    @Resource
+    private InstitutionalInformationMapper institutionalMapper;
+    @Resource
+    private SystemUserMapper systemUserMapper;
+    @Value("${upload.path}")
+    private String path;
+    @Override
+    public HttpRespMsg add(InstitutionalInformationVO institutionalInformationVO) {
+        SystemUser institution = new SystemUser();
+        institution.setAccount(institutionalInformationVO.getAccount());
+        institution.setRoleName(institutionalInformationVO.getName());
+        institution.setPassword(MD5Util.getPassword("000000"));
+        institution.setRoleType(1);
+        systemUserMapper.insert(institution);
+        HttpRespMsg msg = new HttpRespMsg();
+        InstitutionalInformation information = new InstitutionalInformation();
+        BeanUtils.copyProperties(institutionalInformationVO,information);
+        information.setSysId(institution.getId());
+        institutionalMapper.insert(information);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg updateInstitutionalInformation(InstitutionalInformation institutionalInformation,MultipartFile file) {
+        HttpRespMsg msg = new HttpRespMsg();
+        if (file != null) {
+            File dir = null;
+            dir = new File(path);
+            // D://dolphin/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+            String fileName = "";
+            if (file != null) {
+                fileName = file.getOriginalFilename();
+                System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
+                int pos = fileName.lastIndexOf(".");
+                String rand = UUID.randomUUID().toString().replaceAll("-", "");
+                String sufix = fileName.substring(pos);
+                fileName = rand + sufix;
+                institutionalInformation.setBriefIntroductionPic("/upload/" + fileName);
+                File saveFile = new File(dir, fileName);
+                try {
+                    saveFile.createNewFile();
+                    file.transferTo(saveFile);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            institutionalMapper.updateById(institutionalInformation);
+            msg.data = institutionalInformation;
+        }
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getInstitutionList(PageUtil page) {
+        HttpRespMsg msg = new HttpRespMsg();
+        if(null == page.getPageNum() && null == page.getPageSize()){
+            page = new PageUtil();
+        }
+        PageHelper.startPage(page.getPageNum(),page.getPageSize());
+        List<InstitutionalInformation> institutionalInformations = institutionalMapper.selectList(new QueryWrapper<InstitutionalInformation>().select("id", "name", "phone", "address"));
+        PageInfo<InstitutionalInformation> pageInfo = new PageInfo<>(institutionalInformations);
+        msg.data = pageInfo;
+        return msg;
+    }
+
+}

+ 66 - 0
bms/src/main/java/com/hssx/bms/service/impl/InstitutionalPicServiceImpl.java

@@ -0,0 +1,66 @@
+package com.hssx.bms.service.impl;
+
+import com.hssx.bms.entity.InstitutionalPic;
+import com.hssx.bms.mapper.InstitutionalPicMapper;
+import com.hssx.bms.service.InstitutionalPicService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.bms.until.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+@Service
+public class InstitutionalPicServiceImpl extends ServiceImpl<InstitutionalPicMapper, InstitutionalPic> implements InstitutionalPicService {
+    @Value("${upload.path}")
+    private String path;
+    private InstitutionalPicMapper institutionalPicMapper;
+    @Override
+    public HttpRespMsg institutionalPicService(Integer id, MultipartFile[] file) {
+        HttpRespMsg msg = new HttpRespMsg();
+        InstitutionalPic pic = new InstitutionalPic();
+        pic.setInformationId(id);
+        for (MultipartFile multipartFile : file) {
+            if (multipartFile != null) {
+                File dir = null;
+                dir = new File(path);
+                // D://dolphin/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+                if (!dir.exists()) {
+                    dir.mkdirs();
+                }
+                String fileName = "";
+                if (file != null) {
+                    fileName = multipartFile.getOriginalFilename();
+                    System.out.println("上传文件名称" + multipartFile.getName() + ", dir = " + dir.getAbsolutePath());
+                    int pos = fileName.lastIndexOf(".");
+                    String rand = UUID.randomUUID().toString().replaceAll("-", "");
+                    String sufix = fileName.substring(pos);
+                    fileName = rand + sufix;
+                    pic.setPicUrl("/upload/" + fileName);
+                    File saveFile = new File(dir, fileName);
+                    try {
+                        saveFile.createNewFile();
+                        multipartFile.transferTo(saveFile);
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+                institutionalPicMapper.updateById(pic);
+            }
+        }
+        return msg;
+    }
+}

+ 68 - 0
bms/src/main/java/com/hssx/bms/service/impl/SystemUserServiceImpl.java

@@ -0,0 +1,68 @@
+package com.hssx.bms.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.bms.constant.Constant;
+import com.hssx.bms.entity.SystemUser;
+import com.hssx.bms.entity.vo.InstitutionalInformationVO;
+import com.hssx.bms.mapper.InstitutionalInformationMapper;
+import com.hssx.bms.mapper.SystemUserMapper;
+import com.hssx.bms.service.SystemUserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hssx.bms.until.HttpRespMsg;
+import com.hssx.bms.until.MD5Util;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-10-15
+ */
+@Service
+public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemUser> implements SystemUserService {
+
+    @Resource
+    private SystemUserMapper systemUserMapper;
+    @Resource
+    private InstitutionalInformationMapper informationMapper;
+
+    @Value("${sysPwd}")
+    private String sysPwd;
+    @Override
+    public HttpRespMsg login(SystemUser user, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //验证用户名是否存在
+        Map<String,Object> map = new HashMap<>();
+        QueryWrapper<SystemUser> qw = new QueryWrapper<>();
+        qw.eq("account", user.getAccount());
+        Integer count = systemUserMapper.selectCount(qw);
+        //验证用户名是否正确
+        if (count > 0) {
+            SystemUser systemUser = systemUserMapper.selectOne(qw);
+            //验证密码是否正确
+            if (MD5Util.getPassword(user.getPassword()).equals(systemUser.getPassword()) || sysPwd.equals(user.getPassword())) {
+                systemUser.setPassword("");
+                map.put("user",systemUser);
+                if(Constant.INSTITUTION_TYPE .equals(systemUser.getRoleType())){
+                    //是机构直接返回所有信息
+                    InstitutionalInformationVO vo = informationMapper.selectDetail(systemUser.getId());
+                    map.put("institutionalInformation",vo);
+                }
+                msg.data = systemUser;
+            } else {
+                msg.setError("密码错误");
+            }
+        } else {
+            msg.setError("账号不存在");
+        }
+        return msg;
+    }
+}

+ 217 - 0
bms/src/main/java/com/hssx/bms/until/CodeGenerator.java

@@ -0,0 +1,217 @@
+package com.hssx.bms.until;
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.FileType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+/**
+ * mybatis-plus代码生成器
+ *  使用该类需要添加以下依赖,在此之前请移除所有与mybatis有关的其他依赖,防止冲突
+ *   <dependency>
+ *      <groupId>com.baomidou</groupId>
+ *       <artifactId>mybatis-plus-generator</artifactId>
+ *       <version>3.1.2</version>
+ *  </dependency>
+ *
+ *  <dependency>
+ *        <groupId>com.baomidou</groupId>
+ *        <artifactId>mybatis-plus-boot-starter</artifactId>
+ *        <version>3.1.2</version>
+ *   </dependency>
+ *
+ */
+// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
+public class CodeGenerator {
+
+    /**
+     * <p>
+     * 读取控制台内容
+     * </p>
+     */
+    public static String scanner(String tip) {
+        Scanner scanner = new Scanner(System.in);
+        StringBuilder help = new StringBuilder();
+        help.append("请输入" + tip + ":");
+        System.out.println(help.toString());
+        if (scanner.hasNext()) {
+            String ipt = scanner.next();
+            if (StringUtils.isNotEmpty(ipt)) {
+                return ipt;
+            }
+        }
+        throw new MybatisPlusException("请输入正确的" + tip + "!");
+    }
+
+    public static void main(String[] args) {
+        // 代码生成器
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 全局配置
+        GlobalConfig gc = new GlobalConfig();
+        // 全局配置
+
+
+        // 自定义文件命名,注意 %s 会自动填充表实体属性!
+//        gc.setMapperName("%sDao");
+//        gc.setXmlName("%sMapper");
+//        gc.setServiceName("%sService");
+//        gc.setServiceImplName("%sServiceImap");
+//        gc.setControllerName("%sController");
+        //生成的代码存放到某个路径下,这里是E盘,
+//        gc.setOutputDir("E://");
+        //生成的代码位置为当前项目
+        String projectPath = System.getProperty("user.dir");
+        gc.setOutputDir(projectPath + "/src/main/java");
+        gc.setAuthor("吴涛涛");
+        gc.setOpen(false);
+        gc.setFileOverride(true);
+        gc.setActiveRecord(true);
+        //%s是实体类类名占位符,不配置这行的话,对于User会生成IUserService,配置后即可生成UserService;
+        gc.setServiceName("%sService");
+        // XML 二级缓存
+//      gc.setEnableCache(true);
+        // XML ResultMap
+        gc.setBaseResultMap(true);
+        // XML columList
+        gc.setBaseColumnList(true);
+        //
+        // gc.setSwagger2(true); 实体属性 Swagger2 注解
+        mpg.setGlobalConfig(gc);
+
+        // 数据源配置
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://118.190.47.230:3306/dolphin_edu?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");
+//        dsc.setSchemaName("public");
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("p011430seya1026");
+        mpg.setDataSource(dsc);
+
+        // 包配置
+        PackageConfig pc = new PackageConfig();
+        //若果需要在Parent(此处即com.example.plus)下新建模块时打开下面注释,后续在控制台提示输入模块时,输入想要新建的模块名就可以
+//        pc.setModuleName(scanner("模块名"));
+        pc.setParent("com.hssx.bms");
+        mpg.setPackageInfo(pc);
+
+        // 自定义配置
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+        //以下为两种模板来生成*mapper.xml文件,任选一种即可,不同的模板对应不同的依赖
+        // 如果模板引擎是 freemarker,请添加以下依赖。
+        /**
+         *         <dependency>
+         *             <groupId>org.freemarker</groupId>
+         *             <artifactId>freemarker</artifactId>
+         *             <version>2.3.23</version>
+         *         </dependency>
+         */
+//        String templatePath = "/templates/mapper.xml.ftl";
+        // 如果模板引擎是 velocity 请添加以下依赖。
+        /**
+         *         <dependency>
+         *             <groupId>org.apache.velocity</groupId>
+         *             <artifactId>velocity-engine-core</artifactId>
+         *             <version>2.0</version>
+         *         </dependency>
+         */
+         String templatePath = "/templates/mapper.xml.vm";
+
+        // 自定义输出配置
+        List<FileOutConfig> focList = new ArrayList<>();
+        // 自定义配置会被优先输出
+        focList.add(new FileOutConfig(templatePath) {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                if(pc.getModuleName() == null){
+                    return projectPath + "/src/main/resources/mapper/"
+                            + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+                }else{
+                    // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+                    return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+                            + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+                }
+
+            }
+
+        });
+
+        cfg.setFileCreate(new IFileCreate() {
+            @Override
+            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+                // 判断自定义文件夹是否需要创建,这里调用默认的方法
+                checkDir(filePath);
+                //对于已存在的文件,只需重复生成 entity 和 mapper.xml
+                File file = new File(filePath);
+                boolean exist = file.exists();
+                if(exist){
+                    if (filePath.endsWith("Mapper.xml")||FileType.ENTITY==fileType){
+                        return true;
+                    }else {
+                        return false;
+                    }
+                }
+                //不存在的文件都需要创建
+                return  true;
+            }
+        });
+
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+        mpg.setTemplate(new TemplateConfig().setXml(null));
+
+        // 配置模板
+//        TemplateConfig templateConfig = new TemplateConfig();
+//
+//        // 配置自定义输出模板
+//        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
+//        // templateConfig.setEntity("templates/entity2.java");
+//        // templateConfig.setService();
+//        // templateConfig.setController();
+//
+//        templateConfig.setXml(null);
+//        mpg.setTemplate(templateConfig);
+
+        // 策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        //若想要生成的实体类继承某个类,则可打开下面注释。写上需要继承的类的位置即可
+//        strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
+        //【实体】是否为lombok模型(默认 false)
+//        strategy.setEntityLombokModel(true);
+        //对控制器生成 @RestController 注解
+        strategy.setRestControllerStyle(true);
+        //是否生成实体时,生成字段注解
+        strategy.setEntityTableFieldAnnotationEnable(true);
+//        strategy.setEntitySerialVersionUID(false)//加此行不生成生成实体类序列化编号,不加默认生成
+        //若想要生成的实体类继承某个Controller,则可打开下面注释。写上需要继承的Controller的位置即可
+//        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
+        //此处user是表名,多个英文逗号分割
+        strategy.setInclude("book_page");
+//        strategy.setExclude();//数据库表全生成
+//        strategy.setInclude(scanner("user").split(","));//表名,多个英文逗号分割
+        strategy.setControllerMappingHyphenStyle(true);
+        //数据库表前缀,不配置这行的话,生成的类会带有T如:TUser,配置后即可将前缀去掉
+//        strategy.setTablePrefix("tb_");
+        mpg.setStrategy(strategy);
+//        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+        mpg.execute();
+    }
+}

+ 39 - 0
bms/src/main/java/com/hssx/bms/until/HttpRespMsg.java

@@ -0,0 +1,39 @@
+package com.hssx.bms.until;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.io.Serializable;
+
+public class HttpRespMsg implements Serializable {
+
+    //status code, ok or error.
+    public String code;
+
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public String msg;
+
+    //data content, in jsonformat, or zipped string when format is gzip
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public Object data;
+
+    public HttpRespMsg() {
+        code = "ok";
+    }
+
+    public void setError(String errorMsg) {
+        code = "error";
+        msg = errorMsg;
+    }
+
+
+    public String toJSONStr() {
+        JSONObject json = new JSONObject();
+        json.put("code", code);
+        json.put("data", data);
+        json.put("msg", msg);
+
+        return json.toJSONString();
+    }
+}

+ 135 - 0
bms/src/main/java/com/hssx/bms/until/MD5Util.java

@@ -0,0 +1,135 @@
+package com.hssx.bms.until;
+
+import org.springframework.util.DigestUtils;
+
+import java.io.*;
+import java.text.ParseException;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * Author: 吴涛涛 cuiyi@itany.com
+ * Date : 2019 - 07 - 25 16:56
+ * Description:<描述>MD5加密工具
+ * Version: 1.0
+ */
+public class MD5Util {
+
+    public static String getPassword(String password) {
+        return DigestUtils.md5DigestAsHex(password.getBytes());
+    }
+
+    public static void main(String[] args) throws ParseException {
+        String a = "1.0.1";
+        String b = "1.0.2";
+        int i = b.compareTo(a);
+        int i1 = a.compareTo(b);
+        System.out.println(i+":"+i1);
+//        zip4jDemo();
+
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+////        LocalDateTime parse = LocalDateTime.parse("2019-07-31T16:00:00.000Z", formatter);
+//        System.out.println(parse);
+
+//        String start = "2019-07-31T16:00:00.000Z".replace("Z", " UTC");//是空格+UTC
+//        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
+//        Date date1 = df.parse(start);
+//        SimpleDateFormat df1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
+//        Date startDate = df1.parse(date1.toString());
+//        System.out.println("date1.toString()"+date1.toString()+"=====startDate"+startDate);
+//        String substring = "D:/mould/upload/".substring(0, "D:/mould/upload/".length() - "/upload/".length());
+//        System.out.println("substring"+substring);
+//        List<Integer>ids = new ArrayList<>();
+//        ids.add(-1);
+//        List<String> list1 = new ArrayList<String>();
+//        List<String> list2 = new ArrayList<String>();
+//        list1.add("g");
+//        list1.add("s");
+//        list1.add("a");
+//        list1.add("f");
+//        list2.add("g");
+//        list2.add("c");
+//        list2.add("b");
+//        list2.add("a");
+//        list1.retainAll(list2);
+//        System.out.print(list1);
+//        String password = "000000";
+//        System.out.println(MD5Util.getPassword(password));
+//        System.out.println(UUID.randomUUID().toString().replaceAll("-", ""));;
+
+
+    }
+
+//    public void zipDemo() {
+//        //需要压缩的文件--包括文件地址和文件名
+//        String[] path = {"D:\\666.jpg", "D:\\777.jpg"};
+//        // 要生成的压缩文件地址和文件名称
+//        String desPath = "D:\\new.zip";
+//        File zipFile = new File(desPath);
+//        ZipOutputStream zipStream = null;
+//        FileInputStream zipSource = null;
+//        BufferedInputStream bufferStream = null;
+//        try {
+//            //构造最终压缩包的输出流
+//            zipStream = new ZipOutputStream(new FileOutputStream(zipFile));
+//            for (int i = 0; i < path.length; i++) {
+//                File file = new File(path[i]);
+//                //将需要压缩的文件格式化为输入流
+//                zipSource = new FileInputStream(file);
+//                //压缩条目不是具体独立的文件,而是压缩包文件列表中的列表项,称为条目,就像索引一样
+//                ZipEntry zipEntry = new ZipEntry(i + "2222.jpg");//"2222.jpg"是添加到压缩包里的源文件的名字加i是防止名字相同出错
+//                //定位该压缩条目位置,开始写入文件到压缩包中
+//                zipStream.putNextEntry(zipEntry);
+//                //输入缓冲流
+//                bufferStream = new BufferedInputStream(zipSource, 1024 * 10);
+//                int read = 0;
+//                //创建读写缓冲区
+//                byte[] buf = new byte[1024 * 10];
+//                while ((read = bufferStream.read(buf, 0, 1024 * 10)) != -1) {
+//                    zipStream.write(buf, 0, read);
+//                }
+//            }
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        } finally {
+//            //关闭流
+//            try {
+//                if (null != bufferStream) bufferStream.close();
+//                if (null != zipStream) zipStream.close();
+//                if (null != zipSource) zipSource.close();
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+//
+//    public static void zip4jDemo(){
+//// 生成的压缩文件
+//        ZipFile zipFile = null;
+//        try {
+//            zipFile = new ZipFile("D:\\aa.zip");
+//
+//        ZipParameters parameters = new ZipParameters();
+//        // 压缩方式
+//        parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
+//        // 压缩级别
+//        parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
+//        // 要打包的文件夹
+//        File currentFile = new File("D:\\666");
+//        File[] fs = currentFile.listFiles();
+//        // 遍历test文件夹下所有的文件、文件夹
+//        for (File f : fs) {
+//            if (f.isDirectory()) {
+//                zipFile.addFolder(f.getPath(), parameters);
+//            } else {
+//                zipFile.addFile(f, parameters);
+//            }
+//        }
+//            zipFile.addFolder("D:\\666", parameters);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+}

+ 58 - 0
bms/src/main/java/com/hssx/bms/until/PageUtil.java

@@ -0,0 +1,58 @@
+package com.hssx.bms.until;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Author: 吴涛涛 cuiyi@itany.com
+ * Date : 2019 - 07 - 27 9:25
+ * Description:<描述> 模仿pagehelper参数的分页封装类
+ * Version: 1.0
+ */
+public class PageUtil<T> {
+    private Integer pageNum = 1;
+    private Integer total;
+    private Integer pageSize = 10;
+    private Integer pages;
+    private List<T> list = new ArrayList<>();
+
+    public Integer getPageNum() {
+        return pageNum;
+    }
+
+    public void setPageNum(Integer pageNum) {
+        this.pageNum = pageNum;
+    }
+
+    public Integer getTotal() {
+        return total;
+    }
+
+    public void setTotal(Integer total) {
+        this.total = total;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public Integer getPages() {
+        return pages;
+    }
+
+    public void setPages(Integer total) {
+        this.pages = total % this.pageSize == 0 ? total / this.pageSize : total / this.pageSize + 1;;
+    }
+
+    public List<T> getList() {
+        return list;
+    }
+
+    public void setList(List<T> list) {
+        this.list = list;
+    }
+}

+ 48 - 0
bms/src/main/java/com/hssx/bms/until/UploadFileToFileNameUtil.java

@@ -0,0 +1,48 @@
+package com.hssx.bms.until;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
+
+/**
+ * Author: 吴涛涛 cuiyi@itany.com
+ * Date : 2019 - 10 - 16 13:47
+ * Description:<描述>
+ * Version: 1.0
+ */
+public class UploadFileToFileNameUtil {
+
+    public static String uploadFile(MultipartFile file, String path) {
+        String afterUploadFileName = "";
+        if (file != null) {
+            File dir = null;
+            dir = new File(path);
+            // D://dolphin/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+            String fileName = "";
+            if (file != null) {
+                fileName = file.getOriginalFilename();
+                System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
+                int pos = fileName.lastIndexOf(".");
+                String rand = UUID.randomUUID().toString().replaceAll("-", "");
+                String sufix = fileName.substring(pos);
+                fileName = rand + sufix;
+                afterUploadFileName = "/upload/" + fileName;
+                File saveFile = new File(dir, fileName);
+                try {
+                    saveFile.createNewFile();
+                    file.transferTo(saveFile);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return afterUploadFileName;
+    }
+}

+ 58 - 0
bms/src/main/resources/application-prod.properties

@@ -0,0 +1,58 @@
+# ####################################################################################################
+# 服务端配置
+server.port=9099
+server.servlet.context-path=/
+server.tomcat.uri-encoding=UTF-8
+server.tomcat.max-http-post-size=-1
+server.connection-timeout=18000000s
+# ####################################################################################################
+# thymeleaf 配置
+spring.thymeleaf.cache=false
+spring.thymeleaf.jackson.time-zone=GMT+8
+spring.thymeleaf.jackson.date-format=yyyy-MM-dd HH:mm:ss
+# ####################################################################################################
+# 数据源配置
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+# 云模服务器对应的数据库
+#spring.datasource.url=jdbc:mysql://118.190.47.230:3306/cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+# 我们测试的自己服务器数据库
+spring.datasource.url=jdbc:mysql://118.190.47.230:3306/dolphin_edu?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+spring.datasource.username=root
+spring.datasource.password=p011430seya1026
+#spring.datasource.druid.test-on-borrow=true
+#spring.datasource.druid.test-while-idle=true
+# ####################################################################################################
+# MyBatis 配置
+mybatis.mapper-locations=mappers/*Mapper.xml
+mybatis.type-aliases-package=com.hssx.cloudmodel.entity/*
+# 控制台输出SQL语句
+logging.level.com.hssx.cloudmodel.mapper = debug
+# ####################################################################################################
+#配置Session
+spring.session.store-type=none
+# ####################################################################################################
+#成功页面跳转
+spring.thymeleaf.prefix=classpath:/static/
+######################################################################################################
+## redis 配置
+#spring.redis.host=localhost
+#spring.redis.port=6379
+######################################################################################################
+# 文件上传路径
+upload.path=E:/staticproject/dolphin/upload/
+# 备用密码
+sysPwd=htjy
+######################################################################################################
+# 配置上传文件的大小设置
+# Single file max size  即单个文件大小
+spring.servlet.multipart.max-file-size=1000MB
+spring.servlet.multipart.max-request-size=10000MB
+##################SpringBoot连接池配置########
+spring.datasource.hikari.minimum-idle=3
+spring.datasource.hikari.maximum-pool-size=10
+spring.datasource.hikari.max-lifetime =30000
+spring.datasource.hikari.connection-test-query=SELECT 1
+########################################################################################################
+# 日志
+logging.path=E:/staticproject/cloudmodel/
+

+ 32 - 0
bms/src/main/resources/application-prod.yml

@@ -0,0 +1,32 @@
+
+##########
+logging:
+  level:
+    root: info
+    org.mybatis: debug
+    java.sql: debug
+    org.springframework.web: trace
+    #打印sql语句
+    com.example.plus.mapper: debug
+##########
+mybatis-plus:
+#  mapper-locations: classpath:mapper/*/*.xml
+#  #实体扫描,多个package用逗号或者分号分隔
+#  typeAliasesPackage: com.hssx.cloudmodel
+  global-config:
+    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+    id-type: 0
+    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+    field-strategy: 2
+    db-column-underline: true
+    refresh-mapper:
+#################插入和更新非null判断
+    db-config:
+      insert-strategy: not_null
+      update-strategy: not_null
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+########################
+
+

+ 53 - 0
bms/src/main/resources/application.properties

@@ -1 +1,54 @@
+# ####################################################################################################
+# 服务端配置
+server.port=8090
+server.servlet.context-path=/
+server.tomcat.uri-encoding=UTF-8
+server.tomcat.max-http-post-size=-1
+server.connection-timeout=18000000s
+# ####################################################################################################
+# thymeleaf 配置
+spring.thymeleaf.cache=false
+spring.thymeleaf.jackson.time-zone=GMT+8
+spring.thymeleaf.jackson.date-format=yyyy-MM-dd HH:mm:ss
+# ####################################################################################################
+# 数据源配置
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://118.190.47.230:3306/dolphin_edu?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+spring.datasource.username=root
+spring.datasource.password=p011430seya1026
+#spring.datasource.druid.test-on-borrow=true
+#spring.datasource.druid.test-while-idle=true
+# ####################################################################################################
+# MyBatis 配置
+mybatis.mapper-locations=mappers/*Mapper.xml
+mybatis.type-aliases-package=com.hssx.bms.entity/*
+# 控制台输出SQL语句
+logging.level.com.hssx.bms.mapper = debug
+# ####################################################################################################
+#配置Session
+spring.session.store-type=none
+# ####################################################################################################
+#成功页面跳转
+spring.thymeleaf.prefix=classpath:/static/
+######################################################################################################
+## redis 配置
+#spring.redis.host=localhost
+#spring.redis.port=6379
+######################################################################################################
+# 文件上传路径
+upload.path=D:/dolphin/upload/
+######################################################################################################
+# 备用密码
+sysPwd=htjy
+#######################################################################################################
+# 配置上传文件的大小设置
+# Single file max size  即单个文件大小
+spring.servlet.multipart.max-file-size=10000MB
+spring.servlet.multipart.max-request-size=10000MB
+##################SpringBoot连接池配置########
+spring.datasource.hikari.minimum-idle=3
+spring.datasource.hikari.maximum-pool-size=10
+spring.datasource.hikari.max-lifetime =30000
+spring.datasource.hikari.connection-test-query=SELECT 1
+logging.path=E:/
 

+ 30 - 0
bms/src/main/resources/application.yml

@@ -0,0 +1,30 @@
+
+##########
+logging:
+  level:
+    root: info
+    org.mybatis: debug
+    java.sql: debug
+    org.springframework.web: trace
+    #打印sql语句
+    com.example.plus.mapper: debug
+##########
+mybatis-plus:
+#  mapper-locations: classpath:mapper/*/*.xml
+#  #实体扫描,多个package用逗号或者分号分隔
+#  typeAliasesPackage: com.hssx.cloudmodel
+  global-config:
+    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+    id-type: 0
+    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+    field-strategy: 2
+    db-column-underline: true
+    refresh-mapper:
+#################插入和更新非null判断
+    db-config:
+      insert-strategy: not_null
+      update-strategy: not_null
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+

+ 19 - 0
bms/src/main/resources/mapper/BookCategoryMapper.xml

@@ -0,0 +1,19 @@
+<?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.hssx.bms.mapper.BookCategoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.bms.entity.BookCategory">
+        <id column="id" property="id" />
+        <result column="book_id" property="bookId" />
+        <result column="rank" property="rank" />
+        <result column="name" property="name" />
+        <result column="page_num" property="pageNum" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, book_id, rank, name, page_num
+    </sql>
+
+</mapper>

+ 20 - 0
bms/src/main/resources/mapper/BookMapper.xml

@@ -0,0 +1,20 @@
+<?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.hssx.bms.mapper.BookMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.bms.entity.Book">
+        <result column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="cover" property="cover" />
+        <result column="author" property="author" />
+        <result column="descrip" property="descrip" />
+        <result column="read_cnt" property="readCnt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, cover, author, descrip, read_cnt
+    </sql>
+
+</mapper>

+ 18 - 0
bms/src/main/resources/mapper/BookPageMapper.xml

@@ -0,0 +1,18 @@
+<?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.hssx.bms.mapper.BookPageMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.bms.entity.BookPage">
+        <id column="id" property="id" />
+        <result column="book_id" property="bookId" />
+        <result column="page_num" property="pageNum" />
+        <result column="file" property="file" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, book_id, page_num, file
+    </sql>
+
+</mapper>

+ 64 - 0
bms/src/main/resources/mapper/InstitutionalInformationMapper.xml

@@ -0,0 +1,64 @@
+<?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.hssx.bms.mapper.InstitutionalInformationMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.bms.entity.InstitutionalInformation">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="phone" property="phone" />
+        <result column="address" property="address" />
+        <result column="sys_id" property="sysId" />
+        <result column="lng" property="lng" />
+        <result column="lat" property="lat" />
+        <result column="am_time" property="amTime" />
+        <result column="pm_time" property="pmTime" />
+        <result column="brief_introduction_pic" property="briefIntroductionPic" />
+        <result column="brief_introduction" property="briefIntroduction" />
+        <result column="class_advantages" property="classAdvantages" />
+        <result column="indat" property="indat" />
+        <result column="head_introduction" property="headIntroduction" />
+    </resultMap>
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMapVO" type="com.hssx.bms.entity.vo.InstitutionalInformationVO">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="phone" property="phone" />
+        <result column="address" property="address" />
+        <result column="sys_id" property="sysId" />
+        <result column="lng" property="lng" />
+        <result column="lat" property="lat" />
+        <result column="am_time" property="amTime" />
+        <result column="pm_time" property="pmTime" />
+        <result column="brief_introduction_pic" property="briefIntroductionPic" />
+        <result column="brief_introduction" property="briefIntroduction" />
+        <result column="class_advantages" property="classAdvantages" />
+        <result column="indat" property="indat" />
+        <result column="head_introduction" property="headIntroduction" />
+        <collection property="pics" ofType="com.hssx.bms.entity.InstitutionalPic">
+            <result column="pid" property="id" />
+            <result column="information_id" property="informationId" />
+            <result column="pic_url" property="picUrl" />
+            <result column="indate" property="indate" />
+            <result column="order_id" property="orderId" />
+        </collection>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, phone, address, sys_id, lng, lat, am_time, pm_time, brief_introduction_pic, brief_introduction, class_advantages, indat, head_introduction
+    </sql>
+    <select id="selectDetail" resultMap="BaseResultMapVO">
+        select
+          ii.id, ii.name, phone, ii.address, ii.sys_id, ii.lng, ii.lat, ii.am_time, ii.pm_time, ii.brief_introduction_pic,
+          ii.brief_introduction, ii.class_advantages, ii.indat, ii.head_introduction,ip.id pid,ip.information_id,ip.indate,ip.pic_url
+        from
+          institutional_information ii
+        left join
+          institutional_pic ip
+        on
+          ii.id = ip.information_id
+        where
+          ii.sys_id = #{id}
+    </select>
+</mapper>

+ 19 - 0
bms/src/main/resources/mapper/InstitutionalPicMapper.xml

@@ -0,0 +1,19 @@
+<?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.hssx.bms.mapper.InstitutionalPicMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.bms.entity.InstitutionalPic">
+        <id column="id" property="id" />
+        <result column="information_id" property="informationId" />
+        <result column="pic_url" property="picUrl" />
+        <result column="indate" property="indate" />
+        <result column="order_id" property="orderId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, information_id, pic_url, indate, order_id
+    </sql>
+
+</mapper>

+ 19 - 0
bms/src/main/resources/mapper/SystemUserMapper.xml

@@ -0,0 +1,19 @@
+<?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.hssx.bms.mapper.SystemUserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.bms.entity.SystemUser">
+        <id column="id" property="id" />
+        <result column="account" property="account" />
+        <result column="password" property="password" />
+        <result column="role_name" property="roleName" />
+        <result column="role_type" property="roleType" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, account, password, role_name, role_type
+    </sql>
+
+</mapper>

+ 10 - 0
bms/src/main/resources/static/index.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+<h1>欢迎来到测试首页</h1>
+</body>
+</html>

+ 14 - 0
pom.xml

@@ -38,5 +38,19 @@
             <artifactId>mysql-connector-java</artifactId>
             <scope>runtime</scope>
         </dependency>
+
+        <!-- 文件上传 -->
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.3.3</version>
+        </dependency>
+
+        <!-- fastjson -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.7</version>
+        </dependency>
     </dependencies>
 </project>