From 9c94beecff17ad2a358ff67024db365403cf87bc Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Thu, 18 Jan 2024 16:05:07 +0800 Subject: [PATCH] 1 1 --- pom.xml | 25 +++ .../com/gao/finalhw/FinalApplication.java | 2 + .../finalhw/controller/UserController.java | 23 ++- .../com/gao/finalhw/mapper/AddressMapper.java | 2 + .../com/gao/finalhw/mapper/OrdersMapper.java | 2 + .../com/gao/finalhw/mapper/RingMapper.java | 2 + .../finalhw/mapper/ShoppingCartMapper.java | 3 + .../gao/finalhw/mapper/UserInfoMapper.java | 2 + .../com/gao/finalhw/mapper/UserMapper.java | 5 + .../com/gao/finalhw/pojo/LoginRequest.java | 11 ++ .../gao/finalhw/response/ResponseEnum.java | 23 +++ .../response/ServerResponseEntity.java | 142 ++++++++++++++++++ .../com/gao/finalhw/service/UserService.java | 16 ++ src/main/resources/application.properties | 2 +- src/main/resources/templates/login.html | 39 +++-- 15 files changed, 284 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/gao/finalhw/pojo/LoginRequest.java create mode 100644 src/main/java/com/gao/finalhw/response/ResponseEnum.java create mode 100644 src/main/java/com/gao/finalhw/response/ServerResponseEntity.java create mode 100644 src/main/java/com/gao/finalhw/service/UserService.java diff --git a/pom.xml b/pom.xml index 392a345..05212c9 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,31 @@ spring-boot-starter-test test + + org.projectlombok + lombok + 1.18.26 + provided + + + com.baomidou + mybatis-plus-core + 3.5.4 + + + org.mybatis + mybatis-spring + 3.0.2 + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.xerial + sqlite-jdbc + 3.42.0.0 + diff --git a/src/main/java/com/gao/finalhw/FinalApplication.java b/src/main/java/com/gao/finalhw/FinalApplication.java index 633f4e5..f86f755 100644 --- a/src/main/java/com/gao/finalhw/FinalApplication.java +++ b/src/main/java/com/gao/finalhw/FinalApplication.java @@ -1,9 +1,11 @@ package com.gao.finalhw; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication +@MapperScan("com.gao.finalhw.mapper") public class FinalApplication { public static void main(String[] args) { diff --git a/src/main/java/com/gao/finalhw/controller/UserController.java b/src/main/java/com/gao/finalhw/controller/UserController.java index e85f920..a7aa817 100644 --- a/src/main/java/com/gao/finalhw/controller/UserController.java +++ b/src/main/java/com/gao/finalhw/controller/UserController.java @@ -1,8 +1,29 @@ package com.gao.finalhw.controller; +import com.gao.finalhw.model.User; +import com.gao.finalhw.pojo.LoginRequest; +import com.gao.finalhw.response.ServerResponseEntity; +import com.gao.finalhw.service.UserService; +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.RestController; @RestController public class UserController { - + @Autowired + private UserService userService; + @PostMapping("/login") + public ServerResponseEntity login(@RequestBody LoginRequest loginRequest) { + User user = userService.getUserByUsernameAndPassword(loginRequest.getUsername(), loginRequest.getPassword()); + if (user != null) { + // 隐藏密码 + user.setPassword("null"); + // 如果验证成功 + return ServerResponseEntity.success("login success", user); + } else { + // 如果验证失败 + return ServerResponseEntity.fail("username or password error."); + } + } } diff --git a/src/main/java/com/gao/finalhw/mapper/AddressMapper.java b/src/main/java/com/gao/finalhw/mapper/AddressMapper.java index 8994fa6..dff7df6 100644 --- a/src/main/java/com/gao/finalhw/mapper/AddressMapper.java +++ b/src/main/java/com/gao/finalhw/mapper/AddressMapper.java @@ -2,6 +2,7 @@ package com.gao.finalhw.mapper; import com.gao.finalhw.model.Address; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @author wangsiyuan @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2024-01-18 15:21:27 * @Entity com.gao.finalhw.model.Address */ +@Mapper public interface AddressMapper extends BaseMapper
{ } diff --git a/src/main/java/com/gao/finalhw/mapper/OrdersMapper.java b/src/main/java/com/gao/finalhw/mapper/OrdersMapper.java index 65fe110..6e948aa 100644 --- a/src/main/java/com/gao/finalhw/mapper/OrdersMapper.java +++ b/src/main/java/com/gao/finalhw/mapper/OrdersMapper.java @@ -2,6 +2,7 @@ package com.gao.finalhw.mapper; import com.gao.finalhw.model.Orders; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @author wangsiyuan @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2024-01-18 15:21:27 * @Entity com.gao.finalhw.model.Orders */ +@Mapper public interface OrdersMapper extends BaseMapper { } diff --git a/src/main/java/com/gao/finalhw/mapper/RingMapper.java b/src/main/java/com/gao/finalhw/mapper/RingMapper.java index 147adf0..ef713ae 100644 --- a/src/main/java/com/gao/finalhw/mapper/RingMapper.java +++ b/src/main/java/com/gao/finalhw/mapper/RingMapper.java @@ -2,6 +2,7 @@ package com.gao.finalhw.mapper; import com.gao.finalhw.model.Ring; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @author wangsiyuan @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2024-01-18 15:21:27 * @Entity com.gao.finalhw.model.Ring */ +@Mapper public interface RingMapper extends BaseMapper { } diff --git a/src/main/java/com/gao/finalhw/mapper/ShoppingCartMapper.java b/src/main/java/com/gao/finalhw/mapper/ShoppingCartMapper.java index 5b2af56..ff83b1b 100644 --- a/src/main/java/com/gao/finalhw/mapper/ShoppingCartMapper.java +++ b/src/main/java/com/gao/finalhw/mapper/ShoppingCartMapper.java @@ -2,6 +2,7 @@ package com.gao.finalhw.mapper; import com.gao.finalhw.model.ShoppingCart; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @author wangsiyuan @@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2024-01-18 15:21:27 * @Entity com.gao.finalhw.model.ShoppingCart */ + +@Mapper public interface ShoppingCartMapper extends BaseMapper { } diff --git a/src/main/java/com/gao/finalhw/mapper/UserInfoMapper.java b/src/main/java/com/gao/finalhw/mapper/UserInfoMapper.java index c3cd2d0..43b98f8 100644 --- a/src/main/java/com/gao/finalhw/mapper/UserInfoMapper.java +++ b/src/main/java/com/gao/finalhw/mapper/UserInfoMapper.java @@ -2,6 +2,7 @@ package com.gao.finalhw.mapper; import com.gao.finalhw.model.UserInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; /** * @author wangsiyuan @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2024-01-18 15:21:27 * @Entity com.gao.finalhw.model.UserInfo */ +@Mapper public interface UserInfoMapper extends BaseMapper { } diff --git a/src/main/java/com/gao/finalhw/mapper/UserMapper.java b/src/main/java/com/gao/finalhw/mapper/UserMapper.java index c5de3df..4bd1862 100644 --- a/src/main/java/com/gao/finalhw/mapper/UserMapper.java +++ b/src/main/java/com/gao/finalhw/mapper/UserMapper.java @@ -2,6 +2,8 @@ package com.gao.finalhw.mapper; import com.gao.finalhw.model.User; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; /** * @author wangsiyuan @@ -9,8 +11,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @createDate 2024-01-18 15:21:27 * @Entity com.gao.finalhw.model.User */ +@Mapper public interface UserMapper extends BaseMapper { + @Select("SELECT * FROM user WHERE user_name = #{username} AND password = #{password}") + User findByUsernameAndPassword(String username, String password); } diff --git a/src/main/java/com/gao/finalhw/pojo/LoginRequest.java b/src/main/java/com/gao/finalhw/pojo/LoginRequest.java new file mode 100644 index 0000000..4188015 --- /dev/null +++ b/src/main/java/com/gao/finalhw/pojo/LoginRequest.java @@ -0,0 +1,11 @@ +package com.gao.finalhw.pojo; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class LoginRequest { + private String username; + private String password; +} diff --git a/src/main/java/com/gao/finalhw/response/ResponseEnum.java b/src/main/java/com/gao/finalhw/response/ResponseEnum.java new file mode 100644 index 0000000..f4d088a --- /dev/null +++ b/src/main/java/com/gao/finalhw/response/ResponseEnum.java @@ -0,0 +1,23 @@ +package com.gao.finalhw.response; + +public enum ResponseEnum { + OK("0","ok"), + SHOW_FAIL("-1", "fail"); + private final String code; + private final String msg; + + public String getMsg() {return msg;} + + public String value() {return code;} + + public String getCode(){return code;} + + ResponseEnum(String code, String msg) { + this.code = code; + this.msg = msg; + } + @Override + public String toString() { + return "ResponseEnum{" + "code='" + code + '\'' + ", msg='" + msg + '\'' + "} " + super.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/gao/finalhw/response/ServerResponseEntity.java b/src/main/java/com/gao/finalhw/response/ServerResponseEntity.java new file mode 100644 index 0000000..beb7266 --- /dev/null +++ b/src/main/java/com/gao/finalhw/response/ServerResponseEntity.java @@ -0,0 +1,142 @@ +package com.gao.finalhw.response; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.Serializable; +import java.time.Instant; +import java.util.Objects; + +public class ServerResponseEntity implements Serializable { + private static final Logger logger = LoggerFactory.getLogger(ServerResponseEntity.class); + /** Response status code. */ + private String code; + + /** Response message. */ + private String msg; + + /** Response timestamp. */ + private Long timestamp; + + /** Response data. */ + private T data; + + public String getMsg(){return msg;} + public void setMsg(String msg){this.msg = msg;} + public String getCode(){return code;} + public void setCode(String code){this.code = code;} + public T getData() {return data;} + + public Long getTimestamp() {return timestamp;} + public void setTimestamp(Long timestamp) {this.timestamp = timestamp; + } + public ServerResponseEntity setData(T data) { + this.data = data; + return this; + } + /** Timestamp when the response is created. Defaults to current time. */ + @JsonIgnore + public boolean isSuccess(){return Objects.equals(ResponseEnum.OK.value(),this.code);} + @JsonIgnore + public boolean isFail(){return Objects.equals(ResponseEnum.SHOW_FAIL.value(),this.code);} + /** + * Creates a success response with data. + * + * @param data the response data + * @return the API response entity + */ + public static ServerResponseEntity success(T data){ + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setData(data); + serverResponseEntity.setCode(ResponseEnum.OK.value()); + serverResponseEntity.setMsg(ResponseEnum.OK.getMsg()); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + return serverResponseEntity; + } + + /** + * Creates a success response without data. + * + * @return the API response entity + */ + public static ServerResponseEntity success(){ + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setCode(ResponseEnum.OK.value()); + serverResponseEntity.setMsg(ResponseEnum.OK.getMsg()); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + serverResponseEntity.setData(null); + return serverResponseEntity; + } + + public static ServerResponseEntity success(Integer code, T data) { + return success(String.valueOf(code), data); + } + + public static ServerResponseEntity success(String code, T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setCode(code); + serverResponseEntity.setData(data); + serverResponseEntity.getMsg(); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + return serverResponseEntity; + } + + public static ServerResponseEntity showFailMsg(String msg) { + logger.error(msg); + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(msg); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + serverResponseEntity.setCode(ResponseEnum.SHOW_FAIL.value()); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(ResponseEnum responseEnum) { + logger.error(responseEnum.toString()); + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(responseEnum.getMsg()); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + serverResponseEntity.setCode(responseEnum.value()); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(ResponseEnum responseEnum, T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(responseEnum.getMsg()); + serverResponseEntity.setCode(responseEnum.value()); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + serverResponseEntity.setData(data); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(Integer code, String msg, T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(msg); + serverResponseEntity.setCode(String.valueOf(code)); + serverResponseEntity.setData(data); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + return serverResponseEntity; + } + public static ServerResponseEntity fail(Integer code, String msg) { + return fail(code, msg, null); + } + public static ServerResponseEntity fail(String msg) { + return fail(-1,msg,null); + } + public static ServerResponseEntity fail(Integer code, T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setCode(String.valueOf(code)); + serverResponseEntity.setData(data); + serverResponseEntity.setMsg("error"); + serverResponseEntity.setTimestamp(Instant.now().getEpochSecond()); + return serverResponseEntity; + } + @Override + public String toString() { + return "ApiResponseEntity{" + + "code='" + code + '\'' + + ", msg='" + msg + '\'' + + ", timestamp=" + timestamp + + ", data=" + data + + '}'; + } +} diff --git a/src/main/java/com/gao/finalhw/service/UserService.java b/src/main/java/com/gao/finalhw/service/UserService.java new file mode 100644 index 0000000..8e92da0 --- /dev/null +++ b/src/main/java/com/gao/finalhw/service/UserService.java @@ -0,0 +1,16 @@ +package com.gao.finalhw.service; + +import com.gao.finalhw.mapper.UserMapper; +import com.gao.finalhw.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserService { + @Autowired + private UserMapper userMapper; + + public User getUserByUsernameAndPassword(String username, String password) { + return userMapper.findByUsernameAndPassword(username, password); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index bd800a5..09ee5a4 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,3 @@ server.address=0.0.0.0 server.port=8090 -debug=true \ No newline at end of file +debug=false \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 8244cee..9b01567 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -110,38 +110,51 @@ + \ No newline at end of file