From 4eb7a4d7c5c244a8a10f6d22589ad6a189c056c2 Mon Sep 17 00:00:00 2001 From: panqihua <1029559041@qq.com> Date: Fri, 21 Feb 2020 06:32:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E9=99=86/=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 6 -- .gitignore | 33 +++++++- HELP.md | 21 +++++ build.gradle | 48 ++++++----- gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 56177 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 51 +++++------- gradlew.bat | 18 +--- settings.gradle | 9 -- .../com/community/pocket/DemoApplication.java | 13 +++ .../java/com/community/pocket/Result.java | 6 ++ .../pocket/api/ManagerController.java | 78 ++++++++++++++++++ .../com/community/pocket/domain/Forum.java | 17 ++++ .../com/community/pocket/domain/Manager.java | 56 +++++++++++++ .../java/com/community/pocket/domain/Res.java | 43 ++++++++++ .../com/community/pocket/domain/Token.java | 43 ++++++++++ .../pocket/domain/form/ManagerLogin.java | 22 +++++ .../pocket/domain/form/ManagerRegister.java | 54 ++++++++++++ .../pocket/repository/ForumRepo.java | 9 ++ .../pocket/repository/ManagerDao.java | 47 +++++++++++ .../pocket/repository/ManagerRepo.java | 9 ++ src/main/resources/application.properties | 3 + src/main/resources/application.yaml | 4 + .../pocket/DemoApplicationTests.java | 13 +++ 24 files changed, 513 insertions(+), 94 deletions(-) delete mode 100644 .gitattributes create mode 100644 HELP.md create mode 100644 src/main/java/com/community/pocket/DemoApplication.java create mode 100644 src/main/java/com/community/pocket/Result.java create mode 100644 src/main/java/com/community/pocket/api/ManagerController.java create mode 100644 src/main/java/com/community/pocket/domain/Forum.java create mode 100644 src/main/java/com/community/pocket/domain/Manager.java create mode 100644 src/main/java/com/community/pocket/domain/Res.java create mode 100644 src/main/java/com/community/pocket/domain/Token.java create mode 100644 src/main/java/com/community/pocket/domain/form/ManagerLogin.java create mode 100644 src/main/java/com/community/pocket/domain/form/ManagerRegister.java create mode 100644 src/main/java/com/community/pocket/repository/ForumRepo.java create mode 100644 src/main/java/com/community/pocket/repository/ManagerDao.java create mode 100644 src/main/java/com/community/pocket/repository/ManagerRepo.java create mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/application.yaml create mode 100644 src/test/java/com/community/pocket/DemoApplicationTests.java diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 00a51af..0000000 --- a/.gitattributes +++ /dev/null @@ -1,6 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# These are explicitly windows files and should use crlf -*.bat text eol=crlf - diff --git a/.gitignore b/.gitignore index 54a5f5d..6c01878 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,32 @@ -# Ignore Gradle project-specific cache directory +HELP.md .gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/** +!**/src/test/** -# Ignore Gradle build output directory -build +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache -.idea \ No newline at end of file +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/HELP.md b/HELP.md new file mode 100644 index 0000000..9ab160f --- /dev/null +++ b/HELP.md @@ -0,0 +1,21 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Gradle documentation](https://docs.gradle.org) +* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/gradle-plugin/reference/html/) +* [Spring Web](https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/htmlsingle/#boot-features-developing-web-applications) + +### Guides +The following guides illustrate how to use some features concretely: + +* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/) +* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/) +* [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks/) + +### Additional Links +These additional references should also help you: + +* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle) + diff --git a/build.gradle b/build.gradle index d93e3c8..5cab1a6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,35 +1,33 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * This generated file contains a sample Java project to get you started. - * For more details take a look at the Java Quickstart chapter in the Gradle - * User Manual available at https://docs.gradle.org/6.1.1/userguide/tutorial_java_projects.html - */ - - plugins { - // Apply the java plugin to add support for Java - id 'java' - - // Apply the application plugin to add support for building a CLI application. - id 'application' + id 'org.springframework.boot' version '2.2.4.RELEASE' + id 'io.spring.dependency-management' version '1.0.9.RELEASE' + id 'java' } +group = 'com.example' +version = '0.0.1-SNAPSHOT' + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + repositories { - // Use jcenter for resolving dependencies. - // You can declare any Maven/Ivy/file repository here. - jcenter() + maven {url 'https://maven.aliyun.com/repository/public'} + maven {url 'https://maven.aliyun.com/repository/jcenter'} + mavenLocal() + mavenCentral() } -dependencies { - // This dependency is used by the application. - implementation 'com.google.guava:guava:28.1-jre' - // Use JUnit test framework - testImplementation 'junit:junit:4.12' +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' + implementation 'org.springframework.boot:spring-boot-starter-data-rest' + implementation 'org.springframework.boot:spring-boot-starter-web' + testImplementation 'org.springframework.boot:spring-boot-devtools' + testImplementation('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } } -application { - // Define the main class for the application. - mainClassName = 'PocketCommunityServer.App' +test { + useJUnitPlatform() } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..29953ea141f55e3b8fc691d31b5ca8816d89fa87 100644 GIT binary patch delta 48113 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 z

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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f3c0e92..5142c37 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ -#Thu Feb 20 14:24:39 CST 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +#Fri Feb 21 06:30:36 CST 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7..cccdd3d 100644 --- a/gradlew +++ b/gradlew @@ -1,21 +1,5 @@ #!/usr/bin/env sh -# -# Copyright 2015 the original author or authors. -# -# Licensed 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 -# -# https://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. -# - ############################################################################## ## ## Gradle start up script for UN*X @@ -44,7 +28,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -125,8 +109,8 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` @@ -154,19 +138,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then else eval `echo args$i`="\"$arg\"" fi - i=`expr $i + 1` + i=$((i+1)) done case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,9 +159,14 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=`save "$@"` +APP_ARGS=$(save "$@") # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 9618d8d..f955316 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,19 +1,3 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -30,7 +14,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" +set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/settings.gradle b/settings.gradle index dcc5979..7b8c4f4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/6.1.1/userguide/multi_project_builds.html - */ - rootProject.name = 'PocketCommunityServer' diff --git a/src/main/java/com/community/pocket/DemoApplication.java b/src/main/java/com/community/pocket/DemoApplication.java new file mode 100644 index 0000000..c20efdd --- /dev/null +++ b/src/main/java/com/community/pocket/DemoApplication.java @@ -0,0 +1,13 @@ +package com.community.pocket; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/src/main/java/com/community/pocket/Result.java b/src/main/java/com/community/pocket/Result.java new file mode 100644 index 0000000..56cd525 --- /dev/null +++ b/src/main/java/com/community/pocket/Result.java @@ -0,0 +1,6 @@ +package com.community.pocket; + +public enum Result { + OK, + FAIL +} diff --git a/src/main/java/com/community/pocket/api/ManagerController.java b/src/main/java/com/community/pocket/api/ManagerController.java new file mode 100644 index 0000000..8f0affd --- /dev/null +++ b/src/main/java/com/community/pocket/api/ManagerController.java @@ -0,0 +1,78 @@ +package com.community.pocket.api; + +import com.community.pocket.Result; +import com.community.pocket.domain.Manager; +import com.community.pocket.domain.Res; +import com.community.pocket.domain.Token; +import com.community.pocket.domain.form.ManagerLogin; +import com.community.pocket.domain.form.ManagerRegister; +import com.community.pocket.repository.ManagerDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.DigestUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.Calendar; +import java.util.Date; + +@RestController +@RequestMapping("/api/manager") +@CrossOrigin("http://localhost:4200") +public class ManagerController { + + @Autowired + private ManagerDao managerDao; + +// 登陆 + @PostMapping("login") + @ResponseBody + public Res login(@RequestBody ManagerLogin managerLogin){ + if(StringUtils.isEmpty(managerLogin.getManagerName())){ + return new Res<>(Result.FAIL,"管理员不能为空!",null); + }else if(StringUtils.isEmpty(managerLogin.getPassword())){ + return new Res<>(Result.FAIL,"密码不能为空!",null); + }else if(!managerDao.login(managerLogin)){ + return new Res<>(Result.FAIL,"账号或密码错误!",null); + } + else{ + Token token=new Token(); + Calendar c=Calendar.getInstance(); + c.setTime(new Date()); + token.setCreateTime(c.getTimeInMillis()); + c.add(Calendar.HOUR,1); + token.setUseTime(c.getTimeInMillis()); + token.setToken(DigestUtils.md5DigestAsHex((token.getCreateTime()+""+token.getUseTime()+"").getBytes())); + return new Res<>(Result.OK,"登陆成功",token); + } + } + +// 注册 + @PostMapping("register") + @ResponseBody + public Res register(@RequestBody ManagerRegister manager){ + if(StringUtils.isEmpty(manager.getManagerName())){ + return new Res<>(Result.FAIL,"管理员不能为空",null); + }else if(StringUtils.isEmpty(manager.getPassword())){ + return new Res<>(Result.FAIL,"密码不能为空",null); + }else if(StringUtils.isEmpty(manager.getConfirmPassword())){ + return new Res<>(Result.FAIL,"确认密码不能为空",null); + }else if(!manager.getPassword().equals(manager.getConfirmPassword())){ + return new Res<>(Result.FAIL,"两次密码输入不一致",null); + }else if(StringUtils.isEmpty(manager.getMobie())){ + return new Res<>(Result.FAIL,"手机号不能为空",null); + }else if(StringUtils.isEmpty(manager.getEmail())){ + return new Res<>(Result.FAIL,"邮箱不能为空",null); + }else if(managerDao.hasUser(manager.getManagerName())){ + return new Res<>(Result.FAIL,"用户已存在",null); + }else{ + Manager m=new Manager(); + m.setManagerName(manager.getManagerName()); + m.setPassword(DigestUtils.md5DigestAsHex(manager.getPassword().getBytes())); + m.setMobie(manager.getMobie()); + m.setEmail(manager.getEmail()); + managerDao.save(m); + return new Res<>(Result.OK,"注册成功",null); + } + } + +} diff --git a/src/main/java/com/community/pocket/domain/Forum.java b/src/main/java/com/community/pocket/domain/Forum.java new file mode 100644 index 0000000..38318b0 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Forum.java @@ -0,0 +1,17 @@ +package com.community.pocket.domain; + +import org.springframework.data.annotation.Id; + +//论坛贴 +public class Forum { + @Id + private String id; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/src/main/java/com/community/pocket/domain/Manager.java b/src/main/java/com/community/pocket/domain/Manager.java new file mode 100644 index 0000000..90620c9 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Manager.java @@ -0,0 +1,56 @@ +package com.community.pocket.domain; + +import org.springframework.data.annotation.Id; + +public class Manager { + @Id + private String id; +// 管理员 + private String managerName; +// 密码 + private String password; +// 手机号 + private Long mobie; +// 邮箱 + private String email; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Long getMobie() { + return mobie; + } + + public void setMobie(Long mobie) { + this.mobie = mobie; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/com/community/pocket/domain/Res.java b/src/main/java/com/community/pocket/domain/Res.java new file mode 100644 index 0000000..e0118be --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Res.java @@ -0,0 +1,43 @@ +package com.community.pocket.domain; + +import com.community.pocket.Result; + +public class Res { +// 响应码 + private Result result; + private String message; + private T body; + + public Res() { + } + + public Res(Result result, String message, T body) { + this.result = result; + this.message = message; + this.body = body; + } + + public Result getResult() { + return result; + } + + public void setResult(Result result) { + this.result = result; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getBody() { + return body; + } + + public void setBody(T body) { + this.body = body; + } +} diff --git a/src/main/java/com/community/pocket/domain/Token.java b/src/main/java/com/community/pocket/domain/Token.java new file mode 100644 index 0000000..927b132 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/Token.java @@ -0,0 +1,43 @@ +package com.community.pocket.domain; + +import org.springframework.data.annotation.Id; + +public class Token { + @Id + private String id; + private String token; + private Long createTime; + private Long useTime; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public Long getCreateTime() { + return createTime; + } + + public void setCreateTime(Long createTime) { + this.createTime = createTime; + } + + public Long getUseTime() { + return useTime; + } + + public void setUseTime(Long useTime) { + this.useTime = useTime; + } +} diff --git a/src/main/java/com/community/pocket/domain/form/ManagerLogin.java b/src/main/java/com/community/pocket/domain/form/ManagerLogin.java new file mode 100644 index 0000000..e5bea39 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/form/ManagerLogin.java @@ -0,0 +1,22 @@ +package com.community.pocket.domain.form; + +public class ManagerLogin { + private String managerName; + private String password; + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/com/community/pocket/domain/form/ManagerRegister.java b/src/main/java/com/community/pocket/domain/form/ManagerRegister.java new file mode 100644 index 0000000..1c13794 --- /dev/null +++ b/src/main/java/com/community/pocket/domain/form/ManagerRegister.java @@ -0,0 +1,54 @@ +package com.community.pocket.domain.form; + +public class ManagerRegister { + // 管理员 + private String managerName; + // 密码 + private String password; + // 确认密码 + private String confirmPassword; + // 手机号 + private Long mobie; + // 邮箱 + private String email; + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getConfirmPassword() { + return confirmPassword; + } + + public void setConfirmPassword(String confirmPassword) { + this.confirmPassword = confirmPassword; + } + + public Long getMobie() { + return mobie; + } + + public void setMobie(Long mobie) { + this.mobie = mobie; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/com/community/pocket/repository/ForumRepo.java b/src/main/java/com/community/pocket/repository/ForumRepo.java new file mode 100644 index 0000000..ff4c732 --- /dev/null +++ b/src/main/java/com/community/pocket/repository/ForumRepo.java @@ -0,0 +1,9 @@ +package com.community.pocket.repository; + +import com.community.pocket.domain.Forum; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +@RepositoryRestResource +public interface ForumRepo extends MongoRepository { +} diff --git a/src/main/java/com/community/pocket/repository/ManagerDao.java b/src/main/java/com/community/pocket/repository/ManagerDao.java new file mode 100644 index 0000000..0f0910a --- /dev/null +++ b/src/main/java/com/community/pocket/repository/ManagerDao.java @@ -0,0 +1,47 @@ +package com.community.pocket.repository; + +import com.community.pocket.domain.Manager; +import com.community.pocket.domain.form.ManagerLogin; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Repository; +import org.springframework.util.DigestUtils; + +@Repository +public class ManagerDao { + + @Autowired + private MongoTemplate mongoTemplate; + + public boolean login(ManagerLogin managerLogin){ + Criteria criteria=Criteria.where("managerName").is(managerLogin.getManagerName()); + try { + Manager manager= mongoTemplate.findOne(new Query(criteria), Manager.class); + return manager!=null&&manager.getManagerName().equals(managerLogin.getManagerName())&&manager.getPassword().equals(DigestUtils.md5DigestAsHex(managerLogin.getPassword().getBytes())); + } catch (Exception e) { + return false; + } + + } + + // 查用户 + public boolean hasUser(String name){ + try { + Manager manager=mongoTemplate.findOne(new Query(Criteria.where("managerName").is(name)),Manager.class); + return manager!=null; + } catch (Exception e) { + return false; + } + } + + public boolean save(Manager manager){ + try { + mongoTemplate.save(manager); + return true; + } catch (Exception e) { + return false; + } + } +} diff --git a/src/main/java/com/community/pocket/repository/ManagerRepo.java b/src/main/java/com/community/pocket/repository/ManagerRepo.java new file mode 100644 index 0000000..c314fe4 --- /dev/null +++ b/src/main/java/com/community/pocket/repository/ManagerRepo.java @@ -0,0 +1,9 @@ +package com.community.pocket.repository; + +import com.community.pocket.domain.Manager; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +@RepositoryRestResource +public interface ManagerRepo extends MongoRepository { +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..64d7998 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,3 @@ +#spring.data.mongodb.uri=mongodb://localhost:27017/demo +#spring.datasource +#spring.datasource.url=mongodb://localhost:27017/demo \ No newline at end of file diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100644 index 0000000..32489c0 --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,4 @@ +spring: + data: + mongodb: + database: demo \ No newline at end of file diff --git a/src/test/java/com/community/pocket/DemoApplicationTests.java b/src/test/java/com/community/pocket/DemoApplicationTests.java new file mode 100644 index 0000000..4f9657e --- /dev/null +++ b/src/test/java/com/community/pocket/DemoApplicationTests.java @@ -0,0 +1,13 @@ +package com.community.pocket; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DemoApplicationTests { + + @Test + void contextLoads() { + } + +}