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