diff --git a/11 - 软件需求规格说明(SRS).doc b/11 - 软件需求规格说明(SRS).doc
new file mode 100644
index 0000000..0400124
Binary files /dev/null and b/11 - 软件需求规格说明(SRS).doc differ
diff --git a/11 - 软件需求规格说明(SRS)2.0.doc b/11 - 软件需求规格说明(SRS)2.0.doc
new file mode 100644
index 0000000..832f9e6
Binary files /dev/null and b/11 - 软件需求规格说明(SRS)2.0.doc differ
diff --git a/11 - 软件需求规格说明(SRS)3.0.doc b/11 - 软件需求规格说明(SRS)3.0.doc
new file mode 100644
index 0000000..24d67e8
Binary files /dev/null and b/11 - 软件需求规格说明(SRS)3.0.doc differ
diff --git a/13 - 软件(结构)设计说明(SDD).doc b/13 - 软件(结构)设计说明(SDD).doc
new file mode 100644
index 0000000..2c3779a
Binary files /dev/null and b/13 - 软件(结构)设计说明(SDD).doc differ
diff --git a/13 - 软件(结构)设计说明(SDD)2.0.doc b/13 - 软件(结构)设计说明(SDD)2.0.doc
new file mode 100644
index 0000000..b2fff2a
Binary files /dev/null and b/13 - 软件(结构)设计说明(SDD)2.0.doc differ
diff --git a/14 - 数据库(顶层)设计说明(DBDD).doc b/14 - 数据库(顶层)设计说明(DBDD).doc
new file mode 100644
index 0000000..73f9ae5
Binary files /dev/null and b/14 - 数据库(顶层)设计说明(DBDD).doc differ
diff --git a/16 - 软件测试报告(STR).doc b/16 - 软件测试报告(STR).doc
new file mode 100644
index 0000000..9d69b18
Binary files /dev/null and b/16 - 软件测试报告(STR).doc differ
diff --git a/README.md b/README.md
index 9ff48d3..0dd3976 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
# pyx_gitkeshe
+本人主要负责软件需求文档编写和后端代码编写。
\ No newline at end of file
diff --git a/SeKeshedemo/.idea/.gitignore b/SeKeshedemo/.idea/.gitignore
new file mode 100644
index 0000000..463c03e
--- /dev/null
+++ b/SeKeshedemo/.idea/.gitignore
@@ -0,0 +1,8 @@
+# ĬϺԵļ
+/shelf/
+/workspace.xml
+# ڱ༭ HTTP ͻ
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/SeKeshedemo/.idea/compiler.xml b/SeKeshedemo/.idea/compiler.xml
new file mode 100644
index 0000000..bfc71e1
--- /dev/null
+++ b/SeKeshedemo/.idea/compiler.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SeKeshedemo/.idea/encodings.xml b/SeKeshedemo/.idea/encodings.xml
new file mode 100644
index 0000000..63e9001
--- /dev/null
+++ b/SeKeshedemo/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SeKeshedemo/.idea/jarRepositories.xml b/SeKeshedemo/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/SeKeshedemo/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SeKeshedemo/.idea/misc.xml b/SeKeshedemo/.idea/misc.xml
new file mode 100644
index 0000000..88aa9a7
--- /dev/null
+++ b/SeKeshedemo/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SeKeshedemo/.idea/uiDesigner.xml b/SeKeshedemo/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/SeKeshedemo/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties b/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..12fbe1e
--- /dev/null
+++ b/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+wrapperVersion=3.3.2
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
diff --git a/SeKeshedemo/pom.xml b/SeKeshedemo/pom.xml
new file mode 100644
index 0000000..1c6089d
--- /dev/null
+++ b/SeKeshedemo/pom.xml
@@ -0,0 +1,109 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.4.2
+
+
+ com.example
+ demo
+ 0.0.1-SNAPSHOT
+ jar
+ demo
+ demo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 17
+
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web-services
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 3.0.4
+
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter-test
+ 3.0.4
+ test
+
+
+ org.projectlombok
+ lombok
+
+
+ com.auth0
+ java-jwt
+ 4.4.0
+
+
+
+ org.apache.tomcat
+ tomcat-jdbc
+
+
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java b/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java
new file mode 100644
index 0000000..0344102
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java
@@ -0,0 +1,13 @@
+package com.example.demo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Demo4Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Demo4Application.class, args);
+ }
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java b/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java
new file mode 100644
index 0000000..43811b9
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java
@@ -0,0 +1,64 @@
+package com.example.demo.config;
+
+import com.example.demo.pojo.Result;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.servlet.*;
+import jakarta.servlet.annotation.WebFilter;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+//重点
+@WebFilter({"/user/*","/api","/upload","/borrow"})
+public class MyFilter implements Filter{
+
+ List exclude;
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ System.out.println("初始化MyFilter==========================");
+ exclude = new ArrayList<>();
+ exclude.add("/user/login");
+ exclude.add("/user/register");
+ }
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ String requestURI = request.getRequestURI();
+ if (exclude.contains(requestURI) ||
+ requestURI.endsWith(".html") ||
+ requestURI.endsWith(".js") ||
+ requestURI.endsWith(".css") ||
+ requestURI.endsWith(".png") ||
+ requestURI.endsWith(".jpg") ||
+ requestURI.endsWith(".jpeg")
+ ) {
+ // 在排除列表中,继续过滤链
+ filterChain.doFilter(servletRequest,servletResponse);
+ return;
+ }
+
+ boolean loginflag = request.getSession().getAttribute("username") != null;
+ if(loginflag){
+ //登陆成功
+ //这就代码就是放行
+ filterChain.doFilter(servletRequest, servletResponse);
+ }else{
+ //登陆失败,打回请求
+ ObjectMapper mapper = new ObjectMapper();
+ response.getWriter().write(mapper.writeValueAsString(Result.error("未登录")));
+ }
+
+ System.out.println("filter==========================");
+ }
+ @Override
+ public void destroy() {
+ System.out.println("销毁filter==========================");
+ }
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java
new file mode 100644
index 0000000..7267327
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java
@@ -0,0 +1,55 @@
+package com.example.demo.controller;
+
+import com.example.demo.pojo.Article;
+import com.example.demo.pojo.Result;
+import com.example.demo.service.ArticleService;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@CrossOrigin
+@RequestMapping("/api")
+public class ArticleController {
+
+
+ @Autowired
+ ArticleService articleService;
+
+ @PostMapping("/add")
+ public Result addarticle(@RequestBody Article article) throws JsonProcessingException {
+ System.out.println("Received article: " + article); // 添加此行以调试
+ articleService.addarticle(article);
+ return Result.success(article);
+ }
+
+ @GetMapping("/select")
+ public Result selectarticle(HttpServletRequest request) {
+ List articles = articleService.selectarticle();
+ System.out.println(request.getRequestURL());
+ return Result.success(articles);
+ }
+
+ @DeleteMapping("/delete/{id}")
+ public Result deleteArticle(@PathVariable Long id) {
+ boolean deleted = articleService.deletearticle(id);
+ if (deleted) {
+ return Result.success();
+ } else {
+ return Result.error("删除失败!");
+ }
+ }
+
+ //根据书籍名字搜索单个书籍信息
+ @GetMapping("/selectone")
+ public Result selectone(String title){
+ Article article= articleService.selectonearticle(title);
+ return Result.success(article);
+ }
+
+
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java
new file mode 100644
index 0000000..9d08ed0
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java
@@ -0,0 +1,35 @@
+package com.example.demo.controller;
+
+
+import com.example.demo.pojo.Borrow;
+import com.example.demo.pojo.Result;
+import com.example.demo.service.BorrowService;
+
+import com.example.demo.service.UserService;
+import jakarta.servlet.http.HttpSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@CrossOrigin
+@RequestMapping("/borrow")
+public class BorrowController {
+ @Autowired
+ private BorrowService borrowService;
+
+
+
+ //租借书
+ @PostMapping("/borrowbook")
+ public Result borrowbook(String title, HttpSession session){
+ Borrow borrow=new Borrow();
+ borrow.setTitle(title);
+ borrow.setBorrower((String) session.getAttribute("username"));
+ borrowService.borrow(borrow);
+ return Result.success(borrow);
+ }
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java
new file mode 100644
index 0000000..ecdbe29
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java
@@ -0,0 +1,87 @@
+package com.example.demo.controller;
+
+
+import com.example.demo.mapper.UserMapper;
+import com.example.demo.pojo.Result;
+import com.example.demo.pojo.User;
+import com.example.demo.pojo.info;
+import com.example.demo.service.UserService;
+import jakarta.servlet.http.HttpSession;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+
+@CrossOrigin(origins = "http://localhost:8877")
+@RestController
+@RequestMapping("/user")
+
+public class UserController {
+
+ @Autowired
+ private UserService userService;
+ @Autowired
+ private UserMapper userMapper;
+
+//获取用户登陆信息
+ @GetMapping("/getinfo")
+ public ResponseEntity> getInfo(HttpSession session) {
+ String username = (String) session.getAttribute("username");
+ if (username == null) {
+ return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("{\"error\": \"Username not found in session\"}");
+ }
+ info info = userService.getinfo(username);
+ System.out.println(info);
+ if (info == null) {
+ return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{\"error\": \"User information not found for username: " + username + "\"}");
+ }
+ return ResponseEntity.ok(info);
+ }
+
+
+ //注册
+ @PostMapping("/register")
+ public Result register(String username, String password) {
+ User u = userService.findByUserName(username);
+ if (u == null) {
+ userService.register(username, password);
+ return Result.success();
+ } else {
+ return Result.error("该用户名已被注册");
+ }
+ }
+ //登陆
+ @PostMapping("/login")
+ public Result login(String username, String password,HttpSession session) {
+ User u = userService.findByUserName(username);
+ if (u != null) {
+ userService.login(username, password);
+ String pass=userMapper.login(username);
+
+ if (password.equals(pass)) {
+ session.setAttribute("username",username);
+ System.out.println("登陆成功!");
+ return Result.success("登陆成功!");
+ } else {
+ //这里已经处理好了
+ return Result.error("账号或密码错误!");
+ }
+ } else {
+ return null;
+ }
+ }
+//充值金额
+ @PostMapping("/recharge")
+ public Result recharge(float money,HttpSession session){
+ userService.recharge(money, (String) session.getAttribute("username"));
+ return Result.success("成功充值:"+money+"元");
+ }
+
+ @GetMapping("/findmoney")
+ public Result findmoney(HttpSession session){
+ float money=userService.findmoney(session.getAttribute("username"));
+ return Result.success("余额为:"+money+"元");
+ }
+
+}
\ No newline at end of file
diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java
new file mode 100644
index 0000000..b4cfa02
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java
@@ -0,0 +1,30 @@
+package com.example.demo.mapper;
+
+
+import com.example.demo.pojo.Article;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface ArticleMapper {
+
+ @Insert("INSERT INTO article (title, content, url, state)\n" +
+ "VALUES \n" +
+ "(#{title}, #{content}, #{url},#{state})")
+ @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
+ Long addarticle(Article article);
+
+
+ //查询所有书籍所有信息
+ @Select("SELECT * FROM article")
+ List selectarticle();
+
+//管理员删除书籍
+ @Delete("DELETE FROM article WHERE id = #{id}")
+ Integer deleteArticle(Long id);
+
+ @Select("SELECT * from article where title=#{title}")
+ Article selectonearticle(String title);
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java
new file mode 100644
index 0000000..b5bf5df
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java
@@ -0,0 +1,20 @@
+package com.example.demo.mapper;
+
+import com.example.demo.pojo.Borrow;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BorrowMapper {
+ @Insert("INSERT INTO borrow (title, borrower, borrow_time)\n" +
+ "VALUES \n" +
+ "(#{title}, #{borrower}, now())")
+ void borrowrecord(Borrow borrow);
+
+
+ @Insert("INSERT INTO borrow (title, borrower, return_time)\n" +
+ "VALUES \n" +
+ "(#{title}, #{borrower}, now())")
+ void returnrecord(Borrow borrow);
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java
new file mode 100644
index 0000000..c7490ad
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java
@@ -0,0 +1,36 @@
+package com.example.demo.mapper;
+
+
+import com.example.demo.pojo.User;
+import com.example.demo.pojo.info;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface UserMapper {
+ @Select("select * from user where username=#{username}")
+ User findByUserName(String username);
+
+ @Insert("insert into user(username,password,vip,create_time,update_time,admin,balance)" +
+ " values(#{username},#{password},#{vip},now(),now(),#{admin},#{balance})")
+ void add(String username,String password,int vip,int admin,float balance);
+
+ @Select("SELECT password FROM user WHERE username=#{username}")
+ String login(String username);
+
+
+ @Select("select username,pic from user where username=#{username}")
+ info getinfo( String username);
+
+
+ //充钱
+ @Update("UPDATE user\n" +
+ "SET balance=balance+#{money1}\n" +
+ "WHERE username=#{username};")
+ void recharge(float money1,String username);
+
+ @Select("select balance from user where username=#{username}")
+ float findbalance(Object username);
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java
new file mode 100644
index 0000000..9dde886
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java
@@ -0,0 +1,13 @@
+package com.example.demo.pojo;
+
+
+import lombok.Data;
+
+@Data
+public class Article {
+ private int id;
+ private String title;
+ private String content;
+ private String url;
+ private String state;
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java
new file mode 100644
index 0000000..4c8ec4f
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java
@@ -0,0 +1,13 @@
+package com.example.demo.pojo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class Borrow {
+ private String title;
+ private String borrower;
+ private LocalDateTime createTime;
+ private LocalDateTime updateTime;
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java
new file mode 100644
index 0000000..9605aec
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java
@@ -0,0 +1,31 @@
+package com.example.demo.pojo;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+//统一响应结果
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class Result {
+ private Integer code;//业务状态码 0-成功 1-失败,前端获取到这个code就可以判断了
+ private String message;//提示信息
+ private T data;//响应数据
+
+ //快速返回操作成功响应结果(带响应数据)
+ public static Result success(E data) {
+ return new Result<>(200, "操作成功", data);
+ }
+
+ //快速返回操作成功响应结果
+ public static Result success() {
+ return new Result(200, "操作成功", null);
+ }
+
+ public static Result error(String message) {
+ return new Result(1, message, null);
+ }
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java
new file mode 100644
index 0000000..820ce38
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java
@@ -0,0 +1,17 @@
+package com.example.demo.pojo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+@Data
+public class User {
+ private Integer id;
+ private String username;
+ private String password;
+ private String vip;
+ private String userPic;
+ private LocalDateTime createTime;
+ private LocalDateTime updateTime;
+ private Integer admin;
+ private float balance;
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java
new file mode 100644
index 0000000..8aa8d91
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java
@@ -0,0 +1,9 @@
+package com.example.demo.pojo;
+
+import lombok.Data;
+
+@Data
+public class info {
+ private String username;
+ private String pic;
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java b/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java
new file mode 100644
index 0000000..1a757ba
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java
@@ -0,0 +1,16 @@
+package com.example.demo.service;
+
+import com.example.demo.pojo.Article;
+
+import java.util.List;
+
+public interface ArticleService {
+ Long addarticle(Article article);
+
+ List selectarticle();
+
+ boolean deletearticle(Long id);
+
+ Article selectonearticle(String title);
+}
+
diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java b/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java
new file mode 100644
index 0000000..904124d
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java
@@ -0,0 +1,11 @@
+package com.example.demo.service;
+
+import com.example.demo.mapper.BorrowMapper;
+import com.example.demo.pojo.Borrow;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public interface BorrowService {
+
+
+ void borrow(Borrow borrow);
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java b/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java
new file mode 100644
index 0000000..01f362e
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java
@@ -0,0 +1,18 @@
+package com.example.demo.service;
+
+import com.example.demo.pojo.User;
+import com.example.demo.pojo.info;
+
+public interface UserService {
+ User findByUserName(String username);
+
+ void register(String username, String password);
+
+ void login(String username, String password);
+
+ info getinfo(String username);
+
+ void recharge(float money, String username);
+
+ float findmoney(Object username);
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java
new file mode 100644
index 0000000..680a278
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java
@@ -0,0 +1,38 @@
+package com.example.demo.service.impl;
+
+import com.example.demo.mapper.ArticleMapper;
+import com.example.demo.pojo.Article;
+import com.example.demo.service.ArticleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ArticleServiceImpl implements ArticleService {
+
+
+ @Autowired
+ ArticleMapper articleMapper;
+ @Override
+ public Long addarticle(Article article) {
+
+ return articleMapper.addarticle(article);
+ }
+
+ @Override
+ public List selectarticle() {
+ return articleMapper.selectarticle();
+ }
+
+ @Override
+ public boolean deletearticle(Long id) {
+ final Integer integer = articleMapper.deleteArticle((long) Math.toIntExact(id));
+ return integer == 1;
+ }
+
+ @Override
+ public Article selectonearticle(String title) {
+ return articleMapper.selectonearticle(title);
+ }
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java
new file mode 100644
index 0000000..a811b27
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java
@@ -0,0 +1,25 @@
+package com.example.demo.service.impl;
+
+
+import com.example.demo.mapper.BorrowMapper;
+import com.example.demo.pojo.Article;
+import com.example.demo.pojo.Borrow;
+import com.example.demo.service.BorrowService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class BorrowServiceImpl implements BorrowService {
+
+ @Autowired
+ BorrowMapper borrowMapper ;
+
+ @Override
+ public void borrow(Borrow borrow) {
+ borrowMapper.borrowrecord(borrow);
+ }
+
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..face9c0
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java
@@ -0,0 +1,53 @@
+package com.example.demo.service.impl;
+
+
+import com.example.demo.mapper.UserMapper;
+import com.example.demo.pojo.User;
+import com.example.demo.pojo.info;
+import com.example.demo.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+ @Autowired
+ private UserMapper userMapper;
+
+
+
+
+ @Override
+ public User findByUserName(String username) {
+ User u=userMapper.findByUserName(username);
+ return u;
+ }
+
+ @Override
+ public void register(String username, String password) {
+ userMapper.add(username,password,0,0,0);
+ }
+
+ @Override
+ public void login(String username, String password) {
+
+
+ }
+
+
+
+ public info getinfo(String username) {
+ return userMapper.getinfo(username);
+ }
+
+ @Override
+ public void recharge(float money, String username) {
+ userMapper.recharge(money,username);
+ }
+
+ @Override
+ public float findmoney(Object username) {
+ return userMapper.findbalance(username);
+ }
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java b/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java
new file mode 100644
index 0000000..425b01a
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java
@@ -0,0 +1,30 @@
+package com.example.demo.utils;
+
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.algorithms.Algorithm;
+
+import java.util.Date;
+import java.util.Map;
+
+public class JwtUtil {
+
+ private static final String KEY = "itheima";
+
+ //接收业务数据,生成token并返回
+ public static String genToken(Map claims) {
+ return JWT.create()
+ .withClaim("claims", claims)
+ .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))
+ .sign(Algorithm.HMAC256(KEY));
+ }
+
+ //接收token,验证token,并返回业务数据
+ public static Map parseToken(String token) {
+ return JWT.require(Algorithm.HMAC256(KEY))
+ .build()
+ .verify(token)
+ .getClaim("claims")
+ .asMap();
+ }
+
+}
diff --git a/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java b/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java
new file mode 100644
index 0000000..002c882
--- /dev/null
+++ b/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java
@@ -0,0 +1,73 @@
+package com.example.demo.utils;
+
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class Md5Util {
+ /**
+ * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合
+ */
+ protected static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+
+ protected static MessageDigest messagedigest = null;
+
+ static {
+ try {
+ messagedigest = MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException nsaex) {
+ System.err.println(Md5Util.class.getName() + "初始化失败,MessageDigest不支持MD5Util。");
+ nsaex.printStackTrace();
+ }
+ }
+
+ /**
+ * 生成字符串的md5校验值
+ *
+ * @param s
+ * @return
+ */
+ public static String getMD5String(String s) {
+ return getMD5String(s.getBytes());
+ }
+
+ /**
+ * 判断字符串的md5校验码是否与一个已知的md5码相匹配
+ *
+ * @param password 要校验的字符串
+ * @param md5PwdStr 已知的md5校验码
+ * @return
+ */
+ public static boolean checkPassword(String password, String md5PwdStr) {
+ String s = getMD5String(password);
+ return s.equals(md5PwdStr);
+ }
+
+
+ public static String getMD5String(byte[] bytes) {
+ messagedigest.update(bytes);
+ return bufferToHex(messagedigest.digest());
+ }
+
+ private static String bufferToHex(byte bytes[]) {
+ return bufferToHex(bytes, 0, bytes.length);
+ }
+
+ private static String bufferToHex(byte bytes[], int m, int n) {
+ StringBuffer stringbuffer = new StringBuffer(2 * n);
+ int k = m + n;
+ for (int l = m; l < k; l++) {
+ appendHexPair(bytes[l], stringbuffer);
+ }
+ return stringbuffer.toString();
+ }
+
+ private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
+ char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换, >>>
+ // 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同
+ char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换
+ stringbuffer.append(c0);
+ stringbuffer.append(c1);
+ }
+
+}
diff --git a/SeKeshedemo/src/main/resources/application.properties b/SeKeshedemo/src/main/resources/application.properties
new file mode 100644
index 0000000..2ce5e24
--- /dev/null
+++ b/SeKeshedemo/src/main/resources/application.properties
@@ -0,0 +1,25 @@
+
+
+file.upload-dir=D:\\uploads\\files
+# MySQL ?????
+
+#spring.datasource.url= jdbc:mysql://124.220.45.50:3306/big_event
+#spring.datasource.username= big_event
+#spring.datasource.password= 3cjBiCj3ZBafn3kP
+
+#spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event
+#spring.datasource.username=root
+#spring.datasource.password=hsp
+
+
+spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event1
+spring.datasource.username= root
+spring.datasource.password= hsp
+
+
+
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+server.port=8877
+spring.servlet.multipart.max-file-size=5MB
+spring.servlet.multipart.max-request-size=5MB
+
diff --git a/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java b/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java
new file mode 100644
index 0000000..bf176f8
--- /dev/null
+++ b/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java
@@ -0,0 +1,13 @@
+package com.example.demo;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class Demo4ApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/SeKeshedemo/target/classes/application.properties b/SeKeshedemo/target/classes/application.properties
new file mode 100644
index 0000000..2ce5e24
--- /dev/null
+++ b/SeKeshedemo/target/classes/application.properties
@@ -0,0 +1,25 @@
+
+
+file.upload-dir=D:\\uploads\\files
+# MySQL ?????
+
+#spring.datasource.url= jdbc:mysql://124.220.45.50:3306/big_event
+#spring.datasource.username= big_event
+#spring.datasource.password= 3cjBiCj3ZBafn3kP
+
+#spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event
+#spring.datasource.username=root
+#spring.datasource.password=hsp
+
+
+spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event1
+spring.datasource.username= root
+spring.datasource.password= hsp
+
+
+
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+server.port=8877
+spring.servlet.multipart.max-file-size=5MB
+spring.servlet.multipart.max-request-size=5MB
+
diff --git a/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class b/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class
new file mode 100644
index 0000000..9b3b9e9
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class b/SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class
new file mode 100644
index 0000000..d33ff8b
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class b/SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class
new file mode 100644
index 0000000..270c30e
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class b/SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class
new file mode 100644
index 0000000..6c46b51
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class b/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class
new file mode 100644
index 0000000..8f0ee50
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class
new file mode 100644
index 0000000..938ba62
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class
new file mode 100644
index 0000000..8bb4693
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class
new file mode 100644
index 0000000..173e2d9
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class
new file mode 100644
index 0000000..98b155b
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class
new file mode 100644
index 0000000..b21356c
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class
new file mode 100644
index 0000000..74f881b
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/User.class b/SeKeshedemo/target/classes/com/example/demo/pojo/User.class
new file mode 100644
index 0000000..ed6303e
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/pojo/User.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/info.class b/SeKeshedemo/target/classes/com/example/demo/pojo/info.class
new file mode 100644
index 0000000..663dba0
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/pojo/info.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class b/SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class
new file mode 100644
index 0000000..eee47d7
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class b/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class
new file mode 100644
index 0000000..995960f
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/service/UserService.class b/SeKeshedemo/target/classes/com/example/demo/service/UserService.class
new file mode 100644
index 0000000..8471c38
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/service/UserService.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class
new file mode 100644
index 0000000..859ee06
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class
new file mode 100644
index 0000000..8156020
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class
new file mode 100644
index 0000000..06af52b
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class b/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class
new file mode 100644
index 0000000..581445d
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class differ
diff --git a/SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class b/SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class
new file mode 100644
index 0000000..1778082
Binary files /dev/null and b/SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class differ