├── .mvn
└── wrapper
│ ├── maven-wrapper.jar
│ ├── maven-wrapper.properties
│ └── MavenWrapperDownloader.java
├── src
├── main
│ ├── resources
│ │ ├── favicon.ico
│ │ ├── static
│ │ │ ├── favicon.ico
│ │ │ ├── img
│ │ │ │ ├── sdau.png
│ │ │ │ ├── register.png
│ │ │ │ └── touxiang.jpg
│ │ │ ├── assets
│ │ │ │ └── video.mp4
│ │ │ ├── plugins
│ │ │ │ ├── elementui
│ │ │ │ │ └── fonts
│ │ │ │ │ │ └── element-icons.woff
│ │ │ │ └── font-awesome
│ │ │ │ │ └── fonts
│ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ │ ├── fontawesome-webfont.woff2
│ │ │ │ │ └── fontawesome-webfont(1).eot
│ │ │ ├── error
│ │ │ │ └── 404.html
│ │ │ ├── pages
│ │ │ │ ├── upload.html
│ │ │ │ ├── echarts_user.html
│ │ │ │ ├── map.html
│ │ │ │ ├── Echars.html
│ │ │ │ ├── classinfo.html
│ │ │ │ ├── collect_admin.html
│ │ │ │ └── lend_user_beifen.html
│ │ │ └── css
│ │ │ │ ├── login(1).css
│ │ │ │ ├── verify.css
│ │ │ │ └── orderset.css
│ │ ├── mapper
│ │ │ ├── ClassMapper.xml
│ │ │ ├── UserMapper.xml
│ │ │ ├── LendMapper.xml
│ │ │ ├── CollectMapper.xml
│ │ │ └── BookMapper.xml
│ │ ├── log4j.properties
│ │ ├── banner.txt
│ │ └── application.properties
│ └── java
│ │ └── com
│ │ └── ding
│ │ └── books
│ │ ├── model
│ │ ├── dto
│ │ │ ├── LoginRequest.java
│ │ │ ├── Updatepwd.java
│ │ │ ├── ClassBook.java
│ │ │ ├── AddUserRequest.java
│ │ │ ├── RegisterRequest.java
│ │ │ ├── AddBook.java
│ │ │ ├── QueryPageBeanUsername.java
│ │ │ ├── EditUserRequest.java
│ │ │ ├── EditBook.java
│ │ │ ├── CollectBook.java
│ │ │ └── LendBook.java
│ │ ├── entity
│ │ │ ├── UserInfo.java
│ │ │ ├── Echars.java
│ │ │ ├── ClassInfo.java
│ │ │ ├── Book.java
│ │ │ ├── Admin.java
│ │ │ ├── LendRecord.java
│ │ │ ├── CollectRecord.java
│ │ │ └── User.java
│ │ └── vo
│ │ │ ├── User1.java
│ │ │ ├── ExcelUser.java
│ │ │ ├── ExcelClass.java
│ │ │ ├── ExcelBook.java
│ │ │ ├── ExcelCollect.java
│ │ │ └── ExcelLend.java
│ │ ├── utils
│ │ ├── PageResult.java
│ │ ├── JSONUtils.java
│ │ ├── QueryPageBean.java
│ │ ├── CommonUtils.java
│ │ ├── Result.java
│ │ ├── JWTUtils.java
│ │ ├── MessageConstant.java
│ │ ├── QqHttpClient.java
│ │ └── ExcelUtils.java
│ │ ├── exception
│ │ ├── MyException.java
│ │ └── CustomExtHandler.java
│ │ ├── service
│ │ ├── ClassService.java
│ │ ├── CollectService.java
│ │ ├── LendService.java
│ │ ├── UserService.java
│ │ ├── BookService.java
│ │ ├── impl
│ │ │ ├── ClassServiceImpl.java
│ │ │ ├── BookServiceImpl.java
│ │ │ ├── CollectServiceImpl.java
│ │ │ ├── UserServiceImpl.java
│ │ │ └── LendServiceImpl.java
│ │ └── CustomUserDetailsService.java.bak
│ │ ├── BooksApplication.java
│ │ ├── mapper
│ │ ├── ClassMapper.java
│ │ ├── UserMapper.java
│ │ ├── BookMapper.java
│ │ ├── LendMapper.java
│ │ └── CollectMapper.java
│ │ ├── config
│ │ ├── InterceptorConfig.java
│ │ └── WebSecurityConfig.java.bak
│ │ ├── controller
│ │ ├── UploadController.java
│ │ ├── ClassController.java
│ │ ├── CollectController.java
│ │ ├── TestController.java
│ │ ├── LendController.java
│ │ ├── LoginController.java
│ │ ├── BookController.java
│ │ └── UserController.java
│ │ └── interceptor
│ │ └── LoginInterceptor.java
└── test
│ └── java
│ └── com
│ └── ding
│ └── books
│ └── BooksApplicationTests.java
├── 系统说明.assets
├── image-20211225203928736.png
├── image-20211225204042263.png
├── image-20211225205030977.png
├── image-20211225205228978.png
├── image-20211225215952758.png
├── image-20211225220310001.png
├── image-20211225220541968.png
├── image-20211225221402963.png
├── image-20211225221513647.png
├── image-20211225221543773.png
├── image-20211225221644131.png
├── image-20211225221749201.png
├── image-20211225221821391.png
├── image-20211225222014890.png
├── image-20211225222113198.png
├── image-20211225222322669.png
├── image-20211225222420033.png
├── image-20211225222601594.png
├── image-20211225222703411.png
├── image-20211225222735878.png
├── image-20211225222802178.png
├── image-20211225232231713.png
├── image-20211225232449604.png
├── image-20211225232647729.png
├── image-20211225232744619.png
├── image-20211225232830362.png
├── image-20211225233007676.png
├── image-20211225233033811.png
├── image-20211225233244396.png
├── image-20211225233347318.png
├── image-20211225233645710.png
├── image-20211225233841756.png
└── image-20211225234229246.png
├── .gitignore
├── pom.xml
├── README.md
└── mvnw.cmd
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/src/main/resources/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/favicon.ico
--------------------------------------------------------------------------------
/src/main/resources/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/favicon.ico
--------------------------------------------------------------------------------
/src/main/resources/static/img/sdau.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/img/sdau.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225203928736.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225203928736.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225204042263.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225204042263.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225205030977.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225205030977.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225205228978.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225205228978.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225215952758.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225215952758.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225220310001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225220310001.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225220541968.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225220541968.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225221402963.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225221402963.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225221513647.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225221513647.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225221543773.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225221543773.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225221644131.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225221644131.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225221749201.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225221749201.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225221821391.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225221821391.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222014890.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222014890.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222113198.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222113198.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222322669.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222322669.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222420033.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222420033.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222601594.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222601594.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222703411.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222703411.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222735878.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222735878.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225222802178.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225222802178.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225232231713.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225232231713.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225232449604.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225232449604.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225232647729.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225232647729.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225232744619.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225232744619.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225232830362.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225232830362.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225233007676.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225233007676.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225233033811.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225233033811.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225233244396.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225233244396.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225233347318.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225233347318.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225233645710.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225233645710.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225233841756.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225233841756.png
--------------------------------------------------------------------------------
/系统说明.assets/image-20211225234229246.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/系统说明.assets/image-20211225234229246.png
--------------------------------------------------------------------------------
/src/main/resources/static/assets/video.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/assets/video.mp4
--------------------------------------------------------------------------------
/src/main/resources/static/img/register.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/img/register.png
--------------------------------------------------------------------------------
/src/main/resources/static/img/touxiang.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/img/touxiang.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/plugins/elementui/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/plugins/elementui/fonts/element-icons.woff
--------------------------------------------------------------------------------
/src/main/resources/static/plugins/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/plugins/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont(1).eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JeffDing99/books/HEAD/src/main/resources/static/plugins/font-awesome/fonts/fontawesome-webfont(1).eot
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
3 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/LoginRequest.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 |
4 | import lombok.Data;
5 |
6 | @Data
7 | public class LoginRequest {
8 |
9 | private String username;
10 | private String password;
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/resources/static/error/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 错误
7 |
8 |
9 | 访问页面不存在
10 | 联系管理员
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/UserInfo.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | /**
6 | * @Description TODO
7 | * @Author 丁帅帅
8 | * @Date 21/12/14 17:01
9 | * @Version 1.0
10 | */
11 | @Data
12 | public class UserInfo {
13 | private int id;
14 | private String username;
15 | private String password;
16 | private String role;
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/Echars.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/25 00:15
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class Echars {
17 |
18 | private String name;
19 | private Integer num;
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/vo/User1.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/19 00:27
11 | * @Version 1.0
12 | */
13 |
14 | @Data
15 | @AllArgsConstructor
16 | @NoArgsConstructor
17 | public class User1 {
18 | private String name;
19 | private String name1;
20 | private String name2;
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/PageResult.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.io.Serializable;
8 | import java.util.List;
9 |
10 | /**
11 | * 分页结果封装对象
12 | */
13 |
14 | @Data
15 | @NoArgsConstructor
16 | @AllArgsConstructor
17 | public class PageResult implements Serializable{
18 | private Long total;//总记录数
19 | private List rows;//当前页结果
20 |
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/Updatepwd.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/24 08:28
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class Updatepwd {
17 |
18 | private String username;
19 | private String oldpwd;
20 | private String newpwd;
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/ClassBook.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/23 09:30
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class ClassBook {
17 |
18 | private Integer id;
19 | private Integer classid;
20 | private String classname;
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/exception/MyException.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.exception;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description 自定义异常类
9 | * @Author 丁帅帅
10 | * @Date 21/12/24 08:15
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class MyException extends RuntimeException{
17 |
18 | private boolean flag;//执行结果,true为执行成功 false为执行失败
19 | private String message;//返回结果信息
20 |
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 | !**/src/main/**/build/
30 | !**/src/test/**/build/
31 |
32 | ### VS Code ###
33 | .vscode/
34 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/vo/ExcelUser.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/19 10:25
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class ExcelUser {
17 |
18 | private Integer id;
19 | private String username;
20 | private String sex;
21 | private String phone;
22 | private String city;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/vo/ExcelClass.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.io.Serializable;
8 |
9 | /**
10 | * @Description TODO
11 | * @Author 丁帅帅
12 | * @Date 21/12/21 20:42
13 | * @Version 1.0
14 | */
15 | @Data
16 | @NoArgsConstructor
17 | @AllArgsConstructor
18 | public class ExcelClass implements Serializable {
19 |
20 | private Integer id;
21 | private Integer classid;
22 | private String classname;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/AddUserRequest.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/11 18:48
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class AddUserRequest {
17 |
18 | private String username;
19 | private String password;
20 | private String sex;
21 | private String phone;
22 | private String city;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/RegisterRequest.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/18 00:01
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class RegisterRequest {
17 |
18 | private String username;
19 | private String password;
20 | private String sex;
21 | private String phone;
22 | private String city;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/ClassService.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.service;
2 |
3 | import com.ding.books.model.entity.ClassInfo;
4 | import com.ding.books.utils.PageResult;
5 | import com.ding.books.utils.QueryPageBean;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * @Description TODO
12 | * @Author 丁帅帅
13 | * @Date 21/12/23 09:22
14 | * @Version 1.0
15 | */
16 | @Service
17 | public interface ClassService {
18 | PageResult pageQuery(QueryPageBean queryPageBean);
19 |
20 | List findAll();
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/AddBook.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/17 11:21
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class AddBook {
17 | private String bookname;
18 | private String author;
19 | private String publish;
20 | private String introduction;
21 | private Integer classid;
22 | private Integer number;
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/QueryPageBeanUsername.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.io.Serializable;
8 |
9 | /**
10 | * 封装查询条件
11 | */
12 | @Data
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | public class QueryPageBeanUsername implements Serializable{
16 | private Integer currentPage;//页码
17 | private Integer pageSize;//每页记录数
18 | //private String queryString;//查询条件
19 | private String bookname;
20 | private String username;
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/EditUserRequest.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/18 23:37
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class EditUserRequest {
17 |
18 | private Integer id;
19 | private String username;
20 | private String password;
21 | private String sex;
22 | private String phone;
23 | private String city;
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/JSONUtils.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | import com.alibaba.fastjson.JSONObject;
4 |
5 | /**
6 | * @Description TODO
7 | * @Author 丁帅帅
8 | * @Date 21/11/21 09:58
9 | * @Version 1.0
10 | */
11 | public class JSONUtils {
12 | /**
13 | * 转换json对象
14 | */
15 | public static JSONObject parseJSONP(String jsonp) {
16 | int startIndex = jsonp.indexOf("(");
17 | int endIndex = jsonp.lastIndexOf(")");
18 | String json = jsonp.substring(startIndex + 1, endIndex);
19 | return JSONObject.parseObject(json);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/BooksApplication.java:
--------------------------------------------------------------------------------
1 | package com.ding.books;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.transaction.annotation.EnableTransactionManagement;
7 |
8 | @MapperScan("com.ding.books.mapper")
9 |
10 | @SpringBootApplication
11 | @EnableTransactionManagement
12 | public class BooksApplication {
13 |
14 | public static void main(String[] args) {
15 | SpringApplication.run(BooksApplication.class, args);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/EditBook.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/17 15:19
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class EditBook {
17 | private Integer bookid;
18 | private String bookname;
19 | private String author;
20 | private String publish;
21 | private String introduction;
22 | private Integer classid;
23 | private Integer number;
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/vo/ExcelBook.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Description TODO
9 | * @Author 丁帅帅
10 | * @Date 21/12/19 15:54
11 | * @Version 1.0
12 | */
13 | @Data
14 | @NoArgsConstructor
15 | @AllArgsConstructor
16 | public class ExcelBook {
17 | private Integer bookid;
18 | private String bookname;
19 | private String author;
20 | private String publish;
21 | private String introduction;
22 | private Integer classid;
23 | private Integer number;
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/ClassMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/mapper/ClassMapper.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ding.books.model.dto.ClassBook;
5 | import com.ding.books.model.entity.ClassInfo;
6 | import com.github.pagehelper.Page;
7 | import org.apache.ibatis.annotations.Mapper;
8 | import org.springframework.stereotype.Repository;
9 |
10 | /**
11 | * @Description TODO
12 | * @Author 丁帅帅
13 | * @Date 21/12/23 09:24
14 | * @Version 1.0
15 | */
16 | @Mapper
17 | @Repository
18 | public interface ClassMapper extends BaseMapper {
19 | Page selectByCondition(String queryString);
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/CollectBook.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.io.Serializable;
8 | import java.util.Date;
9 |
10 | /**
11 | * @Description TODO
12 | * @Author 丁帅帅
13 | * @Date 21/12/22 16:50
14 | * @Version 1.0
15 | */
16 |
17 | @Data
18 | @NoArgsConstructor
19 | @AllArgsConstructor
20 | public class CollectBook implements Serializable {
21 |
22 | private Integer collectid;
23 | private Integer bookid;
24 | private String bookname;
25 | private String username;
26 | private Date lenddate;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/ClassInfo.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableId;
5 | import com.baomidou.mybatisplus.annotation.TableName;
6 | import lombok.AllArgsConstructor;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @Description 图书类别号
12 | * @Author 丁帅帅
13 | * @Date 21/12/23 09:13
14 | * @Version 1.0
15 | */
16 | @Data
17 | @NoArgsConstructor
18 | @AllArgsConstructor
19 | @TableName("ClassInfo")
20 | public class ClassInfo {
21 |
22 | @TableId(type = IdType.AUTO)
23 | private Integer id;
24 | private Integer classid;
25 | private String classname;
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/Book.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableId;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 |
9 | import java.io.Serializable;
10 |
11 |
12 | @Data
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | public class Book implements Serializable {
16 | @TableId(type = IdType.AUTO)
17 | private Integer bookid;
18 | private String bookname;
19 | private String author;
20 | private String publish;
21 | private String introduction;
22 | private Integer classid;
23 | private Integer number;
24 | private String bookimg;
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/vo/ExcelCollect.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.vo;
2 |
3 | import com.fasterxml.jackson.annotation.JsonFormat;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.io.Serializable;
9 | import java.util.Date;
10 |
11 | /**
12 | * @Description TODO
13 | * @Author 丁帅帅
14 | * @Date 21/12/21 20:42
15 | * @Version 1.0
16 | */
17 | @Data
18 | @NoArgsConstructor
19 | @AllArgsConstructor
20 | public class ExcelCollect implements Serializable {
21 |
22 | private Integer collectid;
23 | private Integer bookid;
24 | private Integer userid;
25 | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
26 | private Date lenddate;
27 |
28 |
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/mapper/UserMapper.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.mapper;
2 |
3 |
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import com.ding.books.model.entity.User;
6 | import com.github.pagehelper.Page;
7 | import org.apache.ibatis.annotations.Mapper;
8 | import org.apache.ibatis.annotations.Param;
9 | import org.springframework.stereotype.Repository;
10 |
11 | @Repository
12 | @Mapper
13 | public interface UserMapper extends BaseMapper {
14 |
15 | Page selectByCondition(String queryString);
16 |
17 | User findByPhoneAndPwd(String username, String password);
18 |
19 | int findByUsername(String username);
20 |
21 | User queryAllByUsername(String username);
22 |
23 | User findByOpenid(@Param("openid") String openid);
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/Admin.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | public class Admin {
4 |
5 | private long admin_id;
6 | private String username;
7 | private String password;
8 |
9 |
10 | public long getAdminId() {
11 | return admin_id;
12 | }
13 |
14 | public void setAdminId(long admin_id) {
15 | this.admin_id = admin_id;
16 | }
17 |
18 | public String getPassword() {
19 | return password;
20 | }
21 |
22 | public void setPassword(String password) {
23 | this.password = password;
24 | }
25 |
26 | public String getUsername() {
27 | return username;
28 | }
29 |
30 | public void setUsername(String username) {
31 | this.username = username;
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/mapper/BookMapper.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ding.books.model.entity.Book;
5 | import com.github.pagehelper.Page;
6 | import org.apache.ibatis.annotations.Mapper;
7 | import org.springframework.stereotype.Repository;
8 |
9 | import java.util.List;
10 |
11 |
12 | @Mapper
13 | @Repository
14 | public interface BookMapper extends BaseMapper {
15 |
16 |
17 | Page selectByCondition( String queryString);
18 | //int addBook(AddBook addBook);
19 |
20 | //long findCountByBook(Integer id);
21 |
22 | void deleteById(Integer id);
23 |
24 |
25 | //void edit(Book book);
26 |
27 | //Book findById(Integer id);
28 |
29 | List findAllLimit();
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/LendRecord.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableId;
5 | import com.baomidou.mybatisplus.annotation.TableName;
6 | import lombok.AllArgsConstructor;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.io.Serializable;
11 | import java.util.Date;
12 | @Data
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | @TableName("lendrecord")
16 | public class LendRecord implements Serializable {
17 |
18 | @TableId(type = IdType.AUTO)
19 | private Integer lendid;
20 | private Integer bookid;
21 | private Integer userid;
22 | private Date lenddate;
23 | private Date backdate;
24 | private Integer number;
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/vo/ExcelLend.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.vo;
2 |
3 | import com.fasterxml.jackson.annotation.JsonFormat;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.io.Serializable;
9 | import java.util.Date;
10 |
11 | /**
12 | * @Description TODO
13 | * @Author 丁帅帅
14 | * @Date 21/12/21 20:42
15 | * @Version 1.0
16 | */
17 | @Data
18 | @NoArgsConstructor
19 | @AllArgsConstructor
20 | public class ExcelLend implements Serializable {
21 |
22 | private Integer lendid;
23 | private Integer bookid;
24 | private Integer userid;
25 | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
26 | private Date lenddate;
27 | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
28 | private Date backdate;
29 | private Integer number;
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/CollectRecord.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableId;
5 | import com.baomidou.mybatisplus.annotation.TableName;
6 | import lombok.AllArgsConstructor;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.io.Serializable;
11 | import java.util.Date;
12 |
13 | /**
14 | * @Description 收藏表
15 | * @Author 丁帅帅
16 | * @Date 21/12/22 16:38
17 | * @Version 1.0
18 | */
19 | @Data
20 | @NoArgsConstructor
21 | @AllArgsConstructor
22 | @TableName("collectrecord")
23 | public class CollectRecord implements Serializable {
24 |
25 | @TableId(type = IdType.AUTO)
26 | private Integer collectid;
27 | private Integer bookid;
28 | private Integer userid;
29 | private Date lenddate;
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/mapper/LendMapper.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ding.books.model.dto.LendBook;
5 | import com.ding.books.model.entity.LendRecord;
6 | import com.github.pagehelper.Page;
7 | import org.apache.ibatis.annotations.Mapper;
8 | import org.apache.ibatis.annotations.Param;
9 | import org.springframework.stereotype.Repository;
10 |
11 | import java.util.List;
12 |
13 | /**
14 | * @Description TODO
15 | * @Author 丁帅帅
16 | * @Date 21/12/19 17:44
17 | * @Version 1.0
18 | */
19 |
20 | @Mapper
21 | @Repository
22 | public interface LendMapper extends BaseMapper {
23 |
24 | Page selectByCondition(String queryString);
25 |
26 | Page selectByConditionUser(@Param("id") Integer id,@Param("bookname") String bookname);
27 |
28 | List findLendByBookid(@Param("bookid") Integer bookid);
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/QueryPageBean.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * 封装查询条件
7 | */
8 | public class QueryPageBean implements Serializable{
9 | private Integer currentPage;//页码
10 | private Integer pageSize;//每页记录数
11 | private String queryString;//查询条件
12 |
13 | public Integer getCurrentPage() {
14 | return currentPage;
15 | }
16 |
17 | public void setCurrentPage(Integer currentPage) {
18 | this.currentPage = currentPage;
19 | }
20 |
21 | public Integer getPageSize() {
22 | return pageSize;
23 | }
24 |
25 | public void setPageSize(Integer pageSize) {
26 | this.pageSize = pageSize;
27 | }
28 |
29 | public String getQueryString() {
30 | return queryString;
31 | }
32 |
33 | public void setQueryString(String queryString) {
34 | this.queryString = queryString;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/CollectService.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.service;
2 |
3 | import com.ding.books.model.dto.QueryPageBeanUsername;
4 | import com.ding.books.model.entity.CollectRecord;
5 | import com.ding.books.utils.PageResult;
6 | import com.ding.books.utils.QueryPageBean;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | * @Description TODO
13 | * @Author 丁帅帅
14 | * @Date 21/12/22 17:07
15 | * @Version 1.0
16 | */
17 |
18 | @Service
19 | public interface CollectService {
20 | PageResult pageQueryUser(QueryPageBeanUsername queryPageBean);
21 |
22 | PageResult pageQuery(QueryPageBean queryPageBean);
23 |
24 | void deleteCollect(Integer collectid);
25 |
26 |
27 |
28 | List findAll();
29 |
30 | void addCollectBook(Integer bookid, Integer id);
31 |
32 | List findCollectBookByBookidandUsrid(Integer bookid, Integer id);
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/LendService.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.service;
2 |
3 | import com.ding.books.model.dto.QueryPageBeanUsername;
4 | import com.ding.books.model.entity.LendRecord;
5 | import com.ding.books.utils.PageResult;
6 | import com.ding.books.utils.QueryPageBean;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | * @Description TODO
13 | * @Author 丁帅帅
14 | * @Date 21/12/19 17:48
15 | * @Version 1.0
16 | */
17 | @Service
18 | public interface LendService {
19 | PageResult pageQuery(QueryPageBean queryPageBean);
20 |
21 | void deleteLend(Integer lendid);
22 |
23 | LendRecord findLendById(Integer lendid);
24 |
25 | void back(Integer lendid);
26 |
27 | List findAll();
28 |
29 | PageResult pageQueryUser(QueryPageBeanUsername queryPageBean);
30 |
31 | int addLendRecord(Integer bookid,Integer userid);
32 |
33 | List findLendByBookid(Integer bookid);
34 | }
35 |
--------------------------------------------------------------------------------
/src/test/java/com/ding/books/BooksApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.ding.books;
2 |
3 | import cn.hutool.core.date.DateTime;
4 | import cn.hutool.core.date.DateUtil;
5 | import org.junit.jupiter.api.Test;
6 | import org.springframework.boot.test.context.SpringBootTest;
7 |
8 | import java.util.Date;
9 |
10 | @SpringBootTest
11 | class BooksApplicationTests {
12 |
13 | @Test
14 | void contextLoads() {
15 | }
16 |
17 | @Test
18 | void testdate(){
19 | Date date = new Date();
20 | String format = DateUtil.format(date, "yyyy/MM/dd");
21 | System.out.println(format);
22 |
23 | String formatDate = DateUtil.formatDate(date);
24 |
25 | String formatDateTime = DateUtil.formatDateTime(date);
26 |
27 | DateTime newDate3 = DateUtil.offsetHour(date, -3);
28 |
29 | System.out.println(newDate3);
30 |
31 | DateTime dateTime = DateUtil.offsetMonth(date, 1);
32 | System.out.println(dateTime);
33 | }
34 |
35 |
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/mapper/CollectMapper.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.ding.books.model.dto.CollectBook;
5 | import com.ding.books.model.entity.CollectRecord;
6 | import com.github.pagehelper.Page;
7 | import org.apache.ibatis.annotations.Mapper;
8 | import org.apache.ibatis.annotations.Param;
9 | import org.springframework.stereotype.Repository;
10 |
11 | import java.util.List;
12 |
13 | /**
14 | * @Description TODO
15 | * @Author 丁帅帅
16 | * @Date 21/12/22 16:40
17 | * @Version 1.0
18 | */
19 |
20 | @Mapper
21 | @Repository
22 | public interface CollectMapper extends BaseMapper {
23 |
24 | Page selectByCondition(String queryString);
25 |
26 | Page selectByConditionUser(@Param("id") Integer id, @Param("bookname") String bookname);
27 |
28 |
29 | List findCollectBookByBookidandUsrid(@Param("bookid") Integer bookid,@Param("userid") Integer userid);
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/CommonUtils.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | import cn.hutool.crypto.SecureUtil;
4 | import sun.misc.BASE64Decoder;
5 |
6 | import java.io.IOException;
7 | import java.security.MessageDigest;
8 | import java.security.Security;
9 |
10 | /**
11 | * 工具类
12 | */
13 | public class CommonUtils {
14 |
15 |
16 | /**
17 | * MD5加密工具类
18 | * @param data
19 | * @return
20 | */
21 | public static String MD5(String data) {
22 | try {
23 | MessageDigest md = MessageDigest.getInstance("MD5");
24 | byte[] array = md.digest(data.getBytes("UTF-8"));
25 | StringBuilder sb = new StringBuilder();
26 | for (byte item : array) {
27 | sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
28 | }
29 |
30 | return sb.toString().toUpperCase();
31 | } catch (Exception exception) {
32 | }
33 | return null;
34 |
35 | }
36 |
37 |
38 |
39 |
40 |
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.service;
2 |
3 | import com.ding.books.model.dto.AddUserRequest;
4 | import com.ding.books.model.dto.EditUserRequest;
5 | import com.ding.books.model.entity.User;
6 | import com.ding.books.utils.PageResult;
7 | import com.ding.books.utils.QueryPageBean;
8 | import org.springframework.stereotype.Service;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @Description TODO
14 | * @Author 丁帅帅
15 | * @Date 21/12/11 16:23
16 | * @Version 1.0
17 | */
18 | @Service
19 | public interface UserService {
20 | int addUser(AddUserRequest user);
21 |
22 | int deleteUser(Integer id);
23 |
24 | int UpdateUser(EditUserRequest user);
25 |
26 | User findOneUser(Integer id);
27 |
28 | PageResult pageQuery(QueryPageBean queryPageBean);
29 |
30 | List findAll();
31 |
32 | String findByPhoneAndPwd(String username, String password);
33 |
34 | Integer findByUsername(String username);
35 |
36 | User queryAllByUsername(String username);
37 |
38 | int addQQUser(User user);
39 |
40 | User findByOpenid(String openId);
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/BookService.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.service;
2 |
3 | import com.ding.books.model.dto.AddBook;
4 | import com.ding.books.model.dto.EditBook;
5 | import com.ding.books.model.entity.Book;
6 | import com.ding.books.utils.PageResult;
7 | import com.ding.books.utils.QueryPageBean;
8 | import org.springframework.stereotype.Service;
9 | import org.springframework.transaction.annotation.Transactional;
10 |
11 | import java.util.List;
12 |
13 | /**
14 | * @Description TODO
15 | * @Author 丁帅帅
16 | * @Date 21/12/09 23:25
17 | * @Version 1.0
18 | */
19 | //@Transactional(readOnly = true)
20 | @Transactional
21 | @Service
22 | public interface BookService {
23 |
24 | PageResult pageQuery(QueryPageBean queryPageBean);
25 |
26 | void deleteById(Integer id);
27 |
28 |
29 | // Book findById(Integer id);
30 |
31 |
32 | // @Transactional(readOnly = false)
33 | int addBook(AddBook addBook);
34 |
35 | Book findBookById(Integer bookid);
36 |
37 | void lendBook(Integer bookid);
38 |
39 | void edit(EditBook editBook);
40 |
41 | List findAll();
42 |
43 | List findAllLimit();
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/Result.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * 封装返回结果
7 | */
8 | public class Result implements Serializable{
9 | private boolean flag;//执行结果,true为执行成功 false为执行失败
10 | private String message;//返回结果信息
11 | private Object data;//返回数据
12 | public Result(boolean flag, String message) {
13 | super();
14 | this.flag = flag;
15 | this.message = message;
16 | }
17 |
18 | public Result(boolean flag, String message, Object data) {
19 | this.flag = flag;
20 | this.message = message;
21 | this.data = data;
22 | }
23 |
24 | public boolean isFlag() {
25 | return flag;
26 | }
27 | public void setFlag(boolean flag) {
28 | this.flag = flag;
29 | }
30 | public String getMessage() {
31 | return message;
32 | }
33 | public void setMessage(String message) {
34 | this.message = message;
35 | }
36 |
37 | public Object getData() {
38 | return data;
39 | }
40 |
41 | public void setData(Object data) {
42 | this.data = data;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/config/InterceptorConfig.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.config;
2 |
3 | import com.ding.books.interceptor.LoginInterceptor;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
8 |
9 | /**
10 | * 拦截器配置
11 | */
12 |
13 | @Configuration
14 | public class InterceptorConfig implements WebMvcConfigurer {
15 |
16 | @Bean
17 | LoginInterceptor loginInterceptor(){
18 | return new LoginInterceptor();
19 | }
20 |
21 | @Override
22 | public void addInterceptors(InterceptorRegistry registry) {
23 |
24 |
25 |
26 | registry.addInterceptor(loginInterceptor()).addPathPatterns("/pages/**","/user/**","/book/**","/lend/**","/collect/**","/class/**","/test/**").excludePathPatterns("/user/login","/user/register",
27 | "/js/**", "/css/**","/img/**","/assets/**",
28 | "/**/index.html", "/**/register.html", "/**/fonts/*", "/**/*.svg","/**/upload.html","LoginByQQ");
29 |
30 | WebMvcConfigurer.super.addInterceptors(registry);
31 |
32 |
33 |
34 | }
35 |
36 |
37 |
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/src/main/resources/static/pages/upload.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
8 |
9 |
10 |
11 |
18 | 点击上传
19 | 只能上传jpg/png文件,且不超过500kb
20 |
21 |
22 |
23 |
24 |
25 |
26 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/entity/User.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.entity;
2 |
3 | import com.baomidou.mybatisplus.annotation.IdType;
4 | import com.baomidou.mybatisplus.annotation.TableId;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 |
9 | import java.io.Serializable;
10 |
11 |
12 | @Data
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | public class User implements Serializable {
16 |
17 | @TableId(type = IdType.AUTO)
18 | private Integer id;
19 | private String openid;
20 | private String username;
21 | private String password;
22 | private String sex;
23 | private String head_img;
24 | private String phone;
25 | private String city;
26 | private String role;
27 | /*public User(String username, String password, String sex, String phone, String city) {
28 |
29 | this.username = username;
30 | this.password = password;
31 | this.sex = sex;
32 | this.phone = phone;
33 | this.city = city;
34 | }*/
35 |
36 | public User(String openId, Object nickname, Object gender, Object city, Object figureurl_1) {
37 | this.openid=openId;
38 | this.username = (String) nickname;
39 | this.sex = (String) gender;
40 | this.city = (String) city;
41 | this.head_img= (String) figureurl_1;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/exception/CustomExtHandler.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.exception;
2 |
3 | import com.ding.books.utils.Result;
4 | import lombok.extern.slf4j.Slf4j;
5 | import org.springframework.web.bind.annotation.ExceptionHandler;
6 | import org.springframework.web.bind.annotation.RestControllerAdvice;
7 |
8 | import javax.servlet.http.HttpServletRequest;
9 |
10 | /**
11 | * @Description 全局异常
12 | * @Author 丁帅帅
13 | * @Date 21/12/24 00:39
14 | * @Version 1.0
15 | */
16 | @RestControllerAdvice
17 | @Slf4j
18 | public class CustomExtHandler {
19 |
20 |
21 |
22 | //捕获全局异常,处理所有不可知的异常
23 | @ExceptionHandler(value=Exception.class)
24 | Object handleException(Exception e, HttpServletRequest request){
25 | log.error("url {}, msg {}",request.getRequestURL(), e.getMessage());
26 | //log.error("错误:{}",request.getRequestURL(), e.getMessage());
27 | /* Map map = new HashMap<>();
28 | map.put("code", 100);
29 | map.put("msg", e.getMessage());
30 | map.put("url", request.getRequestURL());*/
31 | // return new Result(false,"有异常");
32 | if(e instanceof MyException){
33 | MyException myException = (MyException)e;
34 | return new Result(myException.isFlag(),myException.getMessage());
35 | }else{
36 | return new Result(false,"全局异常");
37 | }
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/UserMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
16 |
20 |
23 |
26 |
29 |
30 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/model/dto/LendBook.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.model.dto;
2 |
3 | import com.fasterxml.jackson.annotation.JsonFormat;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.io.Serializable;
9 | import java.util.Date;
10 |
11 | /**
12 | * @Description value = {"hibernateLazyInitializer", "handler"}
13 | * @Author 丁帅帅
14 | * @Date 21/12/19 17:12
15 | * @Version 1.0
16 | */
17 | //@JsonIgnoreProperties(value = {"lisi", "wang"})
18 |
19 |
20 | @Data
21 | @NoArgsConstructor
22 | @AllArgsConstructor
23 | public class LendBook implements Serializable {
24 |
25 | private Integer lendid;
26 | private Integer bookid;
27 | private String bookname;
28 | private String username;
29 | //@JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")
30 | @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
31 | private Date lenddate;
32 | @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
33 | private Date backdate;
34 | private Integer number;
35 | //private Integer lisi;
36 | //private Integer wang;
37 |
38 | @Override
39 | public String toString() {
40 | return "LendBook{" +
41 | "bookid=" + bookid +
42 | ", bookname='" + bookname + '\'' +
43 | ", username='" + username + '\'' +
44 | ", number=" + number +
45 | '}';
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootCategory=INFO, stdout, file, errorfile
2 | log4j.category.com.example.boot=INFO, myFile
3 | log4j.logger.error=errorfile
4 |
5 | # 控制台输出
6 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
7 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
8 | log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
9 |
10 | # root日志输出
11 | log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
12 | log4j.appender.file.file=logs/all.log
13 | log4j.appender.file.DatePattern='.'yyyy-MM-dd
14 | log4j.appender.file.layout=org.apache.log4j.PatternLayout
15 | log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
16 |
17 | # error日志输出
18 | log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
19 | log4j.appender.errorfile.file=logs/error.log
20 | log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
21 | log4j.appender.errorfile.Threshold = ERROR
22 | log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
23 | log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
24 |
25 | # com.example.boot下的日志输出
26 | log4j.appender.myFile=org.apache.log4j.DailyRollingFileAppender
27 | log4j.appender.myFile.file=logs/my.log
28 | log4j.appender.myFile.DatePattern='.'yyyy-MM-dd
29 | log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
30 | log4j.appender.myFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
31 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/LendMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
15 |
24 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/CollectMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
15 |
24 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/main/resources/banner.txt:
--------------------------------------------------------------------------------
1 | ${AnsiColor.BRIGHT_YELLOW}
2 | ////////////////////////////////////////////////////////////////////
3 | // _ooOoo_ //
4 | // o8888888o //
5 | // 88" . "88 //
6 | // (| ^_^ |) //
7 | // O\ = /O //
8 | // ____/`---'\____ //
9 | // .' \\| |// `. //
10 | // / \\||| : |||// \ //
11 | // / _||||| -:- |||||- \ //
12 | // | | \\\ - /// | | //
13 | // | \_| ''\---/'' | | //
14 | // \ .-\__ `-` ___/-. / //
15 | // ___`. .' /--.--\ `. . ___ //
16 | // ."" '< `.___\_<|>_/___.' >'"". //
17 | // | | : `- \`.;`\ _ /`;.`/ - ` : | | //
18 | // \ \ `-. \_ __\ /__ _/ .-` / / //
19 | // ========`-.____`-.___\_____/___.-`____.-'======== //
20 | // `=---=' //
21 | // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
22 | // 佛祖保佑 永不宕机 永无BUG //
23 | ////////////////////////////////////////////////////////////////////
--------------------------------------------------------------------------------
/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=9999
2 | #上传文件
3 | spring.servlet.multipart.max-file-size=100MB
4 | spring.mvc.servlet.load-on-startup=1
5 | #数据库相关配置
6 | spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver
7 | spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db2019216584?useUnicode=true&characterEncoding=utf-8&useSSL=false
8 | spring.datasource.username=root
9 | spring.datasource.password=
10 |
11 | #使用阿里巴巴druid数据源,默认使用自带的
12 | spring.datasource.type =com.alibaba.druid.pool.DruidDataSource
13 | #开启控制台打印sql
14 | mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
15 | # 显示SQL语句
16 | mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
17 | # mybatis 下划线转驼峰配置,两者都可以
18 | #mybatis.configuration.mapUnderscoreToCamelCase=true
19 | mybatis.configuration.map-underscore-to-camel-case=true
20 | #配置扫描
21 | mybatis.mapper-locations=classpath:mapper/*.xml
22 |
23 | #配置xml的结果别名
24 | mybatis.type-aliases-package=com.ding.books.entity
25 |
26 | #server.servlet.context-path=/
27 |
28 | #格式化日期
29 | #jackson相关配置
30 | spring.jackson.date-format = yyyy-MM-dd
31 | #时区必须要设置HH:mm:ss
32 | spring.jackson.time-zone= GMT+8
33 | #ALWAYS的意思是即时属性为null,仍然也会输出这个key,对应yml里面的注释里面的类型
34 | spring.jackson.default-property-inclusion=ALWAYS
35 | #设置前后缀
36 | spring.mvc.view.prefix=classpath:/static/pages/
37 | spring.mvc.view.suffix=.html
38 | #设置favicon
39 | spring.mvc.favicon.enabled=false
40 |
41 | #配置thymeleaf缓存开发期间先关闭,否则影响测试
42 | spring.thymeleaf.cache=false
43 | spring.thymeleaf.prefix=classpath:/static/pages/
44 | spring.thymeleaf.suffix=.html
45 | #qq登录
46 | qq.oauth.appid =
47 | qq.oauth.appkey =
48 | qq.oauth.url = http://ding99.top/qq/callback
49 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/controller/UploadController.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.controller;
2 |
3 |
4 | import org.springframework.web.bind.annotation.PostMapping;
5 | import org.springframework.web.bind.annotation.RestController;
6 | import org.springframework.web.multipart.MultipartFile;
7 |
8 | import javax.servlet.http.HttpServletRequest;
9 | import java.io.File;
10 | import java.io.IOException;
11 | import java.text.SimpleDateFormat;
12 | import java.util.Date;
13 | import java.util.HashMap;
14 | import java.util.Map;
15 | import java.util.UUID;
16 |
17 | /**
18 | * @Description TODO
19 | * @Author 丁帅帅
20 | * @Date 21/12/24 22:33
21 | * @Version 1.0
22 | */
23 |
24 | @RestController
25 | public class UploadController {
26 | SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
27 | @PostMapping("/upload")
28 | public Map fileupload(MultipartFile file, HttpServletRequest req) {
29 | Map result = new HashMap<>();
30 | String format = sdf.format(new Date());
31 | String realPath = req.getServletContext().getRealPath("/") + format;
32 | File folder = new File(realPath);
33 | if (!folder.exists()) {
34 | folder.mkdirs();
35 | }
36 | String oldName = file.getOriginalFilename();
37 | String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."));
38 | try {
39 | file.transferTo(new File(folder, newName));
40 | String url = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + format + newName;
41 | result.put("status", "OK");
42 | result.put("name", oldName);
43 | result.put("url", url);
44 | } catch (IOException e) {
45 | result.put("status", "ERROR");
46 | result.put("msg", e.getMessage());
47 | }
48 | return result;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/impl/ClassServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.service.impl;
2 |
3 | import com.ding.books.mapper.ClassMapper;
4 | import com.ding.books.model.dto.ClassBook;
5 | import com.ding.books.model.entity.ClassInfo;
6 | import com.ding.books.service.ClassService;
7 | import com.ding.books.utils.PageResult;
8 | import com.ding.books.utils.QueryPageBean;
9 | import com.github.pagehelper.Page;
10 | import com.github.pagehelper.PageHelper;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 | import org.springframework.stereotype.Service;
13 | import org.springframework.transaction.annotation.Transactional;
14 |
15 | import java.util.List;
16 |
17 | /**
18 | * @Description TODO
19 | * @Author 丁帅帅
20 | * @Date 21/12/23 09:22
21 | * @Version 1.0
22 | */
23 | @Transactional
24 | @Service
25 | public class ClassServiceImpl implements ClassService {
26 |
27 | @Autowired
28 | private ClassMapper classMapper;
29 |
30 | @Override
31 | public PageResult pageQuery(QueryPageBean queryPageBean) {
32 | Integer currentPage = queryPageBean.getCurrentPage();
33 | Integer pageSize = queryPageBean.getPageSize();
34 | String queryString = queryPageBean.getQueryString();//查询条件
35 | //完成分页查询,基于mybatis框架提供的分页助手插件完成
36 | PageHelper.startPage(currentPage,pageSize);
37 | //select * from books limit 0,10
38 | Page page = classMapper.selectByCondition(queryString);
39 | long total = page.getTotal();
40 | List rows = page.getResult();
41 | return new PageResult(total,rows);
42 | }
43 |
44 | @Override
45 | public List findAll() {
46 |
47 | List classInfos = classMapper.selectList(null);
48 | /* for (ClassInfo classInfo : classInfos) {
49 | System.out.println(classInfo.toString());
50 | }*/
51 | return classInfos;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/resources/mapper/BookMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 | delete from book where bookid = #{bookid}
13 |
14 |
15 |
20 |
21 |
22 |
33 |
37 |
38 |
39 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/JWTUtils.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | import com.ding.books.model.entity.User;
4 | import io.jsonwebtoken.Claims;
5 | import io.jsonwebtoken.Jwts;
6 | import io.jsonwebtoken.SignatureAlgorithm;
7 |
8 | import java.util.Date;
9 |
10 | /**
11 | * Jwt工具类
12 | * 注意点:
13 | * 1、生成的token, 是可以通过base64进行解密出明文信息
14 | * 2、base64进行解密出明文信息,修改再进行编码,则会解密失败
15 | * 3、无法作废已颁布的token,除非改秘钥
16 | */
17 | public class JWTUtils {
18 |
19 |
20 | /**
21 | * 过期时间,一周
22 | */
23 | private static final long EXPIRE = 60000 * 60 * 24 * 7;
24 | //private static final long EXPIRE = 1;
25 |
26 |
27 | /**
28 | * 加密秘钥
29 | */
30 | private static final String SECRET = "dingss";
31 |
32 |
33 | /**
34 | * 令牌前缀
35 | */
36 | private static final String TOKEN_PREFIX = "dingss";
37 |
38 |
39 | /**
40 | * subject
41 | */
42 | private static final String SUBJECT = "dingss";
43 |
44 |
45 | /**
46 | * 根据用户信息,生成令牌
47 | * @param user
48 | * @return
49 | */
50 | public static String geneJsonWebToken(User user){
51 |
52 | String token = Jwts.builder().setSubject(SUBJECT)
53 | .claim("id",user.getId())
54 | .claim("name",user.getUsername())
55 | .setIssuedAt(new Date())
56 | .setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
57 | .signWith(SignatureAlgorithm.HS256,SECRET).compact();
58 |
59 | token = TOKEN_PREFIX + token;
60 |
61 |
62 | return token;
63 | }
64 |
65 |
66 | /**
67 | * 校验token的方法
68 | * @param token
69 | * @return
70 | */
71 | public static Claims checkJWT(String token){
72 |
73 | try{
74 |
75 | final Claims claims = Jwts.parser().setSigningKey(SECRET)
76 | .parseClaimsJws(token.replace(TOKEN_PREFIX,"")).getBody();
77 |
78 | return claims;
79 |
80 | }catch (Exception e){
81 | return null;
82 | }
83 |
84 | }
85 |
86 |
87 |
88 | }
89 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/controller/ClassController.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.controller;
2 |
3 | import com.ding.books.model.entity.ClassInfo;
4 | import com.ding.books.model.vo.ExcelClass;
5 | import com.ding.books.service.ClassService;
6 | import com.ding.books.utils.ExcelUtils;
7 | import com.ding.books.utils.PageResult;
8 | import com.ding.books.utils.QueryPageBean;
9 | import org.springframework.beans.BeanUtils;
10 | import org.springframework.beans.factory.annotation.Autowired;
11 | import org.springframework.web.bind.annotation.RequestBody;
12 | import org.springframework.web.bind.annotation.RequestMapping;
13 | import org.springframework.web.bind.annotation.RestController;
14 |
15 | import javax.servlet.http.HttpServletResponse;
16 | import java.util.ArrayList;
17 | import java.util.List;
18 |
19 | /**
20 | * @Description TODO
21 | * @Author 丁帅帅
22 | * @Date 21/12/23 09:20
23 | * @Version 1.0
24 | */
25 |
26 | @RestController
27 | @RequestMapping("/class")
28 | public class ClassController {
29 |
30 |
31 | @Autowired
32 | private ClassService classService;
33 |
34 |
35 |
36 | /**
37 | * 分页查询
38 | * @param queryPageBean
39 | * @return
40 | */
41 | @RequestMapping("/findPage")
42 | public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
43 | PageResult pageResult =classService.pageQuery(queryPageBean);
44 |
45 | return pageResult;
46 | }
47 |
48 |
49 |
50 | @RequestMapping("/export")
51 | public void export( HttpServletResponse response){
52 | try{
53 |
54 | List list =classService.findAll();
55 | //System.out.println(list.toString());
56 | String[] columnNames=new String[]{"id","classid","classname"};
57 | String[] keys=new String[]{"id","类别号","类别名"};
58 | List excelClasses =new ArrayList<>();
59 | for (ClassInfo classInfo : list) {
60 | ExcelClass excelClass = new ExcelClass();
61 | BeanUtils.copyProperties(classInfo,excelClass);
62 | excelClasses.add(excelClass);
63 | }
64 |
65 | ExcelUtils.export(response,"分类信息表",list,columnNames,keys,"图书类别信息");
66 | //return new Result(true, MessageConstant.EXPORT_SUCCESS);
67 | }catch (Exception e){
68 | e.printStackTrace();
69 | //服务调用失败
70 | //return new Result(false, MessageConstant.EXPORT_FAIL);
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/service/CustomUserDetailsService.java.bak:
--------------------------------------------------------------------------------
1 | package com.ding.books.service;
2 |
3 |
4 | import com.ding.books.model.entity.UserInfo;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.security.core.GrantedAuthority;
7 | import org.springframework.security.core.authority.SimpleGrantedAuthority;
8 | import org.springframework.security.core.userdetails.User;
9 | import org.springframework.security.core.userdetails.UserDetails;
10 | import org.springframework.security.core.userdetails.UserDetailsService;
11 | import org.springframework.security.core.userdetails.UsernameNotFoundException;
12 | import org.springframework.security.crypto.password.PasswordEncoder;
13 | import org.springframework.stereotype.Component;
14 |
15 | import java.util.ArrayList;
16 | import java.util.List;
17 |
18 | /**
19 | * @Description TODO
20 | * @Author 丁帅帅
21 | * @Date 21/12/14 17:30
22 | * @Version 1.0
23 | */
24 | @Component
25 | public class CustomUserDetailsService implements UserDetailsService {
26 | @Autowired
27 | private UserInfoService userInfoService;
28 |
29 | @Autowired
30 | private UserService userService;
31 | /**
32 | * 需新建配置类注册一个指定的加密方式Bean,或在下一步Security配置类中注册指定
33 | */
34 | @Autowired
35 | private PasswordEncoder passwordEncoder;
36 |
37 | @Override
38 | public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
39 | // 通过用户名从数据库获取用户信息
40 | UserInfo userInfo = userInfoService.getUserInfo(username);
41 | //com.ding.books.model.entity.User userInfo = userService.queryAllByUsername(username);
42 | if (userInfo == null) {
43 | throw new UsernameNotFoundException("用户不存在");
44 | }
45 |
46 | // 得到用户角色
47 | String role = userInfo.getRole();
48 |
49 | // 角色集合
50 | List authorities = new ArrayList<>();
51 | // 角色必须以`ROLE_`开头,数据库中没有,则在这里加
52 | authorities.add(new SimpleGrantedAuthority("ROLE_" + role));
53 |
54 | /* return new User(
55 | userInfo.getUsername(),
56 | // 因为数据库是明文,所以这里需加密密码
57 | passwordEncoder.encode(userInfo.getPassword()),
58 | authorities
59 | );*/
60 |
61 | return new User(
62 | userInfo.getUsername(),
63 | // 数据库密码已加密,不用再加密
64 | userInfo.getPassword(),
65 | authorities
66 | );
67 | }
68 | }
69 |
70 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/MessageConstant.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 | /**
4 | * @Description TODO
5 | * @Author 丁帅帅
6 | * @Date 21/12/09 23:39
7 | * @Version 1.0
8 | */
9 | public class MessageConstant {
10 |
11 | public static final String LEND_BOOK_SUCCESS = "借阅成功";
12 | public static final String LEND_BOOK_FAIL = "借阅失败,";
13 | public static final String ADD_Book_SUCCESS = "新增图书成功";
14 | public static final String ADD_Book_FAIL = "新增图书失败";
15 |
16 | public static final String DELETE_Book_FAIL = "删除图书失败";
17 | public static final String DELETE_Book_SUCCESS = "删除图书成功";
18 |
19 | public static final String EDIT_Book_FAIL = "编辑图书失败";
20 | public static final String EDIT_Book_SUCCESS = "编辑图书成功";
21 |
22 | public static final String QUERY_Book_SUCCESS = "查询图书成功";
23 | public static final String QUERY_Book_FAIL = "查询图书失败";
24 |
25 |
26 | public static final String ADD_User_SUCCESS = "新增用户成功";
27 | public static final String ADD_User_FAIL = "新增用户失败";
28 |
29 | public static final String DELETE_User_FAIL = "删除用户失败";
30 | public static final String DELETE_User_SUCCESS = "删除用户成功";
31 |
32 | public static final String EDIT_User_FAIL = "编辑用户失败";
33 | public static final String EDIT_User_SUCCESS = "编辑用户成功";
34 |
35 | public static final String QUERY_User_SUCCESS = "查询用户成功";
36 | public static final String QUERY_User_FAIL = "查询用户失败";
37 |
38 | public static final String Register_User_FAIL = "注册用户失败";
39 | public static final String Register_User_SUCCESS = "注册用户成功";
40 |
41 | public static final String Login_User_FAIL = "登录失败,请检查账号或密码!!!";
42 | public static final String Login_User_SUCCESS = "登录成功";
43 |
44 | public static final String Logout_User_SUCCESS = "退出成功";
45 | public static final String Logout_User_FAIL = "退出失败";
46 |
47 | public static final String EXPORT_SUCCESS = "导出成功";
48 | public static final String EXPORT_FAIL = "导出失败";
49 |
50 | public static final String UPLOAD_SUCCESS = "上传成功";
51 |
52 |
53 |
54 | public static final String DELETE_Collect_FAIL="删除收藏失败";
55 | public static final String DELETE_Collect_SUCCESS="取消收藏成功";
56 |
57 | public static final String DELETE_Lend_FAIL="删除记录失败";
58 | public static final String DELETE_Lend_SUCCESS="删除借阅记录成功";
59 |
60 | public static final String QUERY_Lend_SUCCESS="查询成功";
61 | public static final String QUERY_Lend_FAIL="查询失败";
62 |
63 | public static final String Back_Lend_SUCCESS="归还图书成功";
64 | public static final String Back_Lend_FAIL="归还图书失败";
65 |
66 | public static final String Collect_BOOK_SUCCESS="收藏成功";
67 | public static final String Collect_BOOK_FAIL="收藏失败";
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/interceptor/LoginInterceptor.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.interceptor;
2 |
3 | import com.ding.books.utils.JWTUtils;
4 | import io.jsonwebtoken.Claims;
5 | import org.springframework.web.servlet.HandlerInterceptor;
6 | import org.springframework.web.servlet.ModelAndView;
7 |
8 | import javax.servlet.http.HttpServletRequest;
9 | import javax.servlet.http.HttpServletResponse;
10 | import java.io.PrintWriter;
11 |
12 | /**
13 | * @Description TODO
14 | * @Author 丁帅帅
15 | * @Date 21/12/09 22:11
16 | * @Version 1.0
17 | */
18 | public class LoginInterceptor implements HandlerInterceptor {
19 |
20 | @Override
21 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
22 |
23 | String token = (String) request.getSession().getAttribute("token");
24 | if(token != null ) {
25 | Claims claims = JWTUtils.checkJWT(token);
26 | if(claims !=null){
27 | Integer userId = (Integer)claims.get("id");
28 | String name = (String) claims.get("name");
29 |
30 | request.setAttribute("user_id",userId);
31 | request.setAttribute("name",name);
32 |
33 | return true;
34 | }
35 | }
36 |
37 | // sendJsonMessage(response,new Result(false,"请先登录!!!"));
38 | response.setContentType("text/html; charset=utf-8");
39 | response.setContentType("text/html;charset=UTF-8");
40 | PrintWriter pw = response.getWriter();
41 | pw.print("");
42 | response.sendRedirect("index.html");
43 | return false;
44 | }
45 |
46 |
47 |
48 |
49 | /**
50 | * 响应json数据给前端
51 | * @param response
52 | * @param obj
53 | */
54 | /* public static void sendJsonMessage(HttpServletResponse response, Object obj){
55 |
56 | try{
57 | ObjectMapper objectMapper = new ObjectMapper();
58 | response.setContentType("application/json; charset=utf-8");
59 | PrintWriter writer = response.getWriter();
60 | writer.print(objectMapper.writeValueAsString(obj));
61 | writer.close();
62 | response.flushBuffer();
63 | }catch (Exception e){
64 | e.printStackTrace();
65 | }
66 |
67 |
68 | }*/
69 |
70 |
71 |
72 |
73 | @Override
74 | public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
75 |
76 | }
77 |
78 | @Override
79 | public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
80 |
81 | }
82 | }
83 |
84 |
--------------------------------------------------------------------------------
/src/main/resources/static/pages/echarts_user.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 图书管理
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
34 |
35 |
36 |
37 |
38 |
80 |
81 |
--------------------------------------------------------------------------------
/src/main/resources/static/pages/map.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 传智健康
8 |
9 |
10 |
11 |
12 |
13 |
14 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
77 |
78 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/utils/QqHttpClient.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.utils;
2 |
3 |
4 | import com.alibaba.fastjson.JSONObject;
5 | import org.apache.http.HttpEntity;
6 | import org.apache.http.HttpResponse;
7 | import org.apache.http.client.methods.HttpGet;
8 | import org.apache.http.impl.client.CloseableHttpClient;
9 | import org.apache.http.impl.client.HttpClients;
10 | import org.apache.http.util.EntityUtils;
11 |
12 | import java.io.IOException;
13 |
14 | /**
15 | * @Description TODO
16 | * @Author 丁帅帅
17 | * @Date 21/11/21 09:38
18 | * @Version 1.0
19 | */
20 | public class QqHttpClient {
21 |
22 |
23 | /**
24 | * 获取Access Token
25 | */
26 | public static String getAccessToken(String url) throws IOException {
27 | CloseableHttpClient client = HttpClients.createDefault();
28 | String token = null;
29 |
30 | HttpGet httpGet = new HttpGet(url);
31 | HttpResponse response = client.execute(httpGet);
32 | HttpEntity entity = response.getEntity();
33 |
34 | if (entity != null) {
35 | String result = EntityUtils.toString(entity, "UTF-8");
36 | if (result.indexOf("access_token") >= 0) {
37 | String[] array = result.split("&");
38 | for (String str : array) {
39 | if (str.indexOf("access_token") >= 0) {
40 | token = str.substring(str.indexOf("=") + 1);
41 | break;
42 | }
43 | }
44 | }
45 | }
46 |
47 | httpGet.releaseConnection();
48 | return token;
49 | }
50 |
51 | /**
52 | * 获取openID
53 | */
54 | public static String getOpenID(String url) throws IOException {
55 | JSONObject jsonObject = null;
56 | CloseableHttpClient client = HttpClients.createDefault();
57 |
58 | HttpGet httpGet = new HttpGet(url);
59 | HttpResponse response = client.execute(httpGet);
60 | HttpEntity entity = response.getEntity();
61 |
62 | if (entity != null) {
63 | String result = EntityUtils.toString(entity, "UTF-8");
64 | jsonObject = JSONUtils.parseJSONP(result);
65 | }
66 |
67 | httpGet.releaseConnection();
68 |
69 | if (jsonObject != null) {
70 | return jsonObject.getString("openid");
71 | } else {
72 | return null;
73 | }
74 | }
75 |
76 | /**
77 | * 获取QQ用户信息
78 | */
79 | public static JSONObject getUserInfo(String url) throws IOException {
80 | JSONObject jsonObject = null;
81 | CloseableHttpClient client = HttpClients.createDefault();
82 |
83 | HttpGet httpGet = new HttpGet(url);
84 | HttpResponse response = client.execute(httpGet);
85 | HttpEntity entity = response.getEntity();
86 |
87 | if (entity != null) {
88 | String result = EntityUtils.toString(entity, "UTF-8");
89 | jsonObject = JSONObject.parseObject(result);
90 | }
91 |
92 | httpGet.releaseConnection();
93 |
94 | return jsonObject;
95 | }
96 |
97 |
98 | }
99 |
--------------------------------------------------------------------------------
/src/main/resources/static/pages/Echars.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 图表
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
32 |
33 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/config/WebSecurityConfig.java.bak:
--------------------------------------------------------------------------------
1 | package com.ding.books.config;
2 |
3 | import com.ding.books.service.CustomUserDetailsService;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
7 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
8 | import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9 | import org.springframework.security.config.annotation.web.builders.WebSecurity;
10 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
11 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
12 | import org.springframework.security.crypto.password.NoOpPasswordEncoder;
13 | import org.springframework.security.crypto.password.PasswordEncoder;
14 |
15 | /**
16 | * @Description TODO
17 | * @Author 丁帅帅
18 | * @Date 21/12/14 17:35
19 | * @Version 1.0
20 | */
21 | @EnableWebSecurity
22 | @EnableGlobalMethodSecurity(prePostEnabled = true) // 开启方法级安全验证
23 | public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
24 | @Autowired
25 | private CustomUserDetailsService userDatailService;
26 |
27 | /**
28 | * 指定加密方式
29 | */
30 | @Bean
31 | public PasswordEncoder passwordEncoder(){
32 | // 使用BCrypt加密密码
33 | //return new BCryptPasswordEncoder();
34 | return NoOpPasswordEncoder.getInstance();
35 |
36 | }
37 |
38 | @Override
39 | protected void configure(AuthenticationManagerBuilder auth) throws Exception {
40 | auth
41 | // 从数据库读取的用户进行身份认证
42 | .userDetailsService(userDatailService)
43 | .passwordEncoder(passwordEncoder());
44 | }
45 |
46 | @Override
47 | protected void configure(HttpSecurity http) throws Exception {
48 | http.headers().frameOptions().disable();//开启运行iframe嵌套页面
49 | http
50 | .authorizeRequests()
51 | .antMatchers("/user/**").permitAll() // 允许post请求/add-user,而无需认证
52 | .antMatchers("/book/**").permitAll() // 允许post请求/add-user,而无需认证
53 | .antMatchers("/user/login").permitAll() // 允许post请求/add-user,而无需认证
54 | //.antMatchers("/**").permitAll() // 允许post请求/add-user,而无需认证
55 | .anyRequest().authenticated() // 所有请求都需要验证
56 | .and()
57 | .formLogin() // 使用默认的登录页面
58 | .loginPage("/index.html")
59 | .usernameParameter("username")//设置登录账号参数,与表单参数一致
60 | .passwordParameter("password")//设置登录密码参数,与表单参数一致
61 | //.loginProcessingUrl("/user/login")
62 | //.defaultSuccessUrl("/main.html")
63 | .and()
64 | .logout()
65 | .logoutUrl("/logout")
66 | // .logoutRequestMatcher(new AntPathRequestMatcher("/logout","POST"))
67 | .logoutSuccessUrl("/index.html")
68 | .permitAll()
69 | .and()
70 | .csrf().disable();// post请求要关闭csrf验证,不然访问报错;实际开发中开启,需要前端配合传递其他参数
71 | }
72 |
73 | @Override
74 | public void configure(WebSecurity web) throws Exception {
75 | web.ignoring().antMatchers("/js/**", "/css/**","/img/**","/assets/**","index.html","/plugins/**","user/**","/book/**","pages/**");
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/login(1).css:
--------------------------------------------------------------------------------
1 | html,body {
2 | /* overflow-y: scroll; */
3 | margin: 0;
4 | }
5 | .login-container .input{
6 | display: inline-block;
7 | height: 47px;
8 | width: 85%;
9 |
10 | }
11 | .login-container .input input {
12 | background: transparent;
13 | border: 0px;
14 | -webkit-appearance: none;
15 | border-radius: 0px;
16 | padding: 12px 5px 12px 0;
17 | height: 47px;
18 | }
19 | .login-container .el-form-item {
20 | border: 1px solid #DCDFE6;
21 | background: #fff;
22 | border-radius: 5px;
23 | color: #454545;
24 | }
25 | .login-container .el-button--medium{
26 | height: 50px;
27 | line-height: 20px;
28 | font-size: 22px;
29 | }
30 | .login-container .loginBox{
31 | height: 100%;
32 | width: 100%;
33 | background: url('./../img/logingBg.png') no-repeat 100% 100%;
34 | position: relative;
35 | }
36 | .login-container .loginBox .el-form-item__content{
37 | line-height: initial;
38 | }
39 | .login-container form {
40 | position: absolute;
41 | left: 20%;
42 | top: 50%;
43 | width: 520px;
44 | padding: 35px 35px 15px 35px;
45 | margin: -200px 0 0 0;
46 | background:#f5f5f5;
47 | }
48 | .login-container .tips {
49 | font-size: 14px;
50 | /* // color: #fff; */
51 | margin-bottom: 10px;
52 | /* span {
53 | &:first-of-type {
54 | margin-right: 16px;
55 | }
56 | } */
57 | }
58 | .login-container .svg-container {
59 | padding: 6px 5px 6px 15px;
60 | color: #889aa4;
61 | vertical-align: middle;
62 | width: 30px;
63 | display: inline-block;
64 | /* &_login {
65 | font-size: 20px;
66 | } */
67 | }
68 | .login-container .title-container {
69 | position: relative;
70 |
71 |
72 | }
73 | .login-container .title-container .title {
74 | font-size: 26px;
75 | /* // font-weight: 400; */
76 | color: #333;
77 | margin: 0px auto 40px auto;
78 | text-align: center;
79 | font-weight: bold;
80 | }
81 | .login-container .title-container .set-language {
82 | /* // color: #fff; */
83 | position: absolute;
84 | top: 5px;
85 | right: 0px;
86 | }
87 | .login-container {
88 | position: fixed;
89 | height: 100%;
90 | width: 100%;
91 | background-color: #2d3a4b;
92 | background: url('./../img/bg.jpg');
93 | -moz-background-size: 100% 100%;
94 | background-size: 100% 100%;
95 | background-repeat: no-repeat;
96 | }
97 | .login-container .show-pwd {
98 | position: absolute;
99 | right: 10px;
100 | top: 7px;
101 | font-size: 16px;
102 | color: #889aa4;
103 | cursor: pointer;
104 | user-select: none;
105 | }
106 | .login-container .thirdparty-button {
107 | position: absolute;
108 | right: 35px;
109 | bottom: 28px;
110 | }
111 | .logoInfo{
112 | padding-bottom:35px;
113 | text-align: center;
114 | }
115 | .logoInfo span{
116 | font-size: 22px;
117 | padding: 0 10px;
118 | display: inline-block;
119 |
120 | }
121 | .logoInfo .logo{
122 | background: url(../img/loginLogo.png) no-repeat;
123 | display:inline-block;
124 | width: 200px;
125 | height: 30px;
126 | display: inline-block;
127 | vertical-align: middle;
128 | }
129 | .tipInfo{font-size: 12px;}
130 | .tipInfo span{
131 | color: #66b1ff;
132 | padding: 0 5px;
133 | }
134 | .tipInfo .el-checkbox{
135 | margin: 0;
136 | }
137 | .svg-container span{
138 | width: 22px;
139 | height: 22px;
140 | display: inline-block;
141 | }
142 | .svg-container .user{
143 | background: url(../img/user.png) no-repeat 0 50%;
144 | }
145 | .svg-container .username{
146 | background: url(../img/pwd.png) no-repeat 0 50%;
147 | }
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/controller/CollectController.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.controller;
2 |
3 | import com.ding.books.model.dto.QueryPageBeanUsername;
4 | import com.ding.books.model.entity.CollectRecord;
5 | import com.ding.books.model.entity.LendRecord;
6 | import com.ding.books.model.vo.ExcelCollect;
7 | import com.ding.books.service.CollectService;
8 | import com.ding.books.utils.*;
9 | import org.springframework.beans.BeanUtils;
10 | import org.springframework.beans.factory.annotation.Autowired;
11 | import org.springframework.web.bind.annotation.RequestBody;
12 | import org.springframework.web.bind.annotation.RequestMapping;
13 | import org.springframework.web.bind.annotation.RestController;
14 |
15 | import javax.servlet.http.HttpServletResponse;
16 | import java.util.ArrayList;
17 | import java.util.List;
18 |
19 | /**
20 | * @Description TODO
21 | * @Author 丁帅帅
22 | * @Date 21/12/22 00:02
23 | * @Version 1.0
24 | */
25 | @RestController
26 | @RequestMapping("/collect")
27 | public class CollectController {
28 |
29 | @Autowired
30 | private CollectService collectService;
31 |
32 |
33 |
34 | /**
35 | * 用户分页查询
36 | * @param queryPageBean
37 | * @return
38 | */
39 | @RequestMapping("/findPageUser")
40 | public PageResult findPageUser(@RequestBody QueryPageBeanUsername queryPageBean){
41 | PageResult pageResult =collectService.pageQueryUser(queryPageBean);
42 |
43 | return pageResult;
44 | }
45 |
46 | /**
47 | * 管理员分页查询
48 | * @param queryPageBean
49 | * @return
50 | */
51 | @RequestMapping("/findPage")
52 | public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
53 | PageResult pageResult =collectService.pageQuery(queryPageBean);
54 |
55 | return pageResult;
56 | }
57 |
58 | /**
59 | * 删除
60 | * @param collectid
61 | * @return
62 | */
63 | @RequestMapping("/delete")
64 | public Result delete(Integer collectid){
65 | try{
66 | collectService.deleteCollect(collectid);
67 | }catch (Exception e){
68 | e.printStackTrace();
69 | //服务调用失败
70 | return new Result(false, MessageConstant.DELETE_Collect_FAIL);
71 | }
72 | return new Result(true, MessageConstant.DELETE_Collect_SUCCESS);
73 | }
74 |
75 |
76 |
77 |
78 |
79 |
80 | @RequestMapping("/export")
81 | public void export( HttpServletResponse response){
82 | try{
83 |
84 | List list =collectService.findAll();
85 | //System.out.println(list.toString());
86 | String[] columnNames=new String[]{"collectid","bookid","userid","lenddate"};
87 | String[] keys=new String[]{"collectid","书的编号","用户id","收藏日期"};
88 | List excelCollects =new ArrayList<>();
89 | for (CollectRecord collectRecord : list) {
90 | // ExcelLend excelLend = new ExcelLend();
91 | ExcelCollect excelCollect = new ExcelCollect();
92 | BeanUtils.copyProperties(collectRecord,excelCollect);
93 | excelCollects.add(excelCollect);
94 | }
95 |
96 | ExcelUtils.export(response,"收藏信息表",excelCollects,columnNames,keys,"收藏信息");
97 | //return new Result(true, MessageConstant.EXPORT_SUCCESS);
98 | }catch (Exception e){
99 | e.printStackTrace();
100 | //服务调用失败
101 | //return new Result(false, MessageConstant.EXPORT_FAIL);
102 | }
103 | }
104 |
105 | }
106 |
--------------------------------------------------------------------------------
/src/main/java/com/ding/books/controller/TestController.java:
--------------------------------------------------------------------------------
1 | package com.ding.books.controller;
2 |
3 | import com.ding.books.model.entity.Book;
4 | import com.ding.books.model.entity.Echars;
5 | import com.ding.books.service.BookService;
6 | import com.ding.books.utils.Result;
7 | import org.springframework.beans.factory.annotation.Autowired;
8 | import org.springframework.ui.Model;
9 | import org.springframework.web.bind.annotation.RequestMapping;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | import java.util.ArrayList;
13 | import java.util.HashMap;
14 | import java.util.List;
15 | import java.util.Map;
16 |
17 | /**
18 | * @Description 测试下Echars
19 | * @Author 丁帅帅
20 | * @Date 21/12/24 07:43
21 | * @Version 1.0
22 | */
23 | @RestController
24 | @RequestMapping("/test")
25 | public class TestController {
26 | @Autowired
27 | private BookService bookService;
28 |
29 | @RequestMapping(value = "/EcharsShow")
30 | public List findById(Model model) {
31 |
32 | List list = new ArrayList();
33 | List allLimit = bookService.findAllLimit();
34 | for (Book book : allLimit) {
35 | list.add(new Echars(book.getBookname(),book.getNumber()));
36 | }
37 | /* list.add(new Echars("人类简史",50));
38 | list.add(new Echars("追寻生命的意义",26));
39 | list.add(new Echars("明朝那些事儿",35));
40 | list.add(new Echars("造彩虹的人",10));
41 | list.add(new Echars("秘密花园",72));
42 | list.add(new Echars("方向",12));
43 | list.add(new Echars("控方证人",12));
44 | list.add(new Echars("三生三世 十里桃花",12));*/
45 |
46 | return list;
47 | }
48 |
49 | //人数分布占比饼形图
50 | @RequestMapping("/getSetmealReport")
51 | public Result getSetmealReport(){
52 | //使用模拟数据测试使用什么样的java对象转为饼形图所需的json数据格式
53 | Map data = new HashMap<>();
54 |
55 | try{
56 | // List