From d43468edb9c65a1a08e2a5e7f8ef10f9544ce1f7 Mon Sep 17 00:00:00 2001 From: zhong-hongye12355 <2742355614@qq.com> Date: Thu, 20 Mar 2025 17:21:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 33 +++++ pom.xml | 118 ++++++++++++++++++ .../java/com/unilife/UniLifeApplication.java | 13 ++ .../com/unilife/common/result/Result.java | 59 +++++++++ .../unilife/controller/UserController.java | 32 +++++ .../java/com/unilife/mapper/UserMapper.java | 11 ++ .../java/com/unilife/model/dto/LogDTO.java | 14 +++ .../java/com/unilife/model/dto/LoginDTO.java | 19 +++ .../java/com/unilife/model/entity/User.java | 56 +++++++++ src/main/java/com/unilife/model/vo/LogVO.java | 15 +++ .../java/com/unilife/model/vo/LoginVO.java | 10 ++ .../java/com/unilife/service/UserService.java | 12 ++ .../unilife/service/impl/UserServiceImpl.java | 50 ++++++++ src/main/resources/application.yml | 30 +++++ src/main/resources/mappers/UserMapper.xml | 53 ++++++++ src/main/resources/static/index.html | 6 + .../com/unilife/BackendApplicationTests.java | 13 ++ 17 files changed, 544 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/com/unilife/UniLifeApplication.java create mode 100644 src/main/java/com/unilife/common/result/Result.java create mode 100644 src/main/java/com/unilife/controller/UserController.java create mode 100644 src/main/java/com/unilife/mapper/UserMapper.java create mode 100644 src/main/java/com/unilife/model/dto/LogDTO.java create mode 100644 src/main/java/com/unilife/model/dto/LoginDTO.java create mode 100644 src/main/java/com/unilife/model/entity/User.java create mode 100644 src/main/java/com/unilife/model/vo/LogVO.java create mode 100644 src/main/java/com/unilife/model/vo/LoginVO.java create mode 100644 src/main/java/com/unilife/service/UserService.java create mode 100644 src/main/java/com/unilife/service/impl/UserServiceImpl.java create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/mappers/UserMapper.xml create mode 100644 src/main/resources/static/index.html create mode 100644 src/test/java/com/unilife/BackendApplicationTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..14fd7bc --- /dev/null +++ b/pom.xml @@ -0,0 +1,118 @@ + + + 4.0.0 + com.example + unilife-server + 0.0.1-SNAPSHOT + backend + backend + + 1.8 + UTF-8 + UTF-8 + 2.7.6 + + + + org.springframework.boot + spring-boot-starter-web + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.3.0 + + + + javax.persistence + javax.persistence-api + 2.2 + + + + com.mysql + mysql-connector-j + 8.2.0 + runtime + + + org.projectlombok + lombok + 1.18.36 + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.data + spring-data-jpa + 3.3.4 + + + + org.apache.tomcat.maven + tomcat6-maven-plugin + 2.2 + + + + com.github.xiaoymin + knife4j-openapi2-spring-boot-starter + 4.4.0 + + + cn.hutool + hutool-all + 5.8.24 + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.example.unilife.BackendApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/src/main/java/com/unilife/UniLifeApplication.java b/src/main/java/com/unilife/UniLifeApplication.java new file mode 100644 index 0000000..3cfbd02 --- /dev/null +++ b/src/main/java/com/unilife/UniLifeApplication.java @@ -0,0 +1,13 @@ +package com.unilife; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UniLifeApplication { + + public static void main(String[] args) { + SpringApplication.run(UniLifeApplication.class, args); + } + +} diff --git a/src/main/java/com/unilife/common/result/Result.java b/src/main/java/com/unilife/common/result/Result.java new file mode 100644 index 0000000..f16d1a5 --- /dev/null +++ b/src/main/java/com/unilife/common/result/Result.java @@ -0,0 +1,59 @@ +package com.unilife.common.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Result{ + /*** + * 状态码 + */ + private Integer code; + /*** + * 消息 + */ + private String message; + /*** + *数据 + */ + private T data; + + /*** + * + * @param data 数据 + * @return 结果对象 + * @param 数据类型 + */ + public static Resultsuccess(T data){ + return new Result(200, "success", data); + } + + /** + * 成功返回结果 + * @return 结果对象 + */ + public static Result success() { + return new Result<>(200, "success", null); + } + + public static Result success(T data, String message) { + return new Result<>(200, message, null); + } + + /** + * 失败返回结果 + * @param code 状态码 + * @param message 消息 + * @return 结果对象 + */ + public static Result error(Integer code, String message) { + return new Result<>(code, message, null); + } + + public static Result error(T data,String message){ + return new Result<>(200,message,null); + } +} diff --git a/src/main/java/com/unilife/controller/UserController.java b/src/main/java/com/unilife/controller/UserController.java new file mode 100644 index 0000000..e4fdbf9 --- /dev/null +++ b/src/main/java/com/unilife/controller/UserController.java @@ -0,0 +1,32 @@ +package com.unilife.controller; + +import com.unilife.common.result.Result; +import com.unilife.model.dto.LogDTO; +import com.unilife.model.dto.LoginDTO; +import com.unilife.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "用户管理") +@RestController +@RequestMapping("/users") +public class UserController { + + @Autowired + private UserService userService; + + @ApiOperation(value = "用户注册") + @PostMapping("register") + public Result register(@RequestBody LoginDTO loginDTO) { + return userService.register(loginDTO); + } + + @ApiOperation(value = "用户登录") + @PostMapping("login") + public Result login(@RequestBody LogDTO logDTO) { return userService.login(logDTO); } +} diff --git a/src/main/java/com/unilife/mapper/UserMapper.java b/src/main/java/com/unilife/mapper/UserMapper.java new file mode 100644 index 0000000..4e4d997 --- /dev/null +++ b/src/main/java/com/unilife/mapper/UserMapper.java @@ -0,0 +1,11 @@ +package com.unilife.mapper; + +import com.unilife.model.entity.User; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface UserMapper { + void insert(User user); + User FindByEmail(@Param("email") String email, @Param("password") String password); +} diff --git a/src/main/java/com/unilife/model/dto/LogDTO.java b/src/main/java/com/unilife/model/dto/LogDTO.java new file mode 100644 index 0000000..68e2c5a --- /dev/null +++ b/src/main/java/com/unilife/model/dto/LogDTO.java @@ -0,0 +1,14 @@ +package com.unilife.model.dto; +//这个才是登录的DTO + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class LogDTO { + private String email; + private String password; +} diff --git a/src/main/java/com/unilife/model/dto/LoginDTO.java b/src/main/java/com/unilife/model/dto/LoginDTO.java new file mode 100644 index 0000000..7643b0b --- /dev/null +++ b/src/main/java/com/unilife/model/dto/LoginDTO.java @@ -0,0 +1,19 @@ +package com.unilife.model.dto; +//这个是注册的DTO +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LoginDTO { + private String username; + private String email; + private String password; + private String nickname; + private String studentId; + private String department; + private String major; + private String grade; +} diff --git a/src/main/java/com/unilife/model/entity/User.java b/src/main/java/com/unilife/model/entity/User.java new file mode 100644 index 0000000..4495243 --- /dev/null +++ b/src/main/java/com/unilife/model/entity/User.java @@ -0,0 +1,56 @@ +package com.unilife.model.entity; + +import lombok.*; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String username; + + private String email; + + private String password; + + private String nickname; + + private String avatar; + + private String bio; + + private Byte gender; + + private String studentId; + + private String department; + + private String major; + + private String grade; + + private Integer points = 0; + + private Byte role = 0; + + private Byte status = 1; + + private Byte isVerified = 0; + + private String loginIp; + + private LocalDateTime loginTime; + + private LocalDateTime createdAt; + + private LocalDateTime updatedAt; + +} diff --git a/src/main/java/com/unilife/model/vo/LogVO.java b/src/main/java/com/unilife/model/vo/LogVO.java new file mode 100644 index 0000000..21d9f07 --- /dev/null +++ b/src/main/java/com/unilife/model/vo/LogVO.java @@ -0,0 +1,15 @@ +package com.unilife.model.vo; + +import com.unilife.model.entity.User; +import lombok.Data; + +@Data +public class LogVO { + private String username; + private String email; + private String nickname; + private String studentId; + private String department; + private String major; + private String grade; +} diff --git a/src/main/java/com/unilife/model/vo/LoginVO.java b/src/main/java/com/unilife/model/vo/LoginVO.java new file mode 100644 index 0000000..6df92df --- /dev/null +++ b/src/main/java/com/unilife/model/vo/LoginVO.java @@ -0,0 +1,10 @@ +package com.unilife.model.vo; + +import lombok.Data; + +@Data +public class LoginVO { + private Integer id; + private String username; + private String nickname; +} diff --git a/src/main/java/com/unilife/service/UserService.java b/src/main/java/com/unilife/service/UserService.java new file mode 100644 index 0000000..968da9f --- /dev/null +++ b/src/main/java/com/unilife/service/UserService.java @@ -0,0 +1,12 @@ +package com.unilife.service; + +import com.unilife.common.result.Result; +import com.unilife.model.dto.LogDTO; +import com.unilife.model.dto.LoginDTO; +import com.unilife.model.entity.User; + + +public interface UserService { + Result register(LoginDTO loginDTO); + Result login(LogDTO logDTO); +} diff --git a/src/main/java/com/unilife/service/impl/UserServiceImpl.java b/src/main/java/com/unilife/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..4dfa70c --- /dev/null +++ b/src/main/java/com/unilife/service/impl/UserServiceImpl.java @@ -0,0 +1,50 @@ +package com.unilife.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.unilife.common.result.Result; +import com.unilife.mapper.UserMapper; +import com.unilife.model.dto.LogDTO; +import com.unilife.model.dto.LoginDTO; +import com.unilife.model.entity.User; +import com.unilife.model.vo.LogVO; +import com.unilife.model.vo.LoginVO; +import com.unilife.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +@Slf4j +@Component +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private UserMapper userMapper; + + @Override + public Result register(LoginDTO loginDTO) { + User user = new User(); + BeanUtil.copyProperties(loginDTO,user); + userMapper.insert(user); + LoginVO loginVO = new LoginVO(); + return Result.success(loginVO); + } + + @Override + public Result login(LogDTO logDTO) { + User user = new User(); + BeanUtil.copyProperties(logDTO,user);//将登录的前端传来的消息拷贝给这个user + User getuser = userMapper.FindByEmail(user.getEmail(),user.getPassword()); + if(getuser == null) + { + return Result.error(logDTO,"用户不存在,登录失败!"); + } + if(!user.getPassword().equals(getuser.getPassword())) + { + return Result.error(logDTO,"密码错误,登录失败!"); + } + LogVO logVO = new LogVO(); + return Result.success(logVO); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..8d8e1f5 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,30 @@ +server: + port: 8087 +spring: + datasource: + url: jdbc:mysql://localhost:3306/UniLife?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 + username: root + password: zhong20050428 + driver-class-name: com.mysql.cj.jdbc.Driver +knife4j: + enable: true + openapi: + title: Knife4j官方文档 + description: "测试" + email: xiaoymin@foxmail.com + concat: 八一菜刀 + url: https://docs.xiaominfo.com + version: v4.0 + license: Apache 2.0 + license-url: https://stackoverflow.com/ + terms-of-service-url: https://stackoverflow.com/ + group: + test1: + group-name: 分组名称 + api-rule: package + api-rule-resources: + - com.unilife +mybatis: + mapper-locations: classpath:mappers/*.xml + configuration: + map-underscore-to-camel-case: true diff --git a/src/main/resources/mappers/UserMapper.xml b/src/main/resources/mappers/UserMapper.xml new file mode 100644 index 0000000..8bd9f39 --- /dev/null +++ b/src/main/resources/mappers/UserMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + INSERT INTO users ( + username, + email, + password, + nickname, + avatar, + bio, + gender, + student_id, + department, + major, + grade, + points, + role, + status, + is_verified, + login_ip, + login_time + ) VALUES ( + #{username}, + #{email}, + #{password}, + #{nickname}, + #{avatar}, + #{bio}, + #{gender}, + #{studentId}, + #{department}, + #{major}, + #{grade}, + #{points}, + #{role}, + #{status}, + #{isVerified}, + #{loginIp}, + #{loginTime} + ) + + + + \ No newline at end of file diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html new file mode 100644 index 0000000..e2d94a2 --- /dev/null +++ b/src/main/resources/static/index.html @@ -0,0 +1,6 @@ + + +

hello word!!!

+

this is a html page

+ + \ No newline at end of file diff --git a/src/test/java/com/unilife/BackendApplicationTests.java b/src/test/java/com/unilife/BackendApplicationTests.java new file mode 100644 index 0000000..afe129e --- /dev/null +++ b/src/test/java/com/unilife/BackendApplicationTests.java @@ -0,0 +1,13 @@ +package com.unilife; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class BackendApplicationTests { + + @Test + void contextLoads() { + } + +}